Name: series-workflowblzzc Phase: Succeeded StartedAt: 2026-06-26 20:56:13 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[0] Phase: Succeeded StartedAt: 2026-06-26 20:56:13 +0000 UTC FinishedAt: 2026-06-26 21:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 20:56:13 +0000 UTC FinishedAt: 2026-06-26 21:21:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "af27b86c-55be-400d-97b8-471df659250f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_io_bus_get_dev", "__vgic_doorbell_to_its", "vgic_its_check_cache", "vgic_msi_to_its" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9pb19idXNfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtfX3ZnaWNfZG9vcmJlbGxfdG9faXRzJiMzNDssCiAgICAmIzM0O3ZnaWNfaXRzX2NoZWNrX2NhY2hlJiMzNDssCiAgICAmIzM0O3ZnaWNfbXNpX3RvX2l0cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5pbmRleCA0NDc3Zjg3MGM3YjM2ZS4uMWMxYmRkNDIwYzQwZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTUwOCwxMyAmIzQzOzUwOCwxMCBAQCBzdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXG4gXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2RldjtcbiBcdHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7XG4gXG4tXHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7XG4mIzQzO1x0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXHUwMDI2a3ZtX2lvX2dpY19vcHMsIGRiKTtcbiBcdGlmICgha3ZtX2lvX2RldilcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRpZiAoa3ZtX2lvX2Rldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2lvX2dpY19vcHMpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuLVxuIFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xuIFx0aWYgKGlvZGV2LVx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi5jYTcxMmQ2MDRhNTlmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtMjMxLDYgJiM0MzsyMzEsNyBAQCBpbnQga3ZtX2lvX2J1c19yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwgZ3BhX3QgYWRkcixcbiBpbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xuIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiYjNDM7XHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcbiBcdFx0XHRcdFx0IGdwYV90IGFkZHIpO1xuIFxuICNpZmRlZiBDT05GSUdfS1ZNX0FTWU5DX1BGXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi42YTYyODJmNWJhYzI5NiAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC02MDY2LDYgJiM0Mzs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiB9XG4gXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLFxuIFx0XHRcdFx0XHQgZ3BhX3QgYWRkcilcbiB7XG4gXHRzdHJ1Y3Qga3ZtX2lvX2J1cyAqYnVzO1xuQEAgLTYwODIsNyAmIzQzOzYwODMsOSBAQCBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4gXHRpZiAoZGV2X2lkeCBcdTAwM2MgMClcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFxuLVx0aW9kZXYgPSBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xuJiM0MztcdGlmIChidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVx1MDAzZW9wcyA9PSBvcHMpXG4mIzQzO1x0XHRpb2RldiA9IGJ1cy1cdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXY7XG4gXG4gb3V0X3VubG9jazpcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIHNyY3VfaWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faW9fYnVzX2dldF9kZXYmIzM0OywKICAgICYjMzQ7X192Z2ljX2Rvb3JiZWxsX3RvX2l0cyYjMzQ7LAogICAgJiMzNDt2Z2ljX2l0c19jaGVja19jYWNoZSYjMzQ7LAogICAgJiMzNDt2Z2ljX21zaV90b19pdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIElPIGJ1cyBkZXZpY2UgcmV0cmlldmFsIGxvZ2ljIChga3ZtX2lvX2J1c19nZXRfZGV2YCkgYW5kIGl0cyBjYWxsZXIgaW4gdGhlIEFSTTY0IFZHSUMgSVRTIGltcGxlbWVudGF0aW9uIChgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2ApLiBUaGlzIGFmZmVjdHMgS1ZNIE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKaW5kZXggNDQ3N2Y4NzBjN2IzNmUuLjFjMWJkZDQyMGM0MGRmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCkBAIC01MDgsMTMgJiM0Mzs1MDgsMTAgQEAgc3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKQogCXN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fZGV2OwogCXN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7CiAKLQlrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7CiYjNDM7CWt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsICZhbXA7a3ZtX2lvX2dpY19vcHMsIGRiKTsKIAlpZiAoIWt2bV9pb19kZXYpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCi0JaWYgKGt2bV9pb19kZXYtJmd0O29wcyAhPSAmYW1wO2t2bV9pb19naWNfb3BzKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQogCWlvZGV2ID0gY29udGFpbmVyX29mKGt2bV9pb19kZXYsIHN0cnVjdCB2Z2ljX2lvX2RldmljZSwgZGV2KTsKIAlpZiAoaW9kZXYtJmd0O2lvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAppbmRleCBhYjhjZmFlYzgyZDMxZS4uY2E3MTJkNjA0YTU5ZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTIzMSw2ICYjNDM7MjMxLDcgQEAgaW50IGt2bV9pb19idXNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdwYV90IGFkZHIsCiBpbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LAogCQkJICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7CiBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsCiYjNDM7CQkJCQkgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsCiAJCQkJCSBncGFfdCBhZGRyKTsKIAogI2lmZGVmIENPTkZJR19LVk1fQVNZTkNfUEYKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTBkLi42YTYyODJmNWJhYzI5NiAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC02MDY2LDYgJiM0Mzs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKIH0KIAogc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LAomIzQzOwkJCQkJIGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLAogCQkJCQkgZ3BhX3QgYWRkcikKIHsKIAlzdHJ1Y3Qga3ZtX2lvX2J1cyAqYnVzOwpAQCAtNjA4Miw3ICYjNDM7NjA4Myw5IEBAIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKIAlpZiAoZGV2X2lkeCAmbHQ7IDApCiAJCWdvdG8gb3V0X3VubG9jazsKIAotCWlvZGV2ID0gYnVzLSZndDtyYW5nZVtkZXZfaWR4XS5kZXY7CiYjNDM7CWlmIChidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldiAmYW1wOyZhbXA7CiYjNDM7CSAgICBidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldi0mZ3Q7b3BzID09IG9wcykKJiM0MzsJCWlvZGV2ID0gYnVzLSZndDtyYW5nZVtkZXZfaWR4XS5kZXY7CiAKIG91dF91bmxvY2s6CiAJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgc3JjdV9pZHgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIEkvTyBCdXMgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBga3ZtX2lvX2J1c19nZXRfZGV2YC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgbmV3IGBvcHNgIHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCB3ZSYjMzk7cmUgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbiBib3RoIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAuIFRoZSBmdW5jdGlvbiBub3cgZGlyZWN0bHkgY2hlY2tzIGlmIGBidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldi0mZ3Q7b3BzID09IG9wc2AuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uLCBwdXNoaW5nIHRoZSBgb3BzYCBjaGVjayBkb3duIGludG8gdGhlIHJldHJpZXZhbCBtZXRob2QuCgpUaGUgcGF0Y2ggYWxzbyB1cGRhdGVzIHRoZSBjYWxsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkgYXJlIHBhc3NpbmcgYCZhbXA7a3ZtX2lvX2dpY19vcHNgIGRpcmVjdGx5IHRvIGBrdm1faW9fYnVzX2dldF9kZXZgIGluc3RlYWQgb2YgZG9pbmcgYSBzZXBhcmF0ZSBjaGVjayBhZnRlciB0aGUgZnVuY3Rpb24gcmV0dXJucy4gVGhhdCYjMzk7cyBnb29kIC0gbGVzcyBjb2RlLCBtb3JlIGNsYXJpdHkuIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBhdHRlcm4gdG8gcHVzaCBjaGVja3MgZG93biBpbnRvIGZ1bmN0aW9ucyBhbmQgcmVkdWNlIGV4dGVybmFsIGxvZ2ljIHdoZXJlIHBvc3NpYmxlLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBsb2NhbGl6ZWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGV2ZXJ5IG90aGVyIGluc3RhbmNlIHdoZXJlIGBrdm1faW9fYnVzX2dldF9kZXZgIGlzIGNhbGxlZC4gQXJlIHRoZXJlIGFueSBvdGhlciBjYWxsZXJzIGluIHRoZSBrZXJuZWwgdGhhdCByZXF1aXJlIHVwZGF0ZXMgYXMgYSByZXN1bHQgb2YgdGhpcyBwYXJhbWV0ZXIgYWRkaXRpb24/IEFyZSB0aGV5IGhhbmRsZWQgY29ycmVjdGx5PyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgaXMgYXBwbGllZCBjb25zaXN0ZW50bHkgYW5kIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucy4gR290dGEgZG8gYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLCBpbmNsdWRpbmcgYSBzZWFyY2ggZm9yIGFsbCBga3ZtX2lvX2J1c19nZXRfZGV2YCBjYWxscyBpbiB0aGUgS1ZNIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faW9fYnVzX2dldF9kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTUwNj1zdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1MTE6XHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMi1cdGlmICgha3ZtX2lvX2Rldilcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjMxPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjMyLVx0XHRcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjIzMzpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjM0LVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz02MDIwPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MDY3LVxudmlydC9rdm0va3ZtX21haW4uYzo2MDY4OnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2OS1cdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5NC19XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwOTU6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9pb19idXNfZ2V0X2Rldik7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHBhdGNoOgoKKipBbmFseXppbmcgYSBLVk0vVkdJQyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1faW9fYnVzX2dldF9kZXZgIGFuZCBpdHMgb25seSBrbm93biBjYWxsZXIsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYC4gVGhhdCYjMzk7cyBhIGZvY3VzZWQgYXJlYSwgd2hpY2ggaXMgZ29vZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZG91YmxlLWNoZWNrIHRoYXQgYF9fdmdpY19kb29yYmVsbF90b19pdHNgICp0cnVseSogaXMgdGhlIG9ubHkgdXNlciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ3JlcGAgdGhyb3VnaCB0aGUgc291cmNlIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCB0aGUgZ3JlcCBjb25maXJtcyBpdDsgYXMgZmFyIGFzIHRoZSBjb2RlYmFzZSB0ZWxscyBtZSwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzIGluZGVlZCB0aGUgc29sZSBjYWxsZXIuIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCB0byBzZWUgaWYgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzIHJlYWNoYWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X192Z2ljX2Rvb3JiZWxsX3RvX2l0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MDUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTA2OnN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MDcte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Mjg9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTM3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUzODpcdGl0cyA9IF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBkYik7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTM5LVx0aWYgKElTX0VSUihpdHMpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02NDk9c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NjAtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjYxOlx0cmV0dXJuIF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBhZGRyZXNzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgQ2FjaGUgQ2hlY2sgYW5kIE1TSS10by1JVFMgVHJhbnNsYXRpb24gQ2FsbHMqKgoKT2theSwgc28gSSBzZWUgdGhlc2UgZnVuY3Rpb25zLCBgdmdpY19pdHNfY2hlY2tfY2FjaGVgIGFuZCBgdmdpY19tc2lfdG9faXRzYCwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZWlyIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgaW4gd2hpY2ggdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBrbm93IHRoZSAqY2FsbCBzaXRlcyog4oCTIHdoZXJlIGFuZCB3aHkgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBmaW5kIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBjYWNoZSBtYW5hZ2VtZW50IGFuZCBNU0kgdHJhbnNsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCByZWZlcmVuY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX2NoZWNrX2NhY2hlfHZnaWNfbXNpX3RvX2l0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTIyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfaXRzX2NhY2hlX2tleSh1MzIgZGV2aWQsIHUzMiBldmVudGlkKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MjctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTI4OnN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfaXRzX2NoZWNrX2NhY2hlKHN0cnVjdCBrdm0gKmt2bSwgcGh5c19hZGRyX3QgZGIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI5LVx0XHRcdFx0XHQgICAgIHUzMiBkZXZpZCwgdTMyIGV2ZW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTYyMz1pbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjQ4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjY0OTpzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjUwLXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjkzPWludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk5LVx0ZGIgPSAodTY0KW1zaS1cdTAwM2VhZGRyZXNzX2hpIFx1MDAzY1x1MDAzYyAzMiB8IG1zaS1cdTAwM2VhZGRyZXNzX2xvO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwMDpcdGlycSA9IHZnaWNfaXRzX2NoZWNrX2NhY2hlKGt2bSwgZGIsIG1zaS1cdTAwM2VkZXZpZCwgbXNpLVx1MDAzZWRhdGEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwMS1cdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03MTg9aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NzI2Olx0aXRzID0gdmdpY19tc2lfdG9faXRzKGt2bSwgbXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjctXHRpZiAoSVNfRVJSKGl0cykpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9NDE2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfZ2V0X2l0cyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtNDI2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6NDI3Olx0cmV0dXJuIHZnaWNfbXNpX3RvX2l0cyhrdm0sIFx1MDAyNm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjgtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTQzNT1pbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzNi1cdFx0XHQgdTMyIGRldmlkLCB1MzIgZXZlbnRpZCwgc3RydWN0IHZnaWNfaXJxICoqaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjQzNzpzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtNDM4LWludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0mIzM5O3MgVmdpYyBNU0kgSW5qZWN0aW9uIE1lY2hhbmlzbXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IEtWTSBoYW5kbGVzIFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciAodkdJQykgTVNJIGluamVjdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZnaWNfaXRzX2luamVjdF9tc2lgIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgYHZnaWNfaXRzX2luamVjdF9tc2lgLiBJJiMzOTtsbCB3YW50IHRvIHRyYWNlIGhvdyBpdCBoYW5kbGVzIHRoZSBpbmplY3Rpb24gb2YgdGhlIE1TSSwgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXMgaXQgdG91Y2hlcywgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLiBUaGVuLCBJIG5lZWQgdG8gcmVwZWF0IHRoZSBzYW1lIGZvciBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgdG8gc2VlIGlmIGl0IHdvcmtzIGRpZmZlcmVudGx5LiBJIGV4cGVjdCB0aGlzIGNhY2hlZCB2ZXJzaW9uIHRvIGJlIG1vcmUgcGVyZm9ybWFudCwgc28gdW5kZXJzdGFuZGluZyB0aGUgdHJhbnNsYXRpb24gY2FjaGluZyBzdHJhdGVneSBpcyBrZXkuIEFyZSB0aGVyZSBhbnkgZWRnZSBjYXNlcz8gQW55IHJhY2UgY29uZGl0aW9ucz8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayBob3cgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZCBpbiBlYWNoIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19pbmplY3RfbXNpfHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9OTI9aW50IGt2bV9zZXRfbXNpKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEwNC1cdGt2bV9wb3B1bGF0ZV9tc2koZSwgXHUwMDI2bXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjEwNTpcdHJldHVybiB2Z2ljX2l0c19pbmplY3RfbXNpKGt2bSwgXHUwMDI2bXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEwNi19XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTExPWludCBrdm1fYXJjaF9zZXRfaXJxX2luYXRvbWljKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEyNS1cdFx0a3ZtX3BvcHVsYXRlX21zaShlLCBcdTAwMjZtc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM6MTI2Olx0XHRyZXR1cm4gdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihrdm0sIFx1MDAyNm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMjctXHR9XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY3MT1zdGF0aWMgaW50IHZnaWNfaXRzX3RyaWdnZXJfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2OTM6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5NC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxNy0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MTg6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxOS17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcyMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MjM6XHRpZiAoIXZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oa3ZtLCBtc2kpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcyNC1cdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9MzQ0PXZvaWQgdmdpY19mbHVzaF9wZW5kaW5nX2xwaXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjM0NTppbnQgdmdpY19pdHNfaW5qZWN0X21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMzQ2LWludCB2Z2ljX3YzX2hhc19hdHRyX3JlZ3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9NDM3PXN0cnVjdCB2Z2ljX2l0cyAqdmdpY19tc2lfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDo0Mzg6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzOS12b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qga3ZtICprdm0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTY4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gTVNJIEluamVjdGlvbiBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBleHBsb2l0YWJsZSB0aHJvdWdoIEtWTSBNU0kgaW5qZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZSwgd2hpY2ggbG9va3MgbGlrZSBpdCBjZW50ZXJzIGFyb3VuZCB0aGUgYGt2bV9pb19idXNfZ2V0X2RldmAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIEtWTSwgc28gdGhpcyBjb3VsZCBoYXZlIHdpZGVzcHJlYWQgaW1wbGljYXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIHJlYWxseSBnZXRzIG15IGF0dGVudGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpc3N1ZSBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHByZXNlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZCBieSBLVk0uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGNhbGxlcnMgb2YgYGt2bV9pb19idXNfZ2V0X2RldmAsIHRvIHNlZSBpZiB0aGUgaW1wYWN0IG9mIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBsaW1pdGVkLCBvciBtb3JlIGJyb2FkLiBVbmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSB0b3RhbCBkYW1hZ2UgdGhpcyBjYW4gZG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9pb19idXNfZ2V0X2RldiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTA2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUxMTpcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFx1MDAyNmt2bV9pb19naWNfb3BzLCBkYik7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEyLVx0aWYgKCFrdm1faW9fZGV2KVxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yMzE9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzItXHRcdFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjMzOnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzQtXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTYwMjA9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwNjctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwNjg6c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxudmlydC9rdm0va3ZtX21haW4uYy02MDY5LVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MDk0LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA5NTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIFBhdGNoKioKCk9rYXksIHNvIEkgcmVtZW1iZXIgcnVubmluZyBhIGBncmVwYCBmb3IgYGt2bV9pb19idXNfZ2V0X2RldmAgZWFybGllciwgYW5kIGl0IG9ubHkgY2FtZSB1cCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYCBhbmQgYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IG1lYW5zIHRoaXMgZnVuY3Rpb24sIGF0IGxlYXN0IGluIHRoZSBjdXJyZW50IGNvZGViYXNlLCBpcyBleGNsdXNpdmVseSB1dGlsaXplZCB3aXRoaW4gdGhlIEFSTTY0IFZHSUMgSVRTIGNvbnRleHQuCgpUaGlzIHBhdGNoLCBob3dldmVyLCBpcyBjaGFuZ2luZyBob3cgYGt2bV9pb19idXNfZ2V0X2RldmAgYmVoYXZlcywgc3BlY2lmaWNhbGx5IGJ5IGludHJvZHVjaW5nIGZpbHRlcmluZyBiYXNlZCBvbiBgb3BzYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyB0aW1lIHRvIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBoZXJlLiBHaXZlbiB0aGUgbW9kaWZpY2F0aW9uIHRvdWNoZXMgYm90aCBLVk0gY29yZSAqYW5kKiBBUk02NCBWR0lDIElUUyBsb2dpYywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC4KCkkmIzM5O20gZ29pbmcgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYW5kIHRoZW4gYWxzbyBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAuIFRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50LiBLVk0gaW4gZ2VuZXJhbCwgb2J2aW91c2x5LCBhbmQgc2luY2UgdGhpcyB0b3VjaGVzIEFSTTY0IFZHSUMgSVRTLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKktWTSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBLVk0mIzM5O3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCwgdW5kZXJzdG9vZC4gQnV0IG5vdyBteSBtaW5kIGp1bXBzIHRvIHRoZSBWR0lDIElUUy4gSSBrbm93IGl0IHBsYXlzIGEgY3J1Y2lhbCByb2xlLCBlc3BlY2lhbGx5IHdpdGggaW50ZXJydXB0IGRpc3RyaWJ1dGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoZXJlIGEgZGVkaWNhdGVkIHNlY3Rpb24sIGEgc3BlY2lmaWMgY29uZmlnIHNldHRpbmcsIGEgcGFydGljdWxhciBwYXJhbWV0ZXIsIGV2ZW4gYSBzdWJ0bGUgZGVwZW5kZW5jeSB3aXRoaW4gS1ZNJiMzOTtzIGNvbmZpZ3VyYXRpb24gdGhhdCBkaXJlY3RseSBhZGRyZXNzZXMgYW5kIGRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBWR0lDIElUUz8gT3IgaXMgaXRzIGNvbmZpZ3VyYXRpb24gaW1wbGljaXRseSBoYW5kbGVkIHRocm91Z2ggb3RoZXIgS1ZNLXJlbGF0ZWQgc2V0dGluZ3M/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIHRoZXJlJiMzOTtzIGEgZGlzdGluY3QgY29uZmlndXJhdGlvbiBwYXRoIGZvciB0aGUgVkdJQyBJVFMsIGJlY2F1c2UgdW5kZXJzdGFuZGluZyBpdHMgZXhwbGljaXQgc2V0dXAgaXMgdml0YWwgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gbXkgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSSBjYW4mIzM5O3QgYWZmb3JkIHRvIG92ZXJsb29rIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipJVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGJhc2VkIG9uIHRoZSBwcm9tcHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBcm02NCBLVk0gTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgQXJtNjQgS1ZNLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLVk0gY29tcG9uZW50cyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRoaXMgZmlsZSB0byBjb250YWluIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3Mgc3BlY2lmaWMgdG8gQXJtNjQgdmlydHVhbGl6YXRpb24sIGFuZCBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gS1ZNIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBtb3JlIGdlbmVyYWwgS1ZNIGJ1aWxkIHN5c3RlbSBhbmQgYW55IG1vZHVsZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgdmFyaWFibGVzIGFuZCBydWxlcyB0aGF0IGRyaXZlIHRoZSBLVk0gYnVpbGQgZm9yIHRoaXMgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdHJlYXN1cmVzIHRoaXMgTWFrZWZpbGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWMtaXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXG4tLVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjUtXHQgdmdpYy92Z2ljLW1taW8tdjMubyB2Z2ljL3ZnaWMta3ZtLWRldmljZS5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToyNjpcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cdCB2Z2ljL3ZnaWMtdjUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDI3CgkJCQkJCQlvdXRwdXQ6IDE1MQoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIEFSTTY0LiBUaGUgYnVpbGQgcHJvY2VzcyBpcyBzaW1wbGUgZW5vdWdoOyBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgYnVpbHQgaWYgS1ZNIGlzIGVuYWJsZWQsIHNvIGp1c3QgaGF2aW5nIGBLVk1gIGluIHRoZSBjb25maWcgaXMgYWxsIHdlIG5lZWQuIFRoZSBtYWluIHBvaW50IGlzIHRoYXQgdGhpcyBpcyB0YXJnZXRlZCBhdCB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBzZWUgYSBmZXcga2V5IHN5bWJvbHMgaGVyZSB0aGF0IEkgbmVlZCB0byBmb2N1cyBvbjogYGt2bV9pb19idXNfZ2V0X2RldmAsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCwgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCwgYW5kIGB2Z2ljX21zaV90b19pdHNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYGt2bV9pb19idXNfZ2V0X2RldmAgaXNuJiMzOTt0IHVzZWQgZWxzZXdoZXJlIGJ1dCB3aXRoaW4gdGhlIGltbWVkaWF0ZSBjYWxsIGNoYWluLiBBaCwgaXQgbG9va3MgbGlrZSBvbmx5IGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCB1c2VzIGBrdm1faW9fYnVzX2dldF9kZXZgLiBBbmQgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AuIFNvIHRoYXQgY29uZmlybXMgdGhlIGNlbnRyYWwgaW1wb3J0YW5jZSBvZiB0aG9zZSBmb3VyLgoKR29vZCwgbm93IHRvIGJlIHN1cmUgb2YgdGhlIHNjb3BlLCBsZXQmIzM5O3Mgc2VlIGlmIGBrdm1faW9fYnVzX2dldF9kZXZgIGlzIGV4cG9ydGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtgIGlzIHByZXNlbnQsIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBpbnRlbmRlZCBhcyBhbiBpbnRlcm5hbCBLVk0gQVBJLgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgaXQgYWxsIHRvZ2V0aGVyOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgYWJzb2x1dGVseS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBrdm1faW9fYnVzX2dldF9kZXZgLCBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEtWTWAKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3MgaW50ZXJuYWwgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyBmb3IgdGhlIElPIGJ1cywgYW5kIHNwZWNpZmljYWxseSB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBjYWxsZXIuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFmZmVjdHMgaG93IE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nIGFyZSBwZXJmb3JtZWQgdmlhIEtWTSBpb2N0bHMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2lvX2J1c19nZXRfZGV2JiMzNDssCiAgICAmIzM0O19fdmdpY19kb29yYmVsbF90b19pdHMmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfY2hlY2tfY2FjaGUmIzM0OywKICAgICYjMzQ7dmdpY19tc2lfdG9faXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2lvX2J1c19nZXRfZGV2JiMzNDssCiAgICAmIzM0O19fdmdpY19kb29yYmVsbF90b19pdHMmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfY2hlY2tfY2FjaGUmIzM0OywKICAgICYjMzQ7dmdpY19tc2lfdG9faXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIyLjg1MDAwODQ2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODI5NzM3Njg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faW9fYnVzX2dldF9kZXZcIixcbiAgICBcIl9fdmdpY19kb29yYmVsbF90b19pdHNcIixcbiAgICBcInZnaWNfaXRzX2NoZWNrX2NhY2hlXCIsXG4gICAgXCJ2Z2ljX21zaV90b19pdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIyLjg1MDAxNDg0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI4Nzk0NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODJiOThkNmM1YmNmMTEyYzNhODkwNDgyNGRkZDdiOGEyNjk0OWMwZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMToxODoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG5pbmRleCA0NDc3Zjg3MGM3YjM2ZS4uMWMxYmRkNDIwYzQwZGYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuQEAgLTUwOCwxMyArNTA4LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcXG4gXFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19kZXY7XFxuIFxcdHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7XFxuIFxcbi1cXHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7XFxuK1xcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFxcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xcbiBcXHRpZiAoIWt2bV9pb19kZXYpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiBcXG4tXFx0aWYgKGt2bV9pb19kZXYtXFx1MDAzZW9wcyAhPSBcXHUwMDI2a3ZtX2lvX2dpY19vcHMpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi1cXG4gXFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xcbiBcXHRpZiAoaW9kZXYtXFx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuaW5kZXggYWI4Y2ZhZWM4MmQzMWUuLmNhNzEyZDYwNGE1OWYwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbkBAIC0yMzEsNiArMjMxLDcgQEAgaW50IGt2bV9pb19idXNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdwYV90IGFkZHIsXFxuIGludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xcbiBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuK1xcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4gXFx0XFx0XFx0XFx0XFx0IGdwYV90IGFkZHIpO1xcbiBcXG4gI2lmZGVmIENPTkZJR19LVk1fQVNZTkNfUEZcXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5pbmRleCBlNDRjMjBjMDQ5NjEwZC4uNmE2MjgyZjViYWMyOTYgMTAwNjQ0XFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5AQCAtNjA2Niw2ICs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4gfVxcbiBcXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbitcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuIFxcdFxcdFxcdFxcdFxcdCBncGFfdCBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1faW9fYnVzICpidXM7XFxuQEAgLTYwODIsNyArNjA4Myw5IEBAIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4gXFx0aWYgKGRldl9pZHggXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbi1cXHRpb2RldiA9IGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xcbitcXHRpZiAoYnVzLVxcdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVxcdTAwM2VvcHMgPT0gb3BzKVxcbitcXHRcXHRpb2RldiA9IGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xcbiBcXG4gb3V0X3VubG9jazpcXG4gXFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBzcmN1X2lkeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIzLjY4MTQzNzAzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3NDY1OTM0NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9pb19idXNfZ2V0X2RldlwiLFxuICAgIFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiLFxuICAgIFwidmdpY19pdHNfY2hlY2tfY2FjaGVcIixcbiAgICBcInZnaWNfbXNpX3RvX2l0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDQ0NzdmODcwYzdiMzZlLi4xYzFiZGQ0MjBjNDBkZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5AQCAtNTA4LDEzICs1MDgsMTAgQEAgc3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKVxuIFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19kZXY7XG4gXHRzdHJ1Y3QgdmdpY19pb19kZXZpY2UgKmlvZGV2O1xuIFxuLVx0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgZGIpO1xuK1x0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXHUwMDI2a3ZtX2lvX2dpY19vcHMsIGRiKTtcbiBcdGlmICgha3ZtX2lvX2RldilcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRpZiAoa3ZtX2lvX2Rldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2lvX2dpY19vcHMpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuLVxuIFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xuIFx0aWYgKGlvZGV2LVx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi5jYTcxMmQ2MDRhNTlmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtMjMxLDYgKzIzMSw3IEBAIGludCBrdm1faW9fYnVzX3JlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LCBncGFfdCBhZGRyLFxuIGludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4gXHRcdFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuK1x0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4gXHRcdFx0XHRcdCBncGFfdCBhZGRyKTtcbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9BU1lOQ19QRlxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwZC4uNmE2MjgyZjViYWMyOTYgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5AQCAtNjA2Niw2ICs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiB9XG4gXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuK1x0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4gXHRcdFx0XHRcdCBncGFfdCBhZGRyKVxuIHtcbiBcdHN0cnVjdCBrdm1faW9fYnVzICpidXM7XG5AQCAtNjA4Miw3ICs2MDgzLDkgQEAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuIFx0aWYgKGRldl9pZHggXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcbi1cdGlvZGV2ID0gYnVzLVx1MDAzZXJhbmdlW2Rldl9pZHhdLmRldjtcbitcdGlmIChidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2IFx1MDAyNlx1MDAyNlxuK1x0ICAgIGJ1cy1cdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXYtXHUwMDNlb3BzID09IG9wcylcbitcdFx0aW9kZXYgPSBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xuIFxuIG91dF91bmxvY2s6XG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBzcmN1X2lkeCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxODoyMy42ODE0Mzk0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTkyNzM5OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIEkvTyBCdXMgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGt2bV9pb19idXNfZ2V0X2RldmAuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIG5ldyBgb3BzYCBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgd2UncmUgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbiBib3RoIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAuIFRoZSBmdW5jdGlvbiBub3cgZGlyZWN0bHkgY2hlY2tzIGlmIGBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVx1MDAzZW9wcyA9PSBvcHNgLiBUaGlzIGxvb2tzIGxpa2UgYSBzaW1wbGlmaWNhdGlvbiwgcHVzaGluZyB0aGUgYG9wc2AgY2hlY2sgZG93biBpbnRvIHRoZSByZXRyaWV2YWwgbWV0aG9kLlxuXG5UaGUgcGF0Y2ggYWxzbyB1cGRhdGVzIHRoZSBjYWxsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkgYXJlIHBhc3NpbmcgYFx1MDAyNmt2bV9pb19naWNfb3BzYCBkaXJlY3RseSB0byBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbnN0ZWFkIG9mIGRvaW5nIGEgc2VwYXJhdGUgY2hlY2sgYWZ0ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIFRoYXQncyBnb29kIC0gbGVzcyBjb2RlLCBtb3JlIGNsYXJpdHkuIEl0J3MgdXN1YWxseSBhIGdvb2QgcGF0dGVybiB0byBwdXNoIGNoZWNrcyBkb3duIGludG8gZnVuY3Rpb25zIGFuZCByZWR1Y2UgZXh0ZXJuYWwgbG9naWMgd2hlcmUgcG9zc2libGUuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBsb2NhbGl6ZWQgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgZXZlcnkgb3RoZXIgaW5zdGFuY2Ugd2hlcmUgYGt2bV9pb19idXNfZ2V0X2RldmAgaXMgY2FsbGVkLiBBcmUgdGhlcmUgYW55IG90aGVyIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0aGF0IHJlcXVpcmUgdXBkYXRlcyBhcyBhIHJlc3VsdCBvZiB0aGlzIHBhcmFtZXRlciBhZGRpdGlvbj8gQXJlIHRoZXkgaGFuZGxlZCBjb3JyZWN0bHk/IEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBpcyBhcHBsaWVkIGNvbnNpc3RlbnRseSBhbmQgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMuIEdvdHRhIGRvIGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiwgaW5jbHVkaW5nIGEgc2VhcmNoIGZvciBhbGwgYGt2bV9pb19idXNfZ2V0X2RldmAgY2FsbHMgaW4gdGhlIEtWTSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxODoyOC4yNzQxODQxNTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5OTA0Nzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1faW9fYnVzX2dldF9kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTUwNj1zdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1MTE6XFx0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXFx1MDAyNmt2bV9pb19naWNfb3BzLCBkYik7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMi1cXHRpZiAoIWt2bV9pb19kZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjMxPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTIzMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjMzOnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjM0LVxcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NjAyMD1pbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy02MDY3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA2ODpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxudmlydC9rdm0va3ZtX21haW4uYy02MDY5LVxcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5NC19XFxudmlydC9rdm0va3ZtX21haW4uYzo2MDk1OkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faW9fYnVzX2dldF9kZXYpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTg6MzYuMzczMjM3NzcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ0NTI1MDQxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwYXRjaDpcblxuKipBbmFseXppbmcgYSBLVk0vVkdJQyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGt2bV9pb19idXNfZ2V0X2RldmAgYW5kIGl0cyBvbmx5IGtub3duIGNhbGxlciwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgLiBUaGF0J3MgYSBmb2N1c2VkIGFyZWEsIHdoaWNoIGlzIGdvb2QuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCAqdHJ1bHkqIGlzIHRoZSBvbmx5IHVzZXIgb2YgdGhhdCBmdW5jdGlvbi4gTGV0IG1lIHF1aWNrbHkgcnVuIGEgYGdyZXBgIHRocm91Z2ggdGhlIHNvdXJjZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFllcCwgdGhlIGdyZXAgY29uZmlybXMgaXQ7IGFzIGZhciBhcyB0aGUgY29kZWJhc2UgdGVsbHMgbWUsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcyBpbmRlZWQgdGhlIHNvbGUgY2FsbGVyLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcyByZWFjaGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MDAuODI1NzQ0MjE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDI2MDgxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUwNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTA2OnN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTA3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Mjg9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MzctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUzODpcXHRpdHMgPSBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKGt2bSwgZGIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MzktXFx0aWYgKElTX0VSUihpdHMpKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY0OT1zdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjYwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2NjE6XFx0cmV0dXJuIF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBhZGRyZXNzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MDQuNzI4MzU3NDU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0OTUwNzM2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBDYWNoZSBDaGVjayBhbmQgTVNJLXRvLUlUUyBUcmFuc2xhdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIGZ1bmN0aW9ucywgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGVpciBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkncmUgYmVpbmcgY2FsbGVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBrbm93IHRoZSAqY2FsbCBzaXRlcyog4oCTIHdoZXJlIGFuZCB3aHkgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBmaW5kIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBjYWNoZSBtYW5hZ2VtZW50IGFuZCBNU0kgdHJhbnNsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCByZWZlcmVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MzUuMjIzNDMzNTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MTM4MTc5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19pdHNfY2hlY2tfY2FjaGV8dmdpY19tc2lfdG9faXRzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01MjI9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19pdHNfY2FjaGVfa2V5KHUzMiBkZXZpZCwgdTMyIGV2ZW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1Mjg6c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI5LVxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIGRldmlkLCB1MzIgZXZlbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02MjM9aW50IHZnaWNfaXRzX3Jlc29sdmVfbHBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2NDk6c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NTAte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY5Mz1pbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk5LVxcdGRiID0gKHU2NCltc2ktXFx1MDAzZWFkZHJlc3NfaGkgXFx1MDAzY1xcdTAwM2MgMzIgfCBtc2ktXFx1MDAzZWFkZHJlc3NfbG87XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwMDpcXHRpcnEgPSB2Z2ljX2l0c19jaGVja19jYWNoZShrdm0sIGRiLCBtc2ktXFx1MDAzZWRldmlkLCBtc2ktXFx1MDAzZWRhdGEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MDEtXFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NzE4PWludCB2Z2ljX2l0c19pbmplY3RfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjUtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcyNjpcXHRpdHMgPSB2Z2ljX21zaV90b19pdHMoa3ZtLCBtc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjctXFx0aWYgKElTX0VSUihpdHMpKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9NDE2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfZ2V0X2l0cyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6NDI3OlxcdHJldHVybiB2Z2ljX21zaV90b19pdHMoa3ZtLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjgtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9NDM1PWludCB2Z2ljX2l0c19yZXNvbHZlX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzNi1cXHRcXHRcXHQgdTMyIGRldmlkLCB1MzIgZXZlbnRpZCwgc3RydWN0IHZnaWNfaXJxICoqaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDo0Mzc6c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC00MzgtaW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6NDIuMTM3MjU5NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI5MTY5NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0ncyBWZ2ljIE1TSSBJbmplY3Rpb24gTWVjaGFuaXNtcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IEtWTSBoYW5kbGVzIFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciAodkdJQykgTVNJIGluamVjdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZnaWNfaXRzX2luamVjdF9tc2lgIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgYHZnaWNfaXRzX2luamVjdF9tc2lgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgaG93IGl0IGhhbmRsZXMgdGhlIGluamVjdGlvbiBvZiB0aGUgTVNJLCB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBpdCB0b3VjaGVzLCBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuIFRoZW4sIEkgbmVlZCB0byByZXBlYXQgdGhlIHNhbWUgZm9yIGB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uYCB0byBzZWUgaWYgaXQgd29ya3MgZGlmZmVyZW50bHkuIEkgZXhwZWN0IHRoaXMgY2FjaGVkIHZlcnNpb24gdG8gYmUgbW9yZSBwZXJmb3JtYW50LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSB0cmFuc2xhdGlvbiBjYWNoaW5nIHN0cmF0ZWd5IGlzIGtleS4gQXJlIHRoZXJlIGFueSBlZGdlIGNhc2VzPyBBbnkgcmFjZSBjb25kaXRpb25zPyBJJ2xsIHByb2JhYmx5IGFsc28gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gZWFjaCBmdW5jdGlvbi4gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6NDUuNDY2NDMyNjIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ0MDQ2MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX2luamVjdF9tc2l8dmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz05Mj1pbnQga3ZtX3NldF9tc2koc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMDQtXFx0a3ZtX3BvcHVsYXRlX21zaShlLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxMDU6XFx0cmV0dXJuIHZnaWNfaXRzX2luamVjdF9tc2koa3ZtLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMDYtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTExPWludCBrdm1fYXJjaF9zZXRfaXJxX2luYXRvbWljKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTI1LVxcdFxcdGt2bV9wb3B1bGF0ZV9tc2koZSwgXFx1MDAyNm1zaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM6MTI2OlxcdFxcdHJldHVybiB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKGt2bSwgXFx1MDAyNm1zaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTI3LVxcdH1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02NzE9c3RhdGljIGludCB2Z2ljX2l0c190cmlnZ2VyX21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5Mi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjkzOmludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk0LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MTctICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcxODppbnQgdmdpY19pdHNfaW5qZWN0X21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxOS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzIyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MjM6XFx0aWYgKCF2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKGt2bSwgbXNpKSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzI0LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9MzQ0PXZvaWQgdmdpY19mbHVzaF9wZW5kaW5nX2xwaXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDozNDU6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0zNDYtaW50IHZnaWNfdjNfaGFzX2F0dHJfcmVncyhzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTQzNz1zdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjQzODppbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzOS12b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qga3ZtICprdm0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxOTo1MS43MTA0ODY0NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NjQ5MDkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBNU0kgSW5qZWN0aW9uIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgZXhwbG9pdGFibGUgdGhyb3VnaCBLVk0gTVNJIGluamVjdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGUgaXNzdWUsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2VudGVycyBhcm91bmQgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIGZ1bmN0aW9uLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIEtWTSwgc28gdGhpcyBjb3VsZCBoYXZlIHdpZGVzcHJlYWQgaW1wbGljYXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIHJlYWxseSBnZXRzIG15IGF0dGVudGlvbi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzc3VlIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBhcmNoaXRlY3R1cmUgb3IgaWYgaXQncyBwb3RlbnRpYWxseSBwcmVzZW50IGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgYnkgS1ZNLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGNhbGxlcnMgb2YgYGt2bV9pb19idXNfZ2V0X2RldmAsIHRvIHNlZSBpZiB0aGUgaW1wYWN0IG9mIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBsaW1pdGVkLCBvciBtb3JlIGJyb2FkLiBVbmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSB0b3RhbCBkYW1hZ2UgdGhpcyBjYW4gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxOTo1NC44OTY5ODA5NzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjUyNjI1NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2lvX2J1c19nZXRfZGV2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01MDY9c3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTExOlxcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFxcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MTItXFx0aWYgKCFrdm1faW9fZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTIzMT1pbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjIzMzpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTIzNC1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTYwMjA9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwNjg6c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2OS1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTQtfVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA5NTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjIwOjAwLjMyMjI0OTY1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY2NTE1ODkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIFBhdGNoKipcblxuT2theSwgc28gSSByZW1lbWJlciBydW5uaW5nIGEgYGdyZXBgIGZvciBga3ZtX2lvX2J1c19nZXRfZGV2YCBlYXJsaWVyLCBhbmQgaXQgb25seSBjYW1lIHVwIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgbWVhbnMgdGhpcyBmdW5jdGlvbiwgYXQgbGVhc3QgaW4gdGhlIGN1cnJlbnQgY29kZWJhc2UsIGlzIGV4Y2x1c2l2ZWx5IHV0aWxpemVkIHdpdGhpbiB0aGUgQVJNNjQgVkdJQyBJVFMgY29udGV4dC5cblxuVGhpcyBwYXRjaCwgaG93ZXZlciwgaXMgY2hhbmdpbmcgaG93IGBrdm1faW9fYnVzX2dldF9kZXZgIGJlaGF2ZXMsIHNwZWNpZmljYWxseSBieSBpbnRyb2R1Y2luZyBmaWx0ZXJpbmcgYmFzZWQgb24gYG9wc2AuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIHRpbWUgdG8gZXZhbHVhdGUgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUuIEdpdmVuIHRoZSBtb2RpZmljYXRpb24gdG91Y2hlcyBib3RoIEtWTSBjb3JlICphbmQqIEFSTTY0IFZHSUMgSVRTIGxvZ2ljLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkLlxuXG5JJ20gZ29pbmcgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYW5kIHRoZW4gYWxzbyBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAuIFRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudC4gS1ZNIGluIGdlbmVyYWwsIG9idmlvdXNseSwgYW5kIHNpbmNlIHRoaXMgdG91Y2hlcyBBUk02NCBWR0lDIElUUywgSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxNS45ODc0MTEyNjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTg1NDA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxNi4zMzcyNzEzNTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDY5NzczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgS1ZNJ3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCwgdW5kZXJzdG9vZC4gQnV0IG5vdyBteSBtaW5kIGp1bXBzIHRvIHRoZSBWR0lDIElUUy4gSSBrbm93IGl0IHBsYXlzIGEgY3J1Y2lhbCByb2xlLCBlc3BlY2lhbGx5IHdpdGggaW50ZXJydXB0IGRpc3RyaWJ1dGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoZXJlIGEgZGVkaWNhdGVkIHNlY3Rpb24sIGEgc3BlY2lmaWMgY29uZmlnIHNldHRpbmcsIGEgcGFydGljdWxhciBwYXJhbWV0ZXIsIGV2ZW4gYSBzdWJ0bGUgZGVwZW5kZW5jeSB3aXRoaW4gS1ZNJ3MgY29uZmlndXJhdGlvbiB0aGF0IGRpcmVjdGx5IGFkZHJlc3NlcyBhbmQgZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIFZHSUMgSVRTPyBPciBpcyBpdHMgY29uZmlndXJhdGlvbiBpbXBsaWNpdGx5IGhhbmRsZWQgdGhyb3VnaCBvdGhlciBLVk0tcmVsYXRlZCBzZXR0aW5ncz8gSSBuZWVkIHRvIGNsYXJpZnkgaWYgdGhlcmUncyBhIGRpc3RpbmN0IGNvbmZpZ3VyYXRpb24gcGF0aCBmb3IgdGhlIFZHSUMgSVRTLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgaXRzIGV4cGxpY2l0IHNldHVwIGlzIHZpdGFsIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIG15IHZpcnR1YWxpemVkIHN5c3RlbXMuIEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxOS42NTc5NzE5OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDU1ODYxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipJVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjA6MTkuODg4NTQwMjMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTYyMzkyNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb21wdDpcblxuKipEaXZpbmcgaW50byB0aGUgQXJtNjQgS1ZNIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgQXJtNjQgS1ZNLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLVk0gY29tcG9uZW50cyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRoaXMgZmlsZSB0byBjb250YWluIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3Mgc3BlY2lmaWMgdG8gQXJtNjQgdmlydHVhbGl6YXRpb24sIGFuZCBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gS1ZNIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBLVk0gYnVpbGQgc3lzdGVtIGFuZCBhbnkgbW9kdWxlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcyBhbmQgcnVsZXMgdGhhdCBkcml2ZSB0aGUgS1ZNIGJ1aWxkIGZvciB0aGlzIHNwZWNpZmljIGFyY2hpdGVjdHVyZS4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRyZWFzdXJlcyB0aGlzIE1ha2VmaWxlIGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjE6MDEuNDUwOTM1Njk1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEyMzQ1MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWMtaXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXFxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI1LVxcdCB2Z2ljL3ZnaWMtbW1pby12My5vIHZnaWMvdmdpYy1rdm0tZGV2aWNlLm8gXFxcXFxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjI2OlxcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cXHQgdmdpYy92Z2ljLXY1Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjE6MDMuMjYzMjg5MjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY2NDAyMjE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCBLVk0sIHNwZWNpZmljYWxseSBmb3IgQVJNNjQuIFRoZSBidWlsZCBwcm9jZXNzIGlzIHNpbXBsZSBlbm91Z2g7IGl0J3MgdW5jb25kaXRpb25hbGx5IGJ1aWx0IGlmIEtWTSBpcyBlbmFibGVkLCBzbyBqdXN0IGhhdmluZyBgS1ZNYCBpbiB0aGUgY29uZmlnIGlzIGFsbCB3ZSBuZWVkLiBUaGUgbWFpbiBwb2ludCBpcyB0aGF0IHRoaXMgaXMgdGFyZ2V0ZWQgYXQgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZS5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIHNlZSBhIGZldyBrZXkgc3ltYm9scyBoZXJlIHRoYXQgSSBuZWVkIHRvIGZvY3VzIG9uOiBga3ZtX2lvX2J1c19nZXRfZGV2YCwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgLCBgdmdpY19pdHNfY2hlY2tfY2FjaGVgLCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBga3ZtX2lvX2J1c19nZXRfZGV2YCBpc24ndCB1c2VkIGVsc2V3aGVyZSBidXQgd2l0aGluIHRoZSBpbW1lZGlhdGUgY2FsbCBjaGFpbi4gQWgsIGl0IGxvb2tzIGxpa2Ugb25seSBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AgdXNlcyBga3ZtX2lvX2J1c19nZXRfZGV2YC4gQW5kIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGB2Z2ljX2l0c19jaGVja19jYWNoZWAgYW5kIGB2Z2ljX21zaV90b19pdHNgLiBTbyB0aGF0IGNvbmZpcm1zIHRoZSBjZW50cmFsIGltcG9ydGFuY2Ugb2YgdGhvc2UgZm91ci5cblxuR29vZCwgbm93IHRvIGJlIHN1cmUgb2YgdGhlIHNjb3BlLCBsZXQncyBzZWUgaWYgYGt2bV9pb19idXNfZ2V0X2RldmAgaXMgZXhwb3J0ZWQuIE9rYXksIGl0IGxvb2tzIGxpa2UgYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faW9fYnVzX2dldF9kZXYpO2AgaXMgcHJlc2VudCwgY29uZmlybWluZyB0aGF0IGl0J3MgaW50ZW5kZWQgYXMgYW4gaW50ZXJuYWwgS1ZNIEFQSS5cblxuQWxyaWdodCwgbGV0J3MgcHVsbCBpdCBhbGwgdG9nZXRoZXI6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYGt2bV9pb19idXNfZ2V0X2RldmAsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCwgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCwgYHZnaWNfbXNpX3RvX2l0c2BcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEtWTWBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaW50ZXJuYWwgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyBmb3IgdGhlIElPIGJ1cywgYW5kIHNwZWNpZmljYWxseSB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBjYWxsZXIuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFmZmVjdHMgaG93IE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nIGFyZSBwZXJmb3JtZWQgdmlhIEtWTSBpb2N0bHMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDI3LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMToxMC45MjczMTM3NjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwNTIzMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9pb19idXNfZ2V0X2RldlwiLFxuICAgIFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiLFxuICAgIFwidmdpY19pdHNfY2hlY2tfY2FjaGVcIixcbiAgICBcInZnaWNfbXNpX3RvX2l0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faW9fYnVzX2dldF9kZXZcIixcbiAgICBcIl9fdmdpY19kb29yYmVsbF90b19pdHNcIixcbiAgICBcInZnaWNfaXRzX2NoZWNrX2NhY2hlXCIsXG4gICAgXCJ2Z2ljX21zaV90b19pdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 20:56:13 +0000 UTC FinishedAt: 2026-06-26 21:21:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "af27b86c-55be-400d-97b8-471df659250f" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_io_bus_get_dev", "__vgic_doorbell_to_its", "vgic_its_check_cache", "vgic_msi_to_its" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9pb19idXNfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtfX3ZnaWNfZG9vcmJlbGxfdG9faXRzJiMzNDssCiAgICAmIzM0O3ZnaWNfaXRzX2NoZWNrX2NhY2hlJiMzNDssCiAgICAmIzM0O3ZnaWNfbXNpX3RvX2l0cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5pbmRleCA0NDc3Zjg3MGM3YjM2ZS4uMWMxYmRkNDIwYzQwZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuQEAgLTUwOCwxMyAmIzQzOzUwOCwxMCBAQCBzdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXG4gXHRzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2RldjtcbiBcdHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7XG4gXG4tXHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7XG4mIzQzO1x0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXHUwMDI2a3ZtX2lvX2dpY19vcHMsIGRiKTtcbiBcdGlmICgha3ZtX2lvX2RldilcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRpZiAoa3ZtX2lvX2Rldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2lvX2dpY19vcHMpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuLVxuIFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xuIFx0aWYgKGlvZGV2LVx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi5jYTcxMmQ2MDRhNTlmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtMjMxLDYgJiM0MzsyMzEsNyBAQCBpbnQga3ZtX2lvX2J1c19yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwgZ3BhX3QgYWRkcixcbiBpbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuIFx0XHRcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xuIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiYjNDM7XHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcbiBcdFx0XHRcdFx0IGdwYV90IGFkZHIpO1xuIFxuICNpZmRlZiBDT05GSUdfS1ZNX0FTWU5DX1BGXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi42YTYyODJmNWJhYzI5NiAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC02MDY2LDYgJiM0Mzs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiB9XG4gXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLFxuIFx0XHRcdFx0XHQgZ3BhX3QgYWRkcilcbiB7XG4gXHRzdHJ1Y3Qga3ZtX2lvX2J1cyAqYnVzO1xuQEAgLTYwODIsNyAmIzQzOzYwODMsOSBAQCBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4gXHRpZiAoZGV2X2lkeCBcdTAwM2MgMClcbiBcdFx0Z290byBvdXRfdW5sb2NrO1xuIFxuLVx0aW9kZXYgPSBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xuJiM0MztcdGlmIChidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2IFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVx1MDAzZW9wcyA9PSBvcHMpXG4mIzQzO1x0XHRpb2RldiA9IGJ1cy1cdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXY7XG4gXG4gb3V0X3VubG9jazpcbiBcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIHNyY3VfaWR4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faW9fYnVzX2dldF9kZXYmIzM0OywKICAgICYjMzQ7X192Z2ljX2Rvb3JiZWxsX3RvX2l0cyYjMzQ7LAogICAgJiMzNDt2Z2ljX2l0c19jaGVja19jYWNoZSYjMzQ7LAogICAgJiMzNDt2Z2ljX21zaV90b19pdHMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgS1ZNIElPIGJ1cyBkZXZpY2UgcmV0cmlldmFsIGxvZ2ljIChga3ZtX2lvX2J1c19nZXRfZGV2YCkgYW5kIGl0cyBjYWxsZXIgaW4gdGhlIEFSTTY0IFZHSUMgSVRTIGltcGxlbWVudGF0aW9uIChgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2ApLiBUaGlzIGFmZmVjdHMgS1ZNIE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKaW5kZXggNDQ3N2Y4NzBjN2IzNmUuLjFjMWJkZDQyMGM0MGRmIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jCkBAIC01MDgsMTMgJiM0Mzs1MDgsMTAgQEAgc3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKQogCXN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fZGV2OwogCXN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7CiAKLQlrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7CiYjNDM7CWt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsICZhbXA7a3ZtX2lvX2dpY19vcHMsIGRiKTsKIAlpZiAoIWt2bV9pb19kZXYpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCi0JaWYgKGt2bV9pb19kZXYtJmd0O29wcyAhPSAmYW1wO2t2bV9pb19naWNfb3BzKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQogCWlvZGV2ID0gY29udGFpbmVyX29mKGt2bV9pb19kZXYsIHN0cnVjdCB2Z2ljX2lvX2RldmljZSwgZGV2KTsKIAlpZiAoaW9kZXYtJmd0O2lvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAppbmRleCBhYjhjZmFlYzgyZDMxZS4uY2E3MTJkNjA0YTU5ZjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTIzMSw2ICYjNDM7MjMxLDcgQEAgaW50IGt2bV9pb19idXNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdwYV90IGFkZHIsCiBpbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LAogCQkJICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7CiBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsCiYjNDM7CQkJCQkgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsCiAJCQkJCSBncGFfdCBhZGRyKTsKIAogI2lmZGVmIENPTkZJR19LVk1fQVNZTkNfUEYKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTBkLi42YTYyODJmNWJhYzI5NiAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC02MDY2LDYgJiM0Mzs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKIH0KIAogc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LAomIzQzOwkJCQkJIGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLAogCQkJCQkgZ3BhX3QgYWRkcikKIHsKIAlzdHJ1Y3Qga3ZtX2lvX2J1cyAqYnVzOwpAQCAtNjA4Miw3ICYjNDM7NjA4Myw5IEBAIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCwKIAlpZiAoZGV2X2lkeCAmbHQ7IDApCiAJCWdvdG8gb3V0X3VubG9jazsKIAotCWlvZGV2ID0gYnVzLSZndDtyYW5nZVtkZXZfaWR4XS5kZXY7CiYjNDM7CWlmIChidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldiAmYW1wOyZhbXA7CiYjNDM7CSAgICBidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldi0mZ3Q7b3BzID09IG9wcykKJiM0MzsJCWlvZGV2ID0gYnVzLSZndDtyYW5nZVtkZXZfaWR4XS5kZXY7CiAKIG91dF91bmxvY2s6CiAJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgc3JjdV9pZHgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjc5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIEkvTyBCdXMgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBga3ZtX2lvX2J1c19nZXRfZGV2YC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgbmV3IGBvcHNgIHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb24uIEVzc2VudGlhbGx5LCB3ZSYjMzk7cmUgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbiBib3RoIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAuIFRoZSBmdW5jdGlvbiBub3cgZGlyZWN0bHkgY2hlY2tzIGlmIGBidXMtJmd0O3JhbmdlW2Rldl9pZHhdLmRldi0mZ3Q7b3BzID09IG9wc2AuIFRoaXMgbG9va3MgbGlrZSBhIHNpbXBsaWZpY2F0aW9uLCBwdXNoaW5nIHRoZSBgb3BzYCBjaGVjayBkb3duIGludG8gdGhlIHJldHJpZXZhbCBtZXRob2QuCgpUaGUgcGF0Y2ggYWxzbyB1cGRhdGVzIHRoZSBjYWxsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkgYXJlIHBhc3NpbmcgYCZhbXA7a3ZtX2lvX2dpY19vcHNgIGRpcmVjdGx5IHRvIGBrdm1faW9fYnVzX2dldF9kZXZgIGluc3RlYWQgb2YgZG9pbmcgYSBzZXBhcmF0ZSBjaGVjayBhZnRlciB0aGUgZnVuY3Rpb24gcmV0dXJucy4gVGhhdCYjMzk7cyBnb29kIC0gbGVzcyBjb2RlLCBtb3JlIGNsYXJpdHkuIEl0JiMzOTtzIHVzdWFsbHkgYSBnb29kIHBhdHRlcm4gdG8gcHVzaCBjaGVja3MgZG93biBpbnRvIGZ1bmN0aW9ucyBhbmQgcmVkdWNlIGV4dGVybmFsIGxvZ2ljIHdoZXJlIHBvc3NpYmxlLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBsb2NhbGl6ZWQgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBpc3N1ZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGV2ZXJ5IG90aGVyIGluc3RhbmNlIHdoZXJlIGBrdm1faW9fYnVzX2dldF9kZXZgIGlzIGNhbGxlZC4gQXJlIHRoZXJlIGFueSBvdGhlciBjYWxsZXJzIGluIHRoZSBrZXJuZWwgdGhhdCByZXF1aXJlIHVwZGF0ZXMgYXMgYSByZXN1bHQgb2YgdGhpcyBwYXJhbWV0ZXIgYWRkaXRpb24/IEFyZSB0aGV5IGhhbmRsZWQgY29ycmVjdGx5PyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgaXMgYXBwbGllZCBjb25zaXN0ZW50bHkgYW5kIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCByZWdyZXNzaW9ucy4gR290dGEgZG8gYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLCBpbmNsdWRpbmcgYSBzZWFyY2ggZm9yIGFsbCBga3ZtX2lvX2J1c19nZXRfZGV2YCBjYWxscyBpbiB0aGUgS1ZNIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faW9fYnVzX2dldF9kZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTUwNj1zdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMC1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1MTE6XHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMi1cdGlmICgha3ZtX2lvX2Rldilcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjMxPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjMyLVx0XHRcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjIzMzpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjM0LVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz02MDIwPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MDY3LVxudmlydC9rdm0va3ZtX21haW4uYzo2MDY4OnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2OS1cdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBrdm1faW9fZGV2aWNlX29wcyAqb3BzLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5NC19XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwOTU6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9pb19idXNfZ2V0X2Rldik7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHBhdGNoOgoKKipBbmFseXppbmcgYSBLVk0vVkdJQyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBrdm1faW9fYnVzX2dldF9kZXZgIGFuZCBpdHMgb25seSBrbm93biBjYWxsZXIsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYC4gVGhhdCYjMzk7cyBhIGZvY3VzZWQgYXJlYSwgd2hpY2ggaXMgZ29vZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZG91YmxlLWNoZWNrIHRoYXQgYF9fdmdpY19kb29yYmVsbF90b19pdHNgICp0cnVseSogaXMgdGhlIG9ubHkgdXNlciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ3JlcGAgdGhyb3VnaCB0aGUgc291cmNlIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gWWVwLCB0aGUgZ3JlcCBjb25maXJtcyBpdDsgYXMgZmFyIGFzIHRoZSBjb2RlYmFzZSB0ZWxscyBtZSwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzIGluZGVlZCB0aGUgc29sZSBjYWxsZXIuIE5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCB0byBzZWUgaWYgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzIHJlYWNoYWJsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X192Z2ljX2Rvb3JiZWxsX3RvX2l0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MDUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTA2OnN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MDcte1xuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Mjg9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTM3LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUzODpcdGl0cyA9IF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBkYik7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTM5LVx0aWYgKElTX0VSUihpdHMpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02NDk9c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NjAtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjYxOlx0cmV0dXJuIF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBhZGRyZXNzKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NjItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NzgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgQ2FjaGUgQ2hlY2sgYW5kIE1TSS10by1JVFMgVHJhbnNsYXRpb24gQ2FsbHMqKgoKT2theSwgc28gSSBzZWUgdGhlc2UgZnVuY3Rpb25zLCBgdmdpY19pdHNfY2hlY2tfY2FjaGVgIGFuZCBgdmdpY19tc2lfdG9faXRzYCwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZWlyIGV4ZWN1dGlvbiBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgaW4gd2hpY2ggdGhleSYjMzk7cmUgYmVpbmcgY2FsbGVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBrbm93IHRoZSAqY2FsbCBzaXRlcyog4oCTIHdoZXJlIGFuZCB3aHkgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBmaW5kIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBjYWNoZSBtYW5hZ2VtZW50IGFuZCBNU0kgdHJhbnNsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCByZWZlcmVuY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWNfaXRzX2NoZWNrX2NhY2hlfHZnaWNfbXNpX3RvX2l0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTIyPXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfaXRzX2NhY2hlX2tleSh1MzIgZGV2aWQsIHUzMiBldmVudGlkKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MjctXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTI4OnN0YXRpYyBzdHJ1Y3QgdmdpY19pcnEgKnZnaWNfaXRzX2NoZWNrX2NhY2hlKHN0cnVjdCBrdm0gKmt2bSwgcGh5c19hZGRyX3QgZGIsXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI5LVx0XHRcdFx0XHQgICAgIHUzMiBkZXZpZCwgdTMyIGV2ZW50aWQpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTYyMz1pbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjQ4LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjY0OTpzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjUwLXtcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NjkzPWludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk5LVx0ZGIgPSAodTY0KW1zaS1cdTAwM2VhZGRyZXNzX2hpIFx1MDAzY1x1MDAzYyAzMiB8IG1zaS1cdTAwM2VhZGRyZXNzX2xvO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwMDpcdGlycSA9IHZnaWNfaXRzX2NoZWNrX2NhY2hlKGt2bSwgZGIsIG1zaS1cdTAwM2VkZXZpZCwgbXNpLVx1MDAzZWRhdGEpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcwMS1cdGlmICghaXJxKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz03MTg9aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjUtXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NzI2Olx0aXRzID0gdmdpY19tc2lfdG9faXRzKGt2bSwgbXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjctXHRpZiAoSVNfRVJSKGl0cykpXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9NDE2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfZ2V0X2l0cyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmMtNDI2LVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6NDI3Olx0cmV0dXJuIHZnaWNfbXNpX3RvX2l0cyhrdm0sIFx1MDAyNm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjgtfVxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTQzNT1pbnQgdmdpY19pdHNfcmVzb2x2ZV9scGkoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdmdpY19pdHMgKml0cyxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzNi1cdFx0XHQgdTMyIGRldmlkLCB1MzIgZXZlbnRpZCwgc3RydWN0IHZnaWNfaXJxICoqaXJxKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjQzNzpzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtNDM4LWludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0NgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0mIzM5O3MgVmdpYyBNU0kgSW5qZWN0aW9uIE1lY2hhbmlzbXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IEtWTSBoYW5kbGVzIFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciAodkdJQykgTVNJIGluamVjdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZnaWNfaXRzX2luamVjdF9tc2lgIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMuIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgYHZnaWNfaXRzX2luamVjdF9tc2lgLiBJJiMzOTtsbCB3YW50IHRvIHRyYWNlIGhvdyBpdCBoYW5kbGVzIHRoZSBpbmplY3Rpb24gb2YgdGhlIE1TSSwgdGhlIHJlbGV2YW50IHN0cnVjdHVyZXMgaXQgdG91Y2hlcywgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzLiBUaGVuLCBJIG5lZWQgdG8gcmVwZWF0IHRoZSBzYW1lIGZvciBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgdG8gc2VlIGlmIGl0IHdvcmtzIGRpZmZlcmVudGx5LiBJIGV4cGVjdCB0aGlzIGNhY2hlZCB2ZXJzaW9uIHRvIGJlIG1vcmUgcGVyZm9ybWFudCwgc28gdW5kZXJzdGFuZGluZyB0aGUgdHJhbnNsYXRpb24gY2FjaGluZyBzdHJhdGVneSBpcyBrZXkuIEFyZSB0aGVyZSBhbnkgZWRnZSBjYXNlcz8gQW55IHJhY2UgY29uZGl0aW9ucz8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayBob3cgZXJyb3IgY29uZGl0aW9ucyBhcmUgaGFuZGxlZCBpbiBlYWNoIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Z2ljX2l0c19pbmplY3RfbXNpfHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9OTI9aW50IGt2bV9zZXRfbXNpKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEwNC1cdGt2bV9wb3B1bGF0ZV9tc2koZSwgXHUwMDI2bXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jOjEwNTpcdHJldHVybiB2Z2ljX2l0c19pbmplY3RfbXNpKGt2bSwgXHUwMDI2bXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEwNi19XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTExPWludCBrdm1fYXJjaF9zZXRfaXJxX2luYXRvbWljKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pcnFmZC5jLTEyNS1cdFx0a3ZtX3BvcHVsYXRlX21zaShlLCBcdTAwMjZtc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM6MTI2Olx0XHRyZXR1cm4gdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihrdm0sIFx1MDAyNm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMjctXHR9XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY3MT1zdGF0aWMgaW50IHZnaWNfaXRzX3RyaWdnZXJfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5Mi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2OTM6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5NC17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxNy0gKi9cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MTg6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxOS17XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcyMi1cbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MjM6XHRpZiAoIXZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oa3ZtLCBtc2kpKVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcyNC1cdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9MzQ0PXZvaWQgdmdpY19mbHVzaF9wZW5kaW5nX2xwaXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjM0NTppbnQgdmdpY19pdHNfaW5qZWN0X21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmgtMzQ2LWludCB2Z2ljX3YzX2hhc19hdHRyX3JlZ3Moc3RydWN0IGt2bV9kZXZpY2UgKmRldiwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cik7XG4tLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9NDM3PXN0cnVjdCB2Z2ljX2l0cyAqdmdpY19tc2lfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSk7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDo0Mzg6aW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzOS12b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qga3ZtICprdm0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTY4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gTVNJIEluamVjdGlvbiBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBleHBsb2l0YWJsZSB0aHJvdWdoIEtWTSBNU0kgaW5qZWN0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZSwgd2hpY2ggbG9va3MgbGlrZSBpdCBjZW50ZXJzIGFyb3VuZCB0aGUgYGt2bV9pb19idXNfZ2V0X2RldmAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIEtWTSwgc28gdGhpcyBjb3VsZCBoYXZlIHdpZGVzcHJlYWQgaW1wbGljYXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIHJlYWxseSBnZXRzIG15IGF0dGVudGlvbi4KCk15IG5leHQgc3RlcCBpcyB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpc3N1ZSBpcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHByZXNlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZCBieSBLVk0uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGNhbGxlcnMgb2YgYGt2bV9pb19idXNfZ2V0X2RldmAsIHRvIHNlZSBpZiB0aGUgaW1wYWN0IG9mIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBsaW1pdGVkLCBvciBtb3JlIGJyb2FkLiBVbmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSB0b3RhbCBkYW1hZ2UgdGhpcyBjYW4gZG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9pb19idXNfZ2V0X2RldiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NTA2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcbi0tXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEwLVxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUxMTpcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFx1MDAyNmt2bV9pb19naWNfb3BzLCBkYik7XG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEyLVx0aWYgKCFrdm1faW9fZGV2KVxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0yMzE9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzItXHRcdFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjMzOnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzQtXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTYwMjA9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwNjctXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwNjg6c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxudmlydC9rdm0va3ZtX21haW4uYy02MDY5LVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MDk0LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA5NTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAyMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIFBhdGNoKioKCk9rYXksIHNvIEkgcmVtZW1iZXIgcnVubmluZyBhIGBncmVwYCBmb3IgYGt2bV9pb19idXNfZ2V0X2RldmAgZWFybGllciwgYW5kIGl0IG9ubHkgY2FtZSB1cCBpbiBgYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jYCBhbmQgYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IG1lYW5zIHRoaXMgZnVuY3Rpb24sIGF0IGxlYXN0IGluIHRoZSBjdXJyZW50IGNvZGViYXNlLCBpcyBleGNsdXNpdmVseSB1dGlsaXplZCB3aXRoaW4gdGhlIEFSTTY0IFZHSUMgSVRTIGNvbnRleHQuCgpUaGlzIHBhdGNoLCBob3dldmVyLCBpcyBjaGFuZ2luZyBob3cgYGt2bV9pb19idXNfZ2V0X2RldmAgYmVoYXZlcywgc3BlY2lmaWNhbGx5IGJ5IGludHJvZHVjaW5nIGZpbHRlcmluZyBiYXNlZCBvbiBgb3BzYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyB0aW1lIHRvIGV2YWx1YXRlIHRoZSBmdXp6aW5nIHBvdGVudGlhbCBoZXJlLiBHaXZlbiB0aGUgbW9kaWZpY2F0aW9uIHRvdWNoZXMgYm90aCBLVk0gY29yZSAqYW5kKiBBUk02NCBWR0lDIElUUyBsb2dpYywgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZC4KCkkmIzM5O20gZ29pbmcgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYW5kIHRoZW4gYWxzbyBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAuIFRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50LiBLVk0gaW4gZ2VuZXJhbCwgb2J2aW91c2x5LCBhbmQgc2luY2UgdGhpcyB0b3VjaGVzIEFSTTY0IFZHSUMgSVRTLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZnV6emluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKktWTSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBLVk0mIzM5O3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCwgdW5kZXJzdG9vZC4gQnV0IG5vdyBteSBtaW5kIGp1bXBzIHRvIHRoZSBWR0lDIElUUy4gSSBrbm93IGl0IHBsYXlzIGEgY3J1Y2lhbCByb2xlLCBlc3BlY2lhbGx5IHdpdGggaW50ZXJydXB0IGRpc3RyaWJ1dGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoZXJlIGEgZGVkaWNhdGVkIHNlY3Rpb24sIGEgc3BlY2lmaWMgY29uZmlnIHNldHRpbmcsIGEgcGFydGljdWxhciBwYXJhbWV0ZXIsIGV2ZW4gYSBzdWJ0bGUgZGVwZW5kZW5jeSB3aXRoaW4gS1ZNJiMzOTtzIGNvbmZpZ3VyYXRpb24gdGhhdCBkaXJlY3RseSBhZGRyZXNzZXMgYW5kIGRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBWR0lDIElUUz8gT3IgaXMgaXRzIGNvbmZpZ3VyYXRpb24gaW1wbGljaXRseSBoYW5kbGVkIHRocm91Z2ggb3RoZXIgS1ZNLXJlbGF0ZWQgc2V0dGluZ3M/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIHRoZXJlJiMzOTtzIGEgZGlzdGluY3QgY29uZmlndXJhdGlvbiBwYXRoIGZvciB0aGUgVkdJQyBJVFMsIGJlY2F1c2UgdW5kZXJzdGFuZGluZyBpdHMgZXhwbGljaXQgc2V0dXAgaXMgdml0YWwgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gbXkgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSSBjYW4mIzM5O3QgYWZmb3JkIHRvIG92ZXJsb29rIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipJVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2FybTY0L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGJhc2VkIG9uIHRoZSBwcm9tcHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBcm02NCBLVk0gTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgQXJtNjQgS1ZNLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLVk0gY29tcG9uZW50cyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRoaXMgZmlsZSB0byBjb250YWluIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3Mgc3BlY2lmaWMgdG8gQXJtNjQgdmlydHVhbGl6YXRpb24sIGFuZCBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gS1ZNIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBtb3JlIGdlbmVyYWwgS1ZNIGJ1aWxkIHN5c3RlbSBhbmQgYW55IG1vZHVsZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgdmFyaWFibGVzIGFuZCBydWxlcyB0aGF0IGRyaXZlIHRoZSBLVk0gYnVpbGQgZm9yIHRoaXMgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdHJlYXN1cmVzIHRoaXMgTWFrZWZpbGUgaG9sZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIxOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZnaWMtaXRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vTWFrZWZpbGU9MTY9a3ZtLXkgJiM0Mzs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXG4tLVxuYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUtMjUtXHQgdmdpYy92Z2ljLW1taW8tdjMubyB2Z2ljL3ZnaWMta3ZtLWRldmljZS5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZToyNjpcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cdCB2Z2ljL3ZnaWMtdjUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDI3CgkJCQkJCQlvdXRwdXQ6IDE1MQoJCQkJCQkJdGhvdWdodHM6IDQxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgS1ZNLCBzcGVjaWZpY2FsbHkgZm9yIEFSTTY0LiBUaGUgYnVpbGQgcHJvY2VzcyBpcyBzaW1wbGUgZW5vdWdoOyBpdCYjMzk7cyB1bmNvbmRpdGlvbmFsbHkgYnVpbHQgaWYgS1ZNIGlzIGVuYWJsZWQsIHNvIGp1c3QgaGF2aW5nIGBLVk1gIGluIHRoZSBjb25maWcgaXMgYWxsIHdlIG5lZWQuIFRoZSBtYWluIHBvaW50IGlzIHRoYXQgdGhpcyBpcyB0YXJnZXRlZCBhdCB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBzZWUgYSBmZXcga2V5IHN5bWJvbHMgaGVyZSB0aGF0IEkgbmVlZCB0byBmb2N1cyBvbjogYGt2bV9pb19idXNfZ2V0X2RldmAsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCwgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCwgYW5kIGB2Z2ljX21zaV90b19pdHNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYGt2bV9pb19idXNfZ2V0X2RldmAgaXNuJiMzOTt0IHVzZWQgZWxzZXdoZXJlIGJ1dCB3aXRoaW4gdGhlIGltbWVkaWF0ZSBjYWxsIGNoYWluLiBBaCwgaXQgbG9va3MgbGlrZSBvbmx5IGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCB1c2VzIGBrdm1faW9fYnVzX2dldF9kZXZgLiBBbmQgYF9fdmdpY19kb29yYmVsbF90b19pdHNgIGlzLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AuIFNvIHRoYXQgY29uZmlybXMgdGhlIGNlbnRyYWwgaW1wb3J0YW5jZSBvZiB0aG9zZSBmb3VyLgoKR29vZCwgbm93IHRvIGJlIHN1cmUgb2YgdGhlIHNjb3BlLCBsZXQmIzM5O3Mgc2VlIGlmIGBrdm1faW9fYnVzX2dldF9kZXZgIGlzIGV4cG9ydGVkLiBPa2F5LCBpdCBsb29rcyBsaWtlIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtgIGlzIHByZXNlbnQsIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBpbnRlbmRlZCBhcyBhbiBpbnRlcm5hbCBLVk0gQVBJLgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgaXQgYWxsIHRvZ2V0aGVyOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgYWJzb2x1dGVseS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBrdm1faW9fYnVzX2dldF9kZXZgLCBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEtWTWAKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBLVk0mIzM5O3MgaW50ZXJuYWwgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyBmb3IgdGhlIElPIGJ1cywgYW5kIHNwZWNpZmljYWxseSB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBjYWxsZXIuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFmZmVjdHMgaG93IE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nIGFyZSBwZXJmb3JtZWQgdmlhIEtWTSBpb2N0bHMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2lvX2J1c19nZXRfZGV2JiMzNDssCiAgICAmIzM0O19fdmdpY19kb29yYmVsbF90b19pdHMmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfY2hlY2tfY2FjaGUmIzM0OywKICAgICYjMzQ7dmdpY19tc2lfdG9faXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2lvX2J1c19nZXRfZGV2JiMzNDssCiAgICAmIzM0O19fdmdpY19kb29yYmVsbF90b19pdHMmIzM0OywKICAgICYjMzQ7dmdpY19pdHNfY2hlY2tfY2FjaGUmIzM0OywKICAgICYjMzQ7dmdpY19tc2lfdG9faXRzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIyLjg1MDAwODQ2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODI5NzM3Njg2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faW9fYnVzX2dldF9kZXZcIixcbiAgICBcIl9fdmdpY19kb29yYmVsbF90b19pdHNcIixcbiAgICBcInZnaWNfaXRzX2NoZWNrX2NhY2hlXCIsXG4gICAgXCJ2Z2ljX21zaV90b19pdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIyLjg1MDAxNDg0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI4Nzk0NTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODJiOThkNmM1YmNmMTEyYzNhODkwNDgyNGRkZDdiOGEyNjk0OWMwZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMToxODoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcXG5pbmRleCA0NDc3Zjg3MGM3YjM2ZS4uMWMxYmRkNDIwYzQwZGYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXFxuQEAgLTUwOCwxMyArNTA4LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcXG4gXFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19kZXY7XFxuIFxcdHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXY7XFxuIFxcbi1cXHRrdm1faW9fZGV2ID0ga3ZtX2lvX2J1c19nZXRfZGV2KGt2bSwgS1ZNX01NSU9fQlVTLCBkYik7XFxuK1xcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFxcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xcbiBcXHRpZiAoIWt2bV9pb19kZXYpXFxuIFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiBcXG4tXFx0aWYgKGt2bV9pb19kZXYtXFx1MDAzZW9wcyAhPSBcXHUwMDI2a3ZtX2lvX2dpY19vcHMpXFxuLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi1cXG4gXFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xcbiBcXHRpZiAoaW9kZXYtXFx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxcbiBcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuaW5kZXggYWI4Y2ZhZWM4MmQzMWUuLmNhNzEyZDYwNGE1OWYwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbkBAIC0yMzEsNiArMjMxLDcgQEAgaW50IGt2bV9pb19idXNfcmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsIGdwYV90IGFkZHIsXFxuIGludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBrdm1faW9fZGV2aWNlICpkZXYpO1xcbiBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuK1xcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4gXFx0XFx0XFx0XFx0XFx0IGdwYV90IGFkZHIpO1xcbiBcXG4gI2lmZGVmIENPTkZJR19LVk1fQVNZTkNfUEZcXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5pbmRleCBlNDRjMjBjMDQ5NjEwZC4uNmE2MjgyZjViYWMyOTYgMTAwNjQ0XFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG5AQCAtNjA2Niw2ICs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4gfVxcbiBcXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbitcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuIFxcdFxcdFxcdFxcdFxcdCBncGFfdCBhZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1faW9fYnVzICpidXM7XFxuQEAgLTYwODIsNyArNjA4Myw5IEBAIHN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4gXFx0aWYgKGRldl9pZHggXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcbi1cXHRpb2RldiA9IGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xcbitcXHRpZiAoYnVzLVxcdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXYgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVxcdTAwM2VvcHMgPT0gb3BzKVxcbitcXHRcXHRpb2RldiA9IGJ1cy1cXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xcbiBcXG4gb3V0X3VubG9jazpcXG4gXFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBzcmN1X2lkeCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjE4OjIzLjY4MTQzNzAzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY3NDY1OTM0NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9pb19idXNfZ2V0X2RldlwiLFxuICAgIFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiLFxuICAgIFwidmdpY19pdHNfY2hlY2tfY2FjaGVcIixcbiAgICBcInZnaWNfbXNpX3RvX2l0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MmI5OGQ2YzViY2YxMTJjM2E4OTA0ODI0ZGRkN2I4YTI2OTQ5YzBlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMjE6MTg6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMgYi9hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNcbmluZGV4IDQ0NzdmODcwYzdiMzZlLi4xYzFiZGQ0MjBjNDBkZiAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jXG5AQCAtNTA4LDEzICs1MDgsMTAgQEAgc3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKVxuIFx0c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19kZXY7XG4gXHRzdHJ1Y3QgdmdpY19pb19kZXZpY2UgKmlvZGV2O1xuIFxuLVx0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgZGIpO1xuK1x0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXHUwMDI2a3ZtX2lvX2dpY19vcHMsIGRiKTtcbiBcdGlmICgha3ZtX2lvX2RldilcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gXG4tXHRpZiAoa3ZtX2lvX2Rldi1cdTAwM2VvcHMgIT0gXHUwMDI2a3ZtX2lvX2dpY19vcHMpXG4tXHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuLVxuIFx0aW9kZXYgPSBjb250YWluZXJfb2Yoa3ZtX2lvX2Rldiwgc3RydWN0IHZnaWNfaW9fZGV2aWNlLCBkZXYpO1xuIFx0aWYgKGlvZGV2LVx1MDAzZWlvZGV2X3R5cGUgIT0gSU9ERVZfSVRTKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi5jYTcxMmQ2MDRhNTlmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtMjMxLDYgKzIzMSw3IEBAIGludCBrdm1faW9fYnVzX3JlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LCBncGFfdCBhZGRyLFxuIGludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXG4gXHRcdFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuK1x0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4gXHRcdFx0XHRcdCBncGFfdCBhZGRyKTtcbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9BU1lOQ19QRlxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwZC4uNmE2MjgyZjViYWMyOTYgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5AQCAtNjA2Niw2ICs2MDY2LDcgQEAgaW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcbiB9XG4gXG4gc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuK1x0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXG4gXHRcdFx0XHRcdCBncGFfdCBhZGRyKVxuIHtcbiBcdHN0cnVjdCBrdm1faW9fYnVzICpidXM7XG5AQCAtNjA4Miw3ICs2MDgzLDkgQEAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxuIFx0aWYgKGRldl9pZHggXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcbi1cdGlvZGV2ID0gYnVzLVx1MDAzZXJhbmdlW2Rldl9pZHhdLmRldjtcbitcdGlmIChidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2IFx1MDAyNlx1MDAyNlxuK1x0ICAgIGJ1cy1cdTAwM2VyYW5nZVtkZXZfaWR4XS5kZXYtXHUwMDNlb3BzID09IG9wcylcbitcdFx0aW9kZXYgPSBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2O1xuIFxuIG91dF91bmxvY2s6XG4gXHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBzcmN1X2lkeCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxODoyMy42ODE0Mzk0MTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTkyNzM5OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIEkvTyBCdXMgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGt2bV9pb19idXNfZ2V0X2RldmAuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIG5ldyBgb3BzYCBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uLiBFc3NlbnRpYWxseSwgd2UncmUgY2hhbmdpbmcgdGhlIHNpZ25hdHVyZSBvZiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbiBib3RoIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhbmQgYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAuIFRoZSBmdW5jdGlvbiBub3cgZGlyZWN0bHkgY2hlY2tzIGlmIGBidXMtXHUwMDNlcmFuZ2VbZGV2X2lkeF0uZGV2LVx1MDAzZW9wcyA9PSBvcHNgLiBUaGlzIGxvb2tzIGxpa2UgYSBzaW1wbGlmaWNhdGlvbiwgcHVzaGluZyB0aGUgYG9wc2AgY2hlY2sgZG93biBpbnRvIHRoZSByZXRyaWV2YWwgbWV0aG9kLlxuXG5UaGUgcGF0Y2ggYWxzbyB1cGRhdGVzIHRoZSBjYWxsIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgLiBTcGVjaWZpY2FsbHksIHRoZXkgYXJlIHBhc3NpbmcgYFx1MDAyNmt2bV9pb19naWNfb3BzYCBkaXJlY3RseSB0byBga3ZtX2lvX2J1c19nZXRfZGV2YCBpbnN0ZWFkIG9mIGRvaW5nIGEgc2VwYXJhdGUgY2hlY2sgYWZ0ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIFRoYXQncyBnb29kIC0gbGVzcyBjb2RlLCBtb3JlIGNsYXJpdHkuIEl0J3MgdXN1YWxseSBhIGdvb2QgcGF0dGVybiB0byBwdXNoIGNoZWNrcyBkb3duIGludG8gZnVuY3Rpb25zIGFuZCByZWR1Y2UgZXh0ZXJuYWwgbG9naWMgd2hlcmUgcG9zc2libGUuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBsb2NhbGl6ZWQgYW5kIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGlzc3Vlcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgZXZlcnkgb3RoZXIgaW5zdGFuY2Ugd2hlcmUgYGt2bV9pb19idXNfZ2V0X2RldmAgaXMgY2FsbGVkLiBBcmUgdGhlcmUgYW55IG90aGVyIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0aGF0IHJlcXVpcmUgdXBkYXRlcyBhcyBhIHJlc3VsdCBvZiB0aGlzIHBhcmFtZXRlciBhZGRpdGlvbj8gQXJlIHRoZXkgaGFuZGxlZCBjb3JyZWN0bHk/IEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNoYW5nZSBpcyBhcHBsaWVkIGNvbnNpc3RlbnRseSBhbmQgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgcmVncmVzc2lvbnMuIEdvdHRhIGRvIGEgdGhvcm91Z2ggaW52ZXN0aWdhdGlvbiwgaW5jbHVkaW5nIGEgc2VhcmNoIGZvciBhbGwgYGt2bV9pb19idXNfZ2V0X2RldmAgY2FsbHMgaW4gdGhlIEtWTSBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxODoyOC4yNzQxODQxNTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA5OTA0Nzk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1faW9fYnVzX2dldF9kZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTUwNj1zdGF0aWMgc3RydWN0IHZnaWNfaXRzICpfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKHN0cnVjdCBrdm0gKmt2bSwgZ3BhX3QgZGIpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTEwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1MTE6XFx0a3ZtX2lvX2RldiA9IGt2bV9pb19idXNfZ2V0X2Rldihrdm0sIEtWTV9NTUlPX0JVUywgXFx1MDAyNmt2bV9pb19naWNfb3BzLCBkYik7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMi1cXHRpZiAoIWt2bV9pb19kZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjMxPWludCBrdm1faW9fYnVzX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTIzMi1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjMzOnN0cnVjdCBrdm1faW9fZGV2aWNlICprdm1faW9fYnVzX2dldF9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMjM0LVxcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NjAyMD1pbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy02MDY3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA2ODpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxudmlydC9rdm0va3ZtX21haW4uYy02MDY5LVxcdFxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qga3ZtX2lvX2RldmljZV9vcHMgKm9wcyxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5NC19XFxudmlydC9rdm0va3ZtX21haW4uYzo2MDk1OkVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faW9fYnVzX2dldF9kZXYpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTg6MzYuMzczMjM3NzcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ0NTI1MDQxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwYXRjaDpcblxuKipBbmFseXppbmcgYSBLVk0vVkdJQyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGt2bV9pb19idXNfZ2V0X2RldmAgYW5kIGl0cyBvbmx5IGtub3duIGNhbGxlciwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgLiBUaGF0J3MgYSBmb2N1c2VkIGFyZWEsIHdoaWNoIGlzIGdvb2QuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCAqdHJ1bHkqIGlzIHRoZSBvbmx5IHVzZXIgb2YgdGhhdCBmdW5jdGlvbi4gTGV0IG1lIHF1aWNrbHkgcnVuIGEgYGdyZXBgIHRocm91Z2ggdGhlIHNvdXJjZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIFllcCwgdGhlIGdyZXAgY29uZmlybXMgaXQ7IGFzIGZhciBhcyB0aGUgY29kZWJhc2UgdGVsbHMgbWUsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcyBpbmRlZWQgdGhlIHNvbGUgY2FsbGVyLiBOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIGlmIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcyByZWFjaGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MDAuODI1NzQ0MjE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MDI2MDgxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NDc5PXN0YXRpYyB1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFkX2l0c19pZHJlZ3Moc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUwNS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTA2OnN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKl9fdmdpY19kb29yYmVsbF90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBncGFfdCBkYilcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTA3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01Mjg9c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MzctXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjUzODpcXHRpdHMgPSBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzKGt2bSwgZGIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MzktXFx0aWYgKElTX0VSUihpdHMpKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY0OT1zdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjYwLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2NjE6XFx0cmV0dXJuIF9fdmdpY19kb29yYmVsbF90b19pdHMoa3ZtLCBhZGRyZXNzKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjYyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MDQuNzI4MzU3NDU3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0OTUwNzM2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBDYWNoZSBDaGVjayBhbmQgTVNJLXRvLUlUUyBUcmFuc2xhdGlvbiBDYWxscyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIGZ1bmN0aW9ucywgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSB0aGVpciBleGVjdXRpb24gZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHRzIGluIHdoaWNoIHRoZXkncmUgYmVpbmcgY2FsbGVkLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBrbm93IHRoZSAqY2FsbCBzaXRlcyog4oCTIHdoZXJlIGFuZCB3aHkgdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBmaW5kIHRoZSB1cHN0cmVhbSBmdW5jdGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBrZXkgdG8gZGVjaXBoZXJpbmcgdGhlaXIgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBjYWNoZSBtYW5hZ2VtZW50IGFuZCBNU0kgdHJhbnNsYXRpb24gd2l0aGluIHRoZSB2aXJ0dWFsaXphdGlvbiBjb250ZXh0LiBUaW1lIHRvIHRyYWNrIGRvd24gdGhvc2UgY2FsbCByZWZlcmVuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6MzUuMjIzNDMzNTI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MTM4MTc5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmdpY19pdHNfY2hlY2tfY2FjaGV8dmdpY19tc2lfdG9faXRzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01MjI9c3RhdGljIHVuc2lnbmVkIGxvbmcgdmdpY19pdHNfY2FjaGVfa2V5KHUzMiBkZXZpZCwgdTMyIGV2ZW50aWQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI3LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo1Mjg6c3RhdGljIHN0cnVjdCB2Z2ljX2lycSAqdmdpY19pdHNfY2hlY2tfY2FjaGUoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBkYixcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNTI5LVxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIGRldmlkLCB1MzIgZXZlbnRpZClcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02MjM9aW50IHZnaWNfaXRzX3Jlc29sdmVfbHBpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHZnaWNfaXRzICppdHMsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjQ4LVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo2NDk6c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy02NTAte1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jPTY5Mz1pbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk5LVxcdGRiID0gKHU2NCltc2ktXFx1MDAzZWFkZHJlc3NfaGkgXFx1MDAzY1xcdTAwM2MgMzIgfCBtc2ktXFx1MDAzZWFkZHJlc3NfbG87XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcwMDpcXHRpcnEgPSB2Z2ljX2l0c19jaGVja19jYWNoZShrdm0sIGRiLCBtc2ktXFx1MDAzZWRldmlkLCBtc2ktXFx1MDAzZWRhdGEpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MDEtXFx0aWYgKCFpcnEpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM9NzE4PWludCB2Z2ljX2l0c19pbmplY3RfbXNpKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjUtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcyNjpcXHRpdHMgPSB2Z2ljX21zaV90b19pdHMoa3ZtLCBtc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MjctXFx0aWYgKElTX0VSUihpdHMpKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM9NDE2PXN0YXRpYyBzdHJ1Y3QgdmdpY19pdHMgKnZnaWNfZ2V0X2l0cyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjYtXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLXY0LmM6NDI3OlxcdHJldHVybiB2Z2ljX21zaV90b19pdHMoa3ZtLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtdjQuYy00MjgtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9NDM1PWludCB2Z2ljX2l0c19yZXNvbHZlX2xwaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzNi1cXHRcXHRcXHQgdTMyIGRldmlkLCB1MzIgZXZlbnRpZCwgc3RydWN0IHZnaWNfaXJxICoqaXJxKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDo0Mzc6c3RydWN0IHZnaWNfaXRzICp2Z2ljX21zaV90b19pdHMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC00MzgtaW50IHZnaWNfaXRzX2luamVjdF9jYWNoZWRfdHJhbnNsYXRpb24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6NDIuMTM3MjU5NDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI5MTY5NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0ncyBWZ2ljIE1TSSBJbmplY3Rpb24gTWVjaGFuaXNtcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IEtWTSBoYW5kbGVzIFZpcnR1YWwgR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciAodkdJQykgTVNJIGluamVjdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHZnaWNfaXRzX2luamVjdF9tc2lgIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLiBMZXQncyBzdGFydCBieSBzY3J1dGluaXppbmcgYHZnaWNfaXRzX2luamVjdF9tc2lgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgaG93IGl0IGhhbmRsZXMgdGhlIGluamVjdGlvbiBvZiB0aGUgTVNJLCB0aGUgcmVsZXZhbnQgc3RydWN0dXJlcyBpdCB0b3VjaGVzLCBhbmQgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMuIFRoZW4sIEkgbmVlZCB0byByZXBlYXQgdGhlIHNhbWUgZm9yIGB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uYCB0byBzZWUgaWYgaXQgd29ya3MgZGlmZmVyZW50bHkuIEkgZXhwZWN0IHRoaXMgY2FjaGVkIHZlcnNpb24gdG8gYmUgbW9yZSBwZXJmb3JtYW50LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSB0cmFuc2xhdGlvbiBjYWNoaW5nIHN0cmF0ZWd5IGlzIGtleS4gQXJlIHRoZXJlIGFueSBlZGdlIGNhc2VzPyBBbnkgcmFjZSBjb25kaXRpb25zPyBJJ2xsIHByb2JhYmx5IGFsc28gY2hlY2sgaG93IGVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gZWFjaCBmdW5jdGlvbi4gTGV0J3MgZ2V0IHRvIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MTk6NDUuNDY2NDMyNjIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQ0MDQ2MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWNfaXRzX2luamVjdF9tc2l8dmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYz05Mj1pbnQga3ZtX3NldF9tc2koc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMDQtXFx0a3ZtX3BvcHVsYXRlX21zaShlLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYzoxMDU6XFx0cmV0dXJuIHZnaWNfaXRzX2luamVjdF9tc2koa3ZtLCBcXHUwMDI2bXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXJxZmQuYy0xMDYtfVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM9MTExPWludCBrdm1fYXJjaF9zZXRfaXJxX2luYXRvbWljKHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTI1LVxcdFxcdGt2bV9wb3B1bGF0ZV9tc2koZSwgXFx1MDAyNm1zaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmM6MTI2OlxcdFxcdHJldHVybiB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKGt2bSwgXFx1MDAyNm1zaSk7XFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWlycWZkLmMtMTI3LVxcdH1cXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz02NzE9c3RhdGljIGludCB2Z2ljX2l0c190cmlnZ2VyX21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB2Z2ljX2l0cyAqaXRzLFxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTY5Mi1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NjkzOmludCB2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tc2kgKm1zaSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNjk0LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy03MTctICovXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jOjcxODppbnQgdmdpY19pdHNfaW5qZWN0X21zaShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTcxOS17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzIyLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYzo3MjM6XFx0aWYgKCF2Z2ljX2l0c19pbmplY3RfY2FjaGVkX3RyYW5zbGF0aW9uKGt2bSwgbXNpKSlcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmMtNzI0LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLmg9MzQ0PXZvaWQgdmdpY19mbHVzaF9wZW5kaW5nX2xwaXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaDozNDU6aW50IHZnaWNfaXRzX2luamVjdF9tc2koc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21zaSAqbXNpKTtcXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMuaC0zNDYtaW50IHZnaWNfdjNfaGFzX2F0dHJfcmVncyhzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKTtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oPTQzNz1zdHJ1Y3QgdmdpY19pdHMgKnZnaWNfbXNpX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oOjQzODppbnQgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbXNpICptc2kpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy5oLTQzOS12b2lkIHZnaWNfaXRzX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1Y3Qga3ZtICprdm0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxOTo1MS43MTA0ODY0NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NjQ5MDkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBNU0kgSW5qZWN0aW9uIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHZ1bG5lcmFiaWxpdHkgaXMgZXhwbG9pdGFibGUgdGhyb3VnaCBLVk0gTVNJIGluamVjdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGUgaXNzdWUsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2VudGVycyBhcm91bmQgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIGZ1bmN0aW9uLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIEtWTSwgc28gdGhpcyBjb3VsZCBoYXZlIHdpZGVzcHJlYWQgaW1wbGljYXRpb25zLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGlzIGZ1bmN0aW9uIHJlYWxseSBnZXRzIG15IGF0dGVudGlvbi5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzc3VlIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBhcmNoaXRlY3R1cmUgb3IgaWYgaXQncyBwb3RlbnRpYWxseSBwcmVzZW50IGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgYnkgS1ZNLiBJJ2xsIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGNhbGxlcnMgb2YgYGt2bV9pb19idXNfZ2V0X2RldmAsIHRvIHNlZSBpZiB0aGUgaW1wYWN0IG9mIHRoaXMgdnVsbmVyYWJpbGl0eSBpcyBsaW1pdGVkLCBvciBtb3JlIGJyb2FkLiBVbmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGhlcmUgaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHRoZSB0b3RhbCBkYW1hZ2UgdGhpcyBjYW4gZG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToxOTo1NC44OTY5ODA5NzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjUyNjI1NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2lvX2J1c19nZXRfZGV2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYz01MDY9c3RhdGljIHN0cnVjdCB2Z2ljX2l0cyAqX192Z2ljX2Rvb3JiZWxsX3RvX2l0cyhzdHJ1Y3Qga3ZtICprdm0sIGdwYV90IGRiKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vdmdpYy92Z2ljLWl0cy5jLTUxMC1cXG5hcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmM6NTExOlxcdGt2bV9pb19kZXYgPSBrdm1faW9fYnVzX2dldF9kZXYoa3ZtLCBLVk1fTU1JT19CVVMsIFxcdTAwMjZrdm1faW9fZ2ljX29wcywgZGIpO1xcbmFyY2gvYXJtNjQva3ZtL3ZnaWMvdmdpYy1pdHMuYy01MTItXFx0aWYgKCFrdm1faW9fZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTIzMT1pbnQga3ZtX2lvX2J1c191bnJlZ2lzdGVyX2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yMzItXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9pb19kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjIzMzpzdHJ1Y3Qga3ZtX2lvX2RldmljZSAqa3ZtX2lvX2J1c19nZXRfZGV2KHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGJ1c19pZHgsXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTIzNC1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTYwMjA9aW50IGt2bV9pb19idXNfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgYnVzX2lkeCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYwNjg6c3RydWN0IGt2bV9pb19kZXZpY2UgKmt2bV9pb19idXNfZ2V0X2RldihzdHJ1Y3Qga3ZtICprdm0sIGVudW0ga3ZtX2J1cyBidXNfaWR4LFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjA2OS1cXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV9pb19kZXZpY2Vfb3BzICpvcHMsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTQtfVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NjA5NTpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2lvX2J1c19nZXRfZGV2KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTYwOTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIxOjIwOjAwLjMyMjI0OTY1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTY2NTE1ODkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBrdm1faW9fYnVzX2dldF9kZXZgIFBhdGNoKipcblxuT2theSwgc28gSSByZW1lbWJlciBydW5uaW5nIGEgYGdyZXBgIGZvciBga3ZtX2lvX2J1c19nZXRfZGV2YCBlYXJsaWVyLCBhbmQgaXQgb25seSBjYW1lIHVwIGluIGBhcmNoL2FybTY0L2t2bS92Z2ljL3ZnaWMtaXRzLmNgIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgbWVhbnMgdGhpcyBmdW5jdGlvbiwgYXQgbGVhc3QgaW4gdGhlIGN1cnJlbnQgY29kZWJhc2UsIGlzIGV4Y2x1c2l2ZWx5IHV0aWxpemVkIHdpdGhpbiB0aGUgQVJNNjQgVkdJQyBJVFMgY29udGV4dC5cblxuVGhpcyBwYXRjaCwgaG93ZXZlciwgaXMgY2hhbmdpbmcgaG93IGBrdm1faW9fYnVzX2dldF9kZXZgIGJlaGF2ZXMsIHNwZWNpZmljYWxseSBieSBpbnRyb2R1Y2luZyBmaWx0ZXJpbmcgYmFzZWQgb24gYG9wc2AuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCdzIHRpbWUgdG8gZXZhbHVhdGUgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUuIEdpdmVuIHRoZSBtb2RpZmljYXRpb24gdG91Y2hlcyBib3RoIEtWTSBjb3JlICphbmQqIEFSTTY0IFZHSUMgSVRTIGxvZ2ljLCBmdXp6aW5nIGlzIGFic29sdXRlbHkgd2FycmFudGVkLlxuXG5JJ20gZ29pbmcgdG8gemVybyBpbiBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2lvX2J1c19nZXRfZGV2YCBpdHNlbGYsIG9mIGNvdXJzZSwgYW5kIHRoZW4gYWxzbyBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AsIGB2Z2ljX2l0c19jaGVja19jYWNoZWAsIGB2Z2ljX21zaV90b19pdHNgLCBgdmdpY19pdHNfaW5qZWN0X21zaWAsIGFuZCBgdmdpY19pdHNfaW5qZWN0X2NhY2hlZF90cmFuc2xhdGlvbmAuIFRob3NlIGFyZSB0aGUga2V5IGFyZWFzIHRoYXQgbWlnaHQgYmUgaW1wYWN0ZWQgYnkgdGhpcyBjaGFuZ2UuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudC4gS1ZNIGluIGdlbmVyYWwsIG9idmlvdXNseSwgYW5kIHNpbmNlIHRoaXMgdG91Y2hlcyBBUk02NCBWR0lDIElUUywgSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgZnV6emluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxNS45ODc0MTEyNjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTg1NDA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyMDptZW51Y29uZmlnIEtWTVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxNi4zMzcyNzEzNTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDY5NzczMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgS1ZNJ3MgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBwb2ludCwgdW5kZXJzdG9vZC4gQnV0IG5vdyBteSBtaW5kIGp1bXBzIHRvIHRoZSBWR0lDIElUUy4gSSBrbm93IGl0IHBsYXlzIGEgY3J1Y2lhbCByb2xlLCBlc3BlY2lhbGx5IHdpdGggaW50ZXJydXB0IGRpc3RyaWJ1dGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoZXJlIGEgZGVkaWNhdGVkIHNlY3Rpb24sIGEgc3BlY2lmaWMgY29uZmlnIHNldHRpbmcsIGEgcGFydGljdWxhciBwYXJhbWV0ZXIsIGV2ZW4gYSBzdWJ0bGUgZGVwZW5kZW5jeSB3aXRoaW4gS1ZNJ3MgY29uZmlndXJhdGlvbiB0aGF0IGRpcmVjdGx5IGFkZHJlc3NlcyBhbmQgZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIFZHSUMgSVRTPyBPciBpcyBpdHMgY29uZmlndXJhdGlvbiBpbXBsaWNpdGx5IGhhbmRsZWQgdGhyb3VnaCBvdGhlciBLVk0tcmVsYXRlZCBzZXR0aW5ncz8gSSBuZWVkIHRvIGNsYXJpZnkgaWYgdGhlcmUncyBhIGRpc3RpbmN0IGNvbmZpZ3VyYXRpb24gcGF0aCBmb3IgdGhlIFZHSUMgSVRTLCBiZWNhdXNlIHVuZGVyc3RhbmRpbmcgaXRzIGV4cGxpY2l0IHNldHVwIGlzIHZpdGFsIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIG15IHZpcnR1YWxpemVkIHN5c3RlbXMuIEkgY2FuJ3QgYWZmb3JkIHRvIG92ZXJsb29rIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMDoxOS42NTc5NzE5OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDU1ODYxNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnLipJVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9hcm02NC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjA6MTkuODg4NTQwMjMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTYyMzkyNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb21wdDpcblxuKipEaXZpbmcgaW50byB0aGUgQXJtNjQgS1ZNIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgQXJtNjQgS1ZNLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgZGlyZWN0bHkgaW50byBgYXJjaC9hcm02NC9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLVk0gY29tcG9uZW50cyBhcmUgY29tcGlsZWQsIGxpbmtlZCwgYW5kIGludGVncmF0ZWQgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQuIEkgZXhwZWN0IHRoaXMgZmlsZSB0byBjb250YWluIGNyaXRpY2FsIGluZm9ybWF0aW9uIGFib3V0IGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3Mgc3BlY2lmaWMgdG8gQXJtNjQgdmlydHVhbGl6YXRpb24sIGFuZCBwb3RlbnRpYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gS1ZNIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBLVk0gYnVpbGQgc3lzdGVtIGFuZCBhbnkgbW9kdWxlLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcyBhbmQgcnVsZXMgdGhhdCBkcml2ZSB0aGUgS1ZNIGJ1aWxkIGZvciB0aGlzIHNwZWNpZmljIGFyY2hpdGVjdHVyZS4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRyZWFzdXJlcyB0aGlzIE1ha2VmaWxlIGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjE6MDEuNDUwOTM1Njk1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEyMzQ1MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZnaWMtaXRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL01ha2VmaWxlPTE2PWt2bS15ICs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxscy5vIHB2dGltZS5vIFxcXFxcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlLTI1LVxcdCB2Z2ljL3ZnaWMtbW1pby12My5vIHZnaWMvdmdpYy1rdm0tZGV2aWNlLm8gXFxcXFxcbmFyY2gvYXJtNjQva3ZtL01ha2VmaWxlOjI2OlxcdCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gdmdpYy92Z2ljLXYzLW5lc3RlZC5vIFxcXFxcXG5hcmNoL2FybTY0L2t2bS9NYWtlZmlsZS0yNy1cXHQgdmdpYy92Z2ljLXY1Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjE6MjE6MDMuMjYzMjg5MjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY2NDAyMjE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBpcyBhYm91dCBLVk0sIHNwZWNpZmljYWxseSBmb3IgQVJNNjQuIFRoZSBidWlsZCBwcm9jZXNzIGlzIHNpbXBsZSBlbm91Z2g7IGl0J3MgdW5jb25kaXRpb25hbGx5IGJ1aWx0IGlmIEtWTSBpcyBlbmFibGVkLCBzbyBqdXN0IGhhdmluZyBgS1ZNYCBpbiB0aGUgY29uZmlnIGlzIGFsbCB3ZSBuZWVkLiBUaGUgbWFpbiBwb2ludCBpcyB0aGF0IHRoaXMgaXMgdGFyZ2V0ZWQgYXQgdGhlIEFSTTY0IGFyY2hpdGVjdHVyZS5cblxuTm93LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIHNlZSBhIGZldyBrZXkgc3ltYm9scyBoZXJlIHRoYXQgSSBuZWVkIHRvIGZvY3VzIG9uOiBga3ZtX2lvX2J1c19nZXRfZGV2YCwgYF9fdmdpY19kb29yYmVsbF90b19pdHNgLCBgdmdpY19pdHNfY2hlY2tfY2FjaGVgLCBhbmQgYHZnaWNfbXNpX3RvX2l0c2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBga3ZtX2lvX2J1c19nZXRfZGV2YCBpc24ndCB1c2VkIGVsc2V3aGVyZSBidXQgd2l0aGluIHRoZSBpbW1lZGlhdGUgY2FsbCBjaGFpbi4gQWgsIGl0IGxvb2tzIGxpa2Ugb25seSBgX192Z2ljX2Rvb3JiZWxsX3RvX2l0c2AgdXNlcyBga3ZtX2lvX2J1c19nZXRfZGV2YC4gQW5kIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGB2Z2ljX2l0c19jaGVja19jYWNoZWAgYW5kIGB2Z2ljX21zaV90b19pdHNgLiBTbyB0aGF0IGNvbmZpcm1zIHRoZSBjZW50cmFsIGltcG9ydGFuY2Ugb2YgdGhvc2UgZm91ci5cblxuR29vZCwgbm93IHRvIGJlIHN1cmUgb2YgdGhlIHNjb3BlLCBsZXQncyBzZWUgaWYgYGt2bV9pb19idXNfZ2V0X2RldmAgaXMgZXhwb3J0ZWQuIE9rYXksIGl0IGxvb2tzIGxpa2UgYEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faW9fYnVzX2dldF9kZXYpO2AgaXMgcHJlc2VudCwgY29uZmlybWluZyB0aGF0IGl0J3MgaW50ZW5kZWQgYXMgYW4gaW50ZXJuYWwgS1ZNIEFQSS5cblxuQWxyaWdodCwgbGV0J3MgcHVsbCBpdCBhbGwgdG9nZXRoZXI6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBZZXMsIGFic29sdXRlbHkuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYGt2bV9pb19idXNfZ2V0X2RldmAsIGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCwgYHZnaWNfaXRzX2NoZWNrX2NhY2hlYCwgYHZnaWNfbXNpX3RvX2l0c2BcbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYEtWTWBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNJ3MgaW50ZXJuYWwgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyBmb3IgdGhlIElPIGJ1cywgYW5kIHNwZWNpZmljYWxseSB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gYW5kIGl0cyBjYWxsZXIuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFmZmVjdHMgaG93IE1TSSBpbmplY3Rpb24gYW5kIGRvb3JiZWxsIGhhbmRsaW5nIGFyZSBwZXJmb3JtZWQgdmlhIEtWTSBpb2N0bHMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDI3LCJPdXRwdXRUb2tlbnMiOjE1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMToyMToxMC45MjczMTM3NjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwNTIzMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9pb19idXNfZ2V0X2RldlwiLFxuICAgIFwiX192Z2ljX2Rvb3JiZWxsX3RvX2l0c1wiLFxuICAgIFwidmdpY19pdHNfY2hlY2tfY2FjaGVcIixcbiAgICBcInZnaWNfbXNpX3RvX2l0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEtWTSBJTyBidXMgZGV2aWNlIHJldHJpZXZhbCBsb2dpYyAoYGt2bV9pb19idXNfZ2V0X2RldmApIGFuZCBpdHMgY2FsbGVyIGluIHRoZSBBUk02NCBWR0lDIElUUyBpbXBsZW1lbnRhdGlvbiAoYF9fdmdpY19kb29yYmVsbF90b19pdHNgKS4gVGhpcyBhZmZlY3RzIEtWTSBNU0kgaW5qZWN0aW9uIGFuZCBkb29yYmVsbCBoYW5kbGluZywgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faW9fYnVzX2dldF9kZXZcIixcbiAgICBcIl9fdmdpY19kb29yYmVsbF90b19pdHNcIixcbiAgICBcInZnaWNfaXRzX2NoZWNrX2NhY2hlXCIsXG4gICAgXCJ2Z2ljX21zaV90b19pdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBLVk0gSU8gYnVzIGRldmljZSByZXRyaWV2YWwgbG9naWMgKGBrdm1faW9fYnVzX2dldF9kZXZgKSBhbmQgaXRzIGNhbGxlciBpbiB0aGUgQVJNNjQgVkdJQyBJVFMgaW1wbGVtZW50YXRpb24gKGBfX3ZnaWNfZG9vcmJlbGxfdG9faXRzYCkuIFRoaXMgYWZmZWN0cyBLVk0gTVNJIGluamVjdGlvbiBhbmQgZG9vcmJlbGwgaGFuZGxpbmcsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[1] Phase: Succeeded StartedAt: 2026-06-26 21:21:23 +0000 UTC FinishedAt: 2026-06-26 21:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 21:21:23 +0000 UTC FinishedAt: 2026-06-26 21:21:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2] Phase: Succeeded StartedAt: 2026-06-26 21:21:23 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-06-26 21:21:23 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 21:21:23 +0000 UTC FinishedAt: 2026-06-26 21:22:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 21:21:24 +0000 UTC FinishedAt: 2026-06-26 21:21:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowblzzc/series-workflowblzzc-convert-artifact-4084118826/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 21:22:00 +0000 UTC FinishedAt: 2026-06-26 21:51:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 21:22:00 +0000 UTC FinishedAt: 2026-06-26 21:51:50 +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:*b84afc75-0ef5-4d88-a7c0-ee2339befb82,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-workflowblzzc/series-workflowblzzc-convert-artifact-4084118826/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": "14eb3a0d-1b89-4faa-9ff3-7578aa2d7b7a", "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-workflowblzzc/series-workflowblzzc-build-action-1471426200/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 21:22:00 +0000 UTC FinishedAt: 2026-06-26 21:51:40 +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:*b84afc75-0ef5-4d88-a7c0-ee2339befb82,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-workflowblzzc/series-workflowblzzc-convert-artifact-4084118826/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": "14eb3a0d-1b89-4faa-9ff3-7578aa2d7b7a", "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-workflowblzzc/series-workflowblzzc-build-action-1471426200/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 21:51:50 +0000 UTC FinishedAt: 2026-06-26 21:51:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 21:51:50 +0000 UTC FinishedAt: 2026-06-26 21:51:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 21:51:50 +0000 UTC FinishedAt: 2026-06-26 21:52:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 21:51:50 +0000 UTC FinishedAt: 2026-06-26 21:51:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowblzzc/series-workflowblzzc-convert-artifact-1726049605/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 21:52:11 +0000 UTC FinishedAt: 2026-06-26 21:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 21:52:11 +0000 UTC FinishedAt: 2026-06-26 21:54:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14eb3a0d-1b89-4faa-9ff3-7578aa2d7b7a,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-workflowblzzc/series-workflowblzzc-build-action-1471426200/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-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 21:54:20 +0000 UTC FinishedAt: 2026-06-26 21:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 21:54:20 +0000 UTC FinishedAt: 2026-06-26 21:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 21:54:20 +0000 UTC FinishedAt: 2026-06-26 22:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 21:54:20 +0000 UTC FinishedAt: 2026-06-26 22:23:02 +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:*b84afc75-0ef5-4d88-a7c0-ee2339befb82,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-workflowblzzc/series-workflowblzzc-convert-artifact-1726049605/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": "192e2799-b11a-4753-8b72-68b99e24de06", "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-workflowblzzc/series-workflowblzzc-build-action-3568095633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 21:54:20 +0000 UTC FinishedAt: 2026-06-26 22:22:52 +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:*b84afc75-0ef5-4d88-a7c0-ee2339befb82,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-workflowblzzc/series-workflowblzzc-convert-artifact-1726049605/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": "192e2799-b11a-4753-8b72-68b99e24de06", "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-workflowblzzc/series-workflowblzzc-build-action-3568095633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 22:23:02 +0000 UTC FinishedAt: 2026-06-26 22:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 22:23:02 +0000 UTC FinishedAt: 2026-06-26 22:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 22:23:02 +0000 UTC FinishedAt: 2026-06-26 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 22:23:02 +0000 UTC FinishedAt: 2026-06-26 22:24:56 +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:*192e2799-b11a-4753-8b72-68b99e24de06,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-workflowblzzc/series-workflowblzzc-build-action-3568095633/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-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"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:*14eb3a0d-1b89-4faa-9ff3-7578aa2d7b7a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*192e2799-b11a-4753-8b72-68b99e24de06,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-workflowblzzc/series-workflowblzzc-build-action-1471426200/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-workflowblzzc/series-workflowblzzc-build-action-3568095633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:25:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:25:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"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-workflowblzzc/series-workflowblzzc-convert-artifact-63734218/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 22:25:06 +0000 UTC FinishedAt: 2026-06-26 22:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-06-26 22:25:16 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowblzzc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_io_bus_get_dev","__vgic_doorbell_to_its","vgic_its_check_cache","vgic_msi_to_its"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"af27b86c-55be-400d-97b8-471df659250f","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-06-26 22:25:16 +0000 UTC FinishedAt: 2026-06-26 22:54:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14eb3a0d-1b89-4faa-9ff3-7578aa2d7b7a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*192e2799-b11a-4753-8b72-68b99e24de06,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-workflowblzzc/series-workflowblzzc-build-action-1471426200/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-workflowblzzc/series-workflowblzzc-build-action-3568095633/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-workflowblzzc/series-workflowblzzc-convert-artifact-63734218/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil