Name: series-workflowf6rwg Phase: Succeeded StartedAt: 2026-08-07 01:24:23 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[0] Phase: Succeeded StartedAt: 2026-08-07 01:24:23 +0000 UTC FinishedAt: 2026-08-07 01:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 01:24:23 +0000 UTC FinishedAt: 2026-08-07 01:28:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-x86", "tree_url": "https://github.com/kvm-x86/linux.git", "commit_hash": "a806d364ef288a6443a1337820ea8410a7ccc6b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_INTEL_TDX", "INTEL_TDX_HOST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-x86", "tree_url": "https://github.com/kvm-x86/linux.git", "commit_hash": "a806d364ef288a6443a1337820ea8410a7ccc6b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_INTEL_TDX", "INTEL_TDX_HOST" ], "series_id": "410de8be-900a-4d20-9050-cccc03489738" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_run", "kvm_arch_vcpu_pre_fault_memory" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5pbmRleCA1MGFkZmZmNzViZTgyLi5hNTZlYWQ0MjM4OTdiIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5AQCAtMTEwOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcbiYjNDM7XHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NMRUVQLCB2Y3B1KSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC01MDMzLDcgJiM0Mzs1MDMzLDcgQEAgc3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4gXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlRSO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcbiYjNDM7XHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGNvbmRfcmVzY2hlZCgpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXG5pbmRleCBiMjcyYzIwNTg2YTc0Li42Yzg0MmU5MTkxYTUwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTE5OTUsNyAmIzQzOzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuJiM0MztcdFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IGQ5NGI1OTE0MGM0NTIuLjBhZjRiNGE5NWMyZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTgwNjAsNyAmIzQzOzgwNjAsNyBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0Ym9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTtcbiBcbiBcdGlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7XG4tXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4mIzQzO1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0ciA9IC1FSU87XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuQEAgLTIzMjQsMTMgJiM0MzsyMzI0LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdGVzdF9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHJldHVybiB0ZXN0X2JpdChyZXEgXHUwMDI2IEtWTV9SRVFVRVNUX01BU0ssICh2b2lkICopXHUwMDI2dmNwdS1cdTAwM2VyZXF1ZXN0cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fY2xlYXJfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBrdm1fY2xlYXJfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuJiM0MztcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbiYjNDM7XG4gXHRjbGVhcl9iaXQocmVxIFx1MDAyNiBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKVx1MDAyNnZjcHUtXHUwMDNlcmVxdWVzdHMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHQvKiBPbmNlIGEgVk0gaXMgZGVhZCwgaXQgbmVlZHMgdG8gc3RheSBkZWFkLiAqL1xuJiM0MztcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbiYjNDM7XG4gXHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChyZXEsIHZjcHUpKSB7XG4gXHRcdGt2bV9jbGVhcl9yZXF1ZXN0KHJlcSwgdmNwdSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmMKaW5kZXggNTBhZGZmZjc1YmU4Mi4uYTU2ZWFkNDIzODk3YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vYXJtLmMKQEAgLTExMDgsNyAmIzQzOzExMDgsNyBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkgewotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkKJiM0MzsJCWlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpCiAJCQlyZXR1cm4gLUVJTzsKIAogCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTEVFUCwgdmNwdSkpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCBjNTE5ZThlOGQ2NDZmLi5lYzM0Y2FhMDZiNmE1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTUwMzMsNyAmIzQzOzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwKIAkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJcmV0dXJuIC1FSU5UUjsKIAotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkKJiM0MzsJCWlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpCiAJCQlyZXR1cm4gLUVJTzsKIAogCQljb25kX3Jlc2NoZWQoKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jCmluZGV4IGIyNzJjMjA1ODZhNzQuLjZjODQyZTkxOTFhNTAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguYwpAQCAtMTk5NSw3ICYjNDM7MTk5NSw3IEBAIHN0YXRpYyBpbnQgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJaWYgKGt2bV92Y3B1X2hhc19ldmVudHModmNwdSkgfHwgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJCQlicmVhazsKIAotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkgewomIzQzOwkJaWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkgewogCQkJcmV0ID0gLUVJTzsKIAkJCWJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtODA2MCw3ICYjNDM7ODA2MCw3IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJYm9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTsKIAogCWlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7Ci0JCWlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7CiYjNDM7CQlpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7CiAJCQlyID0gLUVJTzsKIAkJCWdvdG8gb3V0OwogCQl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKaW5kZXggMDNiZmM5Mjg2NGI2ZS4uY2Y3ZmU4MzVjNGFkMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaApAQCAtMjMyNCwxMyAmIzQzOzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXJldHVybiB0ZXN0X2JpdChyZXEgJmFtcDsgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKikmYW1wO3ZjcHUtJmd0O3JlcXVlc3RzKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGt2bV9jbGVhcl9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwlCVUlMRF9CVUdfT04ocmVxID09IEtWTV9SRVFfVk1fREVBRCk7CiYjNDM7CiAJY2xlYXJfYml0KHJlcSAmYW1wOyBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKSZhbXA7dmNwdS0mZ3Q7cmVxdWVzdHMpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiYjNDM7CS8qIE9uY2UgYSBWTSBpcyBkZWFkLCBpdCBuZWVkcyB0byBzdGF5IGRlYWQuICovCiYjNDM7CUJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTsKJiM0MzsKIAlpZiAoa3ZtX3Rlc3RfcmVxdWVzdChyZXEsIHZjcHUpKSB7CiAJCWt2bV9jbGVhcl9yZXF1ZXN0KHJlcSwgdmNwdSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCB0d2Vha3Mgc29tZSBLVk0gY29kZS4gSXQmIzM5O3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZTogc3dhcHBpbmcgb3V0IGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbiBhIGZldyBrZXkgcGxhY2VzIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBmaWxlczogYGFybTY0L2FybS5jYCwgYHg4Ni9tbXUvbW11LmNgLCBgeDg2L3ZteC90ZHguY2AsIGFuZCBgeDg2L3g4Ni5jYC4gVGhlIHBhdGNoIGFsc28gdGhyb3dzIGluIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YCBpbiBga3ZtX2hvc3QuaGAuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGZ1bmN0aW9uYWwuIGBrdm1fY2hlY2tfcmVxdWVzdGAgKmNsZWFycyogdGhlIHJlcXVlc3QgYml0LCB3aGlsZSBga3ZtX3Rlc3RfcmVxdWVzdGAgb25seSAqdGVzdHMqIGl0LiBUaGUgY29tbWVudCBpbiB0aGUgcGF0Y2ggaXMgcHJldHR5IGV4cGxpY2l0OiAmIzM0O09uY2UgYSBWTSBpcyBkZWFkLCBpdCBuZWVkcyB0byBzdGF5IGRlYWQuJiMzNDsgU28sIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyBhIGJ1ZyBmaXgsIGVuc3VyaW5nIHRoYXQgYSBkZWFkIFZNIGRvZXNuJiMzOTt0IHJlc3VycmVjdCBpdHNlbGYgZHVlIHRvIHRoZSByZXF1ZXN0IGJlaW5nIGNsZWFyZWQgaW5jb3JyZWN0bHkuIE1ha2VzIHNlbnNlLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHN0YXRlIGNoYW5nZXMgaW4gYSBjb3JlIGNvbXBvbmVudCBsaWtlIHRoaXMsIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGEgdmlhYmxlIHNldCBvZiBjb25maWcgb3B0aW9ucyBhbmQgZm9jdXMgc3ltYm9scyB0byB0YXJnZXQuCgpGb3IgY29uZmlnIG9wdGlvbnMsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBLVk0gc3Vic3lzdGVtIGl0c2VsZiwgcGx1cyBhcmNoLXNwZWNpZmljIG9wdGlvbnM6IGBDT05GSUdfS1ZNYCwgYENPTkZJR19LVk1fSU5URUxgLCBhbmQgYENPTkZJR19LVk1fQU1EYC4KCk5vdywgZm9yIGZvY3VzIHN5bWJvbHMsIHRoZSBwYXRjaCBpdHNlbGYgZ2l2ZXMgYSBmZXcgc3VnZ2VzdGlvbnMgYmFzZWQgb24gdGhlIGxvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gY2hhbmdlczogYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIChhcm02NCksIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgICh4ODYpLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCAoeDg2KSwgYW5kIGB2Y3B1X2VudGVyX2d1ZXN0YCAoeDg2KS4gU28sIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlbiYjMzk7dCBpbmxpbmVkIG9yIHN0YXRpYzsgd2Ugd2FudCB0aGUgZW50cnlwb2ludHMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AsIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCBhbmQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGFyZSBhbGwgc3RhdGljIGluIHRoZWlyIHJlc3BlY3RpdmUgZmlsZXMuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgdGhlIHByb21wdCBzdGF0ZWQgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLgoKT2theSwgbGV0JiMzOTtzIGZpbmQgdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhbmQgc2VlIGlmIHRoZXkgYXJlIG5vbi1zdGF0aWM7IHRoZXkgc2hvdWxkIGJlIGJldHRlciB0YXJnZXRzLgoKRm9yIGBjaGVja192Y3B1X3JlcXVlc3RzYCBpbiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIG9uZSBjYWxsZXIuIFRoaXMgbG9va3MgbGlrZSBhIHByb21pc2luZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3RkcF9wYWdlX3ByZWZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTQ5NTU9c3RhdGljIGludCBrdm1fbW11X2RvX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAxOS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NTAyMDpzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAyMS1cdFx0XHRcdCB1NjQgZXJyb3JfY29kZSwgdTggKmxldmVsKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NTA2ND1sb25nIGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDk3LVx0ICovXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUwOTg6XHRyID0ga3ZtX3RkcF9wYWdlX3ByZWZhdWx0KHZjcHUsIHJhbmdlLVx1MDAzZWdwYSB8IGRpcmVjdF9iaXRzLCBlcnJvcl9jb2RlLCBcdTAwMjZsZXZlbCk7XG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwOTktXHRpZiAociBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTExCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gTWVtb3J5IEZhdWx0IEhhbmRsaW5nIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIEtWTSBtZW1vcnkgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgcHJlLWZhdWx0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIHByZXBhcmluZyBtZW1vcnkgcGFnZXMsIGxpa2VseSBwcmlvciB0byBhIG1vcmUgZ2VuZXJhbCBmYXVsdC4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhlIGNhbGwgdG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBURFAgKFRhZ2dlZCBEYXRhIFBhZ2UpIGlzIGEga2V5IGFzcGVjdCBoZXJlLCBhbmQgdGhlICYjMzQ7cHJlLWZhdWx0JiMzNDsgc3VnZ2VzdHMgd2UmIzM5O3JlIHByb2FjdGl2ZWx5IHNldHRpbmcgdXAgc29tZXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBga3ZtX3RkcF9wYWdlX3ByZWZhdWx0YCB0byB1bmRlcnN0YW5kICp3aGF0KiBpdCYjMzk7cyBzZXR0aW5nIHVwIGFuZCAqd2h5Ki4gSXMgdGhpcyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgY2hlY2tzLCBvciBib3RoPyBBcmUgd2UgcHJlLWZhdWx0aW5nIHRvIG1ha2UgYWNjZXNzIGZhc3RlciBvciB0byBlbnN1cmUgc29tZXRoaW5nIGxpa2UgYSB3cml0ZSBkb2VzbiYjMzk7dCB2aW9sYXRlIGEgc2hhZG93IHBhZ2U/CgpOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYC4gSXQgc2VlbXMgcmVsZXZhbnQgdG8gdGhlIHByZS1mYXVsdGluZyBmbG93LCBhcyBpdCBjb21lcyB1cCBpbiB0aGUgY29udGV4dCBvZiBURFggKFRydXN0ZWQgRG9tYWluIEV4dGVuc2lvbikgc3lzdGVtcywgd2hpY2ggaXMgc29tZXRoaW5nIHZlcnkgaGlnaC1sZXZlbC4gSSBhbSBnb2luZyB0byBleHBsb3JlIHRoZSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCB0byBzZWUgaG93IEVQVCAoRXh0ZW5kZWQgUGFnZSBUYWJsZXMpIHZpb2xhdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGNvbnRleHQgb2YgVERYLiBXaGF0IGlzIHRoZSBhcmNoaXRlY3R1cmUgZG9pbmcgdGhhdCBuZWVkcyBwcmUtZmF1bHRpbmc/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHZpb2xhdGlvbj8gSXMgdGhpcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgZ3Vlc3TigJlzIHZpZXcgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBpbiBURFg/IFRoaXMgd2lsbCBiZSB2ZXJ5IGltcG9ydGFudCBmb3IgbWUgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBTbyBmYXIgSSBrbm93IHRoYXQgYSBwcmUtZmF1bHQgaGFzIHRha2VuIHBsYWNlLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwcmUtZmF1bHRpbmcgaXMgZG9pbmcsIGFuZCB3aHkgaXQgaXMgZG9pbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE5MDM9c3RhdGljIGlubGluZSBib29sIHRkeF9pc19zZXB0X3Zpb2xhdGlvbl91bmV4cGVjdGVkX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTkxMy1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTkxNDpzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTE5MTUte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjAzMT1pbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIxMDYtXHRjYXNlIEVYSVRfUkVBU09OX0VQVF9WSU9MQVRJT046XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIxMDc6XHRcdHJldHVybiB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb24odmNwdSk7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIxMDgtXHRjYXNlIEVYSVRfUkVBU09OX09USEVSX1NNSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzM5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkFuYWx5emluZyBURFggRXhpdCBIYW5kbGluZyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBURFggZXhpdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBjb250ZXh0LiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYSBjYWxsIHRvIGB0ZHhfaGFuZGxlX2V4aXRgIHRyaWdnZXJzIGEgZnVydGhlciBhY3Rpb24sIHNwZWNpZmljYWxseSBhIGNhbGwgdG8gYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgdGR4X2hhbmRsZV9leGl0YCBpcyB0aGUgZ2VuZXJhbCBlbnRyeSBwb2ludCBmb3IgYW55IFREWCBleGl0LCBhbmQgaXQgdGhlbiBkaXNwYXRjaGVzIHRvIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIHdoZW4gdGhlIGV4aXQgaXMgcmVsYXRlZCB0byBhbiBFUFQgdmlvbGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgZGVzaWduIHBhdHRlcm4gZm9yIGhhbmRsaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleGNlcHRpb25zOiBhIHRvcC1sZXZlbCBmdW5jdGlvbiB0aGF0IGV4YW1pbmVzIHRoZSBleGl0IHJlYXNvbiBhbmQgcm91dGVzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyLgoKTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBpbnNpZGUgYHZjcHVfZW50ZXJfZ3Vlc3RgLCBsb2NhdGVkIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBUaGlzIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHdoZXJlIHRoZSB2aXJ0dWFsIENQVSByZXN1bWVzIGV4ZWN1dGlvbiB3aXRoaW4gdGhlIGd1ZXN0LiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCBpbiBkZXRlcm1pbmluZyBob3cgdGhlc2UgZXhpdHMgYXJlIGRldGVjdGVkLCBob3cgdGhleSBpbnRlcnJ1cHQgdGhlIGd1ZXN0LCBhbmQgaG93IGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGhhbmRsZXIuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpbnNpZGUgYHZjcHVfZW50ZXJfZ3Vlc3RgLCB0aGVyZSBhcmUgY2hlY2tzIGZvciBURFgtcmVsYXRlZCBjb25kaXRpb25zIGFuZCwgaWYgYW4gZXhpdCBpcyBwZW5kaW5nLCB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSB0byBjb25maXJtIHRoaXMsIHNwZWNpZmljYWxseSBob3cgYHRkeF9oYW5kbGVfZXhpdGAgaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIENQVSBlbnRyeSBzZXF1ZW5jZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCBvciBmbGFncyB0aGF0IHdvdWxkIGVuYWJsZSB0aGF0IGhhbmRsZXIgdG8gZ2V0IGNhbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X2VudGVyX2d1ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU0Ni1cdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3Olx0ICogdmNwdV9lbnRlcl9ndWVzdCgpIHJlcXVlc3RzIGFuIGltbWVkaWF0ZSBleGl0LCBhbmQgdGhlIGd1ZXN0XG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVx0ICogc2hvdWxkbiYjMzk7dCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjAyNj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfZmx1c2hfdGxiX2N1cnJlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXCYjMzQ7bG9jYWxcJiMzNDsgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTIwMzUtICogVExCIGZsdXNoZXMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgYW4gTU1VIGNvbnRleHQgYWxzbyBuZWVkIHRvIGJlIHNlcnZpY2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTM9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTMtXHRcdCAqIEtpY2sgYWxsIHZDUFVzIGJlZm9yZSBzZXR0aW5nIGFwaWN2X2luaGliaXRfcmVhc29ucyB0byBhdm9pZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTQ6XHRcdCAqIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2FuaXR5IGNoZWNrIFdBUk4gaW4gdmNwdV9lbnRlcl9ndWVzdCgpLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTUtXHRcdCAqIFRoaXMgdGFzayB3aWxsIHdhaXQgZm9yIGFsbCB2Q1BVcyB0byBhY2sgdGhlIGtpY2sgSVJRIGJlZm9yZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03OTE3LVx0XHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4mIzM5O3RcbmFyY2gveDg2L2t2bS94ODYuYzo3OTE4Olx0XHQgKiByZWRvIHZjcHVfZW50ZXJfZ3Vlc3QoKSB3aXRob3V0IHNlZWluZyB0aGUgbmV3IGluaGliaXQgc3RhdGUuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOS1cdFx0ICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODAzNz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTAtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1MTpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NjMxPXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ1LVx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDY6XHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY0Ny1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRmxvdyBvZiBgdmNwdV9ydW5gKioKClJpZ2h0LCBgdmNwdV9ydW5gIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHZpcnR1YWwgQ1BVJiMzOTtzIGV4ZWN1dGlvbiBsb29wLiBBbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHZjcHVfZW50ZXJfZ3Vlc3RgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBpbml0aWFsaXppbmcgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gU2luY2UgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGRldGVybWluZSBhbGwgY2FsbCBzaXRlcy4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IHdoYXQgdHJpZ2dlcnMgYHZjcHVfcnVuYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBvZiBgdmNwdV9ydW5gIGlzIGtleSB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBWQ1BVIHNjaGVkdWxpbmcgYW5kIGNvbnRleHQtc3dpdGNoaW5nIHN0cmF0ZWd5LiBJJiMzOTtsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNwdV9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTE1Njk9c3RhdGljIHZvaWQgcHZjbG9ja191cGRhdGVfdm1fZ3RvZF9jb3B5KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cdFx0XHRcdFx1MDAyNlx1MDAyNiAha2EtXHUwMDNlYmFja3dhcmRzX3RzY19vYnNlcnZlZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE1OTA6XHRcdFx0XHRcdTAwMjZcdTAwMjYgIWthLVx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcbmFyY2gveDg2L2t2bS94ODYuYy0xNTkxLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNjI1LVx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI2MjY6XHQgKiBraW5kIChzZWUgdmNwdV9ydW4pLiAgVmVuZG9yIHNwZWNpZmljIGNvZGUgY29udHJvbHMgKGNvbnNlcnZhdGl2ZWx5KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXHQgKiB3aGVuIHRoaXMgaXMgdHJ1ZSwgZm9yIGV4YW1wbGUgYWxsb3dpbmcgdGhlIHZDUFUgdG8gYmUgbWFya2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04MDQ2LSAqIENhbGxlZCB3aXRoaW4ga3ZtLVx1MDAzZXNyY3UgcmVhZCBzaWRlLlxuYXJjaC94ODYva3ZtL3g4Ni5jOjgwNDc6ICogUmV0dXJucyAxIHRvIGxldCB2Y3B1X3J1bigpIGNvbnRpbnVlIHRoZSBndWVzdCBleGVjdXRpb24gbG9vcCB3aXRob3V0XG5hcmNoL3g4Ni9rdm0veDg2LmMtODA0OC0gKiBleGl0aW5nIHRvIHRoZSB1c2Vyc3BhY2UuICBPdGhlcndpc2UsIHRoZSB2YWx1ZSB3aWxsIGJlIHJldHVybmVkIHRvIHRoZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDUxPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODM2NzpcdFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcbmFyY2gveDg2L2t2bS94ODYuYy04MzY4LVx0XHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUwMy1cbmFyY2gveDg2L2t2bS94ODYuYzo4NTA0OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MDUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NTU0PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcbmFyY2gveDg2L2t2bS94ODYuYy04NTU1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NTY6aW50IGt2bV9hcmNoX3ZjcHVfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTcte1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NTg6XHRyZXR1cm4ga3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSB8fCB2Y3B1LVx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcbmFyY2gveDg2L2t2bS94ODYuYy04NTU5LVx0ICAgICAgIGt2bV92Y3B1X2hhc19ldmVudHModmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1NjM9c3RhdGljIGlubGluZSBpbnQgdmNwdV9ibG9jayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU2NzpcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjgtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1OTMtXHRcdCAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg1OTQ6XHRcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYy04NTk1LVx0XHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjMwLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVx1MDAzZXNyY3UgcmVhZCBzaWRlLiAgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo4NjMxOnN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ0LVx0XHR2Y3B1LVx1MDAzZWFyY2guYXRfaW5zdHJ1Y3Rpb25fYm91bmRhcnkgPSBmYWxzZTtcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ1Olx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDYtXHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg3MTk9ZmFzdHBhdGhfdCBoYW5kbGVfZmFzdHBhdGhfaGx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODcyNi1cbmFyY2gveDg2L2t2bS94ODYuYzo4NzI3Olx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODcyOC1cdFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODg4MT1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04OTg1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg5ODY6XHRyID0gdmNwdV9ydW4odmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgS1ZNJiMzOTtzIFJ1biBFbnRyeXBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2Uga2ljayBvZmYgYSBLVk0gdmlydHVhbCBDUFUmIzM5O3MgZXhlY3V0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBJT0NUTCBjYWxsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGB2Y3B1X3J1bmAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0aG91Z2gsIGxldCYjMzk7cyBhbHNvIHRha2UgYSBsb29rIGF0IHRoZSBBUk02NC1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgSSYjMzk7bGwgY2hlY2sgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHNwZWNpZmljcyBJIG5lZWQgZm9yIHRoZSBBUk02NCBhcmNoaXRlY3R1cmUsIGFuZCBjb25maXJtIG15IGluaXRpYWwgdGhvdWdodCBvbiB0aGUgZW50cnlwb2ludCBhbmQgaXRzIHBsYWNlIGluIHRoZSBleGVjdXRpb24gZmxvdy4gVGhpcyB3aWxsIGxldCBtZSBzZWUgaWYgYW55dGhpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhhcHBlbnMgYmVmb3JlIGB2Y3B1X3J1bmAgZ2V0cyBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9MTA2Nj1zdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwOTItXHQgKiBPdGhlcndpc2UsIHdlIHdlcmUgdW5ibG9ja2VkIHRvIHByb2Nlc3MgYSBkaWZmZXJlbnQgZXZlbnQsIHN1Y2ggYXMgYVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTA5MzpcdCAqIHBlbmRpbmcgc2lnbmFsLiBSZXR1cm4gMSBhbmQgYWxsb3cga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKSB0b1xuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5NC1cdCAqIHByb2Nlc3MgdGhlIGV2ZW50LlxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEyMzA9c3RhdGljIGludCBub2luc3RyIGt2bV9hcm1fdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjQxLS8qKlxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI0MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAtIHRoZSBtYWluIFZDUFUgcnVuIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZ3Vlc3QgY29kZVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0My0gKiBAdmNwdTpcdFRoZSBWQ1BVIHBvaW50ZXJcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUwLSAqL1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI1MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgS1ZNIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGRpcmVjdCBteSBhdHRlbnRpb24gd2l0aGluIHRoaXMgS1ZNIGNvZGUuIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgc2VlbXMgbGlrZSBhIGdvb2QsIHNvbGlkIGVudHJ5IHBvaW50IGZvciBhIGRlZXBlciBkaXZlLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiwgdGhlIGxpa2VseSBjZW50ZXIgb2YgbXVjaCBvZiB0aGUgYWN0aW9uLiBCdXQsIGxldCYjMzk7cyBleHBsb3JlIGEgZmV3IG1vcmUgb3B0aW9ucyBiZWZvcmUgY29tbWl0dGluZy4gSSBzZWUgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAg4oCTIHRoYXQgb25lJiMzOTtzIGV4cG9ydGVkLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgZm9yIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIGFuZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgcHJvYmFibHkgaW1wb3J0YW50LiBBbmQsIGFoYSwgYHRkeF9oYW5kbGVfZXhpdGAhIFRoYXQmIzM5O3MgYWxzbyBub24tc3RhdGljLiBUaGlzIG9uZSBsb29rcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYHRkeF9oYW5kbGVfZXhpdGAgaW4gYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgIGZvciBtb3JlIGluZm9ybWF0aW9uLiBMb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RkeF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdGR4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYz05MjQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdGR4X3RvX3ZteF9leGl0X3JlYXNvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NDktXHRcdC8qXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjk1MDpcdFx0ICogRGVmZXIgS1ZNX0JVR19PTigpIHVudGlsIHRkeF9oYW5kbGVfZXhpdCgpIGJlY2F1c2UgdGhpcyBpcyBpblxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NTEtXHRcdCAqIG5vbi1pbnN0cnVtZW50YWJsZSBjb2RlIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC5cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTExMzI9c3RhdGljIGludCB0ZHhfaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzNy1cdCAqIE1hY2hpbmUgY2hlY2tzIGFyZSBoYW5kbGVkIGJ5IGhhbmRsZV9leGNlcHRpb25faXJxb2ZmKCksIG9yIGJ5XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjExMzg6XHQgKiB0ZHhfaGFuZGxlX2V4aXQoKSB3aXRoIFREWF9OT05fUkVDT1ZFUkFCTEUgc2V0IGlmIGEgI01DIG9jY3VycyBvblxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM5LVx0ICogVk0tRW50cnkuICBOTUlzIGFyZSBoYW5kbGVkIGJ5IHRkeF92Y3B1X2VudGVyX2V4aXQoKS5cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTIwMTc9aW50IHRkeF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMC1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjAzMTppbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDUyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB0ZHhfaGFuZGxlX2V4aXRgIGFuZCBNZW1vcnkgRmF1bHQgSGFuZGxpbmcqKgoKT2theSwgc28gYHRkeF9oYW5kbGVfZXhpdGAgaXNuJiMzOTt0IHN0YXRpYy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBtZW1vcnkgZmF1bHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIHg4NiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyB3b3Jrcywgc28gbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGluIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggYHRkeF9oYW5kbGVfZXhpdGAgKG9yICppZiogaXQgaW50ZXJhY3RzIHdpdGggaXQpLCBhcyBtZW1vcnkgZmF1bHRzIGFyZSBjcml0aWNhbCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBhIFREWCBleGl0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBhIGZhdWx0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYHRkeF9oYW5kbGVfZXhpdGAgaXMgcmVsZXZhbnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDYzLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA2NS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkzMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgSG90c3BvdHMgYW5kIENhbGwgQ2hhaW5zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUgd2l0aGluIHRoaXMgY29kZWJhc2UuIEkmIzM5O20gdGhpbmtpbmcgdGhlIHJlYWwgYm90dGxlbmVja3MsIHRoZSBhcmVhcyB3aGVyZSB3ZSYjMzk7cmUgc3BlbmRpbmcgdGhlIG1vc3QgY3ljbGVzLCBhcmUgcHJvYmFibHkgbGlua2VkIHRvIHRoZXNlIGZvY3VzIHN5bWJvbHM6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLCBhbmQgYHRkeF9oYW5kbGVfZXhpdGAuIFRoZXNlIGFyZSBteSBpbml0aWFsIGNhbmRpZGF0ZXMgZm9yIGhvdHNwb3RzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJIGFtIGdvaW5nIHRvIHNlZSB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgcG90ZW50aWFsbHkgY2FsbGVkIGJ5IGFueXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHBhdGhzIHRvIHNlZSB3aGVyZSBgdGR4X2hhbmRsZV9leGl0YCBpcyBiZWluZyBpbnZva2VkLiBUaGF0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZHhfaGFuZGxlX2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L21haW4uYz0xNTc9c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYwLVx0aWYgKGlzX3RkX3ZjcHUodmNwdSkpXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNjE6XHRcdHJldHVybiB0ZHhfaGFuZGxlX2V4aXQodmNwdSwgZmFzdHBhdGgpO1xuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYyLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9OTI0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHRkeF90b192bXhfZXhpdF9yZWFzb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtOTQ5LVx0XHQvKlxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzo5NTA6XHRcdCAqIERlZmVyIEtWTV9CVUdfT04oKSB1bnRpbCB0ZHhfaGFuZGxlX2V4aXQoKSBiZWNhdXNlIHRoaXMgaXMgaW5cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtOTUxLVx0XHQgKiBub24taW5zdHJ1bWVudGFibGUgY29kZSB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0xMTMyPXN0YXRpYyBpbnQgdGR4X2hhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTExMzctXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxMTM4Olx0ICogdGR4X2hhbmRsZV9leGl0KCkgd2l0aCBURFhfTk9OX1JFQ09WRVJBQkxFIHNldCBpZiBhICNNQyBvY2N1cnMgb25cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzOS1cdCAqIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieSB0ZHhfdmNwdV9lbnRlcl9leGl0KCkuXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yMDE3PWludCB0ZHhfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzAtXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIwMzE6aW50IHRkeF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZmFzdHBhdGgpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzIte1xuLS1cbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTE0Mz12b2lkIHRkeF92Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTQ0OmludCB0ZHhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTQ1LVx0XHRlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFeGl0IEhhbmRsaW5nIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIEtWTS9WTVggY29kZSBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBleGl0IGhhbmRsaW5nLiBJIHNlZSB0aGF0IGB2dF9oYW5kbGVfZXhpdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIFZNIGV4aXRzIHdpdGhpbiB0aGUgVk1YIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyBubyBzdXJwcmlzZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBpbiBtb3JlIGRldGFpbC4gVGhlIGJyZWFkY3J1bWIgSSYjMzk7dmUgZ290IGlzIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBjYWxscyBgdGR4X2hhbmRsZV9leGl0YC4gVGhhdCB0ZWxscyBtZSB0aGF0IGZvciBURFgtZW5hYmxlZCBzeXN0ZW1zIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMsIGxvd2VyLWxldmVsIGhhbmRsZXIgYmVpbmcgaW52b2tlZC4gVGhpcyBtYWtlcyBzZW5zZTsgVERYIGludHJvZHVjZXMgYSB3aG9sZSBzZXQgb2YgbmV3IGV4aXQgcmVhc29ucyBhbmQgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgdGhhdCB3b3VsZCBuZWVkIHNwZWNpYWxpemVkIGhhbmRsaW5nLCBidXQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlZ3JhdGlvbiB3b3Jrcy4gTGV0IG1lIGNvbmZpcm0gdGhlIGNvbnRleHQgb2YgYHZ0X2hhbmRsZV9leGl0YCBhbmQgd2hlcmUgaXQgbGl2ZXM6IGFoLCBpdCYjMzk7cyBkZWZpbmVkIGluIGBhcmNoL3g4Ni9rdm0vdm14L21haW4uY2AuIFRoYXQgZ2l2ZXMgbWUgdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlIHRvIGNoZWNrIHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIGl0cyBpbnRlZ3JhdGlvbiB3aXRoIHRoZSByZXN0IG9mIHRoZSBWTVggYXJjaGl0ZWN0dXJlLiBOZXh0LCBJIHdpbGwgY2hlY2sgdGhlIGNhbGxlci9jYWxsZWUgcmVsYXRpb25zaGlwcyBpbiB0aGlzIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z0X2hhbmRsZV9leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MTQ5PXN0YXRpYyBmYXN0cGF0aF90IHZ0X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTYtXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNTc6c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTgtXHRcdFx0ICBlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKlVuZGVyc3RhbmRpbmcgdGhlIEtWTS94ODYgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZSBsb3ctbGV2ZWwgS1ZNIGludGVyYWN0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkgc2VlIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBpcyBhIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIGBrdm1feDg2X29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IG9mIGNvbnRyb2wsIGxpa2VseSBoYW5kbGluZyBWTSBleGl0cyBvZiBzb21lIGtpbmQuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbWFwIHRoaXMgd2l0aGluIHRoZSBLVk0veDg2IGNvbnRyb2wgZmxvdy4gVG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIHRoZSByZWxldmFudCBsb2dpYywgSSBzaG91bGQgdHJhY2UgaXQgaW4gdGhlIGJyb2FkZXIgS1ZNL3g4NiBlY29zeXN0ZW0uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IEkgc2hvdWxkIG5vdyBjb25zaWRlciB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGB2dF9oYW5kbGVfZXhpdGAgY2FsbGJhY2sgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBvdGhlciBzeW1ib2xzIGlkZW50aWZpZWQgYXJlIHNpZ25pZmljYW50OiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgeDg2IHNwZWNpZmljLgoKTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzeW1ib2xzIGludGVyYWN0LiBJIHdhbnQgdG8gY2hlY2sgaG93IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGZpdCBpbnRvIHRoaXMgcGljdHVyZSwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBgdnRfaGFuZGxlX2V4aXRgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRob3NlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTg4NDQ9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODg4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBLVk0gQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgcGF0aCBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIEtWTSBjb2RlLiBSaWdodCwgKmBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAqIC0gSSBzZWVtIHRvIHJlY2FsbCB0aGF0JiMzOTtzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgY2hlY2sgYENPTkZJR19LVk1gIGFuZCBgQ09ORklHX0tWTV9JTlRFTGAgYXMgb2J2aW91cyBzdGFydGluZyBwb2ludHMsIGJ1dCBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIG1vcmUgaW52b2x2ZWQuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIFREWCBoYXMgdG8gZmFjdG9yIGludG8gdGhpcy4gQW5kLCB5ZXMsIFREWCBpcyB2ZXJ5IGxpa2VseSBjb25uZWN0ZWQgdG8gYENPTkZJR19JTlRFTF9URFhfSE9TVGAuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjbHVlcyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0MDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgbmF2aWdhdGluZyByaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBtb2R1bGVzIGFuZCByZWxldmFudCB4ODYtc3BlY2lmaWMgY29tcG9uZW50cyBhcmUgYnVpbHQgYW5kIGxpbmtlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhpcyBNYWtlZmlsZSBpcyBnb2luZyB0byBiZSB0aGUgcm9hZG1hcC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpYWwgYnVpbGQgcnVsZXMgc3BlY2lmaWMgdG8gS1ZNIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBob3cgS1ZNIGludGVyYWN0cyB3aXRoIGZlYXR1cmVzIGxpa2UgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyAoVlQteCBvciBBTUQtViksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIG9uIHRoZSB4ODYgcGxhdGZvcm0uIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyBNYWtlZmlsZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTIxPWt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3NzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtWTSBhbmQgVERYIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGdvZXMgdG8gdmVyaWZ5aW5nIGhvdyB0aGlzIGlzIHNldCB1cCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIHNwZWNpZmljYWxseSBmb3IgYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAuIEkga25vdyB0aGF0JiMzOTtzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCBmb3IgeDg2IEtWTSwgc28gaXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgVERYIG1pZ2h0IHJlbGF0ZS4gVGhlbiwgSSBuZWVkIHRvIGNvbXBhcmUgdGhhdCB0byB0aGUgQVJNNjQgc2lkZSwgc28gSSYjMzk7bGwgYWxzbyBjaGVjayBgYXJjaC9hcm02NC9rdm0vYXJtLmNgIHRvIHNlZSB0aGUgc2V0dXAgdGhlcmUuIEkgcmVjYWxsIHRoYXQmIzM5O3MgY29tcGlsZWQgZm9yIGBDT05GSUdfS1ZNYC4KClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZTogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMX1REWGAuIE5vdywganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYEtWTV9JTlRFTF9URFhgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIEtjb25maWcgZmlsZXMuIENhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTV9JTlRFTF9URFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNL1REWCBFbnRyeSBQb2ludCBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgS1ZNX0lOVEVMX1REWGAuIFJpZ2h0LiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoZSBLVk0vVERYIGludGVyYWN0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0cyB0ZWxsIG1lIHRvIGNoZWNrIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIOKAkyBzdGFuZGFyZCBzdGFydGluZyBwb2ludHMuIEJ1dCwgYXJlIHRoZXJlIG90aGVycz8gSSYjMzk7bGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzLgoKTGV0IG1lIHNlZS4uLiBkaWdnaW5nIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AsIEkgc2VlIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGNhbGxlZCBmcm9tIGB2Y3B1X3J1bmAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyBvbmUuIE5vdywgbG9va2luZyBhdCBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AsIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIGlzIGNhbGxlZCBmcm9tIGB0ZHhfaGFuZGxlX2V4aXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdnRfaGFuZGxlX2V4aXRgLiBUaGF0IGxvb2tzIGludGVyZXN0aW5nLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVERYLiBJbiBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIEkgc2VlIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBBbmQganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMsIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgY2FsbHMgYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIGZyb20gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4KCk9rYXksIHNvIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBwaWN0dXJlOiBUaGUgcHJpbWFyeSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlOgoKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAKKiAgIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgCiogICBgdnRfaGFuZGxlX2V4aXRgCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgYHZ0X2hhbmRsZV9leGl0YCBpcyBzdGF0aWMuLi4gdGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSB0cmFjZSBpdHMgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2dF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE0OT1zdGF0aWMgZmFzdHBhdGhfdCB2dF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBydW5fZmxhZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU2LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTU3OnN0YXRpYyBpbnQgdnRfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU4LVx0XHRcdCAgZW51bSBleGl0X2Zhc3RwYXRoX2NvbXBsZXRpb24gZmFzdHBhdGgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjgzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBgaGFuZGxlX2V4aXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB2dF9oYW5kbGVfZXhpdGAgaXMgYSBgc3RhdGljYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWw7IGl0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIEl0JiMzOTtzIGFsc28gYXNzaWduZWQgdG8gYGt2bV94ODZfb3BzLmhhbmRsZV9leGl0YC4gVGhpcyBzdWdnZXN0cyB0aGF0IGBoYW5kbGVfZXhpdGAgbGlrZWx5IGFjdHMgYXMgYSBoYW5kbGVyIHdpdGhpbiB0aGUgS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgcGFydCBvZiBhIHNldCBvZiBvcGVyYXRpb25zIChga3ZtX3g4Nl9vcHNgKSB0aGF0IEtWTSB1c2VzLiBOb3cgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXM6IHdoYXQgdHJpZ2dlcnMgdGhlIGV4ZWN1dGlvbiBvZiBgaGFuZGxlX2V4aXRgPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGNoYWluIHRvIGBoYW5kbGVfZXhpdGAgaXMgdGhlIG5leHQsIGFuZCBtb3N0IHZpdGFsLCBzdGVwIGluIGNvbXByZWhlbmRpbmcgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgaGFuZGxlX2V4aXRgIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50IGl0JiMzOTtzIG1lYW50IHRvIGhhbmRsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTgwNTE9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODQyMS1cdC8qXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODQyMjpcdCAqIFN5bmMgeGZkIGJlZm9yZSBjYWxsaW5nIGhhbmRsZV9leGl0X2lycW9mZigpIHdoaWNoIG1heVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0MjMtXHQgKiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgZ3Vlc3RfZnB1Ojp4ZmQgaXMgdXAtdG8tZGF0ZSAoZS5nLlxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NDI4LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0Mjk6XHRrdm1feDg2X2NhbGwoaGFuZGxlX2V4aXRfaXJxb2ZmKSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04NDMwLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NDkwLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0OTE6XHRyID0ga3ZtX3g4Nl9jYWxsKGhhbmRsZV9leGl0KSh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcbmFyY2gveDg2L2t2bS94ODYuYy04NDkyLVx0cmV0dXJuIHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTEyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEVudHJ5IFBvaW50cyBpbnRvIHRoZSBLVk0gR3Vlc3QgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgd2UgZW50ZXIgZ3Vlc3QgZXhlY3V0aW9uIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBtYXAgc2hvd3MgdGhhdCBgdmNwdV9lbnRlcl9ndWVzdGAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQgaXQgZXZlbnR1YWxseSBjYWxscyBga3ZtX3g4Nl9jYWxsKGhhbmRsZV9leGl0KWAuICBOb3csIEkgcmVjYWxsIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGNhbGxlZCBmcm9tIGB2Y3B1X3J1bmAuIEFuZCBgdmNwdV9ydW5gLCBpbiB0dXJuLCBpcyBpbnZva2VkIGJ5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFNvLCB0aGF0IGxhc3QgZnVuY3Rpb24sIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIHNlZW1zIHRvIGJlIGEgbWFqb3IgZW50cnkgcG9pbnQgZm9yIGd1ZXN0IGV4ZWN1dGlvbiwgY292ZXJpbmcgYSBzaWduaWZpY2FudCBwYXJ0IG9mIHRoZSBjYWxsIGNoYWluLiBJdCBjb25uZWN0cyBhbGwgdGhlIHBpZWNlcywgZXhjZXB0IGZvciBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4KClRoZXJlZm9yZSwgbXkgY29yZSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHNlY3VyZSBhbmQgZWZmaWNpZW50IHdheS4KCk5vdywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpZiBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBpcyBleHBvc2VkIG9yIHJlYWNoYWJsZSB2aWEgdGhlIHN5c2NhbGwgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBjaGVjayBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGV4ZWN1dGlvbiBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDYzLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA2NS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MTY5OD1zdGF0aWMgaW50IHRkeF9zZXB0X21hcF9sZWFmX3NwdGUoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm4sIGVudW0gcGdfbGV2ZWwgbGV2ZWwsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEwLVx0LypcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTcxMTpcdCAqIEVuc3VyZSBwcmVfZmF1bHRfYWxsb3dlZCBpcyByZWFkIGJ5IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSgpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTE3MTItXHQgKiBiZWZvcmUga3ZtX3RkeC1cdTAwM2VzdGF0ZS4gIFVzZXJzcGFjZSBtdXN0IG5vdCBiZSBhbGxvd2VkIHRvIHByZS1mYXVsdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc2MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgTWVtb3J5IEZhdWx0cyBpbiBLVk0gLSBUaGUgSHVudCBCZWdpbnMqKgoKQWxyaWdodCwgYSBtZW1vcnkgZmF1bHQmIzM5O3MgZ290IG1lIHN0dW1wZWQsIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBLVk0gYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSByb290IG9mIHRoZSBwcm9ibGVtLiBUaGF0IHVzdWFsbHkgbWVhbnMgbG9va2luZyBhdCB0aGUgY29tbW9uIGVudHJ5IHBvaW50cy4KClRoZSBmdW5jdGlvbiBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSDigJMgaXQmIzM5O3MgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWU6IHByZS1mYXVsdCwgbWVtb3J5LiBNeSB0aGlua2luZyBpcywgbGV0JiMzOTtzIHN0YXJ0IGJ5IGZpbmRpbmcgYWxsIHRoZSBwbGFjZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqY2FsbGVkKi4gVGhlIHNvdXJjZSBjb2RlIGlzIG15IG1hcCBoZXJlLCBhbmQgYHZpcnQva3ZtL2t2bV9tYWluLmNgIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgd2lsbCBwcm9iYWJseSBiZSB3aGVyZSB0aGlzIGNyaXRpY2FsIHN0dWZmIGlzIHNldCB1cC4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgYW5kIHRyaWNrcyB0byBmaW5kIGFsbCB0aGUgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgbmFycm93IGRvd24gdGhlIHNjb3BlIG9mIHRoZSBwcm9ibGVtLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBoZWxwIG1lIHBhaW50IGEgcGljdHVyZSBhbmQgc2hvdyBtZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZW5lcmd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz00MzUzPXN0YXRpYyBpbnQga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00Mzc3LVxudmlydC9rdm0va3ZtX21haW4uYzo0Mzc4Olx0XHRyID0ga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHZjcHUsIHJhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM3OS1cdFx0aWYgKFdBUk5fT05fT05DRShyID09IDAgfHwgciA9PSAtRUlPKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyMzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gS1ZNIGludGVybmFsczoKCioqRGl2aW5nIGludG8gdGhlIE1lbW9yeSBGYXVsdCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSW1tZWRpYXRlbHksIEkgY29ubmVjdCB0aGF0IGZ1bmN0aW9uIG5hbWUgdG8gdGhlIGJyb2FkZXIgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGZhdWx0cywgc3BlY2lmaWNhbGx5ICpiZWZvcmUqIHRoZSBhY3R1YWwgZmF1bHQgaGFuZGxpbmcgb2NjdXJzLCB3aGljaCBpcyBhIGtleSBwaGFzZSBpbiB2aXJ0dWFsIG1hY2hpbmUgZXhlY3V0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbi4KClRoZSB0ZXh0IHBvaW50cyBvdXQgdGhhdCBga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaXMgY2FsbGVkIGZyb20gYGt2bV92Y3B1X2lvY3RsYC4gQWgsIG5vdyBpdCYjMzk7cyBjbGVhci4gYGlvY3RsYCBjYWxscyBhcmUgdGhlIGdhdGV3YXkgZm9yIHVzZXItc3BhY2UgcmVxdWVzdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZCAqaW4gcmVzcG9uc2UqIHRvIGEgY29udHJvbCBvcGVyYXRpb24gaW5pdGlhdGVkIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCBsaWtlbHkgZnJvbSBRRU1VIG9yIGFub3RoZXIgdXNlci1zcGFjZSBLVk0gbWFuYWdlbWVudCBhcHBsaWNhdGlvbi4gVGhpcyBtZWFucyB3ZSBhcmUgd2l0aGluIHRoZSBpb2N0bCBoYW5kbGVyLCBhbmQgc29tZXRoaW5nIGluaXRpYXRlZCBieSB1c2VyLXNwYWNlIHJlcXVpcmVzIHRoZSBrZXJuZWwgdG8gKnByZWVtcHRpdmVseSogY2hlY2sgbWVtb3J5LgoKU28sIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBhIGh5cG90aGVzaXMuIFRoZSBgaW9jdGxgIHJlcXVlc3QgbXVzdCBiZSByZWxhdGVkIHRvIHNvbWUgbWVtb3J5IG9wZXJhdGlvbi4gUGVyaGFwcyB0aGUgdXNlci1zcGFjZSBpcyB0cnlpbmcgdG8gYWNjZXNzIG9yIG1hbmlwdWxhdGUgYSBtZW1vcnkgcmVnaW9uIHRoYXQmIzM5O3MgZWl0aGVyIG5vdCB5ZXQgZnVsbHkgc2V0IHVwIGZvciB0aGUgdkNQVSBvciByZXF1aXJlcyBzb21lIHByZS1lbXB0aXZlIGNoZWNrIG9uIHRoZSBtZW1vcnkgc3RhdGUgcHJpb3IgdG8gdGhlIHZDUFUgYWNjZXNzaW5nIHRoZSBtZW1vcnkuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBwYWdlIHRhYmxlIG1hbmFnZW1lbnQsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHNoYWRvdyBwYWdlIHRhYmxlIHVwZGF0ZXMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBpb2N0bCBjb21tYW5kLiBJdCYjMzk7cyBhbG1vc3QgYWx3YXlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgc29tZXRoaW5nIHVudXN1YWwgaXMgZ29pbmcgb24uCgpNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gdGhlIHNwZWNpZmljIGBpb2N0bGAgY2FsbCB0aGF0IHRyaWdnZXJzIHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uLCBhbmQgZGV0ZXJtaW5lIHRoZSBleGFjdCByZWFzb24gZm9yIHRoZSBjaGVjay4gV2hhdCBtZW1vcnkgcmVnaW9uIGlzIGJlaW5nIHRvdWNoZWQ/IFdoYXQgaXMgaXQgdHJ5aW5nIHRvIGFjY29tcGxpc2g/IEFyZSB3ZSBkZWFsaW5nIHdpdGggZ3Vlc3QgcGh5c2ljYWwgbWVtb3J5IG9yIHNoYWRvdyBwYWdlIHRhYmxlIGVudHJpZXM/IEEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2h5IGFuZCB0aGUgaG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTQzMjc9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9nZXRfc3RhdHNfZmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM1Mi0jaWZkZWYgQ09ORklHX0tWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDM1MzpzdGF0aWMgaW50IGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxudmlydC9rdm0va3ZtX21haW4uYy00MzU0LVx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQyNT1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ2NTctXHRcdFx0YnJlYWs7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ2NTg6XHRcdHIgPSBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHZjcHUsIFx1MDAyNnJhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDY1OS1cdFx0LyogUGFzcyBiYWNrIGxlZnRvdmVyIHJhbmdlLiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGVudHJ5IHBvaW50cyBmb3IgY2VydGFpbiBvcGVyYXRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGt2bV92Y3B1X2lvY3RsYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgYW5kIHRoYXQgZm9jdXNpbmcgb24gYGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIG9yLCBiZXR0ZXIgeWV0LCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCwgd291bGQgYmUgYSBnb29kIGFwcHJvYWNoLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGFsc28gY2FsbGVkIGZyb20gYGt2bV92Y3B1X2lvY3RsYC4gVGhpcyBtZWFucyBga3ZtX3ZjcHVfaW9jdGxgIGlzIHRoZSBwcmltYXJ5LCBidXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBhbmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgYXJlIG1vcmUgZ3JhbnVsYXIuCgpJIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIExldCYjMzk7cyBsb29rIGF0IGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgdXNlZC4gR29vZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcy4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIHNlZWluZyBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYENPTkZJR19LVk1fQU1EYCwgYW5kIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIFdhaXQsIGlzIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAgYSByZWFsIGNvbmZpZz8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLgoKTm93LCBJJiMzOTtsbCBtb3ZlIG9uIHRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHRoZXJlIHRoYXQgYXJlIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRml4IGZvciBWTSBEZWFkIFN0YXRlIG9uIGFybTY0KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgdGhpcyBvbiBhcm02NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBMZXQmIzM5O3MgZGlnIGludG8gYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAgYW5kIHNlZSB3aGF0JiMzOTtzIGNoYW5nZWQuIEFoLCByaWdodCwgdGhlIHBhdGNoIGFkZHMgYSBgQlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpYCB3aXRoaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY29tcGlsZS10aW1lIGNoZWNrIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBpbmFkdmVydGVudGx5IGNsZWFyaW5nIG9yIGNoZWNraW5nIHRoZSBgS1ZNX1JFUV9WTV9ERUFEYCByZXF1ZXN0IGZsYWcuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgb25jZSBhIFZNIGlzIG1hcmtlZCBhcyAmIzM0O2RlYWQsJiMzNDsgaXQgc3RheXMgdGhhdCB3YXkuCgpUaGUgY29yZSBvZiB0aGUgZml4IGlzIHRvIHVzZSBga3ZtX3Rlc3RfcmVxdWVzdGAgaW5zdGVhZCBvZiBga3ZtX2NoZWNrX3JlcXVlc3RgIGZvciB0aGF0IHNwZWNpZmljIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gUHJldmlvdXNseSwgYEtWTV9SRVFfVk1fREVBRGAgd2FzIGdldHRpbmcgY2xlYXJlZCwgd2hpY2ggd291bGQgbG9naWNhbGx5IGxlYWQgdG8gdGhlIFZNICpub3QqIHN0YXlpbmcgZGVhZCwgd2hpY2ggaXMgY2xlYXJseSB1bmRlc2lyYWJsZS4gTm93LCB3aXRoIHRoaXMgY2hhbmdlLCB0aGUgZGVhZCBzdGF0ZSBzaG91bGQgYmUgcGVyc2lzdGVudC4KCkkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGEgY291cGxlIG9mIGtleSBzeW1ib2xzIGhlcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIHRvIHNlZSBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cuIEFuZCwgb2YgY291cnNlLCBJIHNob3VsZCB2ZXJpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGVzcGVjaWFsbHkgYEtWTV9JTlRFTF9URFhgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz01Mj1jb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTc2LVx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gS1ZNX1g4NiBcdTAwMjZcdTAwMjYgKChFWFBFUlQgXHUwMDI2XHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxuYXJjaC94ODYva3ZtL0tjb25maWctNzgtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9ODM9Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1Olx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiBJQTMyX0ZFQVRfQ1RMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXHUwMDI2XHUwMDI2IEVYUEVSVFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBYODZfU0dYIFx1MDAyNlx1MDAyNiBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNzpcdGRlcGVuZHMgb24gSU5URUxfVERYX0hPU1RcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDg6XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1OC1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU5Olx0ZGVwZW5kcyBvbiBLVk1fQU1EIFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE2MDpcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXHUwMDI2XHUwMDI2ICEoS1ZNX0FNRD15IFx1MDAyNlx1MDAyNiBDUllQVE9fREVWX0NDUF9ERD1tKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTYxLVx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTczPWNvbmZpZyBLVk1fSU9BUElDXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTc1LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xODM9Y29uZmlnIEtWTV9TTU1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODUtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMTg3LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE5ND1jb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NjpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVx0ZGVmYXVsdCB5XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTA6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxMS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMTc9Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5Olx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMDpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIxOlx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNi1cdHJhbmdlIDEwMjQgNDA5NlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI0NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogS1ZNX0lOVEVMX1REWCBhbmQgSU5URUxfVERYX0hPU1QqKgoKQWxyaWdodCwgc28gYEtWTV9JTlRFTF9URFhgIGlzIGNsZWFybHkgbGVhbmluZyBvbiBgSU5URUxfVERYX0hPU1RgLiBObyBzdXJwcmlzZXMgdGhlcmU7IFREWCBob3N0IHN1cHBvcnQgaXMgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgSU5URUxfVERYX0hPU1RgIGl0c2VsZi4gR290dGEgZW5zdXJlIHRoZXJlJiMzOTtzIG5vIGNhc2NhZGUgZWZmZWN0LCBubyBoaWRkZW4gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXIuIFdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgZmlybXdhcmUgdmVyc2lvbnMgYXJlIGFic29sdXRlbHkgKnJlcXVpcmVkKiBmb3IgdGhlIGhvc3Qgc3VwcG9ydCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGFudGljaXBhdGU/IEkgbmVlZCB0byBidWlsZCBhIGNvbXByZWhlbnNpdmUgZGVwZW5kZW5jeSBncmFwaCB0byBmdWxseSBldmFsdWF0ZSB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIHdoZXJlIGRvIEkgc3RhcnQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTlRFTF9URFhfSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZz0xODQ0PWNvbmZpZyBYODZfVVNFUl9TSEFET1dfU1RBQ0tcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjMtXG5hcmNoL3g4Ni9LY29uZmlnOjE4NjQ6Y29uZmlnIElOVEVMX1REWF9IT1NUXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIGhvc3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVjb3N5c3RlbSBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcy4gV2hhdCBsaWJyYXJpZXMsIGZyYW1ld29ya3MsIG9yIGV4dGVybmFsIHNlcnZpY2VzIGlzIHRoaXMgdGhpbmcgbGVhbmluZyBvbj8gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHZlcnNpb25zLCB3aGVyZSB0aGV5JiMzOTtyZSBzb3VyY2VkIGZyb20sIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlLiBBcmUgdGhleSBhbGwgdXAtdG8tZGF0ZSBhbmQgcGF0Y2hlZD8gSGF2ZSBhbnkgZGVwcmVjYXRpb24gd2FybmluZ3MgcG9wcGVkIHVwPyBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY3Vyc29yeSBnbGFuY2U7IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIHRvbywgZ2V0dGluZyBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZC4gQSBzb2xpZCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGFuZCwgb2YgY291cnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIOKAkyBJIGNhbiYjMzk7dCBidWlsZCBhbnl0aGluZyBzdGFibGUgd2l0aG91dCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk4MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC94ODYvS2NvbmZpZz0xMD1jb25maWcgWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTExLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gITY0QklUXG5hcmNoL3g4Ni9LY29uZmlnLTEzLVx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgMzItYml0IGtlcm5lbCBvbmx5OlxuLS1cbmFyY2gveDg2L0tjb25maWc9MjM9Y29uZmlnIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0yNC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIDY0QklUXG5hcmNoL3g4Ni9LY29uZmlnLTI2LVx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgNjQtYml0IGtlcm5lbCBvbmx5OlxuLS1cbmFyY2gveDg2L0tjb25maWc9NDE9Y29uZmlnIEZPUkNFX0RZTkFNSUNfRlRSQUNFXG5hcmNoL3g4Ni9LY29uZmlnLTQyLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnOjQ0Olx0ZGVwZW5kcyBvbiBGVU5DVElPTl9UUkFDRVJcbmFyY2gveDg2L0tjb25maWctNDUtXHRzZWxlY3QgRFlOQU1JQ19GVFJBQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTM0MD1jb25maWcgSU5TVFJVQ1RJT05fREVDT0RFUlxuYXJjaC94ODYvS2NvbmZpZy0zNDEtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjM0MjpcdGRlcGVuZHMgb24gS1BST0JFUyB8fCBQRVJGX0VWRU5UUyB8fCBVUFJPQkVTXG5hcmNoL3g4Ni9LY29uZmlnLTM0My1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTM3NT1jb25maWcgR0VORVJJQ19JU0FfRE1BXG5hcmNoL3g4Ni9LY29uZmlnLTM3Ni1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6Mzc3Olx0ZGVwZW5kcyBvbiBJU0FfRE1BX0FQSVxuYXJjaC94ODYvS2NvbmZpZy0zNzgtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0zODM9Y29uZmlnIEdFTkVSSUNfQlVHXG5hcmNoL3g4Ni9LY29uZmlnLTM4NC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6Mzg1Olx0ZGVwZW5kcyBvbiBCVUdcbmFyY2gveDg2L0tjb25maWctMzg2LVx0c2VsZWN0IEdFTkVSSUNfQlVHX1JFTEFUSVZFX1BPSU5URVJTXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0zOTE9Y29uZmlnIEFSQ0hfTUFZX0hBVkVfUENfRkRDXG5hcmNoL3g4Ni9LY29uZmlnLTM5Mi1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBJU0FfRE1BX0FQSVxuYXJjaC94ODYvS2NvbmZpZy0zOTQtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz00MTA9Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gveDg2L0tjb25maWctNDExLVx0aGV4XG5hcmNoL3g4Ni9LY29uZmlnOjQxMjpcdGRlcGVuZHMgb24gS0FTQU5cbmFyY2gveDg2L0tjb25maWctNDEzLVx0ZGVmYXVsdCAweGRmZmZmYzAwMDAwMDAwMDBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQxNT1jb25maWcgSEFWRV9JTlRFTF9UWFRcbmFyY2gveDg2L0tjb25maWctNDE2LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzo0MTc6XHRkZXBlbmRzIG9uIElOVEVMX0lPTU1VIFx1MDAyNlx1MDAyNiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnLTQxOC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQ1OT1jb25maWcgWDg2X1gyQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy00NjAtXHRib29sIFwmIzM0O3gyQVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBhcmNoaXRlY3R1cmUgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0NjE6XHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDIFx1MDAyNlx1MDAyNiBYODZfNjQgXHUwMDI2XHUwMDI2IChJUlFfUkVNQVAgfHwgSFlQRVJWSVNPUl9HVUVTVClcbmFyY2gveDg2L0tjb25maWctNDYyLVx0ZGVmYXVsdCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZz00ODM9Y29uZmlnIEFNRF9TRUNVUkVfQVZJQ1xuYXJjaC94ODYvS2NvbmZpZy00ODQtXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgQVZJQ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0ODU6XHRkZXBlbmRzIG9uIEFNRF9NRU1fRU5DUllQVCBcdTAwMjZcdTAwMjYgWDg2X1gyQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy00ODYtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz00OTY9Y29uZmlnIFg4Nl9QT1NURURfTVNJXG5hcmNoL3g4Ni9LY29uZmlnLTQ5Ny1cdGJvb2wgXCYjMzQ7RW5hYmxlIE1TSSBhbmQgTVNJLXggZGVsaXZlcnkgYnkgcG9zdGVkIGludGVycnVwdHNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NDk4Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IElSUV9SRU1BUFxuYXJjaC94ODYvS2NvbmZpZy00OTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01MDc9Y29uZmlnIFg4Nl9NUFBBUlNFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy01MDktXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6NTEwOlx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy01MTEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01MTU9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTFxuYXJjaC94ODYvS2NvbmZpZy01MTYtXHRib29sIFwmIzM0O3g4NiBDUFUgcmVzb3VyY2UgY29udHJvbCBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjUxNzpcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiAoQ1BVX1NVUF9JTlRFTCB8fCBDUFVfU1VQX0FNRClcbmFyY2gveDg2L0tjb25maWc6NTE4Olx0ZGVwZW5kcyBvbiBNSVNDX0ZJTEVTWVNURU1TXG5hcmNoL3g4Ni9LY29uZmlnLTUxOS1cdHNlbGVjdCBBUkNIX0hBU19DUFVfUkVTQ1RSTFxuLS1cbmFyY2gveDg2L0tjb25maWc9NTM4PWNvbmZpZyBYODZfQ1BVX1JFU0NUUkxfSU5URUxfQUVUXG5hcmNoL3g4Ni9LY29uZmlnLTUzOS1cdGJvb2wgXCYjMzQ7SW50ZWwgQXBwbGljYXRpb24gRW5lcmd5IFRlbGVtZXRyeVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1NDA6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgWDg2X0NQVV9SRVNDVFJMIFx1MDAyNlx1MDAyNiBDUFVfU1VQX0lOVEVMIFx1MDAyNlx1MDAyNiBJTlRFTF9QTVRfVEVMRU1FVFJZPXkgXHUwMDI2XHUwMDI2IElOVEVMX1RQTUk9eVxuYXJjaC94ODYvS2NvbmZpZy01NDEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01NTE9Y29uZmlnIFg4Nl9GUkVEXG5hcmNoL3g4Ni9LY29uZmlnLTU1Mi1cdGJvb2wgXCYjMzQ7RmxleGlibGUgUmV0dXJuIGFuZCBFdmVudCBEZWxpdmVyeVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1NTM6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy01NTQtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OTA9Y29uZmlnIFg4Nl9OVU1BQ0hJUFxuYXJjaC94ODYvS2NvbmZpZy01OTEtXHRib29sIFwmIzM0O051bWFzY2FsZSBOdW1hQ2hpcFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1OTI6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZzo1OTM6XHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxuYXJjaC94ODYvS2NvbmZpZzo1OTQ6XHRkZXBlbmRzIG9uIE5VTUFcbmFyY2gveDg2L0tjb25maWc6NTk1Olx0ZGVwZW5kcyBvbiBTTVBcbmFyY2gveDg2L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjU5NzpcdGRlcGVuZHMgb24gUENJX01NQ09ORklHXG5hcmNoL3g4Ni9LY29uZmlnLTU5OC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYwMz1jb25maWcgWDg2X1ZTTVBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTYwNi1cdHNlbGVjdCBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZzo2MDc6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgUENJXG5hcmNoL3g4Ni9LY29uZmlnOjYwODpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gU01QXG5hcmNoL3g4Ni9LY29uZmlnLTYxMC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYxNT1jb25maWcgWDg2X1VWXG5hcmNoL3g4Ni9LY29uZmlnLTYxNi1cdGJvb2wgXCYjMzQ7U0dJIFVsdHJhdmlvbGV0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjYxNzpcdGRlcGVuZHMgb24gWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnOjYxODpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYxOTpcdGRlcGVuZHMgb24gTlVNQVxuYXJjaC94ODYvS2NvbmZpZzo2MjA6XHRkZXBlbmRzIG9uIEVGSVxuYXJjaC94ODYvS2NvbmZpZzo2MjE6XHRkZXBlbmRzIG9uIEtFWEVDX0NPUkVcbmFyY2gveDg2L0tjb25maWc6NjIyOlx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjYyMzpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnLTYyNC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYyOD1jb25maWcgWDg2X0lOVEVMX01JRFxuYXJjaC94ODYvS2NvbmZpZy02MjktXHRib29sIFwmIzM0O0ludGVsIFozNHh4L1ozNXh4IE1JRCBwbGF0Zm9ybSBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjYzMDpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYzMTpcdGRlcGVuZHMgb24gWDg2X1BMQVRGT1JNX0RFVklDRVNcbmFyY2gveDg2L0tjb25maWc6NjMyOlx0ZGVwZW5kcyBvbiBQQ0lcbmFyY2gveDg2L0tjb25maWc6NjMzOlx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEVYUEVSVCBcdTAwMjZcdTAwMjYgUENJX0dPQU5ZKVxuYXJjaC94ODYvS2NvbmZpZzo2MzQ6XHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTYzNS1cdHNlbGVjdCBJMkNcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY1ND1jb25maWcgWDg2X0dPTERGSVNIXG5hcmNoL3g4Ni9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7R29sZGZpc2ggKFZpcnR1YWwgUGxhdGZvcm0pXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY1NjpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnLTY1Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY2NT1jb25maWcgWDg2X0lOVEVMX0NFXG5hcmNoL3g4Ni9LY29uZmlnLTY2Ni1cdGJvb2wgXCYjMzQ7Q0U0MTAwIFRWIHBsYXRmb3JtXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY2NzpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnOjY2ODpcdGRlcGVuZHMgb24gUENJX0dPRElSRUNUXG5hcmNoL3g4Ni9LY29uZmlnOjY2OTpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWc6NjcwOlx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWc6NjcxOlx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cbmFyY2gveDg2L0tjb25maWctNjcyLVx0c2VsZWN0IFg4Nl9SRUJPT1RGSVhVUFNcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXG5hcmNoL3g4Ni9LY29uZmlnLTY4MS1cdGJvb2wgXCYjMzQ7SW50ZWwgUXVhcmsgcGxhdGZvcm0gc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo2ODI6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZzo2ODM6XHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxuYXJjaC94ODYvS2NvbmZpZzo2ODQ6XHRkZXBlbmRzIG9uIFg4Nl9QTEFURk9STV9ERVZJQ0VTXG5hcmNoL3g4Ni9LY29uZmlnOjY4NTpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnOjY4NjpcdGRlcGVuZHMgb24gUENJX0dPQU5ZXG5hcmNoL3g4Ni9LY29uZmlnOjY4NzpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWctNjg4LVx0c2VsZWN0IElPU0ZfTUJJXG4tLVxuYXJjaC94ODYvS2NvbmZpZz02OTY9Y29uZmlnIFg4Nl9JTlRFTF9MUFNTXG5hcmNoL3g4Ni9LY29uZmlnLTY5Ny1cdGJvb2wgXCYjMzQ7SW50ZWwgTG93IFBvd2VyIFN1YnN5c3RlbSBTdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY5ODpcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBBQ1BJIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWctNjk5LVx0c2VsZWN0IENPTU1PTl9DTEtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTcwOD1jb25maWcgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0VcbmFyY2gveDg2L0tjb25maWctNzA5LVx0Ym9vbCBcJiMzNDtBTUQgQUNQSTJQbGF0Zm9ybSBkZXZpY2VzIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzEwOlx0ZGVwZW5kcyBvbiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnLTcxMS1cdHNlbGVjdCBDT01NT05fQ0xLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz03MTk9Y29uZmlnIElPU0ZfTUJJXG5hcmNoL3g4Ni9LY29uZmlnLTcyMC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFNvQyBJT1NGIFNpZGViYW5kIHN1cHBvcnQgZm9yIFNvQyBwbGF0Zm9ybXNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzIxOlx0ZGVwZW5kcyBvbiBQQ0lcbmFyY2gveDg2L0tjb25maWctNzIyLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzM2PWNvbmZpZyBJT1NGX01CSV9ERUJVR1xuYXJjaC94ODYvS2NvbmZpZy03MzctXHRib29sIFwmIzM0O0VuYWJsZSBJT1NGIHNpZGViYW5kIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBJT1NGX01CSSBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmFyY2gveDg2L0tjb25maWctNzM5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzQ5PWNvbmZpZyBYODZfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTc1MS1cdCMgTUNFIGNvZGUgY2FsbHMgbWVtb3J5X2ZhaWx1cmUoKTpcbmFyY2gveDg2L0tjb25maWc6NzUyOlx0ZGVwZW5kcyBvbiBYODZfTUNFXG5hcmNoL3g4Ni9LY29uZmlnLTc1My1cdCMgT24gMzItYml0IHRoaXMgYWRkcyB0b28gYmlnIG9mIE5PREVTX1NISUZUIGFuZCB3ZSBydW4gb3V0IG9mIHBhZ2UgZmxhZ3M6XG5hcmNoL3g4Ni9LY29uZmlnLTc1NC1cdCMgT24gMzItYml0IFNQQVJTRU1FTSBhZGRzIHRvbyBiaWcgb2YgU0VDVElPTlNfV0lEVEg6XG5hcmNoL3g4Ni9LY29uZmlnOjc1NTpcdGRlcGVuZHMgb24gWDg2XzY0IHx8ICFTUEFSU0VNRU1cbmFyY2gveDg2L0tjb25maWctNzU2LVx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTc1OD1jb25maWcgWDg2XzMyX0lSSVNcbmFyY2gveDg2L0tjb25maWctNzU5LVx0dHJpc3RhdGUgXCYjMzQ7RXVyb2JyYWlsbGUvSXJpcyBwb3dlcm9mZiBtb2R1bGVcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzYwOlx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctNzYxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzcxPWNvbmZpZyBTQ0hFRF9PTUlUX0ZSQU1FX1BPSU5URVJcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTc3My1cdHByb21wdCBcJiMzNDtTaW5nbGUtZGVwdGggV0NIQU4gb3V0cHV0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjc3NDpcdGRlcGVuZHMgb24gWDg2XG5hcmNoL3g4Ni9LY29uZmlnLTc3NS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTc5NT1jb25maWcgUEFSQVZJUlRcbmFyY2gveDg2L0tjb25maWctNzk2LVx0Ym9vbCBcJiMzNDtFbmFibGUgcGFyYXZpcnR1YWxpemF0aW9uIGNvZGVcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6Nzk3Olx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXG5hcmNoL3g4Ni9LY29uZmlnLTc5OC1cdHNlbGVjdCBIQVZFX1BWX1NURUFMX0NMT0NLX0dFTlxuLS1cbmFyY2gveDg2L0tjb25maWc9ODA1PWNvbmZpZyBQQVJBVklSVF9YWExcbmFyY2gveDg2L0tjb25maWctODA2LVx0Ym9vbFxuYXJjaC94ODYvS2NvbmZpZzo4MDc6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy04MDgtXHRzZWxlY3QgQVJDSF9IQVNfTEFaWV9NTVVfTU9ERVxuLS1cbmFyY2gveDg2L0tjb25maWc9ODEwPWNvbmZpZyBQQVJBVklSVF9TUElOTE9DS1NcbmFyY2gveDg2L0tjb25maWctODExLVx0Ym9vbCBcJiMzNDtQYXJhdmlydHVhbGl6YXRpb24gbGF5ZXIgZm9yIHNwaW5sb2Nrc1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo4MTI6XHRkZXBlbmRzIG9uIFBBUkFWSVJUIFx1MDAyNlx1MDAyNiBTTVBcbmFyY2gveDg2L0tjb25maWctODEzLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9ODI4PWNvbmZpZyBLVk1fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODI5LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo4MzA6XHRkZXBlbmRzIG9uIFBBUkFWSVJUXG5hcmNoL3g4Ni9LY29uZmlnLTgzMS1cdHNlbGVjdCBQQVJBVklSVF9DTE9DS1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODU0PWNvbmZpZyBQQVJBVklSVF9USU1FX0FDQ09VTlRJTkdcbmFyY2gveDg2L0tjb25maWctODU1LVx0Ym9vbCBcJiMzNDtQYXJhdmlydHVhbCBzdGVhbCB0aW1lIGFjY291bnRpbmdcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODU2Olx0ZGVwZW5kcyBvbiBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZy04NTctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Njg9Y29uZmlnIEpBSUxIT1VTRV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04NjktXHRib29sIFwmIzM0O0phaWxob3VzZSBub24tcm9vdCBjZWxsIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODcwOlx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IFBDSVxuYXJjaC94ODYvS2NvbmZpZy04NzEtXHRzZWxlY3QgWDg2X1BNX1RJTUVSXG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Nzc9Y29uZmlnIEFDUk5fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODc4LVx0Ym9vbCBcJiMzNDtBQ1JOIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODc5Olx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctODgwLVx0c2VsZWN0IFg4Nl9IVl9DQUxMQkFDS19WRUNUT1Jcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTg4OD1jb25maWcgQkhZVkVfR1VFU1RcbmFyY2gveDg2L0tjb25maWctODg5LVx0Ym9vbCBcJiMzNDtCaHl2ZSAoQlNEIEh5cGVydmlzb3IpIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODkwOlx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctODkxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9ODk3PWNvbmZpZyBJTlRFTF9URFhfR1VFU1RcbmFyY2gveDg2L0tjb25maWctODk4LVx0Ym9vbCBcJiMzNDtJbnRlbCBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSAtIEd1ZXN0IFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODk5Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IENQVV9TVVBfSU5URUxcbmFyY2gveDg2L0tjb25maWc6OTAwOlx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjkwMTpcdGRlcGVuZHMgb24gRUZJX1NUVUJcbmFyY2gveDg2L0tjb25maWc6OTAyOlx0ZGVwZW5kcyBvbiBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZy05MDMtXHRzZWxlY3QgQVJDSF9IQVNfQ0NfUExBVEZPUk1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTkzOD1jb25maWcgSFBFVF9FTVVMQVRFX1JUQ1xuYXJjaC94ODYvS2NvbmZpZy05MzktXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjk0MDpcdGRlcGVuZHMgb24gSFBFVF9USU1FUiBcdTAwMjZcdTAwMjYgKFJUQ19EUlZfQ01PUz1tIHx8IFJUQ19EUlZfQ01PUz15KVxuYXJjaC94ODYvS2NvbmZpZy05NDEtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz05NTQ9Y29uZmlnIEdBUlRfSU9NTVVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTV0lPVExCXG5hcmNoL3g4Ni9LY29uZmlnOjk1ODpcdGRlcGVuZHMgb24gWDg2XzY0IFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEFNRF9OQlxuYXJjaC94ODYvS2NvbmZpZy05NTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz05ODI9Y29uZmlnIE1BWFNNUFxuYXJjaC94ODYvS2NvbmZpZy05ODMtXHRib29sIFwmIzM0O0VuYWJsZSBNYXhpbXVtIG51bWJlciBvZiBTTVAgUHJvY2Vzc29ycyBhbmQgTlVNQSBOb2Rlc1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo5ODQ6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgU01QIFx1MDAyNlx1MDAyNiBERUJVR19LRVJORUxcbmFyY2gveDg2L0tjb25maWctOTg1LVx0c2VsZWN0IENQVU1BU0tfT0ZGU1RBQ0tcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwMTA9Y29uZmlnIE5SX0NQVVNfUkFOR0VfRU5EXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTEtXHRpbnRcbmFyY2gveDg2L0tjb25maWc6MTAxMjpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTMtXHRkZWZhdWx0ICAgIDggaWYgIFNNUFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTAxNj1jb25maWcgTlJfQ1BVU19SQU5HRV9FTkRcbmFyY2gveDg2L0tjb25maWctMTAxNy1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDE4Olx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMTAxOS1cdGRlZmF1bHQgODE5MiBpZiAgU01QIFx1MDAyNlx1MDAyNiBDUFVNQVNLX09GRlNUQUNLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDIzPWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcbmFyY2gveDg2L0tjb25maWctMTAyNC1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDI1Olx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctMTAyNi1cdGRlZmF1bHQgICAgOCBpZiAgU01QXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDI5PWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcbmFyY2gveDg2L0tjb25maWctMTAzMC1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDMxOlx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMTAzMi1cdGRlZmF1bHQgODE5MiBpZiAgTUFYU01QXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDQ5PWNvbmZpZyBTQ0hFRF9NQ19QUklPXG5hcmNoL3g4Ni9LY29uZmlnLTEwNTAtXHRib29sIFwmIzM0O0NQVSBjb3JlIHByaW9yaXRpZXMgc2NoZWR1bGVyIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTA1MTpcdGRlcGVuZHMgb24gU0NIRURfTUNcbmFyY2gveDg2L0tjb25maWctMTA1Mi1cdHNlbGVjdCBYODZfSU5URUxfUFNUQVRFIGlmIENQVV9TVVBfSU5URUxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzE9Y29uZmlnIFVQX0xBVEVfSU5JVFxuYXJjaC94ODYvS2NvbmZpZy0xMDcyLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMDczOlx0ZGVwZW5kcyBvbiAhU01QIFx1MDAyNlx1MDAyNiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMDc0LVxuYXJjaC94ODYvS2NvbmZpZz0xMDc1PWNvbmZpZyBYODZfVVBfQVBJQ1xuLS1cbmFyY2gveDg2L0tjb25maWctMTA3Ny1cdGRlZmF1bHQgUENJX01TSVxuYXJjaC94ODYvS2NvbmZpZzoxMDc4Olx0ZGVwZW5kcyBvbiBYODZfMzIgXHUwMDI2XHUwMDI2ICFTTVBcbmFyY2gveDg2L0tjb25maWctMTA3OS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwODk9Y29uZmlnIFg4Nl9VUF9JT0FQSUNcbmFyY2gveDg2L0tjb25maWctMTA5MC1cdGJvb2wgXCYjMzQ7SU8tQVBJQyBzdXBwb3J0IG9uIHVuaXByb2Nlc3NvcnNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTA5MTpcdGRlcGVuZHMgb24gWDg2X1VQX0FQSUNcbmFyY2gveDg2L0tjb25maWctMTA5Mi1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExMDE9Y29uZmlnIFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExMDItXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjExMDM6XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCBTTVAgfHwgWDg2X1VQX0FQSUMgfHwgUENJX01TSVxuYXJjaC94ODYvS2NvbmZpZy0xMTA0LVx0c2VsZWN0IElSUV9ET01BSU5fSElFUkFSQ0hZXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTA2PWNvbmZpZyBBQ1BJX01BRFRfV0FLRVVQXG5hcmNoL3g4Ni9LY29uZmlnLTExMDctXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjExMDg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZzoxMTA5Olx0ZGVwZW5kcyBvbiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnOjExMTA6XHRkZXBlbmRzIG9uIFNNUFxuYXJjaC94ODYvS2NvbmZpZzoxMTExOlx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMTEyLVxuYXJjaC94ODYvS2NvbmZpZz0xMTEzPWNvbmZpZyBYODZfSU9fQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMTE0LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMTE1Olx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQyB8fCBYODZfVVBfSU9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExMTYtXG5hcmNoL3g4Ni9LY29uZmlnPTExMTc9Y29uZmlnIFg4Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTXG5hcmNoL3g4Ni9LY29uZmlnLTExMTgtXHRib29sIFwmIzM0O1Jlcm91dGUgZm9yIGJyb2tlbiBib290IElSUXNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTExOTpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWctMTEyMC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExNDA9Y29uZmlnIFg4Nl9NQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTExNDYtXHQgIGtlcm5lbCBpZiBpdCBkZXRlY3RzIGEgcHJvYmxlbSAoZS5nLiBvdmVyaGVhdGluZywgZGF0YSBjb3JydXB0aW9uKS5cbmFyY2gveDg2L0tjb25maWc6MTE0NzpcdCAgVGhlIGFjdGlvbiB0aGUga2VybmVsIHRha2VzIGRlcGVuZHMgb24gdGhlIHNldmVyaXR5IG9mIHRoZSBwcm9ibGVtLFxuYXJjaC94ODYvS2NvbmZpZy0xMTQ4LVx0ICByYW5naW5nIGZyb20gd2FybmluZyBtZXNzYWdlcyB0byBoYWx0aW5nIHRoZSBtYWNoaW5lLlxuLS1cbmFyY2gveDg2L0tjb25maWc9MTE1MD1jb25maWcgWDg2X01DRUxPR19MRUdBQ1lcbmFyY2gveDg2L0tjb25maWctMTE1MS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgZGVwcmVjYXRlZCAvZGV2L21jZWxvZyBjaGFyYWN0ZXIgZGV2aWNlXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNTI6XHRkZXBlbmRzIG9uIFg4Nl9NQ0VcbmFyY2gveDg2L0tjb25maWctMTE1My1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExNTg9Y29uZmlnIFg4Nl9NQ0VfSU5URUxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTExNjAtXHRwcm9tcHQgXCYjMzQ7SW50ZWwgTUNFIGZlYXR1cmVzXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNjE6XHRkZXBlbmRzIG9uIFg4Nl9NQ0UgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExNjItXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTY2PWNvbmZpZyBYODZfTUNFX0FNRFxuLS1cbmFyY2gveDg2L0tjb25maWctMTE2OC1cdHByb21wdCBcJiMzNDtBTUQgTUNFIGZlYXR1cmVzXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNjk6XHRkZXBlbmRzIG9uIFg4Nl9NQ0UgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExNzAtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTc0PWNvbmZpZyBYODZfQU5DSUVOVF9NQ0VcbmFyY2gveDg2L0tjb25maWctMTE3NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3Igb2xkIFBlbnRpdW0gNSAvIFdpbkNoaXAgbWFjaGluZSBjaGVja3NcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTE3NjpcdGRlcGVuZHMgb24gWDg2XzMyIFx1MDAyNlx1MDAyNiBYODZfTUNFXG5hcmNoL3g4Ni9LY29uZmlnLTExNzctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTgyPWNvbmZpZyBYODZfTUNFX1RIUkVTSE9MRFxuYXJjaC94ODYvS2NvbmZpZzoxMTgzOlx0ZGVwZW5kcyBvbiBYODZfTUNFX0FNRCB8fCBYODZfTUNFX0lOVEVMXG5hcmNoL3g4Ni9LY29uZmlnLTExODQtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTg2PWNvbmZpZyBYODZfTUNFX0lOSkVDVFxuYXJjaC94ODYvS2NvbmZpZzoxMTg3Olx0ZGVwZW5kcyBvbiBYODZfTUNFIFx1MDAyNlx1MDAyNiBYODZfTE9DQUxfQVBJQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmFyY2gveDg2L0tjb25maWctMTE4OC1cdHRyaXN0YXRlIFwmIzM0O01hY2hpbmUgY2hlY2sgaW5qZWN0b3Igc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9MTE5Nj1jb25maWcgWDg2X0xFR0FDWV9WTTg2XG5hcmNoL3g4Ni9LY29uZmlnLTExOTctXHRib29sIFwmIzM0O0xlZ2FjeSBWTTg2IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTE5ODpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTExOTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjI3PWNvbmZpZyBYODZfMTZCSVRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEyMjktXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6MTIzMDpcdGRlcGVuZHMgb24gTU9ESUZZX0xEVF9TWVNDQUxMXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjM3PWNvbmZpZyBYODZfRVNQRklYMzJcbmFyY2gveDg2L0tjb25maWctMTIzOC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MTIzOTpcdGRlcGVuZHMgb24gWDg2XzE2QklUIFx1MDAyNlx1MDAyNiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctMTI0MC1cbmFyY2gveDg2L0tjb25maWc9MTI0MT1jb25maWcgWDg2X0VTUEZJWDY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDItXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEyNDM6XHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDQtXG5hcmNoL3g4Ni9LY29uZmlnPTEyNDU9Y29uZmlnIFg4Nl9WU1lTQ0FMTF9FTVVMQVRJT05cbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDctXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6MTI0ODpcdGRlcGVuZHMgb24gWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjgxPWNvbmZpZyBUT1NISUJBXG5hcmNoL3g4Ni9LY29uZmlnLTEyODItXHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIExhcHRvcCBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEyODM6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMjg0LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTI5Nz1jb25maWcgWDg2X1JFQk9PVEZJWFVQU1xuYXJjaC94ODYvS2NvbmZpZy0xMjk4LVx0Ym9vbCBcJiMzNDtFbmFibGUgWDg2IGJvYXJkIHNwZWNpZmljIGZpeHVwcyBmb3IgcmVib290XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEyOTk6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMzAwLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTMxND1jb25maWcgTUlDUk9DT0RFXG5hcmNoL3g4Ni9LY29uZmlnLTEzMTUtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEzMTY6XHRkZXBlbmRzIG9uIENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSU5URUxcbmFyY2gveDg2L0tjb25maWctMTMxNy1cdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NiBpZiBDUFVfU1VQX0FNRFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTMxOT1jb25maWcgTUlDUk9DT0RFX0lOSVRSRDMyXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjAtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEzMjE6XHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcdTAwMjZcdTAwMjYgWDg2XzMyIFx1MDAyNlx1MDAyNiBCTEtfREVWX0lOSVRSRFxuYXJjaC94ODYvS2NvbmZpZy0xMzIyLVxuYXJjaC94ODYvS2NvbmZpZz0xMzIzPWNvbmZpZyBNSUNST0NPREVfTEFURV9MT0FESU5HXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xMzI1LVx0ZGVmYXVsdCBuXG5hcmNoL3g4Ni9LY29uZmlnOjEzMjY6XHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcdTAwMjZcdTAwMjYgU01QXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMzM3PWNvbmZpZyBNSUNST0NPREVfTEFURV9GT1JDRV9NSU5SRVZcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEzMzktXHRkZWZhdWx0IG5cbmFyY2gveDg2L0tjb25maWc6MTM0MDpcdGRlcGVuZHMgb24gTUlDUk9DT0RFX0xBVEVfTE9BRElOR1xuYXJjaC94ODYvS2NvbmZpZy0xMzQxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTM1NT1jb25maWcgTUlDUk9DT0RFX0RCR1xuLS1cbmFyY2gveDg2L0tjb25maWctMTM1Ny1cdGRlZmF1bHQgblxuYXJjaC94ODYvS2NvbmZpZzoxMzU4Olx0ZGVwZW5kcyBvbiBNSUNST0NPREVcbmFyY2gveDg2L0tjb25maWctMTM1OS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEzODY9Y29uZmlnIEhJR0hNRU00R1xuYXJjaC94ODYvS2NvbmZpZy0xMzg3LVx0Ym9vbCBcJiMzNDtIaWdoIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEzODg6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMzg5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQxMD1jaG9pY2Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTItXHRkZWZhdWx0IFZNU1BMSVRfM0dcbmFyY2gveDg2L0tjb25maWc6MTQxMzpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTQtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xNDMyLVx0Y29uZmlnIFZNU1BMSVRfM0dfT1BUXG5hcmNoL3g4Ni9LY29uZmlnOjE0MzM6XHRcdGRlcGVuZHMgb24gIVg4Nl9QQUVcbmFyY2gveDg2L0tjb25maWctMTQzNC1cdFx0Ym9vbCBcJiMzNDszRy8xRyB1c2VyL2tlcm5lbCBzcGxpdCAoZm9yIGZ1bGwgMUcgbG93IG1lbW9yeSlcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0MzctXHRjb25maWcgVk1TUExJVF8yR19PUFRcbmFyY2gveDg2L0tjb25maWc6MTQzODpcdFx0ZGVwZW5kcyBvbiAhWDg2X1BBRVxuYXJjaC94ODYvS2NvbmZpZy0xNDM5LVx0XHRib29sIFwmIzM0OzJHLzJHIHVzZXIva2VybmVsIHNwbGl0IChmb3IgZnVsbCAyRyBsb3cgbWVtb3J5KVwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ0ND1jb25maWcgUEFHRV9PRkZTRVRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTAtXHRkZWZhdWx0IDB4QzAwMDAwMDBcbmFyY2gveDg2L0tjb25maWc6MTQ1MTpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTItXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNDU2PWNvbmZpZyBYODZfUEFFXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTctXHRib29sIFwmIzM0O1BBRSAoUGh5c2ljYWwgQWRkcmVzcyBFeHRlbnNpb24pIFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTQ1ODpcdGRlcGVuZHMgb24gWDg2XzMyIFx1MDAyNlx1MDAyNiBYODZfSEFWRV9QQUVcbmFyY2gveDg2L0tjb25maWctMTQ1OS1cdHNlbGVjdCBQSFlTX0FERFJfVF82NEJJVFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ2Nj1jb25maWcgWDg2X0RJUkVDVF9HQlBBR0VTXG5hcmNoL3g4Ni9LY29uZmlnLTE0NjctXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjE0Njg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNDY5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ3NT1jb25maWcgWDg2X0NQQV9TVEFUSVNUSUNTXG5hcmNoL3g4Ni9LY29uZmlnLTE0NzYtXHRib29sIFwmIzM0O0VuYWJsZSBzdGF0aXN0aWMgZm9yIENoYW5nZSBQYWdlIEF0dHJpYnV0ZVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNDc3Olx0ZGVwZW5kcyBvbiBERUJVR19GU1xuYXJjaC94ODYvS2NvbmZpZy0xNDc4LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ4OD1jb25maWcgQU1EX01FTV9FTkNSWVBUXG5hcmNoL3g4Ni9LY29uZmlnLTE0ODktXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgTWVtb3J5IEVuY3J5cHRpb24gKFNNRSkgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNDkwOlx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IENQVV9TVVBfQU1EXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTE6XHRkZXBlbmRzIG9uIEVGSV9TVFVCXG5hcmNoL3g4Ni9LY29uZmlnLTE0OTItXHRzZWxlY3QgRE1BX0NPSEVSRU5UX1BPT0xcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1MDU9Y29uZmlnIE5VTUFcbmFyY2gveDg2L0tjb25maWctMTUwNi1cdGJvb2wgXCYjMzQ7TlVNQSBNZW1vcnkgQWxsb2NhdGlvbiBhbmQgU2NoZWR1bGVyIFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTUwNzpcdGRlcGVuZHMgb24gU01QXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNTA5LVx0c2VsZWN0IFVTRV9QRVJDUFVfTlVNQV9OT0RFX0lEXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTIzPWNvbmZpZyBBTURfTlVNQVxuLS1cbmFyY2gveDg2L0tjb25maWctMTUyNS1cdHByb21wdCBcJiMzNDtPbGQgc3R5bGUgQU1EIE9wdGVyb24gTlVNQSBkZXRlY3Rpb25cJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTUyNjpcdGRlcGVuZHMgb24gWDg2XzY0IFx1MDAyNlx1MDAyNiBOVU1BIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWctMTUyNy1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1MzQ9Y29uZmlnIFg4Nl82NF9BQ1BJX05VTUFcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE1MzYtXHRwcm9tcHQgXCYjMzQ7QUNQSSBOVU1BIGRldGVjdGlvblwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNTM3Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IE5VTUEgXHUwMDI2XHUwMDI2IEFDUEkgXHUwMDI2XHUwMDI2IFBDSVxuYXJjaC94ODYvS2NvbmZpZy0xNTM4LVx0c2VsZWN0IEFDUElfTlVNQVxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU0Mj1jb25maWcgTk9ERVNfU0hJRlRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE1NDctXHRkZWZhdWx0IFwmIzM0OzNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTU0ODpcdGRlcGVuZHMgb24gTlVNQVxuYXJjaC94ODYvS2NvbmZpZy0xNTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU1Mz1jb25maWcgQVJDSF9GTEFUTUVNX0VOQUJMRVxuYXJjaC94ODYvS2NvbmZpZy0xNTU0LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxNTU1Olx0ZGVwZW5kcyBvbiBYODZfMzIgXHUwMDI2XHUwMDI2ICFOVU1BXG5hcmNoL3g4Ni9LY29uZmlnLTE1NTYtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTY1PWNvbmZpZyBBUkNIX1NFTEVDVF9NRU1PUllfTU9ERUxcbmFyY2gveDg2L0tjb25maWctMTU2Ni1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MTU2NzpcdGRlcGVuZHMgb24gQVJDSF9TUEFSU0VNRU1fRU5BQkxFIFx1MDAyNlx1MDAyNiBBUkNIX0ZMQVRNRU1fRU5BQkxFXG5hcmNoL3g4Ni9LY29uZmlnLTE1NjgtXG5hcmNoL3g4Ni9LY29uZmlnPTE1Njk9Y29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXHRib29sIFwmIzM0O0VuYWJsZSBzeXNmcyBtZW1vcnkvcHJvYmUgaW50ZXJmYWNlXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjE1NzE6XHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzItXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTc3PWNvbmZpZyBBUkNIX1BST0NfS0NPUkVfVEVYVFxuYXJjaC94ODYvS2NvbmZpZy0xNTc4LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxNTc5Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IFBST0NfS0NPUkVcbmFyY2gveDg2L0tjb25maWctMTU4MC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1ODk9Y29uZmlnIFg4Nl9QTUVNX0xFR0FDWVxuYXJjaC94ODYvS2NvbmZpZy0xNTkwLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBub24tc3RhbmRhcmQgTlZESU1NcyBhbmQgQURSIHByb3RlY3RlZCBtZW1vcnlcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTU5MTpcdGRlcGVuZHMgb24gUEhZU19BRERSX1RfNjRCSVRcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTIzMgoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiA3NDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBDaGFuZ2VzIGZvciBWTSBEZWF0aCBIYW5kbGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgYW5kIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgaW1wYWN0ZWQuIEZpcnN0LCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3MuIEkgcXVpY2tseSBzZWUgdGhhdCBgSU5URUxfVERYX0hPU1RgIGRlcGVuZHMgb24gYFg4Nl82NGAsIGBDUFVfU1VQX0lOVEVMYCwgYW5kIGBYODZfWDJBUElDYCwgbWVhbmluZyB0aGF0IGBLVk1fSU5URUxfVERYYCBpcyB2YWxpZCBpbiB0aGlzIGNhc2UuIAoKTXkgaW5pdGlhbCBjb25maWcgbGlzdCBpczogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMX1REWGAuIEJ1dCB3YWl0LCBgS1ZNX0lOVEVMX1REWGAgcmVsaWVzIG9uIGBJTlRFTF9URFhfSE9TVGAsIHNvIHRoYXQgbmVlZHMgdG8gYmUgaW5jbHVkZWQgYXMgd2VsbC4gQWxzbyBgSU5URUxfVERYX0hPU1RgIGRlcGVuZHMgb24gYFg4Nl9YMkFQSUNgLCBzbyB0aGUgbGlzdCBpcyB1cGRhdGVkLiBMZXQmIzM5O3MgbWFrZSB0aGF0IGV4cGxpY2l0OiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYEtWTV9JTlRFTF9URFhgLCBhbmQgYElOVEVMX1REWF9IT1NUYC4KCk5vdywgdGhlIHBhdGNoJiMzOTtzIGNvcmUgZnVuY3Rpb24gaXMgY2hhbmdpbmcgaG93IGBLVk1fUkVRX1ZNX0RFQURgIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhlIGNoYW5nZSBmcm9tIGBrdm1fY2hlY2tfcmVxdWVzdGAgdG8gYGt2bV90ZXN0X3JlcXVlc3RgLiBUaGlzIG1lYW5zIHRoZSBWTSYjMzk7cyBkZWFkIHN0YXRlIHBlcnNpc3RzIGFmdGVyIGJlaW5nIGNoZWNrZWQuIEEgY3J1Y2lhbCBkZXRhaWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRoYXQgSSBrbm93IHRoZSBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQsIHNvIEkgZG91YmxlLWNoZWNrZWQgdGhlIG5hbWUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyB0aGUgcmlnaHQgZnVuY3Rpb24uIEkmIzM5O20gYWxzbyBjb25maXJtaW5nIHdoYXQgdGhlIGNvbmZpZyBzeW1ib2xzIGFyZSB0byBjb25maXJtIG91ciBpbml0aWFsIGZpbmRpbmdzLiBgQ09ORklHX0tWTV9JTlRFTF9URFhgIGFuZCBgQ09ORklHX0lOVEVMX1REWF9IT1NUYCBsaXZlIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZyBmaWxlcywgYWxvbmcgd2l0aCBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuIEkgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcyB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZXMgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCwgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBTbywgYXJtNjQgYW5kIHg4NiBhcmUgaW1wYWN0ZWQuCgpJJiMzOTt2ZSBnb3QgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlcy4KCk15IGZvY3VzIHN5bWJvbHMgYXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4KCk5vdywgSSYjMzk7bGwgcGFja2FnZSB1cCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjoxMy4zNjYxODA2NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwNDAzNjczNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTF9URFhcIixcbiAgICBcIklOVEVMX1REWF9IT1NUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjEzLjM2NjE4NzgxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MDI1MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTY2OWM3ODJhYzZlMTljNGRmMmQ1ZmY1YzYzODgzZWIxZDQzNzdjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjI2OjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcXG5pbmRleCA1MGFkZmZmNzViZTgyLi5hNTZlYWQ0MjM4OTdiIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcXG5AQCAtMTEwOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xcbi1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcXG4rXFx0XFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbiBcXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTEVFUCwgdmNwdSkpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbkBAIC01MDMzLDcgKzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcXG4gXFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlRSO1xcbiBcXG4tXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXG4gXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXFxuaW5kZXggYjI3MmMyMDU4NmE3NC4uNmM4NDJlOTE5MWE1MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xcbkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpIHtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTztcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5AQCAtODA2MCw3ICs4MDYwLDcgQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0Ym9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7XFxuLVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpIHtcXG4gXFx0XFx0XFx0ciA9IC1FSU87XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuQEAgLTIzMjQsMTMgKzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRyZXR1cm4gdGVzdF9iaXQocmVxIFxcdTAwMjYgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKilcXHUwMDI2dmNwdS1cXHUwMDNlcmVxdWVzdHMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuK1xcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcXG4rXFxuIFxcdGNsZWFyX2JpdChyZXEgXFx1MDAyNiBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKVxcdTAwMjZ2Y3B1LVxcdTAwM2VyZXF1ZXN0cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4rXFx0LyogT25jZSBhIFZNIGlzIGRlYWQsIGl0IG5lZWRzIHRvIHN0YXkgZGVhZC4gKi9cXG4rXFx0QlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpO1xcbitcXG4gXFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QocmVxLCB2Y3B1KSkge1xcbiBcXHRcXHRrdm1fY2xlYXJfcmVxdWVzdChyZXEsIHZjcHUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MTMuOTM3MjU4NTg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA0NDY5MjgwMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDUwYWRmZmY3NWJlODIuLmE1NmVhZDQyMzg5N2IgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHN0YXRpYyBpbnQgY2hlY2tfdmNwdV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKGt2bV9yZXF1ZXN0X3BlbmRpbmcodmNwdSkpIHtcbi1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4rXHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NMRUVQLCB2Y3B1KSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC01MDMzLDcgKzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcbiBcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKVxuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFxuIFx0XHRjb25kX3Jlc2NoZWQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggYjI3MmMyMDU4NmE3NC4uNmM4NDJlOTE5MWE1MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcbkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0cmV0ID0gLUVJTztcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtODA2MCw3ICs4MDYwLDcgQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGJvb2wgcmVxX2ltbWVkaWF0ZV9leGl0ID0gZmFsc2U7XG4gXG4gXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0ciA9IC1FSU87XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbisrKyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuQEAgLTIzMjQsMTMgKzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0cmV0dXJuIHRlc3RfYml0KHJlcSBcdTAwMjYgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKilcdTAwMjZ2Y3B1LVx1MDAzZXJlcXVlc3RzKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGt2bV9jbGVhcl9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbitcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbitcbiBcdGNsZWFyX2JpdChyZXEgXHUwMDI2IEtWTV9SRVFVRVNUX01BU0ssICh2b2lkICopXHUwMDI2dmNwdS1cdTAwM2VyZXF1ZXN0cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGt2bV9jaGVja19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4rXHQvKiBPbmNlIGEgVk0gaXMgZGVhZCwgaXQgbmVlZHMgdG8gc3RheSBkZWFkLiAqL1xuK1x0QlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpO1xuK1xuIFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QocmVxLCB2Y3B1KSkge1xuIFx0XHRrdm1fY2xlYXJfcmVxdWVzdChyZXEsIHZjcHUpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MTMuOTM3MjYxMjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU4OTU1NTkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdHdlYWtzIHNvbWUgS1ZNIGNvZGUuIEl0J3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZTogc3dhcHBpbmcgb3V0IGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbiBhIGZldyBrZXkgcGxhY2VzIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBmaWxlczogYGFybTY0L2FybS5jYCwgYHg4Ni9tbXUvbW11LmNgLCBgeDg2L3ZteC90ZHguY2AsIGFuZCBgeDg2L3g4Ni5jYC4gVGhlIHBhdGNoIGFsc28gdGhyb3dzIGluIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YCBpbiBga3ZtX2hvc3QuaGAuXG5cblRoZSBjb3JlIG9mIHRoaXMgaXMgZnVuY3Rpb25hbC4gYGt2bV9jaGVja19yZXF1ZXN0YCAqY2xlYXJzKiB0aGUgcmVxdWVzdCBiaXQsIHdoaWxlIGBrdm1fdGVzdF9yZXF1ZXN0YCBvbmx5ICp0ZXN0cyogaXQuIFRoZSBjb21tZW50IGluIHRoZSBwYXRjaCBpcyBwcmV0dHkgZXhwbGljaXQ6IFwiT25jZSBhIFZNIGlzIGRlYWQsIGl0IG5lZWRzIHRvIHN0YXkgZGVhZC5cIiBTbywgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgYnVnIGZpeCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gZG9lc24ndCByZXN1cnJlY3QgaXRzZWxmIGR1ZSB0byB0aGUgcmVxdWVzdCBiZWluZyBjbGVhcmVkIGluY29ycmVjdGx5LiBNYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHN0YXRlIGNoYW5nZXMgaW4gYSBjb3JlIGNvbXBvbmVudCBsaWtlIHRoaXMsIEknbSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgYSB2aWFibGUgc2V0IG9mIGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzIHRvIHRhcmdldC5cblxuRm9yIGNvbmZpZyBvcHRpb25zLCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgS1ZNIHN1YnN5c3RlbSBpdHNlbGYsIHBsdXMgYXJjaC1zcGVjaWZpYyBvcHRpb25zOiBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuXG5cbk5vdywgZm9yIGZvY3VzIHN5bWJvbHMsIHRoZSBwYXRjaCBpdHNlbGYgZ2l2ZXMgYSBmZXcgc3VnZ2VzdGlvbnMgYmFzZWQgb24gdGhlIGxvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gY2hhbmdlczogYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIChhcm02NCksIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgICh4ODYpLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCAoeDg2KSwgYW5kIGB2Y3B1X2VudGVyX2d1ZXN0YCAoeDg2KS4gU28sIGxldCdzIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmVuJ3QgaW5saW5lZCBvciBzdGF0aWM7IHdlIHdhbnQgdGhlIGVudHJ5cG9pbnRzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBjaGVja192Y3B1X3JlcXVlc3RzYCwgYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAsIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIGFuZCBgdmNwdV9lbnRlcl9ndWVzdGAgYXJlIGFsbCBzdGF0aWMgaW4gdGhlaXIgcmVzcGVjdGl2ZSBmaWxlcy4gVGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIHRoZSBwcm9tcHQgc3RhdGVkIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy5cblxuT2theSwgbGV0J3MgZmluZCB0aGUgY2FsbGVycyBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBzZWUgaWYgdGhleSBhcmUgbm9uLXN0YXRpYzsgdGhleSBzaG91bGQgYmUgYmV0dGVyIHRhcmdldHMuXG5cbkZvciBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AgaW4gYGFyY2gvYXJtNjQva3ZtL2FybS5jYCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBvbmUgY2FsbGVyLiBUaGlzIGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MjIuNTI2ODIwMTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTYxNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV90ZHBfcGFnZV9wcmVmYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tbXUvbW11LmM9NDk1NT1zdGF0aWMgaW50IGt2bV9tbXVfZG9fcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwMTktXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDIwOnN0YXRpYyBpbnQga3ZtX3RkcF9wYWdlX3ByZWZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLFxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAyMS1cXHRcXHRcXHRcXHQgdTY0IGVycm9yX2NvZGUsIHU4ICpsZXZlbClcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NTA2ND1sb25nIGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwOTctXFx0ICovXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDk4OlxcdHIgPSBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQodmNwdSwgcmFuZ2UtXFx1MDAzZWdwYSB8IGRpcmVjdF9iaXRzLCBlcnJvcl9jb2RlLCBcXHUwMDI2bGV2ZWwpO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA5OS1cXHRpZiAociBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjIyLjYxNjk4Njk4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU4NTIxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIE1lbW9yeSBGYXVsdCBIYW5kbGluZyBGbG93KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgS1ZNIG1lbW9yeSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGFyb3VuZCBwcmUtZmF1bHRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbCBmb3IgcHJlcGFyaW5nIG1lbW9yeSBwYWdlcywgbGlrZWx5IHByaW9yIHRvIGEgbW9yZSBnZW5lcmFsIGZhdWx0LlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGNhbGwgdG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBURFAgKFRhZ2dlZCBEYXRhIFBhZ2UpIGlzIGEga2V5IGFzcGVjdCBoZXJlLCBhbmQgdGhlIFwicHJlLWZhdWx0XCIgc3VnZ2VzdHMgd2UncmUgcHJvYWN0aXZlbHkgc2V0dGluZyB1cCBzb21ldGhpbmcuIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgdG8gdW5kZXJzdGFuZCAqd2hhdCogaXQncyBzZXR0aW5nIHVwIGFuZCAqd2h5Ki4gSXMgdGhpcyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgY2hlY2tzLCBvciBib3RoPyBBcmUgd2UgcHJlLWZhdWx0aW5nIHRvIG1ha2UgYWNjZXNzIGZhc3RlciBvciB0byBlbnN1cmUgc29tZXRoaW5nIGxpa2UgYSB3cml0ZSBkb2Vzbid0IHZpb2xhdGUgYSBzaGFkb3cgcGFnZT9cblxuTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIEl0IHNlZW1zIHJlbGV2YW50IHRvIHRoZSBwcmUtZmF1bHRpbmcgZmxvdywgYXMgaXQgY29tZXMgdXAgaW4gdGhlIGNvbnRleHQgb2YgVERYIChUcnVzdGVkIERvbWFpbiBFeHRlbnNpb24pIHN5c3RlbXMsIHdoaWNoIGlzIHNvbWV0aGluZyB2ZXJ5IGhpZ2gtbGV2ZWwuIEkgYW0gZ29pbmcgdG8gZXhwbG9yZSB0aGUgY29kZSBpbiBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AgdG8gc2VlIGhvdyBFUFQgKEV4dGVuZGVkIFBhZ2UgVGFibGVzKSB2aW9sYXRpb25zIGFyZSBiZWluZyBoYW5kbGVkIGluIHRoZSBjb250ZXh0IG9mIFREWC4gV2hhdCBpcyB0aGUgYXJjaGl0ZWN0dXJlIGRvaW5nIHRoYXQgbmVlZHMgcHJlLWZhdWx0aW5nPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSB2aW9sYXRpb24/IElzIHRoaXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIGd1ZXN04oCZcyB2aWV3IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgaW4gVERYPyBUaGlzIHdpbGwgYmUgdmVyeSBpbXBvcnRhbnQgZm9yIG1lIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS4gU28gZmFyIEkga25vdyB0aGF0IGEgcHJlLWZhdWx0IGhhcyB0YWtlbiBwbGFjZS4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcHJlLWZhdWx0aW5nIGlzIGRvaW5nLCBhbmQgd2h5IGl0IGlzIGRvaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTExLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MjcuMDEyODQxNzE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzE5MzcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC90ZHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE5MDM9c3RhdGljIGlubGluZSBib29sIHRkeF9pc19zZXB0X3Zpb2xhdGlvbl91bmV4cGVjdGVkX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xOTEzLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTkxNDpzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xOTE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjAzMT1pbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjEwNi1cXHRjYXNlIEVYSVRfUkVBU09OX0VQVF9WSU9MQVRJT046XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyMTA3OlxcdFxcdHJldHVybiB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb24odmNwdSk7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMTA4LVxcdGNhc2UgRVhJVF9SRUFTT05fT1RIRVJfU01JOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjoyNy4xMTYwMzk2MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2Njg1Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6XG5cbioqQW5hbHl6aW5nIFREWCBFeGl0IEhhbmRsaW5nIGluIEtWTSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBURFggZXhpdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBjb250ZXh0LiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYSBjYWxsIHRvIGB0ZHhfaGFuZGxlX2V4aXRgIHRyaWdnZXJzIGEgZnVydGhlciBhY3Rpb24sIHNwZWNpZmljYWxseSBhIGNhbGwgdG8gYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgdGR4X2hhbmRsZV9leGl0YCBpcyB0aGUgZ2VuZXJhbCBlbnRyeSBwb2ludCBmb3IgYW55IFREWCBleGl0LCBhbmQgaXQgdGhlbiBkaXNwYXRjaGVzIHRvIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIHdoZW4gdGhlIGV4aXQgaXMgcmVsYXRlZCB0byBhbiBFUFQgdmlvbGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgZGVzaWduIHBhdHRlcm4gZm9yIGhhbmRsaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleGNlcHRpb25zOiBhIHRvcC1sZXZlbCBmdW5jdGlvbiB0aGF0IGV4YW1pbmVzIHRoZSBleGl0IHJlYXNvbiBhbmQgcm91dGVzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgdmNwdV9lbnRlcl9ndWVzdGAsIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoaXMgaXMgdGhlIGNvcmUgZnVuY3Rpb24gd2hlcmUgdGhlIHZpcnR1YWwgQ1BVIHJlc3VtZXMgZXhlY3V0aW9uIHdpdGhpbiB0aGUgZ3Vlc3QuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIGluIGRldGVybWluaW5nIGhvdyB0aGVzZSBleGl0cyBhcmUgZGV0ZWN0ZWQsIGhvdyB0aGV5IGludGVycnVwdCB0aGUgZ3Vlc3QsIGFuZCBob3cgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgaGFuZGxlci4gSSdtIGFzc3VtaW5nIHRoYXQgaW5zaWRlIGB2Y3B1X2VudGVyX2d1ZXN0YCwgdGhlcmUgYXJlIGNoZWNrcyBmb3IgVERYLXJlbGF0ZWQgY29uZGl0aW9ucyBhbmQsIGlmIGFuIGV4aXQgaXMgcGVuZGluZywgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXJzIGFyZSBpbnZva2VkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgdG8gY29uZmlybSB0aGlzLCBzcGVjaWZpY2FsbHkgaG93IGB0ZHhfaGFuZGxlX2V4aXRgIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBDUFUgZW50cnkgc2VxdWVuY2UuIEknbGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCBvciBmbGFncyB0aGF0IHdvdWxkIGVuYWJsZSB0aGF0IGhhbmRsZXIgdG8gZ2V0IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjMwLjk2MjcyNzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjI5MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjcHVfZW50ZXJfZ3Vlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ2LVxcdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjU0NzpcXHQgKiB2Y3B1X2VudGVyX2d1ZXN0KCkgcmVxdWVzdHMgYW4gaW1tZWRpYXRlIGV4aXQsIGFuZCB0aGUgZ3Vlc3RcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVxcdCAqIHNob3VsZG4ndCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yMDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9mbHVzaF90bGJfY3VycmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjAzMy0gKiBTZXJ2aWNlIFxcXCJsb2NhbFxcXCIgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjIwMzQ6ICogY29udGV4dC4gIEluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIGV2ZW50IGhhbmRsaW5nIGluIHZjcHVfZW50ZXJfZ3Vlc3QoKSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjAzNS0gKiBUTEIgZmx1c2hlcyB0aGF0IGFyZSB0YXJnZXRlZCBhdCBhbiBNTVUgY29udGV4dCBhbHNvIG5lZWQgdG8gYmUgc2VydmljZWRcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03ODkzPXZvaWQgX19rdm1fc2V0X29yX2NsZWFyX2FwaWN2X2luaGliaXQoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTMtXFx0XFx0ICogS2ljayBhbGwgdkNQVXMgYmVmb3JlIHNldHRpbmcgYXBpY3ZfaW5oaWJpdF9yZWFzb25zIHRvIGF2b2lkXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTQ6XFx0XFx0ICogZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBzYW5pdHkgY2hlY2sgV0FSTiBpbiB2Y3B1X2VudGVyX2d1ZXN0KCkuXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTUtXFx0XFx0ICogVGhpcyB0YXNrIHdpbGwgd2FpdCBmb3IgYWxsIHZDUFVzIHRvIGFjayB0aGUga2ljayBJUlEgYmVmb3JlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxNy1cXHRcXHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4ndFxcbmFyY2gveDg2L2t2bS94ODYuYzo3OTE4OlxcdFxcdCAqIHJlZG8gdmNwdV9lbnRlcl9ndWVzdCgpIHdpdGhvdXQgc2VlaW5nIHRoZSBuZXcgaW5oaWJpdCBzdGF0ZS5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOS1cXHRcXHQgKlxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTAtICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgwNTE6c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODA1Mi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODYzMT1zdGF0aWMgaW50IHZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjQ1LVxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDY6XFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzEuMDIxOTYzMDg4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNDAxODI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRmxvdyBvZiBgdmNwdV9ydW5gKipcblxuUmlnaHQsIGB2Y3B1X3J1bmAgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgdmlydHVhbCBDUFUncyBleGVjdXRpb24gbG9vcC4gQW5kIGl0IGltbWVkaWF0ZWx5IGNhbGxzIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLCBpbml0aWFsaXppbmcgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gU2luY2UgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgZGV0ZXJtaW5lIGFsbCBjYWxsIHNpdGVzLiBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBjYWxsLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSB3aGF0IHRyaWdnZXJzIGB2Y3B1X3J1bmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgb2YgYHZjcHVfcnVuYCBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgVkNQVSBzY2hlZHVsaW5nIGFuZCBjb250ZXh0LXN3aXRjaGluZyBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjM0LjA0NTk4Mzc2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2NjcwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xNTY5PXN0YXRpYyB2b2lkIHB2Y2xvY2tfdXBkYXRlX3ZtX2d0b2RfY29weShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJhY2t3YXJkc190c2Nfb2JzZXJ2ZWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU5MS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXFx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjI2OlxcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXFx0ICogd2hlbiB0aGlzIGlzIHRydWUsIGZvciBleGFtcGxlIGFsbG93aW5nIHRoZSB2Q1BVIHRvIGJlIG1hcmtlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDYtICogQ2FsbGVkIHdpdGhpbiBrdm0tXFx1MDAzZXNyY3UgcmVhZCBzaWRlLlxcbmFyY2gveDg2L2t2bS94ODYuYzo4MDQ3OiAqIFJldHVybnMgMSB0byBsZXQgdmNwdV9ydW4oKSBjb250aW51ZSB0aGUgZ3Vlc3QgZXhlY3V0aW9uIGxvb3Agd2l0aG91dFxcbmFyY2gveDg2L2t2bS94ODYuYy04MDQ4LSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1MT1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzNjc6XFx0XFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM2OC1cXHRcXHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTAzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NTA0OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTU0PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1NjppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTcte1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTU4OlxcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXFx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1OS1cXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTYzPXN0YXRpYyBpbmxpbmUgaW50IHZjcHVfYmxvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1Njc6XFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjgtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTkzLVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTk0OlxcdFxcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5NS1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjMwLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVxcdTAwM2VzcmN1IHJlYWQgc2lkZS4gICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzE6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDQtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ1OlxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDYtXFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcxOT1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3Mjc6XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjgtXFx0XFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODgxPWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4NjpcXHRyID0gdmNwdV9ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjM0LjExNjY1NzI5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUyODU3MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTSdzIFJ1biBFbnRyeXBvaW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGtpY2sgb2ZmIGEgS1ZNIHZpcnR1YWwgQ1BVJ3MgZXhlY3V0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIGl0J3MgaGFuZGxpbmcgdGhlIElPQ1RMIGNhbGwgYW5kIEknbSBndWVzc2luZyB0aGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGB2Y3B1X3J1bmAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0aG91Z2gsIGxldCdzIGFsc28gdGFrZSBhIGxvb2sgYXQgdGhlIEFSTTY0LXNwZWNpZmljIGltcGxlbWVudGF0aW9uOyBJJ2xsIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgYW5kIHNwZWNpZmljYWxseSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBzcGVjaWZpY3MgSSBuZWVkIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBhbmQgY29uZmlybSBteSBpbml0aWFsIHRob3VnaHQgb24gdGhlIGVudHJ5cG9pbnQgYW5kIGl0cyBwbGFjZSBpbiB0aGUgZXhlY3V0aW9uIGZsb3cuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGlmIGFueXRoaW5nIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBoYXBwZW5zIGJlZm9yZSBgdmNwdV9ydW5gIGdldHMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzcuNDY5NTE4ODE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI1NTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uYz0xMDY2PXN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDkyLVxcdCAqIE90aGVyd2lzZSwgd2Ugd2VyZSB1bmJsb2NrZWQgdG8gcHJvY2VzcyBhIGRpZmZlcmVudCBldmVudCwgc3VjaCBhcyBhXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTA5MzpcXHQgKiBwZW5kaW5nIHNpZ25hbC4gUmV0dXJuIDEgYW5kIGFsbG93IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkgdG9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDk0LVxcdCAqIHByb2Nlc3MgdGhlIGV2ZW50Llxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTIzMD1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX2FybV92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0MS0vKipcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjQyOiAqIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC0gdGhlIG1haW4gVkNQVSBydW4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBndWVzdCBjb2RlXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0My0gKiBAdmNwdTpcXHRUaGUgVkNQVSBwb2ludGVyXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUwLSAqL1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzcuNTI3NzgwOTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjU2NDY4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS2V5IEtWTSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gZGlyZWN0IG15IGF0dGVudGlvbiB3aXRoaW4gdGhpcyBLVk0gY29kZS4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzZWVtcyBsaWtlIGEgZ29vZCwgc29saWQgZW50cnkgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIHRoZSBsaWtlbHkgY2VudGVyIG9mIG11Y2ggb2YgdGhlIGFjdGlvbi4gQnV0LCBsZXQncyBleHBsb3JlIGEgZmV3IG1vcmUgb3B0aW9ucyBiZWZvcmUgY29tbWl0dGluZy4gSSBzZWUgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAg4oCTIHRoYXQgb25lJ3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZyBmb3IgcG90ZW50aWFsIGludGVyYWN0aW9ucywgYW5kLCBpdCdzIG5vbi1zdGF0aWMsIHNvIGl0J3MgcHJvYmFibHkgaW1wb3J0YW50LiBBbmQsIGFoYSwgYHRkeF9oYW5kbGVfZXhpdGAhIFRoYXQncyBhbHNvIG5vbi1zdGF0aWMuIFRoaXMgb25lIGxvb2tzIHBhcnRpY3VsYXJseSByZWxldmFudC4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgYHRkeF9oYW5kbGVfZXhpdGAgaW4gYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgIGZvciBtb3JlIGluZm9ybWF0aW9uLiBMb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjo0MS4xOTM0MzE3NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjk1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRkeF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdGR4LmM9OTI0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHRkeF90b192bXhfZXhpdF9yZWFzb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NDktXFx0XFx0LypcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjk1MDpcXHRcXHQgKiBEZWZlciBLVk1fQlVHX09OKCkgdW50aWwgdGR4X2hhbmRsZV9leGl0KCkgYmVjYXVzZSB0aGlzIGlzIGluXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NTEtXFx0XFx0ICogbm9uLWluc3RydW1lbnRhYmxlIGNvZGUgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0xMTMyPXN0YXRpYyBpbnQgdGR4X2hhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzNy1cXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTEzODpcXHQgKiB0ZHhfaGFuZGxlX2V4aXQoKSB3aXRoIFREWF9OT05fUkVDT1ZFUkFCTEUgc2V0IGlmIGEgI01DIG9jY3VycyBvblxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzOS1cXHQgKiBWTS1FbnRyeS4gIE5NSXMgYXJlIGhhbmRsZWQgYnkgdGR4X3ZjcHVfZW50ZXJfZXhpdCgpLlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yMDE3PWludCB0ZHhfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMC1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIwMzE6aW50IHRkeF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZmFzdHBhdGgpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMDMyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6NDEuMjY1MTM2NzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDQwNTAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB0ZHhfaGFuZGxlX2V4aXRgIGFuZCBNZW1vcnkgRmF1bHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBgdGR4X2hhbmRsZV9leGl0YCBpc24ndCBzdGF0aWMuIFRoYXQncyBnb29kIHRvIGtub3cuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBtZW1vcnkgZmF1bHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIHg4NiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyB3b3Jrcywgc28gbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaW4gYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBgdGR4X2hhbmRsZV9leGl0YCAob3IgKmlmKiBpdCBpbnRlcmFjdHMgd2l0aCBpdCksIGFzIG1lbW9yeSBmYXVsdHMgYXJlIGNyaXRpY2FsIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGEgVERYIGV4aXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGEgZmF1bHQuIEknbGwgbmVlZCB0byBzZWUgaWYgdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIGB0ZHhfaGFuZGxlX2V4aXRgIGlzIHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDUyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6NDQuNDI1NTQ0Mjg0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDc0NzY0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL21tdS9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjMtXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSAqcmFuZ2UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ0LjUxNjI5NzE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI4MDY3MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgSG90c3BvdHMgYW5kIENhbGwgQ2hhaW5zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBwaW5wb2ludCB0aGUga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBJJ20gdGhpbmtpbmcgdGhlIHJlYWwgYm90dGxlbmVja3MsIHRoZSBhcmVhcyB3aGVyZSB3ZSdyZSBzcGVuZGluZyB0aGUgbW9zdCBjeWNsZXMsIGFyZSBwcm9iYWJseSBsaW5rZWQgdG8gdGhlc2UgZm9jdXMgc3ltYm9sczogYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCwgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAsIGFuZCBgdGR4X2hhbmRsZV9leGl0YC4gVGhlc2UgYXJlIG15IGluaXRpYWwgY2FuZGlkYXRlcyBmb3IgaG90c3BvdHMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSBhbSBnb2luZyB0byBzZWUgd2hpY2ggb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHBvdGVudGlhbGx5IGNhbGxlZCBieSBhbnl0aGluZy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHBhdGhzIHRvIHNlZSB3aGVyZSBgdGR4X2hhbmRsZV9leGl0YCBpcyBiZWluZyBpbnZva2VkLiBUaGF0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ3Ljc0NDM2NzYxNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzOTMxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4X2hhbmRsZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE1Nz1zdGF0aWMgaW50IHZ0X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE2MC1cXHRpZiAoaXNfdGRfdmNwdSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNjE6XFx0XFx0cmV0dXJuIHRkeF9oYW5kbGVfZXhpdCh2Y3B1LCBmYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz05MjQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdGR4X3RvX3ZteF9leGl0X3JlYXNvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTk0OS1cXHRcXHQvKlxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6OTUwOlxcdFxcdCAqIERlZmVyIEtWTV9CVUdfT04oKSB1bnRpbCB0ZHhfaGFuZGxlX2V4aXQoKSBiZWNhdXNlIHRoaXMgaXMgaW5cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTk1MS1cXHRcXHQgKiBub24taW5zdHJ1bWVudGFibGUgY29kZSB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTExMzI9c3RhdGljIGludCB0ZHhfaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM3LVxcdCAqIE1hY2hpbmUgY2hlY2tzIGFyZSBoYW5kbGVkIGJ5IGhhbmRsZV9leGNlcHRpb25faXJxb2ZmKCksIG9yIGJ5XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxMTM4OlxcdCAqIHRkeF9oYW5kbGVfZXhpdCgpIHdpdGggVERYX05PTl9SRUNPVkVSQUJMRSBzZXQgaWYgYSAjTUMgb2NjdXJzIG9uXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM5LVxcdCAqIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieSB0ZHhfdmNwdV9lbnRlcl9leGl0KCkuXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTIwMTc9aW50IHRkeF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMDMwLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjAzMTppbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MTQzPXZvaWQgdGR4X3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTQ0OmludCB0ZHhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTE0NS1cXHRcXHRlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ3LjgxNTc2NTc4MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDcyOTQ4NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEV4aXQgSGFuZGxpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIEtWTS9WTVggY29kZSBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBleGl0IGhhbmRsaW5nLiBJIHNlZSB0aGF0IGB2dF9oYW5kbGVfZXhpdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyB1bHRpbWF0ZWx5IHJlc3BvbnNpYmxlIGZvciBkZWFsaW5nIHdpdGggVk0gZXhpdHMgd2l0aGluIHRoZSBWTVggYXJjaGl0ZWN0dXJlLiBUaGF0J3Mgbm8gc3VycHJpc2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgaW4gbW9yZSBkZXRhaWwuIFRoZSBicmVhZGNydW1iIEkndmUgZ290IGlzIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBjYWxscyBgdGR4X2hhbmRsZV9leGl0YC4gVGhhdCB0ZWxscyBtZSB0aGF0IGZvciBURFgtZW5hYmxlZCBzeXN0ZW1zIHRoZXJlJ3MgYSBzcGVjaWZpYywgbG93ZXItbGV2ZWwgaGFuZGxlciBiZWluZyBpbnZva2VkLiBUaGlzIG1ha2VzIHNlbnNlOyBURFggaW50cm9kdWNlcyBhIHdob2xlIHNldCBvZiBuZXcgZXhpdCByZWFzb25zIGFuZCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyB0aGF0IHdvdWxkIG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGludGVncmF0aW9uIHdvcmtzLiBMZXQgbWUgY29uZmlybSB0aGUgY29udGV4dCBvZiBgdnRfaGFuZGxlX2V4aXRgIGFuZCB3aGVyZSBpdCBsaXZlczogYWgsIGl0J3MgZGVmaW5lZCBpbiBgYXJjaC94ODYva3ZtL3ZteC9tYWluLmNgLiBUaGF0IGdpdmVzIG1lIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZSB0byBjaGVjayB0aGUgY2FsbCBzdGFjayBhbmQgdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUgcmVzdCBvZiB0aGUgVk1YIGFyY2hpdGVjdHVyZS4gTmV4dCwgSSB3aWxsIGNoZWNrIHRoZSBjYWxsZXIvY2FsbGVlIHJlbGF0aW9uc2hpcHMgaW4gdGhpcyBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjUxLjI4ODcxNzgwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNzEyMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ0X2hhbmRsZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE0OT1zdGF0aWMgZmFzdHBhdGhfdCB2dF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBydW5fZmxhZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTYtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTU3OnN0YXRpYyBpbnQgdnRfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE1OC1cXHRcXHRcXHQgIGVudW0gZXhpdF9mYXN0cGF0aF9jb21wbGV0aW9uIGZhc3RwYXRoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjo1MS43MjE0MzUyMDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyODAyMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBLVk0veDg2IEludGVyYWN0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIGxvdy1sZXZlbCBLVk0gaW50ZXJhY3Rpb25zLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSBzZWUgdGhhdCBgdnRfaGFuZGxlX2V4aXRgIGlzIGEgY3J1Y2lhbCBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gYGt2bV94ODZfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgb2YgY29udHJvbCwgbGlrZWx5IGhhbmRsaW5nIFZNIGV4aXRzIG9mIHNvbWUga2luZC5cblxuTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIG1hcCB0aGlzIHdpdGhpbiB0aGUgS1ZNL3g4NiBjb250cm9sIGZsb3cuIFRvIGdldCBhIGJldHRlciBncmFzcCBvZiB0aGUgcmVsZXZhbnQgbG9naWMsIEkgc2hvdWxkIHRyYWNlIGl0IGluIHRoZSBicm9hZGVyIEtWTS94ODYgZWNvc3lzdGVtLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBJIHNob3VsZCBub3cgY29uc2lkZXIgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgdnRfaGFuZGxlX2V4aXRgIGNhbGxiYWNrIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSXQncyBjbGVhciB0aGF0IHRoZSBvdGhlciBzeW1ib2xzIGlkZW50aWZpZWQgYXJlIHNpZ25pZmljYW50OiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHNvIGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBjaGVjayBpZiBpdCdzIHg4NiBzcGVjaWZpYy5cblxuTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzeW1ib2xzIGludGVyYWN0LiBJIHdhbnQgdG8gY2hlY2sgaG93IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGZpdCBpbnRvIHRoaXMgcGljdHVyZSwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBgdnRfaGFuZGxlX2V4aXRgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRob3NlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjU1Ljc0OTQ1ODI2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzMTYzNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz04ODQ0PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg4Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjU1LjgxNzc3OTA4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA0MjM2OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtWTSBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgcGF0aCBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIEtWTSBjb2RlLiBSaWdodCwgKmBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAqIC0gSSBzZWVtIHRvIHJlY2FsbCB0aGF0J3MgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBxdWlja2x5LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19LVk1fSU5URUxgIGFzIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzLCBidXQgSSBoYXZlIGEgZmVlbGluZyB0aGVyZSBtaWdodCBiZSBtb3JlIGludm9sdmVkLiBHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayBURFggaGFzIHRvIGZhY3RvciBpbnRvIHRoaXMuIEFuZCwgeWVzLCBURFggaXMgdmVyeSBsaWtlbHkgY29ubmVjdGVkIHRvIGBDT05GSUdfSU5URUxfVERYX0hPU1RgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjbHVlcyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDUwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAwLjAyMjAxODg1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1MjA1OTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRkeC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAwLjExNTU0NjkxMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU2NjU3NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhbmQgcmVsZXZhbnQgeDg2LXNwZWNpZmljIGNvbXBvbmVudHMgYXJlIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIHJvYWRtYXAuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpYWwgYnVpbGQgcnVsZXMgc3BlY2lmaWMgdG8gS1ZNIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IGhvdyBLVk0gaW50ZXJhY3RzIHdpdGggZmVhdHVyZXMgbGlrZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIChWVC14IG9yIEFNRC1WKSwgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgb24gdGhlIHg4NiBwbGF0Zm9ybS4gVGhlIGRlcGVuZGVuY2llcyB3aWxsIGxpa2VseSByZXZlYWwgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRyZWFzdXJlcyB0aGlzIE1ha2VmaWxlIGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAzLjE3MjIwODUxOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzNDE0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0yMT1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIyOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVxcdCs9IHZteC90ZHgub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MDMuMjQ3NTU5NzE3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzcwODczNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEtWTSBhbmQgVERYIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX0tWTV9JTlRFTF9URFhgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBnb2VzIHRvIHZlcmlmeWluZyBob3cgdGhpcyBpcyBzZXQgdXAgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYCwgc3BlY2lmaWNhbGx5IGZvciBga3ZtX3RkcF9wYWdlX3ByZWZhdWx0YC4gSSBrbm93IHRoYXQncyB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQgZm9yIHg4NiBLVk0sIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgVERYIG1pZ2h0IHJlbGF0ZS4gVGhlbiwgSSBuZWVkIHRvIGNvbXBhcmUgdGhhdCB0byB0aGUgQVJNNjQgc2lkZSwgc28gSSdsbCBhbHNvIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgdG8gc2VlIHRoZSBzZXR1cCB0aGVyZS4gSSByZWNhbGwgdGhhdCdzIGNvbXBpbGVkIGZvciBgQ09ORklHX0tWTWAuXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxfVERYYC4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBLVk1fSU5URUxfVERYYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnIGZpbGVzLiBDYW4ndCBiZSB0b28gY2FyZWZ1bC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MDcuMjI0NjQ5MTM3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjM3MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0lOVEVMX1REWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjA3LjMxNzAyNDkyNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTgwMjQ3NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTS9URFggRW50cnkgUG9pbnQgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIGBLVk1fSU5URUxfVERYYC4gUmlnaHQuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgaW50byB0aGUgS1ZNL1REWCBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdHMgdGVsbCBtZSB0byBjaGVjayBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCDigJMgc3RhbmRhcmQgc3RhcnRpbmcgcG9pbnRzLiBCdXQsIGFyZSB0aGVyZSBvdGhlcnM/IEknbGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzLlxuXG5MZXQgbWUgc2VlLi4uIGRpZ2dpbmcgaW50byBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgSSBzZWUgdGhhdCBgdmNwdV9lbnRlcl9ndWVzdGAgaXMgY2FsbGVkIGZyb20gYHZjcHVfcnVuYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgb25lLiBOb3csIGxvb2tpbmcgYXQgYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCBpcyBjYWxsZWQgZnJvbSBgdGR4X2hhbmRsZV9leGl0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHZ0X2hhbmRsZV9leGl0YC4gVGhhdCBsb29rcyBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBzaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggVERYLiBJbiBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIEkgc2VlIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBBbmQganVzdCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcywgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBjYWxscyBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AgZnJvbSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLlxuXG5Pa2F5LCBzbyB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgcGljdHVyZTogVGhlIHByaW1hcnkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlIGFyZTpcblxuKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmBcbiogICBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YFxuKiAgIGB2dF9oYW5kbGVfZXhpdGBcblxuTm93LCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIGB2dF9oYW5kbGVfZXhpdGAgaXMgc3RhdGljLi4uIHRoYXQgd2lsbCBpbmZsdWVuY2UgaG93IEkgdHJhY2UgaXRzIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MTIuODk3Mjc2NTQ2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1OTYwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnRfaGFuZGxlX2V4aXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MTQ5PXN0YXRpYyBmYXN0cGF0aF90IHZ0X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE1Ni1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNTc6c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU4LVxcdFxcdFxcdCAgZW51bSBleGl0X2Zhc3RwYXRoX2NvbXBsZXRpb24gZmFzdHBhdGgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjEzLjAxNTg3NzI4MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcwNDEwMDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBoYW5kbGVfZXhpdGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdnRfaGFuZGxlX2V4aXRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIFRoYXQncyBhIGtleSBkZXRhaWw7IGl0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIEl0J3MgYWxzbyBhc3NpZ25lZCB0byBga3ZtX3g4Nl9vcHMuaGFuZGxlX2V4aXRgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYGhhbmRsZV9leGl0YCBsaWtlbHkgYWN0cyBhcyBhIGhhbmRsZXIgd2l0aGluIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJdCdzIHBhcnQgb2YgYSBzZXQgb2Ygb3BlcmF0aW9ucyAoYGt2bV94ODZfb3BzYCkgdGhhdCBLVk0gdXNlcy4gTm93IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiB3aGF0IHRyaWdnZXJzIHRoZSBleGVjdXRpb24gb2YgYGhhbmRsZV9leGl0YD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiB0byBgaGFuZGxlX2V4aXRgIGlzIHRoZSBuZXh0LCBhbmQgbW9zdCB2aXRhbCwgc3RlcCBpbiBjb21wcmVoZW5kaW5nIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGhhbmRsZV9leGl0YCB0byB1bmRlcnN0YW5kIHRoZSBldmVudCBpdCdzIG1lYW50IHRvIGhhbmRsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyODMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoxNi4xODYyOTAwNDdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDQ0MzA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTgwNTE9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NDIxLVxcdC8qXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0MjI6XFx0ICogU3luYyB4ZmQgYmVmb3JlIGNhbGxpbmcgaGFuZGxlX2V4aXRfaXJxb2ZmKCkgd2hpY2ggbWF5XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0MjMtXFx0ICogcmVseSBvbiB0aGUgZmFjdCB0aGF0IGd1ZXN0X2ZwdTo6eGZkIGlzIHVwLXRvLWRhdGUgKGUuZy5cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NDI4LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NDI5OlxcdGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdF9pcnFvZmYpKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy04NDMwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0OTAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0OTE6XFx0ciA9IGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdCkodmNwdSwgZXhpdF9mYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0OTItXFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjE2LjMwMDczODA3M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3MTY2NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIEVudHJ5IFBvaW50cyBpbnRvIHRoZSBLVk0gR3Vlc3QgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBJJ20gZm9jdXNpbmcgb24gaG93IHdlIGVudGVyIGd1ZXN0IGV4ZWN1dGlvbiB3aXRoaW4gS1ZNLiBNeSBtZW50YWwgbWFwIHNob3dzIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGEga2V5IGZ1bmN0aW9uIGhlcmUsIGFuZCB0aGF0IGl0IGV2ZW50dWFsbHkgY2FsbHMgYGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdClgLiAgTm93LCBJIHJlY2FsbCB0aGF0IGB2Y3B1X2VudGVyX2d1ZXN0YCBpcyBjYWxsZWQgZnJvbSBgdmNwdV9ydW5gLiBBbmQgYHZjcHVfcnVuYCwgaW4gdHVybiwgaXMgaW52b2tlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBTbywgdGhhdCBsYXN0IGZ1bmN0aW9uLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBzZWVtcyB0byBiZSBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBndWVzdCBleGVjdXRpb24sIGNvdmVyaW5nIGEgc2lnbmlmaWNhbnQgcGFydCBvZiB0aGUgY2FsbCBjaGFpbi4gSXQgY29ubmVjdHMgYWxsIHRoZSBwaWVjZXMsIGV4Y2VwdCBmb3IgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAuXG5cblRoZXJlZm9yZSwgbXkgY29yZSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHNlY3VyZSBhbmQgZWZmaWNpZW50IHdheS5cblxuTm93LCBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaXMgZXhwb3NlZCBvciByZWFjaGFibGUgdmlhIHRoZSBzeXNjYWxsIGludGVyZmFjZS4gVGhhdCdzIGEgY3J1Y2lhbCBjaGVjayBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGV4ZWN1dGlvbiBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MjAuNTM3OTA4MDk1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTQ1MTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjMtXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSAqcmFuZ2UpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE2OTg9c3RhdGljIGludCB0ZHhfc2VwdF9tYXBfbGVhZl9zcHRlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuLCBlbnVtIHBnX2xldmVsIGxldmVsLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEwLVxcdC8qXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxNzExOlxcdCAqIEVuc3VyZSBwcmVfZmF1bHRfYWxsb3dlZCBpcyByZWFkIGJ5IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSgpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEyLVxcdCAqIGJlZm9yZSBrdm1fdGR4LVxcdTAwM2VzdGF0ZS4gIFVzZXJzcGFjZSBtdXN0IG5vdCBiZSBhbGxvd2VkIHRvIHByZS1mYXVsdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyMC42MTkzNjgwNDNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwODcwOTA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyBNZW1vcnkgRmF1bHRzIGluIEtWTSAtIFRoZSBIdW50IEJlZ2lucyoqXG5cbkFscmlnaHQsIGEgbWVtb3J5IGZhdWx0J3MgZ290IG1lIHN0dW1wZWQsIHNvIGxldCdzIGRpZyBpbnRvIHRoaXMuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIEtWTSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQgdXN1YWxseSBtZWFucyBsb29raW5nIGF0IHRoZSBjb21tb24gZW50cnkgcG9pbnRzLlxuXG5UaGUgZnVuY3Rpb24gYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUg4oCTIGl0J3MgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWU6IHByZS1mYXVsdCwgbWVtb3J5LiBNeSB0aGlua2luZyBpcywgbGV0J3Mgc3RhcnQgYnkgZmluZGluZyBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBUaGUgc291cmNlIGNvZGUgaXMgbXkgbWFwIGhlcmUsIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cyB3aWxsIHByb2JhYmx5IGJlIHdoZXJlIHRoaXMgY3JpdGljYWwgc3R1ZmYgaXMgc2V0IHVwLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGFuZCB0cmlja3MgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMuIEZyb20gdGhlcmUsIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIG5hcnJvdyBkb3duIHRoZSBzY29wZSBvZiB0aGUgcHJvYmxlbS4gVGhpcyBpbml0aWFsIHNlYXJjaCBzaG91bGQgaGVscCBtZSBwYWludCBhIHBpY3R1cmUgYW5kIHNob3cgbWUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVuZXJneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyNC4wMjgwNzg5MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY4MTYxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTQzNTM9c3RhdGljIGludCBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM3Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQzNzg6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSh2Y3B1LCByYW5nZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy00Mzc5LVxcdFxcdGlmIChXQVJOX09OX09OQ0UociA9PSAwIHx8IHIgPT0gLUVJTykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjI0LjExNDkwMTE0OFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0NTEyMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gS1ZNIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhdWx0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSW1tZWRpYXRlbHksIEkgY29ubmVjdCB0aGF0IGZ1bmN0aW9uIG5hbWUgdG8gdGhlIGJyb2FkZXIgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgZmF1bHRzLCBzcGVjaWZpY2FsbHkgKmJlZm9yZSogdGhlIGFjdHVhbCBmYXVsdCBoYW5kbGluZyBvY2N1cnMsIHdoaWNoIGlzIGEga2V5IHBoYXNlIGluIHZpcnR1YWwgbWFjaGluZSBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGl0cyBpbnZvY2F0aW9uLlxuXG5UaGUgdGV4dCBwb2ludHMgb3V0IHRoYXQgYGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGlzIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9pb2N0bGAuIEFoLCBub3cgaXQncyBjbGVhci4gYGlvY3RsYCBjYWxscyBhcmUgdGhlIGdhdGV3YXkgZm9yIHVzZXItc3BhY2UgcmVxdWVzdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZCAqaW4gcmVzcG9uc2UqIHRvIGEgY29udHJvbCBvcGVyYXRpb24gaW5pdGlhdGVkIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCBsaWtlbHkgZnJvbSBRRU1VIG9yIGFub3RoZXIgdXNlci1zcGFjZSBLVk0gbWFuYWdlbWVudCBhcHBsaWNhdGlvbi4gVGhpcyBtZWFucyB3ZSBhcmUgd2l0aGluIHRoZSBpb2N0bCBoYW5kbGVyLCBhbmQgc29tZXRoaW5nIGluaXRpYXRlZCBieSB1c2VyLXNwYWNlIHJlcXVpcmVzIHRoZSBrZXJuZWwgdG8gKnByZWVtcHRpdmVseSogY2hlY2sgbWVtb3J5LlxuXG5TbywgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBoeXBvdGhlc2lzLiBUaGUgYGlvY3RsYCByZXF1ZXN0IG11c3QgYmUgcmVsYXRlZCB0byBzb21lIG1lbW9yeSBvcGVyYXRpb24uIFBlcmhhcHMgdGhlIHVzZXItc3BhY2UgaXMgdHJ5aW5nIHRvIGFjY2VzcyBvciBtYW5pcHVsYXRlIGEgbWVtb3J5IHJlZ2lvbiB0aGF0J3MgZWl0aGVyIG5vdCB5ZXQgZnVsbHkgc2V0IHVwIGZvciB0aGUgdkNQVSBvciByZXF1aXJlcyBzb21lIHByZS1lbXB0aXZlIGNoZWNrIG9uIHRoZSBtZW1vcnkgc3RhdGUgcHJpb3IgdG8gdGhlIHZDUFUgYWNjZXNzaW5nIHRoZSBtZW1vcnkuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBwYWdlIHRhYmxlIG1hbmFnZW1lbnQsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHNoYWRvdyBwYWdlIHRhYmxlIHVwZGF0ZXMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBpb2N0bCBjb21tYW5kLiBJdCdzIGFsbW9zdCBhbHdheXMgYSBnb29kIGluZGljYXRpb24gdGhhdCBzb21ldGhpbmcgdW51c3VhbCBpcyBnb2luZyBvbi5cblxuTXkgbmV4dCBzdGVwIHdvdWxkIGJlIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIHRoZSBzcGVjaWZpYyBgaW9jdGxgIGNhbGwgdGhhdCB0cmlnZ2VycyB0aGlzIHByZS1mYXVsdCBmdW5jdGlvbiwgYW5kIGRldGVybWluZSB0aGUgZXhhY3QgcmVhc29uIGZvciB0aGUgY2hlY2suIFdoYXQgbWVtb3J5IHJlZ2lvbiBpcyBiZWluZyB0b3VjaGVkPyBXaGF0IGlzIGl0IHRyeWluZyB0byBhY2NvbXBsaXNoPyBBcmUgd2UgZGVhbGluZyB3aXRoIGd1ZXN0IHBoeXNpY2FsIG1lbW9yeSBvciBzaGFkb3cgcGFnZSB0YWJsZSBlbnRyaWVzPyBBIGRlZXBlciBkaXZlIGlzIHJlcXVpcmVkIHRvIHVuZGVyc3RhbmQgdGhlIHdoeSBhbmQgdGhlIGhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyMzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyOC4zNDk0MTc1NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI3NTQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NDMyNz1zdGF0aWMgaW50IGt2bV92Y3B1X2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQzNTItI2lmZGVmIENPTkZJR19LVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0va3ZtX21haW4uYzo0MzUzOnN0YXRpYyBpbnQga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxudmlydC9rdm0va3ZtX21haW4uYy00MzU0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5ICpyYW5nZSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQyNT1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDY1Ny1cXHRcXHRcXHRicmVhaztcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ2NTg6XFx0XFx0ciA9IGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnkodmNwdSwgXFx1MDAyNnJhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ2NTktXFx0XFx0LyogUGFzcyBiYWNrIGxlZnRvdmVyIHJhbmdlLiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyOC40MTIxODU2OThaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExMjQzMjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBLVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBlbnRyeSBwb2ludHMgZm9yIGNlcnRhaW4gb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBrdm1fdmNwdV9pb2N0bGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0IGZvY3VzaW5nIG9uIGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBvciwgYmV0dGVyIHlldCwgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAsIHdvdWxkIGJlIGEgZ29vZCBhcHByb2FjaC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhbHNvIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9pb2N0bGAuIFRoaXMgbWVhbnMgYGt2bV92Y3B1X2lvY3RsYCBpcyB0aGUgcHJpbWFyeSwgYnV0IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGFyZSBtb3JlIGdyYW51bGFyLlxuXG5JIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIExldCdzIGxvb2sgYXQgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgdG8gc2VlIGhvdyBpdCdzIGRlZmluZWQgYW5kIHVzZWQuIEdvb2QsIGl0J3Mgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIHNlZWluZyBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYENPTkZJR19LVk1fQU1EYCwgYW5kIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIFdhaXQsIGlzIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAgYSByZWFsIGNvbmZpZz8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLlxuXG5Ob3csIEknbGwgbW92ZSBvbiB0byBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyB0aGVyZSB0aGF0IGFyZSByZWxldmFudCB0byBteSBjdXJyZW50IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjM0LjUyNDYyMDYzNFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0NTE1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MzQuNjE3MDc5MDExWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjgwMDI2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIEZpeCBmb3IgVk0gRGVhZCBTdGF0ZSBvbiBhcm02NCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgdGhpcyBvbiBhcm02NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBMZXQncyBkaWcgaW50byBgaW5jbHVkZS9saW51eC9rdm1faG9zdC5oYCBhbmQgc2VlIHdoYXQncyBjaGFuZ2VkLiBBaCwgcmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgd2l0aGluIGBrdm1fY2xlYXJfcmVxdWVzdGAgYW5kIGBrdm1fY2hlY2tfcmVxdWVzdGAuIEVzc2VudGlhbGx5LCBpdCdzIGEgY29tcGlsZS10aW1lIGNoZWNrIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBpbmFkdmVydGVudGx5IGNsZWFyaW5nIG9yIGNoZWNraW5nIHRoZSBgS1ZNX1JFUV9WTV9ERUFEYCByZXF1ZXN0IGZsYWcuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgb25jZSBhIFZNIGlzIG1hcmtlZCBhcyBcImRlYWQsXCIgaXQgc3RheXMgdGhhdCB3YXkuXG5cblRoZSBjb3JlIG9mIHRoZSBmaXggaXMgdG8gdXNlIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbnN0ZWFkIG9mIGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIHRoYXQgc3BlY2lmaWMgYEtWTV9SRVFfVk1fREVBRGAgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LiBQcmV2aW91c2x5LCBgS1ZNX1JFUV9WTV9ERUFEYCB3YXMgZ2V0dGluZyBjbGVhcmVkLCB3aGljaCB3b3VsZCBsb2dpY2FsbHkgbGVhZCB0byB0aGUgVk0gKm5vdCogc3RheWluZyBkZWFkLCB3aGljaCBpcyBjbGVhcmx5IHVuZGVzaXJhYmxlLiBOb3csIHdpdGggdGhpcyBjaGFuZ2UsIHRoZSBkZWFkIHN0YXRlIHNob3VsZCBiZSBwZXJzaXN0ZW50LlxuXG5JIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiBhIGNvdXBsZSBvZiBrZXkgc3ltYm9scyBoZXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCB0byBzZWUgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBmbG93LiBBbmQsIG9mIGNvdXJzZSwgSSBzaG91bGQgdmVyaWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBlc3BlY2lhbGx5IGBLVk1fSU5URUxfVERYYC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODc0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjQwLjI4NTA4NDQyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzkyNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTUyPWNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2ICgoRVhQRVJUIFxcdTAwMjZcXHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk4OlxcdGRlcGVuZHMgb24gS1ZNIFxcdTAwMjZcXHUwMDI2IElBMzJfRkVBVF9DVExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFxcdTAwMjZcXHUwMDI2IEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiU29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBYODZfU0dYIFxcdTAwMjZcXHUwMDI2IEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBJTlRFTF9URFhfSE9TVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzM9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mz1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODctXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTk0PWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxMDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjQwLjM2MzAxODcwOFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg2NDA0OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogS1ZNX0lOVEVMX1REWCBhbmQgSU5URUxfVERYX0hPU1QqKlxuXG5BbHJpZ2h0LCBzbyBgS1ZNX0lOVEVMX1REWGAgaXMgY2xlYXJseSBsZWFuaW5nIG9uIGBJTlRFTF9URFhfSE9TVGAuIE5vIHN1cnByaXNlcyB0aGVyZTsgVERYIGhvc3Qgc3VwcG9ydCBpcyB0aGUgZm91bmRhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJTlRFTF9URFhfSE9TVGAgaXRzZWxmLiBHb3R0YSBlbnN1cmUgdGhlcmUncyBubyBjYXNjYWRlIGVmZmVjdCwgbm8gaGlkZGVuIHByZXJlcXVpc2l0ZXMgdGhhdCBtaWdodCB0cmlwIG1lIHVwIGxhdGVyLiBXaGF0IG90aGVyIGNvbXBvbmVudHMsIGRyaXZlcnMsIG9yIGZpcm13YXJlIHZlcnNpb25zIGFyZSBhYnNvbHV0ZWx5ICpyZXF1aXJlZCogZm9yIHRoZSBob3N0IHN1cHBvcnQgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBJIHNob3VsZCBhbnRpY2lwYXRlPyBJIG5lZWQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIGRlcGVuZGVuY3kgZ3JhcGggdG8gZnVsbHkgZXZhbHVhdGUgdGhpcy4gTGV0J3Mgc2VlLi4uIHdoZXJlIGRvIEkgc3RhcnQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjQ1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6NDMuODQ5NDI3NzcyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njg4MTA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5URUxfVERYX0hPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTE4NDQ9Y29uZmlnIFg4Nl9VU0VSX1NIQURPV19TVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xODYzLVxcbmFyY2gveDg2L0tjb25maWc6MTg2NDpjb25maWcgSU5URUxfVERYX0hPU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgaG9zdCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo0My45MTYzMTI5NDFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4NzY2NzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZWNvc3lzdGVtIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzLiBXaGF0IGxpYnJhcmllcywgZnJhbWV3b3Jrcywgb3IgZXh0ZXJuYWwgc2VydmljZXMgaXMgdGhpcyB0aGluZyBsZWFuaW5nIG9uPyBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgdmVyc2lvbnMsIHdoZXJlIHRoZXkncmUgc291cmNlZCBmcm9tLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBhcmlzZS4gQXJlIHRoZXkgYWxsIHVwLXRvLWRhdGUgYW5kIHBhdGNoZWQ/IEhhdmUgYW55IGRlcHJlY2F0aW9uIHdhcm5pbmdzIHBvcHBlZCB1cD8gVGhpcyBpc24ndCBqdXN0IGEgY3Vyc29yeSBnbGFuY2U7IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIHRvbywgZ2V0dGluZyBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZC4gQSBzb2xpZCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGFuZCwgb2YgY291cnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgdGhlIGZvdW5kYXRpb24g4oCTIEkgY2FuJ3QgYnVpbGQgYW55dGhpbmcgc3RhYmxlIHdpdGhvdXQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjE1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo0Ni43MDM5ODI1NDZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzg0NzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5ODIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L0tjb25maWc9MTA9Y29uZmlnIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiAhNjRCSVRcXG5hcmNoL3g4Ni9LY29uZmlnLTEzLVxcdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDMyLWJpdCBrZXJuZWwgb25seTpcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MjM9Y29uZmlnIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctMjQtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MjU6XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmFyY2gveDg2L0tjb25maWctMjYtXFx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgNjQtYml0IGtlcm5lbCBvbmx5Olxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00MT1jb25maWcgRk9SQ0VfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL3g4Ni9LY29uZmlnLTQyLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIEZVTkNUSU9OX1RSQUNFUlxcbmFyY2gveDg2L0tjb25maWctNDUtXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTM0MD1jb25maWcgSU5TVFJVQ1RJT05fREVDT0RFUlxcbmFyY2gveDg2L0tjb25maWctMzQxLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM0MjpcXHRkZXBlbmRzIG9uIEtQUk9CRVMgfHwgUEVSRl9FVkVOVFMgfHwgVVBST0JFU1xcbmFyY2gveDg2L0tjb25maWctMzQzLVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0zNzU9Y29uZmlnIEdFTkVSSUNfSVNBX0RNQVxcbmFyY2gveDg2L0tjb25maWctMzc2LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM3NzpcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJXFxuYXJjaC94ODYvS2NvbmZpZy0zNzgtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTM4Mz1jb25maWcgR0VORVJJQ19CVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTM4NC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzozODU6XFx0ZGVwZW5kcyBvbiBCVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgR0VORVJJQ19CVUdfUkVMQVRJVkVfUE9JTlRFUlNcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MzkxPWNvbmZpZyBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xcbmFyY2gveDg2L0tjb25maWctMzkyLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJXFxuYXJjaC94ODYvS2NvbmZpZy0zOTQtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTQxMD1jb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveDg2L0tjb25maWctNDExLVxcdGhleFxcbmFyY2gveDg2L0tjb25maWc6NDEyOlxcdGRlcGVuZHMgb24gS0FTQU5cXG5hcmNoL3g4Ni9LY29uZmlnLTQxMy1cXHRkZWZhdWx0IDB4ZGZmZmZjMDAwMDAwMDAwMFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00MTU9Y29uZmlnIEhBVkVfSU5URUxfVFhUXFxuYXJjaC94ODYvS2NvbmZpZy00MTYtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6NDE3OlxcdGRlcGVuZHMgb24gSU5URUxfSU9NTVUgXFx1MDAyNlxcdTAwMjYgQUNQSVxcbmFyY2gveDg2L0tjb25maWctNDE4LVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00NTk9Y29uZmlnIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTQ2MC1cXHRib29sIFxcXCJ4MkFQSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlIHN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo0NjE6XFx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgKElSUV9SRU1BUCB8fCBIWVBFUlZJU09SX0dVRVNUKVxcbmFyY2gveDg2L0tjb25maWctNDYyLVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00ODM9Y29uZmlnIEFNRF9TRUNVUkVfQVZJQ1xcbmFyY2gveDg2L0tjb25maWctNDg0LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgQVZJQ1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjQ4NTpcXHRkZXBlbmRzIG9uIEFNRF9NRU1fRU5DUllQVCBcXHUwMDI2XFx1MDAyNiBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZy00ODYtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00OTY9Y29uZmlnIFg4Nl9QT1NURURfTVNJXFxuYXJjaC94ODYvS2NvbmZpZy00OTctXFx0Ym9vbCBcXFwiRW5hYmxlIE1TSSBhbmQgTVNJLXggZGVsaXZlcnkgYnkgcG9zdGVkIGludGVycnVwdHNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo0OTg6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgSVJRX1JFTUFQXFxuYXJjaC94ODYvS2NvbmZpZy00OTktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01MDc9Y29uZmlnIFg4Nl9NUFBBUlNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTUwOS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9LY29uZmlnOjUxMDpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy01MTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01MTU9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTFxcbmFyY2gveDg2L0tjb25maWctNTE2LVxcdGJvb2wgXFxcIng4NiBDUFUgcmVzb3VyY2UgY29udHJvbCBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTE3OlxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IChDUFVfU1VQX0lOVEVMIHx8IENQVV9TVVBfQU1EKVxcbmFyY2gveDg2L0tjb25maWc6NTE4OlxcdGRlcGVuZHMgb24gTUlTQ19GSUxFU1lTVEVNU1xcbmFyY2gveDg2L0tjb25maWctNTE5LVxcdHNlbGVjdCBBUkNIX0hBU19DUFVfUkVTQ1RSTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01Mzg9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTF9JTlRFTF9BRVRcXG5hcmNoL3g4Ni9LY29uZmlnLTUzOS1cXHRib29sIFxcXCJJbnRlbCBBcHBsaWNhdGlvbiBFbmVyZ3kgVGVsZW1ldHJ5XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTQwOlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFg4Nl9DUFVfUkVTQ1RSTCBcXHUwMDI2XFx1MDAyNiBDUFVfU1VQX0lOVEVMIFxcdTAwMjZcXHUwMDI2IElOVEVMX1BNVF9URUxFTUVUUlk9eSBcXHUwMDI2XFx1MDAyNiBJTlRFTF9UUE1JPXlcXG5hcmNoL3g4Ni9LY29uZmlnLTU0MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTU1MT1jb25maWcgWDg2X0ZSRURcXG5hcmNoL3g4Ni9LY29uZmlnLTU1Mi1cXHRib29sIFxcXCJGbGV4aWJsZSBSZXR1cm4gYW5kIEV2ZW50IERlbGl2ZXJ5XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTUzOlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy01NTQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01OTA9Y29uZmlnIFg4Nl9OVU1BQ0hJUFxcbmFyY2gveDg2L0tjb25maWctNTkxLVxcdGJvb2wgXFxcIk51bWFzY2FsZSBOdW1hQ2hpcFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjU5MjpcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWc6NTkzOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo1OTQ6XFx0ZGVwZW5kcyBvbiBOVU1BXFxuYXJjaC94ODYvS2NvbmZpZzo1OTU6XFx0ZGVwZW5kcyBvbiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjU5NjpcXHRkZXBlbmRzIG9uIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnOjU5NzpcXHRkZXBlbmRzIG9uIFBDSV9NTUNPTkZJR1xcbmFyY2gveDg2L0tjb25maWctNTk4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjAzPWNvbmZpZyBYODZfVlNNUFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy02MDYtXFx0c2VsZWN0IFBBUkFWSVJUXFxuYXJjaC94ODYvS2NvbmZpZzo2MDc6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2MDg6XFx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cXG5hcmNoL3g4Ni9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFNNUFxcbmFyY2gveDg2L0tjb25maWctNjEwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjE1PWNvbmZpZyBYODZfVVZcXG5hcmNoL3g4Ni9LY29uZmlnLTYxNi1cXHRib29sIFxcXCJTR0kgVWx0cmF2aW9sZXRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnOjYxODpcXHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxcbmFyY2gveDg2L0tjb25maWc6NjE5OlxcdGRlcGVuZHMgb24gTlVNQVxcbmFyY2gveDg2L0tjb25maWc6NjIwOlxcdGRlcGVuZHMgb24gRUZJXFxuYXJjaC94ODYvS2NvbmZpZzo2MjE6XFx0ZGVwZW5kcyBvbiBLRVhFQ19DT1JFXFxuYXJjaC94ODYvS2NvbmZpZzo2MjI6XFx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZzo2MjM6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTYyNC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTYyOD1jb25maWcgWDg2X0lOVEVMX01JRFxcbmFyY2gveDg2L0tjb25maWctNjI5LVxcdGJvb2wgXFxcIkludGVsIFozNHh4L1ozNXh4IE1JRCBwbGF0Zm9ybSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NjMwOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo2MzE6XFx0ZGVwZW5kcyBvbiBYODZfUExBVEZPUk1fREVWSUNFU1xcbmFyY2gveDg2L0tjb25maWc6NjMyOlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2MzM6XFx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEVYUEVSVCBcXHUwMDI2XFx1MDAyNiBQQ0lfR09BTlkpXFxuYXJjaC94ODYvS2NvbmZpZzo2MzQ6XFx0ZGVwZW5kcyBvbiBYODZfSU9fQVBJQ1xcbmFyY2gveDg2L0tjb25maWctNjM1LVxcdHNlbGVjdCBJMkNcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjU0PWNvbmZpZyBYODZfR09MREZJU0hcXG5hcmNoL3g4Ni9LY29uZmlnLTY1NS1cXHRib29sIFxcXCJHb2xkZmlzaCAoVmlydHVhbCBQbGF0Zm9ybSlcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2NTY6XFx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cXG5hcmNoL3g4Ni9LY29uZmlnLTY1Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY2NT1jb25maWcgWDg2X0lOVEVMX0NFXFxuYXJjaC94ODYvS2NvbmZpZy02NjYtXFx0Ym9vbCBcXFwiQ0U0MTAwIFRWIHBsYXRmb3JtXFxcIlxcbmFyY2gveDg2L0tjb25maWc6NjY3OlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2Njg6XFx0ZGVwZW5kcyBvbiBQQ0lfR09ESVJFQ1RcXG5hcmNoL3g4Ni9LY29uZmlnOjY2OTpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZzo2NzA6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnOjY3MTpcXHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxcbmFyY2gveDg2L0tjb25maWctNjcyLVxcdHNlbGVjdCBYODZfUkVCT09URklYVVBTXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXFxuYXJjaC94ODYvS2NvbmZpZy02ODEtXFx0Ym9vbCBcXFwiSW50ZWwgUXVhcmsgcGxhdGZvcm0gc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjY4MjpcXHRkZXBlbmRzIG9uIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWc6NjgzOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo2ODQ6XFx0ZGVwZW5kcyBvbiBYODZfUExBVEZPUk1fREVWSUNFU1xcbmFyY2gveDg2L0tjb25maWc6Njg1OlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2ODY6XFx0ZGVwZW5kcyBvbiBQQ0lfR09BTllcXG5hcmNoL3g4Ni9LY29uZmlnOjY4NzpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZy02ODgtXFx0c2VsZWN0IElPU0ZfTUJJXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1NcXG5hcmNoL3g4Ni9LY29uZmlnLTY5Ny1cXHRib29sIFxcXCJJbnRlbCBMb3cgUG93ZXIgU3Vic3lzdGVtIFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2OTg6XFx0ZGVwZW5kcyBvbiBYODYgXFx1MDAyNlxcdTAwMjYgQUNQSSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTY5OS1cXHRzZWxlY3QgQ09NTU9OX0NMS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz03MDg9Y29uZmlnIFg4Nl9BTURfUExBVEZPUk1fREVWSUNFXFxuYXJjaC94ODYvS2NvbmZpZy03MDktXFx0Ym9vbCBcXFwiQU1EIEFDUEkyUGxhdGZvcm0gZGV2aWNlcyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NzEwOlxcdGRlcGVuZHMgb24gQUNQSVxcbmFyY2gveDg2L0tjb25maWctNzExLVxcdHNlbGVjdCBDT01NT05fQ0xLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTcxOT1jb25maWcgSU9TRl9NQklcXG5hcmNoL3g4Ni9LY29uZmlnLTcyMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgU29DIElPU0YgU2lkZWJhbmQgc3VwcG9ydCBmb3IgU29DIHBsYXRmb3Jtc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjcyMTpcXHRkZXBlbmRzIG9uIFBDSVxcbmFyY2gveDg2L0tjb25maWctNzIyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NzM2PWNvbmZpZyBJT1NGX01CSV9ERUJVR1xcbmFyY2gveDg2L0tjb25maWctNzM3LVxcdGJvb2wgXFxcIkVuYWJsZSBJT1NGIHNpZGViYW5kIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBJT1NGX01CSSBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmFyY2gveDg2L0tjb25maWctNzM5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NzQ5PWNvbmZpZyBYODZfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcXG4tLVxcbmFyY2gveDg2L0tjb25maWctNzUxLVxcdCMgTUNFIGNvZGUgY2FsbHMgbWVtb3J5X2ZhaWx1cmUoKTpcXG5hcmNoL3g4Ni9LY29uZmlnOjc1MjpcXHRkZXBlbmRzIG9uIFg4Nl9NQ0VcXG5hcmNoL3g4Ni9LY29uZmlnLTc1My1cXHQjIE9uIDMyLWJpdCB0aGlzIGFkZHMgdG9vIGJpZyBvZiBOT0RFU19TSElGVCBhbmQgd2UgcnVuIG91dCBvZiBwYWdlIGZsYWdzOlxcbmFyY2gveDg2L0tjb25maWctNzU0LVxcdCMgT24gMzItYml0IFNQQVJTRU1FTSBhZGRzIHRvbyBiaWcgb2YgU0VDVElPTlNfV0lEVEg6XFxuYXJjaC94ODYvS2NvbmZpZzo3NTU6XFx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgIVNQQVJTRU1FTVxcbmFyY2gveDg2L0tjb25maWctNzU2LVxcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc1OD1jb25maWcgWDg2XzMyX0lSSVNcXG5hcmNoL3g4Ni9LY29uZmlnLTc1OS1cXHR0cmlzdGF0ZSBcXFwiRXVyb2JyYWlsbGUvSXJpcyBwb3dlcm9mZiBtb2R1bGVcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3NjA6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTc2MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc3MT1jb25maWcgU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTc3My1cXHRwcm9tcHQgXFxcIlNpbmdsZS1kZXB0aCBXQ0hBTiBvdXRwdXRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3NzQ6XFx0ZGVwZW5kcyBvbiBYODZcXG5hcmNoL3g4Ni9LY29uZmlnLTc3NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc5NT1jb25maWcgUEFSQVZJUlRcXG5hcmNoL3g4Ni9LY29uZmlnLTc5Ni1cXHRib29sIFxcXCJFbmFibGUgcGFyYXZpcnR1YWxpemF0aW9uIGNvZGVcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3OTc6XFx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXFxuYXJjaC94ODYvS2NvbmZpZy03OTgtXFx0c2VsZWN0IEhBVkVfUFZfU1RFQUxfQ0xPQ0tfR0VOXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgwNT1jb25maWcgUEFSQVZJUlRfWFhMXFxuYXJjaC94ODYvS2NvbmZpZy04MDYtXFx0Ym9vbFxcbmFyY2gveDg2L0tjb25maWc6ODA3OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy04MDgtXFx0c2VsZWN0IEFSQ0hfSEFTX0xBWllfTU1VX01PREVcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODEwPWNvbmZpZyBQQVJBVklSVF9TUElOTE9DS1NcXG5hcmNoL3g4Ni9LY29uZmlnLTgxMS1cXHRib29sIFxcXCJQYXJhdmlydHVhbGl6YXRpb24gbGF5ZXIgZm9yIHNwaW5sb2Nrc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjgxMjpcXHRkZXBlbmRzIG9uIFBBUkFWSVJUIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmFyY2gveDg2L0tjb25maWctODEzLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODI4PWNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjgzMDpcXHRkZXBlbmRzIG9uIFBBUkFWSVJUXFxuYXJjaC94ODYvS2NvbmZpZy04MzEtXFx0c2VsZWN0IFBBUkFWSVJUX0NMT0NLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg1ND1jb25maWcgUEFSQVZJUlRfVElNRV9BQ0NPVU5USU5HXFxuYXJjaC94ODYvS2NvbmZpZy04NTUtXFx0Ym9vbCBcXFwiUGFyYXZpcnR1YWwgc3RlYWwgdGltZSBhY2NvdW50aW5nXFxcIlxcbmFyY2gveDg2L0tjb25maWc6ODU2OlxcdGRlcGVuZHMgb24gUEFSQVZJUlRcXG5hcmNoL3g4Ni9LY29uZmlnLTg1Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg2OD1jb25maWcgSkFJTEhPVVNFX0dVRVNUXFxuYXJjaC94ODYvS2NvbmZpZy04NjktXFx0Ym9vbCBcXFwiSmFpbGhvdXNlIG5vbi1yb290IGNlbGwgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjg3MDpcXHRkZXBlbmRzIG9uIFg4Nl82NCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTg3MS1cXHRzZWxlY3QgWDg2X1BNX1RJTUVSXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg3Nz1jb25maWcgQUNSTl9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODc4LVxcdGJvb2wgXFxcIkFDUk4gR3Vlc3Qgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjg3OTpcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctODgwLVxcdHNlbGVjdCBYODZfSFZfQ0FMTEJBQ0tfVkVDVE9SXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg4OD1jb25maWcgQkhZVkVfR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTg4OS1cXHRib29sIFxcXCJCaHl2ZSAoQlNEIEh5cGVydmlzb3IpIEd1ZXN0IHN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo4OTA6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTg5MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg5Nz1jb25maWcgSU5URUxfVERYX0dVRVNUXFxuYXJjaC94ODYvS2NvbmZpZy04OTgtXFx0Ym9vbCBcXFwiSW50ZWwgVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgLSBHdWVzdCBTdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6ODk5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IENQVV9TVVBfSU5URUxcXG5hcmNoL3g4Ni9LY29uZmlnOjkwMDpcXHRkZXBlbmRzIG9uIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnOjkwMTpcXHRkZXBlbmRzIG9uIEVGSV9TVFVCXFxuYXJjaC94ODYvS2NvbmZpZzo5MDI6XFx0ZGVwZW5kcyBvbiBQQVJBVklSVFxcbmFyY2gveDg2L0tjb25maWctOTAzLVxcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz05Mzg9Y29uZmlnIEhQRVRfRU1VTEFURV9SVENcXG5hcmNoL3g4Ni9LY29uZmlnLTkzOS1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzo5NDA6XFx0ZGVwZW5kcyBvbiBIUEVUX1RJTUVSIFxcdTAwMjZcXHUwMDI2IChSVENfRFJWX0NNT1M9bSB8fCBSVENfRFJWX0NNT1M9eSlcXG5hcmNoL3g4Ni9LY29uZmlnLTk0MS1cXG4tLVxcbmFyY2gveDg2L0tjb25maWc9OTU0PWNvbmZpZyBHQVJUX0lPTU1VXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU1dJT1RMQlxcbmFyY2gveDg2L0tjb25maWc6OTU4OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBBTURfTkJcXG5hcmNoL3g4Ni9LY29uZmlnLTk1OS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTk4Mj1jb25maWcgTUFYU01QXFxuYXJjaC94ODYvS2NvbmZpZy05ODMtXFx0Ym9vbCBcXFwiRW5hYmxlIE1heGltdW0gbnVtYmVyIG9mIFNNUCBQcm9jZXNzb3JzIGFuZCBOVU1BIE5vZGVzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6OTg0OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFNNUCBcXHUwMDI2XFx1MDAyNiBERUJVR19LRVJORUxcXG5hcmNoL3g4Ni9LY29uZmlnLTk4NS1cXHRzZWxlY3QgQ1BVTUFTS19PRkZTVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDEwPWNvbmZpZyBOUl9DUFVTX1JBTkdFX0VORFxcbmFyY2gveDg2L0tjb25maWctMTAxMS1cXHRpbnRcXG5hcmNoL3g4Ni9LY29uZmlnOjEwMTI6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTMtXFx0ZGVmYXVsdCAgICA4IGlmICBTTVBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTAxNj1jb25maWcgTlJfQ1BVU19SQU5HRV9FTkRcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTctXFx0aW50XFxuYXJjaC94ODYvS2NvbmZpZzoxMDE4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMDE5LVxcdGRlZmF1bHQgODE5MiBpZiAgU01QIFxcdTAwMjZcXHUwMDI2IENQVU1BU0tfT0ZGU1RBQ0tcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTAyMz1jb25maWcgTlJfQ1BVU19ERUZBVUxUXFxuYXJjaC94ODYvS2NvbmZpZy0xMDI0LVxcdGludFxcbmFyY2gveDg2L0tjb25maWc6MTAyNTpcXHRkZXBlbmRzIG9uIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWctMTAyNi1cXHRkZWZhdWx0ICAgIDggaWYgIFNNUFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDI5PWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMzAtXFx0aW50XFxuYXJjaC94ODYvS2NvbmZpZzoxMDMxOlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMDMyLVxcdGRlZmF1bHQgODE5MiBpZiAgTUFYU01QXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNDk9Y29uZmlnIFNDSEVEX01DX1BSSU9cXG5hcmNoL3g4Ni9LY29uZmlnLTEwNTAtXFx0Ym9vbCBcXFwiQ1BVIGNvcmUgcHJpb3JpdGllcyBzY2hlZHVsZXIgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjEwNTE6XFx0ZGVwZW5kcyBvbiBTQ0hFRF9NQ1xcbmFyY2gveDg2L0tjb25maWctMTA1Mi1cXHRzZWxlY3QgWDg2X0lOVEVMX1BTVEFURSBpZiBDUFVfU1VQX0lOVEVMXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzE9Y29uZmlnIFVQX0xBVEVfSU5JVFxcbmFyY2gveDg2L0tjb25maWctMTA3Mi1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMDczOlxcdGRlcGVuZHMgb24gIVNNUCBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQ1xcbmFyY2gveDg2L0tjb25maWctMTA3NC1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzU9Y29uZmlnIFg4Nl9VUF9BUElDXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEwNzctXFx0ZGVmYXVsdCBQQ0lfTVNJXFxuYXJjaC94ODYvS2NvbmZpZzoxMDc4OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2ICFTTVBcXG5hcmNoL3g4Ni9LY29uZmlnLTEwNzktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDg5PWNvbmZpZyBYODZfVVBfSU9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMDkwLVxcdGJvb2wgXFxcIklPLUFQSUMgc3VwcG9ydCBvbiB1bmlwcm9jZXNzb3JzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTA5MTpcXHRkZXBlbmRzIG9uIFg4Nl9VUF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMDkyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTEwMT1jb25maWcgWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMDItXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTEwMzpcXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCBTTVAgfHwgWDg2X1VQX0FQSUMgfHwgUENJX01TSVxcbmFyY2gveDg2L0tjb25maWctMTEwNC1cXHRzZWxlY3QgSVJRX0RPTUFJTl9ISUVSQVJDSFlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTEwNj1jb25maWcgQUNQSV9NQURUX1dBS0VVUFxcbmFyY2gveDg2L0tjb25maWctMTEwNy1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMTA4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZzoxMTA5OlxcdGRlcGVuZHMgb24gQUNQSVxcbmFyY2gveDg2L0tjb25maWc6MTExMDpcXHRkZXBlbmRzIG9uIFNNUFxcbmFyY2gveDg2L0tjb25maWc6MTExMTpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTEyLVxcbmFyY2gveDg2L0tjb25maWc9MTExMz1jb25maWcgWDg2X0lPX0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMTQtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDIHx8IFg4Nl9VUF9JT0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMTYtXFxuYXJjaC94ODYvS2NvbmZpZz0xMTE3PWNvbmZpZyBYODZfUkVST1VURV9GT1JfQlJPS0VOX0JPT1RfSVJRU1xcbmFyY2gveDg2L0tjb25maWctMTExOC1cXHRib29sIFxcXCJSZXJvdXRlIGZvciBicm9rZW4gYm9vdCBJUlFzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTExOTpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTIwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTE0MD1jb25maWcgWDg2X01DRVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xMTQ2LVxcdCAga2VybmVsIGlmIGl0IGRldGVjdHMgYSBwcm9ibGVtIChlLmcuIG92ZXJoZWF0aW5nLCBkYXRhIGNvcnJ1cHRpb24pLlxcbmFyY2gveDg2L0tjb25maWc6MTE0NzpcXHQgIFRoZSBhY3Rpb24gdGhlIGtlcm5lbCB0YWtlcyBkZXBlbmRzIG9uIHRoZSBzZXZlcml0eSBvZiB0aGUgcHJvYmxlbSxcXG5hcmNoL3g4Ni9LY29uZmlnLTExNDgtXFx0ICByYW5naW5nIGZyb20gd2FybmluZyBtZXNzYWdlcyB0byBoYWx0aW5nIHRoZSBtYWNoaW5lLlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMTUwPWNvbmZpZyBYODZfTUNFTE9HX0xFR0FDWVxcbmFyY2gveDg2L0tjb25maWctMTE1MS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBkZXByZWNhdGVkIC9kZXYvbWNlbG9nIGNoYXJhY3RlciBkZXZpY2VcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMTUyOlxcdGRlcGVuZHMgb24gWDg2X01DRVxcbmFyY2gveDg2L0tjb25maWctMTE1My1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExNTg9Y29uZmlnIFg4Nl9NQ0VfSU5URUxcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTE2MC1cXHRwcm9tcHQgXFxcIkludGVsIE1DRSBmZWF0dXJlc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExNjE6XFx0ZGVwZW5kcyBvbiBYODZfTUNFIFxcdTAwMjZcXHUwMDI2IFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTYyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTE2Nj1jb25maWcgWDg2X01DRV9BTURcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTE2OC1cXHRwcm9tcHQgXFxcIkFNRCBNQ0UgZmVhdHVyZXNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMTY5OlxcdGRlcGVuZHMgb24gWDg2X01DRSBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQ1xcbmFyY2gveDg2L0tjb25maWctMTE3MC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExNzQ9Y29uZmlnIFg4Nl9BTkNJRU5UX01DRVxcbmFyY2gveDg2L0tjb25maWctMTE3NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBvbGQgUGVudGl1bSA1IC8gV2luQ2hpcCBtYWNoaW5lIGNoZWNrc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExNzY6XFx0ZGVwZW5kcyBvbiBYODZfMzIgXFx1MDAyNlxcdTAwMjYgWDg2X01DRVxcbmFyY2gveDg2L0tjb25maWctMTE3Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExODI9Y29uZmlnIFg4Nl9NQ0VfVEhSRVNIT0xEXFxuYXJjaC94ODYvS2NvbmZpZzoxMTgzOlxcdGRlcGVuZHMgb24gWDg2X01DRV9BTUQgfHwgWDg2X01DRV9JTlRFTFxcbmFyY2gveDg2L0tjb25maWctMTE4NC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExODY9Y29uZmlnIFg4Nl9NQ0VfSU5KRUNUXFxuYXJjaC94ODYvS2NvbmZpZzoxMTg3OlxcdGRlcGVuZHMgb24gWDg2X01DRSBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmFyY2gveDg2L0tjb25maWctMTE4OC1cXHR0cmlzdGF0ZSBcXFwiTWFjaGluZSBjaGVjayBpbmplY3RvciBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMTk2PWNvbmZpZyBYODZfTEVHQUNZX1ZNODZcXG5hcmNoL3g4Ni9LY29uZmlnLTExOTctXFx0Ym9vbCBcXFwiTGVnYWN5IFZNODYgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExOTg6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTExOTktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjI3PWNvbmZpZyBYODZfMTZCSVRcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTIyOS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9LY29uZmlnOjEyMzA6XFx0ZGVwZW5kcyBvbiBNT0RJRllfTERUX1NZU0NBTExcXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjM3PWNvbmZpZyBYODZfRVNQRklYMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzgtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTIzOTpcXHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcXHUwMDI2XFx1MDAyNiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDAtXFxuYXJjaC94ODYvS2NvbmZpZz0xMjQxPWNvbmZpZyBYODZfRVNQRklYNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDItXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTI0MzpcXHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDQtXFxuYXJjaC94ODYvS2NvbmZpZz0xMjQ1PWNvbmZpZyBYODZfVlNZU0NBTExfRU1VTEFUSU9OXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDctXFx0ZGVmYXVsdCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMjQ4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMjQ5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTI4MT1jb25maWcgVE9TSElCQVxcbmFyY2gveDg2L0tjb25maWctMTI4Mi1cXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBMYXB0b3Agc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjEyODM6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyODQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjk3PWNvbmZpZyBYODZfUkVCT09URklYVVBTXFxuYXJjaC94ODYvS2NvbmZpZy0xMjk4LVxcdGJvb2wgXFxcIkVuYWJsZSBYODYgYm9hcmQgc3BlY2lmaWMgZml4dXBzIGZvciByZWJvb3RcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMjk5OlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xMzAwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTMxND1jb25maWcgTUlDUk9DT0RFXFxuYXJjaC94ODYvS2NvbmZpZy0xMzE1LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjEzMTY6XFx0ZGVwZW5kcyBvbiBDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0lOVEVMXFxuYXJjaC94ODYvS2NvbmZpZy0xMzE3LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NiBpZiBDUFVfU1VQX0FNRFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMzE5PWNvbmZpZyBNSUNST0NPREVfSU5JVFJEMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjAtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTMyMTpcXHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcXHUwMDI2XFx1MDAyNiBYODZfMzIgXFx1MDAyNlxcdTAwMjYgQkxLX0RFVl9JTklUUkRcXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjItXFxuYXJjaC94ODYvS2NvbmZpZz0xMzIzPWNvbmZpZyBNSUNST0NPREVfTEFURV9MT0FESU5HXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjUtXFx0ZGVmYXVsdCBuXFxuYXJjaC94ODYvS2NvbmZpZzoxMzI2OlxcdGRlcGVuZHMgb24gTUlDUk9DT0RFIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmFyY2gveDg2L0tjb25maWctMTMyNy1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEzMzc9Y29uZmlnIE1JQ1JPQ09ERV9MQVRFX0ZPUkNFX01JTlJFVlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xMzM5LVxcdGRlZmF1bHQgblxcbmFyY2gveDg2L0tjb25maWc6MTM0MDpcXHRkZXBlbmRzIG9uIE1JQ1JPQ09ERV9MQVRFX0xPQURJTkdcXG5hcmNoL3g4Ni9LY29uZmlnLTEzNDEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMzU1PWNvbmZpZyBNSUNST0NPREVfREJHXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEzNTctXFx0ZGVmYXVsdCBuXFxuYXJjaC94ODYvS2NvbmZpZzoxMzU4OlxcdGRlcGVuZHMgb24gTUlDUk9DT0RFXFxuYXJjaC94ODYvS2NvbmZpZy0xMzU5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTM4Nj1jb25maWcgSElHSE1FTTRHXFxuYXJjaC94ODYvS2NvbmZpZy0xMzg3LVxcdGJvb2wgXFxcIkhpZ2ggTWVtb3J5IFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMzg4OlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xMzg5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQxMD1jaG9pY2VcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTQxMi1cXHRkZWZhdWx0IFZNU1BMSVRfM0dcXG5hcmNoL3g4Ni9LY29uZmlnOjE0MTM6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNDMyLVxcdGNvbmZpZyBWTVNQTElUXzNHX09QVFxcbmFyY2gveDg2L0tjb25maWc6MTQzMzpcXHRcXHRkZXBlbmRzIG9uICFYODZfUEFFXFxuYXJjaC94ODYvS2NvbmZpZy0xNDM0LVxcdFxcdGJvb2wgXFxcIjNHLzFHIHVzZXIva2VybmVsIHNwbGl0IChmb3IgZnVsbCAxRyBsb3cgbWVtb3J5KVxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTQzNy1cXHRjb25maWcgVk1TUExJVF8yR19PUFRcXG5hcmNoL3g4Ni9LY29uZmlnOjE0Mzg6XFx0XFx0ZGVwZW5kcyBvbiAhWDg2X1BBRVxcbmFyY2gveDg2L0tjb25maWctMTQzOS1cXHRcXHRib29sIFxcXCIyRy8yRyB1c2VyL2tlcm5lbCBzcGxpdCAoZm9yIGZ1bGwgMkcgbG93IG1lbW9yeSlcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE0NDQ9Y29uZmlnIFBBR0VfT0ZGU0VUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTAtXFx0ZGVmYXVsdCAweEMwMDAwMDAwXFxuYXJjaC94ODYvS2NvbmZpZzoxNDUxOlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xNDUyLVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNDU2PWNvbmZpZyBYODZfUEFFXFxuYXJjaC94ODYvS2NvbmZpZy0xNDU3LVxcdGJvb2wgXFxcIlBBRSAoUGh5c2ljYWwgQWRkcmVzcyBFeHRlbnNpb24pIFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNDU4OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2IFg4Nl9IQVZFX1BBRVxcbmFyY2gveDg2L0tjb25maWctMTQ1OS1cXHRzZWxlY3QgUEhZU19BRERSX1RfNjRCSVRcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQ2Nj1jb25maWcgWDg2X0RJUkVDVF9HQlBBR0VTXFxuYXJjaC94ODYvS2NvbmZpZy0xNDY3LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjE0Njg6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTE0NjktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNDc1PWNvbmZpZyBYODZfQ1BBX1NUQVRJU1RJQ1NcXG5hcmNoL3g4Ni9LY29uZmlnLTE0NzYtXFx0Ym9vbCBcXFwiRW5hYmxlIHN0YXRpc3RpYyBmb3IgQ2hhbmdlIFBhZ2UgQXR0cmlidXRlXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTQ3NzpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuYXJjaC94ODYvS2NvbmZpZy0xNDc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQ4OD1jb25maWcgQU1EX01FTV9FTkNSWVBUXFxuYXJjaC94ODYvS2NvbmZpZy0xNDg5LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgTWVtb3J5IEVuY3J5cHRpb24gKFNNRSkgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTA6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgQ1BVX1NVUF9BTURcXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTE6XFx0ZGVwZW5kcyBvbiBFRklfU1RVQlxcbmFyY2gveDg2L0tjb25maWctMTQ5Mi1cXHRzZWxlY3QgRE1BX0NPSEVSRU5UX1BPT0xcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTUwNT1jb25maWcgTlVNQVxcbmFyY2gveDg2L0tjb25maWctMTUwNi1cXHRib29sIFxcXCJOVU1BIE1lbW9yeSBBbGxvY2F0aW9uIGFuZCBTY2hlZHVsZXIgU3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDc6XFx0ZGVwZW5kcyBvbiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDg6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTE1MDktXFx0c2VsZWN0IFVTRV9QRVJDUFVfTlVNQV9OT0RFX0lEXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1MjM9Y29uZmlnIEFNRF9OVU1BXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE1MjUtXFx0cHJvbXB0IFxcXCJPbGQgc3R5bGUgQU1EIE9wdGVyb24gTlVNQSBkZXRlY3Rpb25cXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTI2OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IE5VTUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZy0xNTI3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTUzND1jb25maWcgWDg2XzY0X0FDUElfTlVNQVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTM2LVxcdHByb21wdCBcXFwiQUNQSSBOVU1BIGRldGVjdGlvblxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1Mzc6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgTlVNQSBcXHUwMDI2XFx1MDAyNiBBQ1BJIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmFyY2gveDg2L0tjb25maWctMTUzOC1cXHRzZWxlY3QgQUNQSV9OVU1BXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NDI9Y29uZmlnIE5PREVTX1NISUZUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE1NDctXFx0ZGVmYXVsdCBcXFwiM1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1NDg6XFx0ZGVwZW5kcyBvbiBOVU1BXFxuYXJjaC94ODYvS2NvbmZpZy0xNTQ5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTU1Mz1jb25maWcgQVJDSF9GTEFUTUVNX0VOQUJMRVxcbmFyY2gveDg2L0tjb25maWctMTU1NC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxNTU1OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2ICFOVU1BXFxuYXJjaC94ODYvS2NvbmZpZy0xNTU2LVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNTY1PWNvbmZpZyBBUkNIX1NFTEVDVF9NRU1PUllfTU9ERUxcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NjYtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTU2NzpcXHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRSBcXHUwMDI2XFx1MDAyNiBBUkNIX0ZMQVRNRU1fRU5BQkxFXFxuYXJjaC94ODYvS2NvbmZpZy0xNTY4LVxcbmFyY2gveDg2L0tjb25maWc9MTU2OT1jb25maWcgQVJDSF9NRU1PUllfUFJPQkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXFx0Ym9vbCBcXFwiRW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTcxOlxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzItXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNTc3PWNvbmZpZyBBUkNIX1BST0NfS0NPUkVfVEVYVFxcbmFyY2gveDg2L0tjb25maWctMTU3OC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxNTc5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFBST0NfS0NPUkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1ODAtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1ODk9Y29uZmlnIFg4Nl9QTUVNX0xFR0FDWVxcbmFyY2gveDg2L0tjb25maWctMTU5MC1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBub24tc3RhbmRhcmQgTlZESU1NcyBhbmQgQURSIHByb3RlY3RlZCBtZW1vcnlcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTkxOlxcdGRlcGVuZHMgb24gUEhZU19BRERSX1RfNjRCSVRcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6NDYuODExODM1MTYzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDI3MTgwNzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gQ2hhbmdlcyBmb3IgVk0gRGVhdGggSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhbmQgY3JpdGljYWwga2VybmVsIGZ1bmN0aW9ucyBpbXBhY3RlZC4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncy4gSSBxdWlja2x5IHNlZSB0aGF0IGBJTlRFTF9URFhfSE9TVGAgZGVwZW5kcyBvbiBgWDg2XzY0YCwgYENQVV9TVVBfSU5URUxgLCBhbmQgYFg4Nl9YMkFQSUNgLCBtZWFuaW5nIHRoYXQgYEtWTV9JTlRFTF9URFhgIGlzIHZhbGlkIGluIHRoaXMgY2FzZS4gXG5cbk15IGluaXRpYWwgY29uZmlnIGxpc3QgaXM6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTF9URFhgLiBCdXQgd2FpdCwgYEtWTV9JTlRFTF9URFhgIHJlbGllcyBvbiBgSU5URUxfVERYX0hPU1RgLCBzbyB0aGF0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuIEFsc28gYElOVEVMX1REWF9IT1NUYCBkZXBlbmRzIG9uIGBYODZfWDJBUElDYCwgc28gdGhlIGxpc3QgaXMgdXBkYXRlZC4gTGV0J3MgbWFrZSB0aGF0IGV4cGxpY2l0OiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYEtWTV9JTlRFTF9URFhgLCBhbmQgYElOVEVMX1REWF9IT1NUYC5cblxuTm93LCB0aGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGNoYW5naW5nIGhvdyBgS1ZNX1JFUV9WTV9ERUFEYCBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGNoYW5nZSBmcm9tIGBrdm1fY2hlY2tfcmVxdWVzdGAgdG8gYGt2bV90ZXN0X3JlcXVlc3RgLiBUaGlzIG1lYW5zIHRoZSBWTSdzIGRlYWQgc3RhdGUgcGVyc2lzdHMgYWZ0ZXIgYmVpbmcgY2hlY2tlZC4gQSBjcnVjaWFsIGRldGFpbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IuIFRoaXMgaXMgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGltcGFjdHMgVk0gZXhlY3V0aW9uIGFuZCBmYXVsdCBoYW5kbGluZy5cblxuSSdtIG1ha2luZyBzdXJlIHRoYXQgSSBrbm93IHRoZSBmdW5jdGlvbiBJJ20gbG9va2luZyBhdCwgc28gSSBkb3VibGUtY2hlY2tlZCB0aGUgbmFtZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3MgdGhlIHJpZ2h0IGZ1bmN0aW9uLiBJJ20gYWxzbyBjb25maXJtaW5nIHdoYXQgdGhlIGNvbmZpZyBzeW1ib2xzIGFyZSB0byBjb25maXJtIG91ciBpbml0aWFsIGZpbmRpbmdzLiBgQ09ORklHX0tWTV9JTlRFTF9URFhgIGFuZCBgQ09ORklHX0lOVEVMX1REWF9IT1NUYCBsaXZlIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZyBmaWxlcywgYWxvbmcgd2l0aCBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuIEkgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcyB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZXMgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCwgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBTbywgYXJtNjQgYW5kIHg4NiBhcmUgaW1wYWN0ZWQuXG5cbkkndmUgZ290IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFyY2hpdGVjdHVyZXMuXG5cbk15IGZvY3VzIHN5bWJvbHMgYXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC5cblxuTm93LCBJJ2xsIHBhY2thZ2UgdXAgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjMyLCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo1OC4yMzkwMTk1MDlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc1MTUwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 01:24:23 +0000 UTC FinishedAt: 2026-08-07 01:28:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-x86", "tree_url": "https://github.com/kvm-x86/linux.git", "commit_hash": "a806d364ef288a6443a1337820ea8410a7ccc6b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_INTEL_TDX", "INTEL_TDX_HOST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-x86", "tree_url": "https://github.com/kvm-x86/linux.git", "commit_hash": "a806d364ef288a6443a1337820ea8410a7ccc6b3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_INTEL", "KVM_AMD", "KVM_INTEL_TDX", "INTEL_TDX_HOST" ], "series_id": "410de8be-900a-4d20-9050-cccc03489738" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_run", "kvm_arch_vcpu_pre_fault_memory" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5pbmRleCA1MGFkZmZmNzViZTgyLi5hNTZlYWQ0MjM4OTdiIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jXG5AQCAtMTEwOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcbiYjNDM7XHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NMRUVQLCB2Y3B1KSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC01MDMzLDcgJiM0Mzs1MDMzLDcgQEAgc3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4gXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlRSO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcbiYjNDM7XHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGNvbmRfcmVzY2hlZCgpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXG5pbmRleCBiMjcyYzIwNTg2YTc0Li42Yzg0MmU5MTkxYTUwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTE5OTUsNyAmIzQzOzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuJiM0MztcdFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuIFx0XHRcdHJldCA9IC1FSU87XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IGQ5NGI1OTE0MGM0NTIuLjBhZjRiNGE5NWMyZGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTgwNjAsNyAmIzQzOzgwNjAsNyBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0Ym9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTtcbiBcbiBcdGlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7XG4tXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4mIzQzO1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0ciA9IC1FSU87XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuQEAgLTIzMjQsMTMgJiM0MzsyMzI0LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdGVzdF9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHJldHVybiB0ZXN0X2JpdChyZXEgXHUwMDI2IEtWTV9SRVFVRVNUX01BU0ssICh2b2lkICopXHUwMDI2dmNwdS1cdTAwM2VyZXF1ZXN0cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fY2xlYXJfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBrdm1fY2xlYXJfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuJiM0MztcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbiYjNDM7XG4gXHRjbGVhcl9iaXQocmVxIFx1MDAyNiBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKVx1MDAyNnZjcHUtXHUwMDNlcmVxdWVzdHMpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHQvKiBPbmNlIGEgVk0gaXMgZGVhZCwgaXQgbmVlZHMgdG8gc3RheSBkZWFkLiAqL1xuJiM0MztcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbiYjNDM7XG4gXHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChyZXEsIHZjcHUpKSB7XG4gXHRcdGt2bV9jbGVhcl9yZXF1ZXN0KHJlcSwgdmNwdSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmMKaW5kZXggNTBhZGZmZjc1YmU4Mi4uYTU2ZWFkNDIzODk3YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rdm0vYXJtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9rdm0vYXJtLmMKQEAgLTExMDgsNyAmIzQzOzExMDgsNyBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkgewotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkKJiM0MzsJCWlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpCiAJCQlyZXR1cm4gLUVJTzsKIAogCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTEVFUCwgdmNwdSkpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCBjNTE5ZThlOGQ2NDZmLi5lYzM0Y2FhMDZiNmE1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKQEAgLTUwMzMsNyAmIzQzOzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwKIAkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQogCQkJcmV0dXJuIC1FSU5UUjsKIAotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkKJiM0MzsJCWlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpCiAJCQlyZXR1cm4gLUVJTzsKIAogCQljb25kX3Jlc2NoZWQoKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jCmluZGV4IGIyNzJjMjA1ODZhNzQuLjZjODQyZTkxOTFhNTAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguYwpAQCAtMTk5NSw3ICYjNDM7MTk5NSw3IEBAIHN0YXRpYyBpbnQgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJaWYgKGt2bV92Y3B1X2hhc19ldmVudHModmNwdSkgfHwgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCiAJCQlicmVhazsKIAotCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkgewomIzQzOwkJaWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkgewogCQkJcmV0ID0gLUVJTzsKIAkJCWJyZWFrOwogCQl9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtODA2MCw3ICYjNDM7ODA2MCw3IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJYm9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTsKIAogCWlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7Ci0JCWlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7CiYjNDM7CQlpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7CiAJCQlyID0gLUVJTzsKIAkJCWdvdG8gb3V0OwogCQl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKaW5kZXggMDNiZmM5Mjg2NGI2ZS4uY2Y3ZmU4MzVjNGFkMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaApAQCAtMjMyNCwxMyAmIzQzOzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXJldHVybiB0ZXN0X2JpdChyZXEgJmFtcDsgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKikmYW1wO3ZjcHUtJmd0O3JlcXVlc3RzKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGt2bV9jbGVhcl9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwlCVUlMRF9CVUdfT04ocmVxID09IEtWTV9SRVFfVk1fREVBRCk7CiYjNDM7CiAJY2xlYXJfYml0KHJlcSAmYW1wOyBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKSZhbXA7dmNwdS0mZ3Q7cmVxdWVzdHMpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2NoZWNrX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQomIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiYjNDM7CS8qIE9uY2UgYSBWTSBpcyBkZWFkLCBpdCBuZWVkcyB0byBzdGF5IGRlYWQuICovCiYjNDM7CUJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTsKJiM0MzsKIAlpZiAoa3ZtX3Rlc3RfcmVxdWVzdChyZXEsIHZjcHUpKSB7CiAJCWt2bV9jbGVhcl9yZXF1ZXN0KHJlcSwgdmNwdSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUgdGhhdCB0d2Vha3Mgc29tZSBLVk0gY29kZS4gSXQmIzM5O3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZTogc3dhcHBpbmcgb3V0IGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbiBhIGZldyBrZXkgcGxhY2VzIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBmaWxlczogYGFybTY0L2FybS5jYCwgYHg4Ni9tbXUvbW11LmNgLCBgeDg2L3ZteC90ZHguY2AsIGFuZCBgeDg2L3g4Ni5jYC4gVGhlIHBhdGNoIGFsc28gdGhyb3dzIGluIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YCBpbiBga3ZtX2hvc3QuaGAuCgpUaGUgY29yZSBvZiB0aGlzIGlzIGZ1bmN0aW9uYWwuIGBrdm1fY2hlY2tfcmVxdWVzdGAgKmNsZWFycyogdGhlIHJlcXVlc3QgYml0LCB3aGlsZSBga3ZtX3Rlc3RfcmVxdWVzdGAgb25seSAqdGVzdHMqIGl0LiBUaGUgY29tbWVudCBpbiB0aGUgcGF0Y2ggaXMgcHJldHR5IGV4cGxpY2l0OiAmIzM0O09uY2UgYSBWTSBpcyBkZWFkLCBpdCBuZWVkcyB0byBzdGF5IGRlYWQuJiMzNDsgU28sIGl0IGxvb2tzIGxpa2UgdGhpcyBpcyBhIGJ1ZyBmaXgsIGVuc3VyaW5nIHRoYXQgYSBkZWFkIFZNIGRvZXNuJiMzOTt0IHJlc3VycmVjdCBpdHNlbGYgZHVlIHRvIHRoZSByZXF1ZXN0IGJlaW5nIGNsZWFyZWQgaW5jb3JyZWN0bHkuIE1ha2VzIHNlbnNlLgoKR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHN0YXRlIGNoYW5nZXMgaW4gYSBjb3JlIGNvbXBvbmVudCBsaWtlIHRoaXMsIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2sgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGEgdmlhYmxlIHNldCBvZiBjb25maWcgb3B0aW9ucyBhbmQgZm9jdXMgc3ltYm9scyB0byB0YXJnZXQuCgpGb3IgY29uZmlnIG9wdGlvbnMsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBLVk0gc3Vic3lzdGVtIGl0c2VsZiwgcGx1cyBhcmNoLXNwZWNpZmljIG9wdGlvbnM6IGBDT05GSUdfS1ZNYCwgYENPTkZJR19LVk1fSU5URUxgLCBhbmQgYENPTkZJR19LVk1fQU1EYC4KCk5vdywgZm9yIGZvY3VzIHN5bWJvbHMsIHRoZSBwYXRjaCBpdHNlbGYgZ2l2ZXMgYSBmZXcgc3VnZ2VzdGlvbnMgYmFzZWQgb24gdGhlIGxvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gY2hhbmdlczogYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIChhcm02NCksIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgICh4ODYpLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCAoeDg2KSwgYW5kIGB2Y3B1X2VudGVyX2d1ZXN0YCAoeDg2KS4gU28sIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlbiYjMzk7dCBpbmxpbmVkIG9yIHN0YXRpYzsgd2Ugd2FudCB0aGUgZW50cnlwb2ludHMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AsIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCBhbmQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGFyZSBhbGwgc3RhdGljIGluIHRoZWlyIHJlc3BlY3RpdmUgZmlsZXMuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgdGhlIHByb21wdCBzdGF0ZWQgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLgoKT2theSwgbGV0JiMzOTtzIGZpbmQgdGhlIGNhbGxlcnMgb2YgdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucyBhbmQgc2VlIGlmIHRoZXkgYXJlIG5vbi1zdGF0aWM7IHRoZXkgc2hvdWxkIGJlIGJldHRlciB0YXJnZXRzLgoKRm9yIGBjaGVja192Y3B1X3JlcXVlc3RzYCBpbiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIG9uZSBjYWxsZXIuIFRoaXMgbG9va3MgbGlrZSBhIHByb21pc2luZyB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3RkcF9wYWdlX3ByZWZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTQ5NTU9c3RhdGljIGludCBrdm1fbW11X2RvX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBjcjJfb3JfZ3BhLFxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAxOS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6NTAyMDpzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAyMS1cdFx0XHRcdCB1NjQgZXJyb3JfY29kZSwgdTggKmxldmVsKVxuLS1cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NTA2ND1sb25nIGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDk3LVx0ICovXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jOjUwOTg6XHRyID0ga3ZtX3RkcF9wYWdlX3ByZWZhdWx0KHZjcHUsIHJhbmdlLVx1MDAzZWdwYSB8IGRpcmVjdF9iaXRzLCBlcnJvcl9jb2RlLCBcdTAwMjZsZXZlbCk7XG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwOTktXHRpZiAociBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTExCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gTWVtb3J5IEZhdWx0IEhhbmRsaW5nIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIEtWTSBtZW1vcnkgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhcm91bmQgcHJlLWZhdWx0aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIHByZXBhcmluZyBtZW1vcnkgcGFnZXMsIGxpa2VseSBwcmlvciB0byBhIG1vcmUgZ2VuZXJhbCBmYXVsdC4KClNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhlIGNhbGwgdG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBURFAgKFRhZ2dlZCBEYXRhIFBhZ2UpIGlzIGEga2V5IGFzcGVjdCBoZXJlLCBhbmQgdGhlICYjMzQ7cHJlLWZhdWx0JiMzNDsgc3VnZ2VzdHMgd2UmIzM5O3JlIHByb2FjdGl2ZWx5IHNldHRpbmcgdXAgc29tZXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBga3ZtX3RkcF9wYWdlX3ByZWZhdWx0YCB0byB1bmRlcnN0YW5kICp3aGF0KiBpdCYjMzk7cyBzZXR0aW5nIHVwIGFuZCAqd2h5Ki4gSXMgdGhpcyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgY2hlY2tzLCBvciBib3RoPyBBcmUgd2UgcHJlLWZhdWx0aW5nIHRvIG1ha2UgYWNjZXNzIGZhc3RlciBvciB0byBlbnN1cmUgc29tZXRoaW5nIGxpa2UgYSB3cml0ZSBkb2VzbiYjMzk7dCB2aW9sYXRlIGEgc2hhZG93IHBhZ2U/CgpOb3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYC4gSXQgc2VlbXMgcmVsZXZhbnQgdG8gdGhlIHByZS1mYXVsdGluZyBmbG93LCBhcyBpdCBjb21lcyB1cCBpbiB0aGUgY29udGV4dCBvZiBURFggKFRydXN0ZWQgRG9tYWluIEV4dGVuc2lvbikgc3lzdGVtcywgd2hpY2ggaXMgc29tZXRoaW5nIHZlcnkgaGlnaC1sZXZlbC4gSSBhbSBnb2luZyB0byBleHBsb3JlIHRoZSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCB0byBzZWUgaG93IEVQVCAoRXh0ZW5kZWQgUGFnZSBUYWJsZXMpIHZpb2xhdGlvbnMgYXJlIGJlaW5nIGhhbmRsZWQgaW4gdGhlIGNvbnRleHQgb2YgVERYLiBXaGF0IGlzIHRoZSBhcmNoaXRlY3R1cmUgZG9pbmcgdGhhdCBuZWVkcyBwcmUtZmF1bHRpbmc/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHZpb2xhdGlvbj8gSXMgdGhpcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgZ3Vlc3TigJlzIHZpZXcgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBpbiBURFg/IFRoaXMgd2lsbCBiZSB2ZXJ5IGltcG9ydGFudCBmb3IgbWUgdG8gdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBTbyBmYXIgSSBrbm93IHRoYXQgYSBwcmUtZmF1bHQgaGFzIHRha2VuIHBsYWNlLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwcmUtZmF1bHRpbmcgaXMgZG9pbmcsIGFuZCB3aHkgaXQgaXMgZG9pbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE5MDM9c3RhdGljIGlubGluZSBib29sIHRkeF9pc19zZXB0X3Zpb2xhdGlvbl91bmV4cGVjdGVkX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTkxMy1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTkxNDpzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTE5MTUte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjAzMT1pbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIxMDYtXHRjYXNlIEVYSVRfUkVBU09OX0VQVF9WSU9MQVRJT046XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIxMDc6XHRcdHJldHVybiB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb24odmNwdSk7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIxMDgtXHRjYXNlIEVYSVRfUkVBU09OX09USEVSX1NNSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzM5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkFuYWx5emluZyBURFggRXhpdCBIYW5kbGluZyBpbiBLVk0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBURFggZXhpdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBjb250ZXh0LiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYSBjYWxsIHRvIGB0ZHhfaGFuZGxlX2V4aXRgIHRyaWdnZXJzIGEgZnVydGhlciBhY3Rpb24sIHNwZWNpZmljYWxseSBhIGNhbGwgdG8gYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgdGR4X2hhbmRsZV9leGl0YCBpcyB0aGUgZ2VuZXJhbCBlbnRyeSBwb2ludCBmb3IgYW55IFREWCBleGl0LCBhbmQgaXQgdGhlbiBkaXNwYXRjaGVzIHRvIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIHdoZW4gdGhlIGV4aXQgaXMgcmVsYXRlZCB0byBhbiBFUFQgdmlvbGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgZGVzaWduIHBhdHRlcm4gZm9yIGhhbmRsaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleGNlcHRpb25zOiBhIHRvcC1sZXZlbCBmdW5jdGlvbiB0aGF0IGV4YW1pbmVzIHRoZSBleGl0IHJlYXNvbiBhbmQgcm91dGVzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyLgoKTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyBpbnNpZGUgYHZjcHVfZW50ZXJfZ3Vlc3RgLCBsb2NhdGVkIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBUaGlzIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHdoZXJlIHRoZSB2aXJ0dWFsIENQVSByZXN1bWVzIGV4ZWN1dGlvbiB3aXRoaW4gdGhlIGd1ZXN0LiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCBpbiBkZXRlcm1pbmluZyBob3cgdGhlc2UgZXhpdHMgYXJlIGRldGVjdGVkLCBob3cgdGhleSBpbnRlcnJ1cHQgdGhlIGd1ZXN0LCBhbmQgaG93IGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGhhbmRsZXIuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpbnNpZGUgYHZjcHVfZW50ZXJfZ3Vlc3RgLCB0aGVyZSBhcmUgY2hlY2tzIGZvciBURFgtcmVsYXRlZCBjb25kaXRpb25zIGFuZCwgaWYgYW4gZXhpdCBpcyBwZW5kaW5nLCB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcnMgYXJlIGludm9rZWQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSB0byBjb25maXJtIHRoaXMsIHNwZWNpZmljYWxseSBob3cgYHRkeF9oYW5kbGVfZXhpdGAgaXMgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIENQVSBlbnRyeSBzZXF1ZW5jZS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCBvciBmbGFncyB0aGF0IHdvdWxkIGVuYWJsZSB0aGF0IGhhbmRsZXIgdG8gZ2V0IGNhbGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X2VudGVyX2d1ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU0Ni1cdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3Olx0ICogdmNwdV9lbnRlcl9ndWVzdCgpIHJlcXVlc3RzIGFuIGltbWVkaWF0ZSBleGl0LCBhbmQgdGhlIGd1ZXN0XG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVx0ICogc2hvdWxkbiYjMzk7dCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjAyNj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfZmx1c2hfdGxiX2N1cnJlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXCYjMzQ7bG9jYWxcJiMzNDsgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTIwMzUtICogVExCIGZsdXNoZXMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgYW4gTU1VIGNvbnRleHQgYWxzbyBuZWVkIHRvIGJlIHNlcnZpY2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTM9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTMtXHRcdCAqIEtpY2sgYWxsIHZDUFVzIGJlZm9yZSBzZXR0aW5nIGFwaWN2X2luaGliaXRfcmVhc29ucyB0byBhdm9pZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTQ6XHRcdCAqIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2FuaXR5IGNoZWNrIFdBUk4gaW4gdmNwdV9lbnRlcl9ndWVzdCgpLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTUtXHRcdCAqIFRoaXMgdGFzayB3aWxsIHdhaXQgZm9yIGFsbCB2Q1BVcyB0byBhY2sgdGhlIGtpY2sgSVJRIGJlZm9yZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03OTE3LVx0XHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4mIzM5O3RcbmFyY2gveDg2L2t2bS94ODYuYzo3OTE4Olx0XHQgKiByZWRvIHZjcHVfZW50ZXJfZ3Vlc3QoKSB3aXRob3V0IHNlZWluZyB0aGUgbmV3IGluaGliaXQgc3RhdGUuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOS1cdFx0ICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODAzNz1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTAtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1MTpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NjMxPXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ1LVx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDY6XHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY0Ny1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDQxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRmxvdyBvZiBgdmNwdV9ydW5gKioKClJpZ2h0LCBgdmNwdV9ydW5gIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHZpcnR1YWwgQ1BVJiMzOTtzIGV4ZWN1dGlvbiBsb29wLiBBbmQgaXQgaW1tZWRpYXRlbHkgY2FsbHMgYHZjcHVfZW50ZXJfZ3Vlc3RgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBpbml0aWFsaXppbmcgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gU2luY2UgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGRldGVybWluZSBhbGwgY2FsbCBzaXRlcy4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgZnJvbSB0aGF0IGZ1bmN0aW9uIGNhbGwuIEkgd2FudCB0byBzZWUgcHJlY2lzZWx5IHdoYXQgdHJpZ2dlcnMgYHZjcHVfcnVuYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyBvZiBgdmNwdV9ydW5gIGlzIGtleSB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBWQ1BVIHNjaGVkdWxpbmcgYW5kIGNvbnRleHQtc3dpdGNoaW5nIHN0cmF0ZWd5LiBJJiMzOTtsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmNwdV9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTE1Njk9c3RhdGljIHZvaWQgcHZjbG9ja191cGRhdGVfdm1fZ3RvZF9jb3B5KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cdFx0XHRcdFx1MDAyNlx1MDAyNiAha2EtXHUwMDNlYmFja3dhcmRzX3RzY19vYnNlcnZlZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjE1OTA6XHRcdFx0XHRcdTAwMjZcdTAwMjYgIWthLVx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcbmFyY2gveDg2L2t2bS94ODYuYy0xNTkxLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNjI1LVx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI2MjY6XHQgKiBraW5kIChzZWUgdmNwdV9ydW4pLiAgVmVuZG9yIHNwZWNpZmljIGNvZGUgY29udHJvbHMgKGNvbnNlcnZhdGl2ZWx5KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXHQgKiB3aGVuIHRoaXMgaXMgdHJ1ZSwgZm9yIGV4YW1wbGUgYWxsb3dpbmcgdGhlIHZDUFUgdG8gYmUgbWFya2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04MDQ2LSAqIENhbGxlZCB3aXRoaW4ga3ZtLVx1MDAzZXNyY3UgcmVhZCBzaWRlLlxuYXJjaC94ODYva3ZtL3g4Ni5jOjgwNDc6ICogUmV0dXJucyAxIHRvIGxldCB2Y3B1X3J1bigpIGNvbnRpbnVlIHRoZSBndWVzdCBleGVjdXRpb24gbG9vcCB3aXRob3V0XG5hcmNoL3g4Ni9rdm0veDg2LmMtODA0OC0gKiBleGl0aW5nIHRvIHRoZSB1c2Vyc3BhY2UuICBPdGhlcndpc2UsIHRoZSB2YWx1ZSB3aWxsIGJlIHJldHVybmVkIHRvIHRoZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDUxPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODM2NzpcdFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcbmFyY2gveDg2L2t2bS94ODYuYy04MzY4LVx0XHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUwMy1cbmFyY2gveDg2L2t2bS94ODYuYzo4NTA0OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MDUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NTU0PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcbmFyY2gveDg2L2t2bS94ODYuYy04NTU1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NTY6aW50IGt2bV9hcmNoX3ZjcHVfcnVubmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTcte1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NTg6XHRyZXR1cm4ga3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSB8fCB2Y3B1LVx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcbmFyY2gveDg2L2t2bS94ODYuYy04NTU5LVx0ICAgICAgIGt2bV92Y3B1X2hhc19ldmVudHModmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1NjM9c3RhdGljIGlubGluZSBpbnQgdmNwdV9ibG9jayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjYtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU2NzpcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjgtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1OTMtXHRcdCAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg1OTQ6XHRcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYy04NTk1LVx0XHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjMwLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVx1MDAzZXNyY3UgcmVhZCBzaWRlLiAgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo4NjMxOnN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzIte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ0LVx0XHR2Y3B1LVx1MDAzZWFyY2guYXRfaW5zdHJ1Y3Rpb25fYm91bmRhcnkgPSBmYWxzZTtcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ1Olx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDYtXHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg3MTk9ZmFzdHBhdGhfdCBoYW5kbGVfZmFzdHBhdGhfaGx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODcyNi1cbmFyY2gveDg2L2t2bS94ODYuYzo4NzI3Olx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODcyOC1cdFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODg4MT1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04OTg1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg5ODY6XHRyID0gdmNwdV9ydW4odmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgS1ZNJiMzOTtzIFJ1biBFbnRyeXBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2Uga2ljayBvZmYgYSBLVk0gdmlydHVhbCBDUFUmIzM5O3MgZXhlY3V0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIGl0JiMzOTtzIGhhbmRsaW5nIHRoZSBJT0NUTCBjYWxsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGB2Y3B1X3J1bmAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0aG91Z2gsIGxldCYjMzk7cyBhbHNvIHRha2UgYSBsb29rIGF0IHRoZSBBUk02NC1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgSSYjMzk7bGwgY2hlY2sgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBhbmQgc3BlY2lmaWNhbGx5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHNwZWNpZmljcyBJIG5lZWQgZm9yIHRoZSBBUk02NCBhcmNoaXRlY3R1cmUsIGFuZCBjb25maXJtIG15IGluaXRpYWwgdGhvdWdodCBvbiB0aGUgZW50cnlwb2ludCBhbmQgaXRzIHBsYWNlIGluIHRoZSBleGVjdXRpb24gZmxvdy4gVGhpcyB3aWxsIGxldCBtZSBzZWUgaWYgYW55dGhpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhhcHBlbnMgYmVmb3JlIGB2Y3B1X3J1bmAgZ2V0cyBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9MTA2Nj1zdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTEwOTItXHQgKiBPdGhlcndpc2UsIHdlIHdlcmUgdW5ibG9ja2VkIHRvIHByb2Nlc3MgYSBkaWZmZXJlbnQgZXZlbnQsIHN1Y2ggYXMgYVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTA5MzpcdCAqIHBlbmRpbmcgc2lnbmFsLiBSZXR1cm4gMSBhbmQgYWxsb3cga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKSB0b1xuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTA5NC1cdCAqIHByb2Nlc3MgdGhlIGV2ZW50LlxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jPTEyMzA9c3RhdGljIGludCBub2luc3RyIGt2bV9hcm1fdmNwdV9lbnRlcl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjQxLS8qKlxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI0MjogKiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAtIHRoZSBtYWluIFZDUFUgcnVuIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgZ3Vlc3QgY29kZVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0My0gKiBAdmNwdTpcdFRoZSBWQ1BVIHBvaW50ZXJcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUwLSAqL1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTI1MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI1Mi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBLZXkgS1ZNIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGRpcmVjdCBteSBhdHRlbnRpb24gd2l0aGluIHRoaXMgS1ZNIGNvZGUuIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgc2VlbXMgbGlrZSBhIGdvb2QsIHNvbGlkIGVudHJ5IHBvaW50IGZvciBhIGRlZXBlciBkaXZlLiBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiwgdGhlIGxpa2VseSBjZW50ZXIgb2YgbXVjaCBvZiB0aGUgYWN0aW9uLiBCdXQsIGxldCYjMzk7cyBleHBsb3JlIGEgZmV3IG1vcmUgb3B0aW9ucyBiZWZvcmUgY29tbWl0dGluZy4gSSBzZWUgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAg4oCTIHRoYXQgb25lJiMzOTtzIGV4cG9ydGVkLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcgZm9yIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMsIGFuZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgcHJvYmFibHkgaW1wb3J0YW50LiBBbmQsIGFoYSwgYHRkeF9oYW5kbGVfZXhpdGAhIFRoYXQmIzM5O3MgYWxzbyBub24tc3RhdGljLiBUaGlzIG9uZSBsb29rcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYHRkeF9oYW5kbGVfZXhpdGAgaW4gYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgIGZvciBtb3JlIGluZm9ybWF0aW9uLiBMb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RkeF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdGR4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYz05MjQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdGR4X3RvX3ZteF9leGl0X3JlYXNvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NDktXHRcdC8qXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjk1MDpcdFx0ICogRGVmZXIgS1ZNX0JVR19PTigpIHVudGlsIHRkeF9oYW5kbGVfZXhpdCgpIGJlY2F1c2UgdGhpcyBpcyBpblxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NTEtXHRcdCAqIG5vbi1pbnN0cnVtZW50YWJsZSBjb2RlIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC5cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTExMzI9c3RhdGljIGludCB0ZHhfaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzNy1cdCAqIE1hY2hpbmUgY2hlY2tzIGFyZSBoYW5kbGVkIGJ5IGhhbmRsZV9leGNlcHRpb25faXJxb2ZmKCksIG9yIGJ5XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjExMzg6XHQgKiB0ZHhfaGFuZGxlX2V4aXQoKSB3aXRoIFREWF9OT05fUkVDT1ZFUkFCTEUgc2V0IGlmIGEgI01DIG9jY3VycyBvblxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM5LVx0ICogVk0tRW50cnkuICBOTUlzIGFyZSBoYW5kbGVkIGJ5IHRkeF92Y3B1X2VudGVyX2V4aXQoKS5cbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTIwMTc9aW50IHRkeF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMC1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjAzMTppbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDUyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGB0ZHhfaGFuZGxlX2V4aXRgIGFuZCBNZW1vcnkgRmF1bHQgSGFuZGxpbmcqKgoKT2theSwgc28gYHRkeF9oYW5kbGVfZXhpdGAgaXNuJiMzOTt0IHN0YXRpYy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBtZW1vcnkgZmF1bHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIHg4NiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyB3b3Jrcywgc28gbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGluIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggYHRkeF9oYW5kbGVfZXhpdGAgKG9yICppZiogaXQgaW50ZXJhY3RzIHdpdGggaXQpLCBhcyBtZW1vcnkgZmF1bHRzIGFyZSBjcml0aWNhbCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGFuZCBhIFREWCBleGl0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBhIGZhdWx0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGUgbm9uLXN0YXRpYyBuYXR1cmUgb2YgYHRkeF9oYW5kbGVfZXhpdGAgaXMgcmVsZXZhbnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL21tdS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDYzLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA2NS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDkzMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgSG90c3BvdHMgYW5kIENhbGwgQ2hhaW5zKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHBpbnBvaW50IHRoZSBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUgd2l0aGluIHRoaXMgY29kZWJhc2UuIEkmIzM5O20gdGhpbmtpbmcgdGhlIHJlYWwgYm90dGxlbmVja3MsIHRoZSBhcmVhcyB3aGVyZSB3ZSYjMzk7cmUgc3BlbmRpbmcgdGhlIG1vc3QgY3ljbGVzLCBhcmUgcHJvYmFibHkgbGlua2VkIHRvIHRoZXNlIGZvY3VzIHN5bWJvbHM6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLCBhbmQgYHRkeF9oYW5kbGVfZXhpdGAuIFRoZXNlIGFyZSBteSBpbml0aWFsIGNhbmRpZGF0ZXMgZm9yIGhvdHNwb3RzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJIGFtIGdvaW5nIHRvIHNlZSB3aGljaCBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgcG90ZW50aWFsbHkgY2FsbGVkIGJ5IGFueXRoaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHBhdGhzIHRvIHNlZSB3aGVyZSBgdGR4X2hhbmRsZV9leGl0YCBpcyBiZWluZyBpbnZva2VkLiBUaGF0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZHhfaGFuZGxlX2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L21haW4uYz0xNTc9c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYwLVx0aWYgKGlzX3RkX3ZjcHUodmNwdSkpXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNjE6XHRcdHJldHVybiB0ZHhfaGFuZGxlX2V4aXQodmNwdSwgZmFzdHBhdGgpO1xuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYyLVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9OTI0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHRkeF90b192bXhfZXhpdF9yZWFzb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtOTQ5LVx0XHQvKlxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzo5NTA6XHRcdCAqIERlZmVyIEtWTV9CVUdfT04oKSB1bnRpbCB0ZHhfaGFuZGxlX2V4aXQoKSBiZWNhdXNlIHRoaXMgaXMgaW5cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtOTUxLVx0XHQgKiBub24taW5zdHJ1bWVudGFibGUgY29kZSB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0xMTMyPXN0YXRpYyBpbnQgdGR4X2hhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTExMzctXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxMTM4Olx0ICogdGR4X2hhbmRsZV9leGl0KCkgd2l0aCBURFhfTk9OX1JFQ09WRVJBQkxFIHNldCBpZiBhICNNQyBvY2N1cnMgb25cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzOS1cdCAqIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieSB0ZHhfdmNwdV9lbnRlcl9leGl0KCkuXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yMDE3PWludCB0ZHhfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzAtXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIwMzE6aW50IHRkeF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZmFzdHBhdGgpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzIte1xuLS1cbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTE0Mz12b2lkIHRkeF92Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTQ0OmludCB0ZHhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTQ1LVx0XHRlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTU0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBFeGl0IEhhbmRsaW5nIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIEtWTS9WTVggY29kZSBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBleGl0IGhhbmRsaW5nLiBJIHNlZSB0aGF0IGB2dF9oYW5kbGVfZXhpdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIFZNIGV4aXRzIHdpdGhpbiB0aGUgVk1YIGFyY2hpdGVjdHVyZS4gVGhhdCYjMzk7cyBubyBzdXJwcmlzZSwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBpbiBtb3JlIGRldGFpbC4gVGhlIGJyZWFkY3J1bWIgSSYjMzk7dmUgZ290IGlzIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBjYWxscyBgdGR4X2hhbmRsZV9leGl0YC4gVGhhdCB0ZWxscyBtZSB0aGF0IGZvciBURFgtZW5hYmxlZCBzeXN0ZW1zIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMsIGxvd2VyLWxldmVsIGhhbmRsZXIgYmVpbmcgaW52b2tlZC4gVGhpcyBtYWtlcyBzZW5zZTsgVERYIGludHJvZHVjZXMgYSB3aG9sZSBzZXQgb2YgbmV3IGV4aXQgcmVhc29ucyBhbmQgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgdGhhdCB3b3VsZCBuZWVkIHNwZWNpYWxpemVkIGhhbmRsaW5nLCBidXQgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlZ3JhdGlvbiB3b3Jrcy4gTGV0IG1lIGNvbmZpcm0gdGhlIGNvbnRleHQgb2YgYHZ0X2hhbmRsZV9leGl0YCBhbmQgd2hlcmUgaXQgbGl2ZXM6IGFoLCBpdCYjMzk7cyBkZWZpbmVkIGluIGBhcmNoL3g4Ni9rdm0vdm14L21haW4uY2AuIFRoYXQgZ2l2ZXMgbWUgdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlIHRvIGNoZWNrIHRoZSBjYWxsIHN0YWNrIGFuZCB1bmRlcnN0YW5kIGl0cyBpbnRlZ3JhdGlvbiB3aXRoIHRoZSByZXN0IG9mIHRoZSBWTVggYXJjaGl0ZWN0dXJlLiBOZXh0LCBJIHdpbGwgY2hlY2sgdGhlIGNhbGxlci9jYWxsZWUgcmVsYXRpb25zaGlwcyBpbiB0aGlzIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z0X2hhbmRsZV9leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MTQ5PXN0YXRpYyBmYXN0cGF0aF90IHZ0X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTYtXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNTc6c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTgtXHRcdFx0ICBlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKlVuZGVyc3RhbmRpbmcgdGhlIEtWTS94ODYgSW50ZXJhY3Rpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZSBsb3ctbGV2ZWwgS1ZNIGludGVyYWN0aW9ucywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkgc2VlIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBpcyBhIGNydWNpYWwgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIGBrdm1feDg2X29wc2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgdGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IG9mIGNvbnRyb2wsIGxpa2VseSBoYW5kbGluZyBWTSBleGl0cyBvZiBzb21lIGtpbmQuCgpNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbWFwIHRoaXMgd2l0aGluIHRoZSBLVk0veDg2IGNvbnRyb2wgZmxvdy4gVG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIHRoZSByZWxldmFudCBsb2dpYywgSSBzaG91bGQgdHJhY2UgaXQgaW4gdGhlIGJyb2FkZXIgS1ZNL3g4NiBlY29zeXN0ZW0uIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IEkgc2hvdWxkIG5vdyBjb25zaWRlciB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGB2dF9oYW5kbGVfZXhpdGAgY2FsbGJhY2sgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBvdGhlciBzeW1ib2xzIGlkZW50aWZpZWQgYXJlIHNpZ25pZmljYW50OiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgeDg2IHNwZWNpZmljLgoKTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzeW1ib2xzIGludGVyYWN0LiBJIHdhbnQgdG8gY2hlY2sgaG93IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGZpdCBpbnRvIHRoaXMgcGljdHVyZSwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBgdnRfaGFuZGxlX2V4aXRgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRob3NlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTg4NDQ9c3RhdGljIGludCBrdm1feDg2X3ZjcHVfcHJlX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODg4MTppbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipOYXZpZ2F0aW5nIHRoZSBLVk0gQ29kZWJhc2UqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgcGF0aCBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIEtWTSBjb2RlLiBSaWdodCwgKmBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAqIC0gSSBzZWVtIHRvIHJlY2FsbCB0aGF0JiMzOTtzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgcXVpY2tseS4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgY2hlY2sgYENPTkZJR19LVk1gIGFuZCBgQ09ORklHX0tWTV9JTlRFTGAgYXMgb2J2aW91cyBzdGFydGluZyBwb2ludHMsIGJ1dCBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIG1vcmUgaW52b2x2ZWQuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHRoaW5rIFREWCBoYXMgdG8gZmFjdG9yIGludG8gdGhpcy4gQW5kLCB5ZXMsIFREWCBpcyB2ZXJ5IGxpa2VseSBjb25uZWN0ZWQgdG8gYENPTkZJR19JTlRFTF9URFhfSE9TVGAuIExldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjbHVlcyBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0MDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQmIzM5O3Mgc3RhcnQgYnkgbmF2aWdhdGluZyByaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBtb2R1bGVzIGFuZCByZWxldmFudCB4ODYtc3BlY2lmaWMgY29tcG9uZW50cyBhcmUgYnVpbHQgYW5kIGxpbmtlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhpcyBNYWtlZmlsZSBpcyBnb2luZyB0byBiZSB0aGUgcm9hZG1hcC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpYWwgYnVpbGQgcnVsZXMgc3BlY2lmaWMgdG8gS1ZNIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCBob3cgS1ZNIGludGVyYWN0cyB3aXRoIGZlYXR1cmVzIGxpa2UgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyAoVlQteCBvciBBTUQtViksIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIG9uIHRoZSB4ODYgcGxhdGZvcm0uIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgcmV2ZWFsIGhvdyBpdCBpbnRlZ3JhdGVzIGludG8gdGhlIG92ZXJhbGwga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgdGhpcyBNYWtlZmlsZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGR4Lm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTIxPWt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMjprdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3NzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtWTSBhbmQgVERYIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGdvZXMgdG8gdmVyaWZ5aW5nIGhvdyB0aGlzIGlzIHNldCB1cCB3aXRoaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBjaGVjayBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIHNwZWNpZmljYWxseSBmb3IgYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAuIEkga25vdyB0aGF0JiMzOTtzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCBmb3IgeDg2IEtWTSwgc28gaXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgVERYIG1pZ2h0IHJlbGF0ZS4gVGhlbiwgSSBuZWVkIHRvIGNvbXBhcmUgdGhhdCB0byB0aGUgQVJNNjQgc2lkZSwgc28gSSYjMzk7bGwgYWxzbyBjaGVjayBgYXJjaC9hcm02NC9rdm0vYXJtLmNgIHRvIHNlZSB0aGUgc2V0dXAgdGhlcmUuIEkgcmVjYWxsIHRoYXQmIzM5O3MgY29tcGlsZWQgZm9yIGBDT05GSUdfS1ZNYC4KClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb25maWd1cmF0aW9ucy4gV2UgaGF2ZTogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMX1REWGAuIE5vdywganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYEtWTV9JTlRFTF9URFhgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIEtjb25maWcgZmlsZXMuIENhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTV9JTlRFTF9URFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzMzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNL1REWCBFbnRyeSBQb2ludCBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBgS1ZNX0lOVEVMX1REWGAuIFJpZ2h0LiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGVudHJ5IHBvaW50cyBpbnRvIHRoZSBLVk0vVERYIGludGVyYWN0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0cyB0ZWxsIG1lIHRvIGNoZWNrIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIOKAkyBzdGFuZGFyZCBzdGFydGluZyBwb2ludHMuIEJ1dCwgYXJlIHRoZXJlIG90aGVycz8gSSYjMzk7bGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzLgoKTGV0IG1lIHNlZS4uLiBkaWdnaW5nIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AsIEkgc2VlIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGNhbGxlZCBmcm9tIGB2Y3B1X3J1bmAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyBvbmUuIE5vdywgbG9va2luZyBhdCBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AsIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIGlzIGNhbGxlZCBmcm9tIGB0ZHhfaGFuZGxlX2V4aXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgdnRfaGFuZGxlX2V4aXRgLiBUaGF0IGxvb2tzIGludGVyZXN0aW5nLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVERYLiBJbiBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIEkgc2VlIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBBbmQganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcnVjaWFsIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMsIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgY2FsbHMgYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIGZyb20gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4KCk9rYXksIHNvIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBwaWN0dXJlOiBUaGUgcHJpbWFyeSBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlOgoKKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAKKiAgIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgCiogICBgdnRfaGFuZGxlX2V4aXRgCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgY2hlY2sgaWYgYHZ0X2hhbmRsZV9leGl0YCBpcyBzdGF0aWMuLi4gdGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSB0cmFjZSBpdHMgdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2dF9oYW5kbGVfZXhpdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE0OT1zdGF0aWMgZmFzdHBhdGhfdCB2dF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBydW5fZmxhZ3MpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU2LVxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTU3OnN0YXRpYyBpbnQgdnRfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU4LVx0XHRcdCAgZW51bSBleGl0X2Zhc3RwYXRoX2NvbXBsZXRpb24gZmFzdHBhdGgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjgzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipEaXNzZWN0aW5nIHRoZSBgaGFuZGxlX2V4aXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGB2dF9oYW5kbGVfZXhpdGAgaXMgYSBgc3RhdGljYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWw7IGl0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIEl0JiMzOTtzIGFsc28gYXNzaWduZWQgdG8gYGt2bV94ODZfb3BzLmhhbmRsZV9leGl0YC4gVGhpcyBzdWdnZXN0cyB0aGF0IGBoYW5kbGVfZXhpdGAgbGlrZWx5IGFjdHMgYXMgYSBoYW5kbGVyIHdpdGhpbiB0aGUgS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBlbnZpcm9ubWVudCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgcGFydCBvZiBhIHNldCBvZiBvcGVyYXRpb25zIChga3ZtX3g4Nl9vcHNgKSB0aGF0IEtWTSB1c2VzLiBOb3cgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXM6IHdoYXQgdHJpZ2dlcnMgdGhlIGV4ZWN1dGlvbiBvZiBgaGFuZGxlX2V4aXRgPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGNoYWluIHRvIGBoYW5kbGVfZXhpdGAgaXMgdGhlIG5leHQsIGFuZCBtb3N0IHZpdGFsLCBzdGVwIGluIGNvbXByZWhlbmRpbmcgaXRzIHJvbGUgaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgaGFuZGxlX2V4aXRgIHRvIHVuZGVyc3RhbmQgdGhlIGV2ZW50IGl0JiMzOTtzIG1lYW50IHRvIGhhbmRsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTgwNTE9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODQyMS1cdC8qXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODQyMjpcdCAqIFN5bmMgeGZkIGJlZm9yZSBjYWxsaW5nIGhhbmRsZV9leGl0X2lycW9mZigpIHdoaWNoIG1heVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0MjMtXHQgKiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgZ3Vlc3RfZnB1Ojp4ZmQgaXMgdXAtdG8tZGF0ZSAoZS5nLlxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NDI4LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0Mjk6XHRrdm1feDg2X2NhbGwoaGFuZGxlX2V4aXRfaXJxb2ZmKSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04NDMwLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NDkwLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0OTE6XHRyID0ga3ZtX3g4Nl9jYWxsKGhhbmRsZV9leGl0KSh2Y3B1LCBleGl0X2Zhc3RwYXRoKTtcbmFyY2gveDg2L2t2bS94ODYuYy04NDkyLVx0cmV0dXJuIHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTEyCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEVudHJ5IFBvaW50cyBpbnRvIHRoZSBLVk0gR3Vlc3QgRXhlY3V0aW9uIFBhdGgqKgoKT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSSYjMzk7bSBmb2N1c2luZyBvbiBob3cgd2UgZW50ZXIgZ3Vlc3QgZXhlY3V0aW9uIHdpdGhpbiBLVk0uIE15IG1lbnRhbCBtYXAgc2hvd3MgdGhhdCBgdmNwdV9lbnRlcl9ndWVzdGAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIHRoYXQgaXQgZXZlbnR1YWxseSBjYWxscyBga3ZtX3g4Nl9jYWxsKGhhbmRsZV9leGl0KWAuICBOb3csIEkgcmVjYWxsIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGNhbGxlZCBmcm9tIGB2Y3B1X3J1bmAuIEFuZCBgdmNwdV9ydW5gLCBpbiB0dXJuLCBpcyBpbnZva2VkIGJ5IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFNvLCB0aGF0IGxhc3QgZnVuY3Rpb24sIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIHNlZW1zIHRvIGJlIGEgbWFqb3IgZW50cnkgcG9pbnQgZm9yIGd1ZXN0IGV4ZWN1dGlvbiwgY292ZXJpbmcgYSBzaWduaWZpY2FudCBwYXJ0IG9mIHRoZSBjYWxsIGNoYWluLiBJdCBjb25uZWN0cyBhbGwgdGhlIHBpZWNlcywgZXhjZXB0IGZvciBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4KClRoZXJlZm9yZSwgbXkgY29yZSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHNlY3VyZSBhbmQgZWZmaWNpZW50IHdheS4KCk5vdywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBpZiBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBpcyBleHBvc2VkIG9yIHJlYWNoYWJsZSB2aWEgdGhlIHN5c2NhbGwgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIGEgY3J1Y2lhbCBjaGVjayBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGV4ZWN1dGlvbiBwYXRocy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy01MDYzLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA2NS1cdFx0XHRcdCAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MTY5OD1zdGF0aWMgaW50IHRkeF9zZXB0X21hcF9sZWFmX3NwdGUoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBnZm4sIGVudW0gcGdfbGV2ZWwgbGV2ZWwsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEwLVx0LypcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTcxMTpcdCAqIEVuc3VyZSBwcmVfZmF1bHRfYWxsb3dlZCBpcyByZWFkIGJ5IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSgpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTE3MTItXHQgKiBiZWZvcmUga3ZtX3RkeC1cdTAwM2VzdGF0ZS4gIFVzZXJzcGFjZSBtdXN0IG5vdCBiZSBhbGxvd2VkIHRvIHByZS1mYXVsdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc2MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgTWVtb3J5IEZhdWx0cyBpbiBLVk0gLSBUaGUgSHVudCBCZWdpbnMqKgoKQWxyaWdodCwgYSBtZW1vcnkgZmF1bHQmIzM5O3MgZ290IG1lIHN0dW1wZWQsIHNvIGxldCYjMzk7cyBkaWcgaW50byB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBLVk0gYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHRoZSByb290IG9mIHRoZSBwcm9ibGVtLiBUaGF0IHVzdWFsbHkgbWVhbnMgbG9va2luZyBhdCB0aGUgY29tbW9uIGVudHJ5IHBvaW50cy4KClRoZSBmdW5jdGlvbiBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZSDigJMgaXQmIzM5O3MgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWU6IHByZS1mYXVsdCwgbWVtb3J5LiBNeSB0aGlua2luZyBpcywgbGV0JiMzOTtzIHN0YXJ0IGJ5IGZpbmRpbmcgYWxsIHRoZSBwbGFjZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSAqY2FsbGVkKi4gVGhlIHNvdXJjZSBjb2RlIGlzIG15IG1hcCBoZXJlLCBhbmQgYHZpcnQva3ZtL2t2bV9tYWluLmNgIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgd2lsbCBwcm9iYWJseSBiZSB3aGVyZSB0aGlzIGNyaXRpY2FsIHN0dWZmIGlzIHNldCB1cC4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgYW5kIHRyaWNrcyB0byBmaW5kIGFsbCB0aGUgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgbmFycm93IGRvd24gdGhlIHNjb3BlIG9mIHRoZSBwcm9ibGVtLiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBoZWxwIG1lIHBhaW50IGEgcGljdHVyZSBhbmQgc2hvdyBtZSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZW5lcmd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz00MzUzPXN0YXRpYyBpbnQga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00Mzc3LVxudmlydC9rdm0va3ZtX21haW4uYzo0Mzc4Olx0XHRyID0ga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHZjcHUsIHJhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM3OS1cdFx0aWYgKFdBUk5fT05fT05DRShyID09IDAgfHwgciA9PSAtRUlPKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyMzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gS1ZNIGludGVybmFsczoKCioqRGl2aW5nIGludG8gdGhlIE1lbW9yeSBGYXVsdCBIYW5kbGluZyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSW1tZWRpYXRlbHksIEkgY29ubmVjdCB0aGF0IGZ1bmN0aW9uIG5hbWUgdG8gdGhlIGJyb2FkZXIgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbWVtb3J5IGZhdWx0cywgc3BlY2lmaWNhbGx5ICpiZWZvcmUqIHRoZSBhY3R1YWwgZmF1bHQgaGFuZGxpbmcgb2NjdXJzLCB3aGljaCBpcyBhIGtleSBwaGFzZSBpbiB2aXJ0dWFsIG1hY2hpbmUgZXhlY3V0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiBpdHMgaW52b2NhdGlvbi4KClRoZSB0ZXh0IHBvaW50cyBvdXQgdGhhdCBga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaXMgY2FsbGVkIGZyb20gYGt2bV92Y3B1X2lvY3RsYC4gQWgsIG5vdyBpdCYjMzk7cyBjbGVhci4gYGlvY3RsYCBjYWxscyBhcmUgdGhlIGdhdGV3YXkgZm9yIHVzZXItc3BhY2UgcmVxdWVzdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZCAqaW4gcmVzcG9uc2UqIHRvIGEgY29udHJvbCBvcGVyYXRpb24gaW5pdGlhdGVkIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCBsaWtlbHkgZnJvbSBRRU1VIG9yIGFub3RoZXIgdXNlci1zcGFjZSBLVk0gbWFuYWdlbWVudCBhcHBsaWNhdGlvbi4gVGhpcyBtZWFucyB3ZSBhcmUgd2l0aGluIHRoZSBpb2N0bCBoYW5kbGVyLCBhbmQgc29tZXRoaW5nIGluaXRpYXRlZCBieSB1c2VyLXNwYWNlIHJlcXVpcmVzIHRoZSBrZXJuZWwgdG8gKnByZWVtcHRpdmVseSogY2hlY2sgbWVtb3J5LgoKU28sIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBhIGh5cG90aGVzaXMuIFRoZSBgaW9jdGxgIHJlcXVlc3QgbXVzdCBiZSByZWxhdGVkIHRvIHNvbWUgbWVtb3J5IG9wZXJhdGlvbi4gUGVyaGFwcyB0aGUgdXNlci1zcGFjZSBpcyB0cnlpbmcgdG8gYWNjZXNzIG9yIG1hbmlwdWxhdGUgYSBtZW1vcnkgcmVnaW9uIHRoYXQmIzM5O3MgZWl0aGVyIG5vdCB5ZXQgZnVsbHkgc2V0IHVwIGZvciB0aGUgdkNQVSBvciByZXF1aXJlcyBzb21lIHByZS1lbXB0aXZlIGNoZWNrIG9uIHRoZSBtZW1vcnkgc3RhdGUgcHJpb3IgdG8gdGhlIHZDUFUgYWNjZXNzaW5nIHRoZSBtZW1vcnkuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBwYWdlIHRhYmxlIG1hbmFnZW1lbnQsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHNoYWRvdyBwYWdlIHRhYmxlIHVwZGF0ZXMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBpb2N0bCBjb21tYW5kLiBJdCYjMzk7cyBhbG1vc3QgYWx3YXlzIGEgZ29vZCBpbmRpY2F0aW9uIHRoYXQgc29tZXRoaW5nIHVudXN1YWwgaXMgZ29pbmcgb24uCgpNeSBuZXh0IHN0ZXAgd291bGQgYmUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGZyb20gdGhlIHNwZWNpZmljIGBpb2N0bGAgY2FsbCB0aGF0IHRyaWdnZXJzIHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uLCBhbmQgZGV0ZXJtaW5lIHRoZSBleGFjdCByZWFzb24gZm9yIHRoZSBjaGVjay4gV2hhdCBtZW1vcnkgcmVnaW9uIGlzIGJlaW5nIHRvdWNoZWQ/IFdoYXQgaXMgaXQgdHJ5aW5nIHRvIGFjY29tcGxpc2g/IEFyZSB3ZSBkZWFsaW5nIHdpdGggZ3Vlc3QgcGh5c2ljYWwgbWVtb3J5IG9yIHNoYWRvdyBwYWdlIHRhYmxlIGVudHJpZXM/IEEgZGVlcGVyIGRpdmUgaXMgcmVxdWlyZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2h5IGFuZCB0aGUgaG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTQzMjc9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9nZXRfc3RhdHNfZmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM1Mi0jaWZkZWYgQ09ORklHX0tWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDM1MzpzdGF0aWMgaW50IGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxudmlydC9rdm0va3ZtX21haW4uYy00MzU0LVx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ByZV9mYXVsdF9tZW1vcnkgKnJhbmdlKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQyNT1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ2NTctXHRcdFx0YnJlYWs7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ2NTg6XHRcdHIgPSBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHZjcHUsIFx1MDAyNnJhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDY1OS1cdFx0LyogUGFzcyBiYWNrIGxlZnRvdmVyIHJhbmdlLiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODAxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhlIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGVudHJ5IHBvaW50cyBmb3IgY2VydGFpbiBvcGVyYXRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYGt2bV92Y3B1X2lvY3RsYCBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCwgYW5kIHRoYXQgZm9jdXNpbmcgb24gYGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIG9yLCBiZXR0ZXIgeWV0LCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCwgd291bGQgYmUgYSBnb29kIGFwcHJvYWNoLiBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGFsc28gY2FsbGVkIGZyb20gYGt2bV92Y3B1X2lvY3RsYC4gVGhpcyBtZWFucyBga3ZtX3ZjcHVfaW9jdGxgIGlzIHRoZSBwcmltYXJ5LCBidXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBhbmQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgYXJlIG1vcmUgZ3JhbnVsYXIuCgpJIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIExldCYjMzk7cyBsb29rIGF0IGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgIHRvIHNlZSBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgdXNlZC4gR29vZCwgaXQmIzM5O3Mgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgbW9kdWxlcy4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIHNlZWluZyBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYENPTkZJR19LVk1fQU1EYCwgYW5kIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIFdhaXQsIGlzIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAgYSByZWFsIGNvbmZpZz8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLgoKTm93LCBJJiMzOTtsbCBtb3ZlIG9uIHRvIGBhcmNoL2FybTY0L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHRoZXJlIHRoYXQgYXJlIHJlbGV2YW50IHRvIG15IGN1cnJlbnQgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg3NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gRml4IGZvciBWTSBEZWFkIFN0YXRlIG9uIGFybTY0KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgdGhpcyBvbiBhcm02NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBMZXQmIzM5O3MgZGlnIGludG8gYGluY2x1ZGUvbGludXgva3ZtX2hvc3QuaGAgYW5kIHNlZSB3aGF0JiMzOTtzIGNoYW5nZWQuIEFoLCByaWdodCwgdGhlIHBhdGNoIGFkZHMgYSBgQlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpYCB3aXRoaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGEgY29tcGlsZS10aW1lIGNoZWNrIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBpbmFkdmVydGVudGx5IGNsZWFyaW5nIG9yIGNoZWNraW5nIHRoZSBgS1ZNX1JFUV9WTV9ERUFEYCByZXF1ZXN0IGZsYWcuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgb25jZSBhIFZNIGlzIG1hcmtlZCBhcyAmIzM0O2RlYWQsJiMzNDsgaXQgc3RheXMgdGhhdCB3YXkuCgpUaGUgY29yZSBvZiB0aGUgZml4IGlzIHRvIHVzZSBga3ZtX3Rlc3RfcmVxdWVzdGAgaW5zdGVhZCBvZiBga3ZtX2NoZWNrX3JlcXVlc3RgIGZvciB0aGF0IHNwZWNpZmljIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseS4gUHJldmlvdXNseSwgYEtWTV9SRVFfVk1fREVBRGAgd2FzIGdldHRpbmcgY2xlYXJlZCwgd2hpY2ggd291bGQgbG9naWNhbGx5IGxlYWQgdG8gdGhlIFZNICpub3QqIHN0YXlpbmcgZGVhZCwgd2hpY2ggaXMgY2xlYXJseSB1bmRlc2lyYWJsZS4gTm93LCB3aXRoIHRoaXMgY2hhbmdlLCB0aGUgZGVhZCBzdGF0ZSBzaG91bGQgYmUgcGVyc2lzdGVudC4KCkkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIGEgY291cGxlIG9mIGtleSBzeW1ib2xzIGhlcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIHRvIHNlZSBob3cgdGhpcyBpbXBhY3RzIHRoZSBvdmVyYWxsIGZsb3cuIEFuZCwgb2YgY291cnNlLCBJIHNob3VsZCB2ZXJpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGVzcGVjaWFsbHkgYEtWTV9JTlRFTF9URFhgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz01Mj1jb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTc2LVx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gS1ZNX1g4NiBcdTAwMjZcdTAwMjYgKChFWFBFUlQgXHUwMDI2XHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxuYXJjaC94ODYva3ZtL0tjb25maWctNzgtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9ODM9Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1Olx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiBJQTMyX0ZFQVRfQ1RMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXHUwMDI2XHUwMDI2IEVYUEVSVFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBYODZfU0dYIFx1MDAyNlx1MDAyNiBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNzpcdGRlcGVuZHMgb24gSU5URUxfVERYX0hPU1RcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDg6XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1OC1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU5Olx0ZGVwZW5kcyBvbiBLVk1fQU1EIFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE2MDpcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXHUwMDI2XHUwMDI2ICEoS1ZNX0FNRD15IFx1MDAyNlx1MDAyNiBDUllQVE9fREVWX0NDUF9ERD1tKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTYxLVx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTczPWNvbmZpZyBLVk1fSU9BUElDXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTc1LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xODM9Y29uZmlnIEtWTV9TTU1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODUtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMTg3LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE5ND1jb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NjpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVx0ZGVmYXVsdCB5XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTA6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxMS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMTc9Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5Olx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMDpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIxOlx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNi1cdHJhbmdlIDEwMjQgNDA5NlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI0NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogS1ZNX0lOVEVMX1REWCBhbmQgSU5URUxfVERYX0hPU1QqKgoKQWxyaWdodCwgc28gYEtWTV9JTlRFTF9URFhgIGlzIGNsZWFybHkgbGVhbmluZyBvbiBgSU5URUxfVERYX0hPU1RgLiBObyBzdXJwcmlzZXMgdGhlcmU7IFREWCBob3N0IHN1cHBvcnQgaXMgdGhlIGZvdW5kYXRpb24uIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgSU5URUxfVERYX0hPU1RgIGl0c2VsZi4gR290dGEgZW5zdXJlIHRoZXJlJiMzOTtzIG5vIGNhc2NhZGUgZWZmZWN0LCBubyBoaWRkZW4gcHJlcmVxdWlzaXRlcyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgbGF0ZXIuIFdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgZmlybXdhcmUgdmVyc2lvbnMgYXJlIGFic29sdXRlbHkgKnJlcXVpcmVkKiBmb3IgdGhlIGhvc3Qgc3VwcG9ydCB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IEkgc2hvdWxkIGFudGljaXBhdGU/IEkgbmVlZCB0byBidWlsZCBhIGNvbXByZWhlbnNpdmUgZGVwZW5kZW5jeSBncmFwaCB0byBmdWxseSBldmFsdWF0ZSB0aGlzLiBMZXQmIzM5O3Mgc2VlLi4uIHdoZXJlIGRvIEkgc3RhcnQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJTlRFTF9URFhfSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZz0xODQ0PWNvbmZpZyBYODZfVVNFUl9TSEFET1dfU1RBQ0tcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjMtXG5hcmNoL3g4Ni9LY29uZmlnOjE4NjQ6Y29uZmlnIElOVEVMX1REWF9IT1NUXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIGhvc3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVjb3N5c3RlbSBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGRlcGVuZGVuY2llcy4gV2hhdCBsaWJyYXJpZXMsIGZyYW1ld29ya3MsIG9yIGV4dGVybmFsIHNlcnZpY2VzIGlzIHRoaXMgdGhpbmcgbGVhbmluZyBvbj8gSSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHZlcnNpb25zLCB3aGVyZSB0aGV5JiMzOTtyZSBzb3VyY2VkIGZyb20sIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlLiBBcmUgdGhleSBhbGwgdXAtdG8tZGF0ZSBhbmQgcGF0Y2hlZD8gSGF2ZSBhbnkgZGVwcmVjYXRpb24gd2FybmluZ3MgcG9wcGVkIHVwPyBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY3Vyc29yeSBnbGFuY2U7IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIHRvbywgZ2V0dGluZyBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZC4gQSBzb2xpZCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGFuZCwgb2YgY291cnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIOKAkyBJIGNhbiYjMzk7dCBidWlsZCBhbnl0aGluZyBzdGFibGUgd2l0aG91dCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk4MiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC94ODYvS2NvbmZpZz0xMD1jb25maWcgWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTExLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gITY0QklUXG5hcmNoL3g4Ni9LY29uZmlnLTEzLVx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgMzItYml0IGtlcm5lbCBvbmx5OlxuLS1cbmFyY2gveDg2L0tjb25maWc9MjM9Y29uZmlnIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0yNC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIDY0QklUXG5hcmNoL3g4Ni9LY29uZmlnLTI2LVx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgNjQtYml0IGtlcm5lbCBvbmx5OlxuLS1cbmFyY2gveDg2L0tjb25maWc9NDE9Y29uZmlnIEZPUkNFX0RZTkFNSUNfRlRSQUNFXG5hcmNoL3g4Ni9LY29uZmlnLTQyLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzo0MzpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnOjQ0Olx0ZGVwZW5kcyBvbiBGVU5DVElPTl9UUkFDRVJcbmFyY2gveDg2L0tjb25maWctNDUtXHRzZWxlY3QgRFlOQU1JQ19GVFJBQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTM0MD1jb25maWcgSU5TVFJVQ1RJT05fREVDT0RFUlxuYXJjaC94ODYvS2NvbmZpZy0zNDEtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjM0MjpcdGRlcGVuZHMgb24gS1BST0JFUyB8fCBQRVJGX0VWRU5UUyB8fCBVUFJPQkVTXG5hcmNoL3g4Ni9LY29uZmlnLTM0My1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTM3NT1jb25maWcgR0VORVJJQ19JU0FfRE1BXG5hcmNoL3g4Ni9LY29uZmlnLTM3Ni1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6Mzc3Olx0ZGVwZW5kcyBvbiBJU0FfRE1BX0FQSVxuYXJjaC94ODYvS2NvbmZpZy0zNzgtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0zODM9Y29uZmlnIEdFTkVSSUNfQlVHXG5hcmNoL3g4Ni9LY29uZmlnLTM4NC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6Mzg1Olx0ZGVwZW5kcyBvbiBCVUdcbmFyY2gveDg2L0tjb25maWctMzg2LVx0c2VsZWN0IEdFTkVSSUNfQlVHX1JFTEFUSVZFX1BPSU5URVJTXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0zOTE9Y29uZmlnIEFSQ0hfTUFZX0hBVkVfUENfRkRDXG5hcmNoL3g4Ni9LY29uZmlnLTM5Mi1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MzkzOlx0ZGVwZW5kcyBvbiBJU0FfRE1BX0FQSVxuYXJjaC94ODYvS2NvbmZpZy0zOTQtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz00MTA9Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbmFyY2gveDg2L0tjb25maWctNDExLVx0aGV4XG5hcmNoL3g4Ni9LY29uZmlnOjQxMjpcdGRlcGVuZHMgb24gS0FTQU5cbmFyY2gveDg2L0tjb25maWctNDEzLVx0ZGVmYXVsdCAweGRmZmZmYzAwMDAwMDAwMDBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQxNT1jb25maWcgSEFWRV9JTlRFTF9UWFRcbmFyY2gveDg2L0tjb25maWctNDE2LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzo0MTc6XHRkZXBlbmRzIG9uIElOVEVMX0lPTU1VIFx1MDAyNlx1MDAyNiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnLTQxOC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTQ1OT1jb25maWcgWDg2X1gyQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy00NjAtXHRib29sIFwmIzM0O3gyQVBJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBhcmNoaXRlY3R1cmUgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0NjE6XHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDIFx1MDAyNlx1MDAyNiBYODZfNjQgXHUwMDI2XHUwMDI2IChJUlFfUkVNQVAgfHwgSFlQRVJWSVNPUl9HVUVTVClcbmFyY2gveDg2L0tjb25maWctNDYyLVx0ZGVmYXVsdCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZz00ODM9Y29uZmlnIEFNRF9TRUNVUkVfQVZJQ1xuYXJjaC94ODYvS2NvbmZpZy00ODQtXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgQVZJQ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo0ODU6XHRkZXBlbmRzIG9uIEFNRF9NRU1fRU5DUllQVCBcdTAwMjZcdTAwMjYgWDg2X1gyQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy00ODYtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz00OTY9Y29uZmlnIFg4Nl9QT1NURURfTVNJXG5hcmNoL3g4Ni9LY29uZmlnLTQ5Ny1cdGJvb2wgXCYjMzQ7RW5hYmxlIE1TSSBhbmQgTVNJLXggZGVsaXZlcnkgYnkgcG9zdGVkIGludGVycnVwdHNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NDk4Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IElSUV9SRU1BUFxuYXJjaC94ODYvS2NvbmZpZy00OTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01MDc9Y29uZmlnIFg4Nl9NUFBBUlNFXG4tLVxuYXJjaC94ODYvS2NvbmZpZy01MDktXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6NTEwOlx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy01MTEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01MTU9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTFxuYXJjaC94ODYvS2NvbmZpZy01MTYtXHRib29sIFwmIzM0O3g4NiBDUFUgcmVzb3VyY2UgY29udHJvbCBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjUxNzpcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiAoQ1BVX1NVUF9JTlRFTCB8fCBDUFVfU1VQX0FNRClcbmFyY2gveDg2L0tjb25maWc6NTE4Olx0ZGVwZW5kcyBvbiBNSVNDX0ZJTEVTWVNURU1TXG5hcmNoL3g4Ni9LY29uZmlnLTUxOS1cdHNlbGVjdCBBUkNIX0hBU19DUFVfUkVTQ1RSTFxuLS1cbmFyY2gveDg2L0tjb25maWc9NTM4PWNvbmZpZyBYODZfQ1BVX1JFU0NUUkxfSU5URUxfQUVUXG5hcmNoL3g4Ni9LY29uZmlnLTUzOS1cdGJvb2wgXCYjMzQ7SW50ZWwgQXBwbGljYXRpb24gRW5lcmd5IFRlbGVtZXRyeVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1NDA6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgWDg2X0NQVV9SRVNDVFJMIFx1MDAyNlx1MDAyNiBDUFVfU1VQX0lOVEVMIFx1MDAyNlx1MDAyNiBJTlRFTF9QTVRfVEVMRU1FVFJZPXkgXHUwMDI2XHUwMDI2IElOVEVMX1RQTUk9eVxuYXJjaC94ODYvS2NvbmZpZy01NDEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01NTE9Y29uZmlnIFg4Nl9GUkVEXG5hcmNoL3g4Ni9LY29uZmlnLTU1Mi1cdGJvb2wgXCYjMzQ7RmxleGlibGUgUmV0dXJuIGFuZCBFdmVudCBEZWxpdmVyeVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1NTM6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy01NTQtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz01OTA9Y29uZmlnIFg4Nl9OVU1BQ0hJUFxuYXJjaC94ODYvS2NvbmZpZy01OTEtXHRib29sIFwmIzM0O051bWFzY2FsZSBOdW1hQ2hpcFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo1OTI6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZzo1OTM6XHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxuYXJjaC94ODYvS2NvbmZpZzo1OTQ6XHRkZXBlbmRzIG9uIE5VTUFcbmFyY2gveDg2L0tjb25maWc6NTk1Olx0ZGVwZW5kcyBvbiBTTVBcbmFyY2gveDg2L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjU5NzpcdGRlcGVuZHMgb24gUENJX01NQ09ORklHXG5hcmNoL3g4Ni9LY29uZmlnLTU5OC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYwMz1jb25maWcgWDg2X1ZTTVBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTYwNi1cdHNlbGVjdCBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZzo2MDc6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgUENJXG5hcmNoL3g4Ni9LY29uZmlnOjYwODpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gU01QXG5hcmNoL3g4Ni9LY29uZmlnLTYxMC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYxNT1jb25maWcgWDg2X1VWXG5hcmNoL3g4Ni9LY29uZmlnLTYxNi1cdGJvb2wgXCYjMzQ7U0dJIFVsdHJhdmlvbGV0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjYxNzpcdGRlcGVuZHMgb24gWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnOjYxODpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYxOTpcdGRlcGVuZHMgb24gTlVNQVxuYXJjaC94ODYvS2NvbmZpZzo2MjA6XHRkZXBlbmRzIG9uIEVGSVxuYXJjaC94ODYvS2NvbmZpZzo2MjE6XHRkZXBlbmRzIG9uIEtFWEVDX0NPUkVcbmFyY2gveDg2L0tjb25maWc6NjIyOlx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjYyMzpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnLTYyNC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTYyOD1jb25maWcgWDg2X0lOVEVMX01JRFxuYXJjaC94ODYvS2NvbmZpZy02MjktXHRib29sIFwmIzM0O0ludGVsIFozNHh4L1ozNXh4IE1JRCBwbGF0Zm9ybSBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjYzMDpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnOjYzMTpcdGRlcGVuZHMgb24gWDg2X1BMQVRGT1JNX0RFVklDRVNcbmFyY2gveDg2L0tjb25maWc6NjMyOlx0ZGVwZW5kcyBvbiBQQ0lcbmFyY2gveDg2L0tjb25maWc6NjMzOlx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEVYUEVSVCBcdTAwMjZcdTAwMjYgUENJX0dPQU5ZKVxuYXJjaC94ODYvS2NvbmZpZzo2MzQ6XHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTYzNS1cdHNlbGVjdCBJMkNcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY1ND1jb25maWcgWDg2X0dPTERGSVNIXG5hcmNoL3g4Ni9LY29uZmlnLTY1NS1cdGJvb2wgXCYjMzQ7R29sZGZpc2ggKFZpcnR1YWwgUGxhdGZvcm0pXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY1NjpcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXG5hcmNoL3g4Ni9LY29uZmlnLTY1Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY2NT1jb25maWcgWDg2X0lOVEVMX0NFXG5hcmNoL3g4Ni9LY29uZmlnLTY2Ni1cdGJvb2wgXCYjMzQ7Q0U0MTAwIFRWIHBsYXRmb3JtXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY2NzpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnOjY2ODpcdGRlcGVuZHMgb24gUENJX0dPRElSRUNUXG5hcmNoL3g4Ni9LY29uZmlnOjY2OTpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWc6NjcwOlx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWc6NjcxOlx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cbmFyY2gveDg2L0tjb25maWctNjcyLVx0c2VsZWN0IFg4Nl9SRUJPT1RGSVhVUFNcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXG5hcmNoL3g4Ni9LY29uZmlnLTY4MS1cdGJvb2wgXCYjMzQ7SW50ZWwgUXVhcmsgcGxhdGZvcm0gc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo2ODI6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZzo2ODM6XHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxuYXJjaC94ODYvS2NvbmZpZzo2ODQ6XHRkZXBlbmRzIG9uIFg4Nl9QTEFURk9STV9ERVZJQ0VTXG5hcmNoL3g4Ni9LY29uZmlnOjY4NTpcdGRlcGVuZHMgb24gUENJXG5hcmNoL3g4Ni9LY29uZmlnOjY4NjpcdGRlcGVuZHMgb24gUENJX0dPQU5ZXG5hcmNoL3g4Ni9LY29uZmlnOjY4NzpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWctNjg4LVx0c2VsZWN0IElPU0ZfTUJJXG4tLVxuYXJjaC94ODYvS2NvbmZpZz02OTY9Y29uZmlnIFg4Nl9JTlRFTF9MUFNTXG5hcmNoL3g4Ni9LY29uZmlnLTY5Ny1cdGJvb2wgXCYjMzQ7SW50ZWwgTG93IFBvd2VyIFN1YnN5c3RlbSBTdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjY5ODpcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBBQ1BJIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWctNjk5LVx0c2VsZWN0IENPTU1PTl9DTEtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTcwOD1jb25maWcgWDg2X0FNRF9QTEFURk9STV9ERVZJQ0VcbmFyY2gveDg2L0tjb25maWctNzA5LVx0Ym9vbCBcJiMzNDtBTUQgQUNQSTJQbGF0Zm9ybSBkZXZpY2VzIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzEwOlx0ZGVwZW5kcyBvbiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnLTcxMS1cdHNlbGVjdCBDT01NT05fQ0xLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz03MTk9Y29uZmlnIElPU0ZfTUJJXG5hcmNoL3g4Ni9LY29uZmlnLTcyMC1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIFNvQyBJT1NGIFNpZGViYW5kIHN1cHBvcnQgZm9yIFNvQyBwbGF0Zm9ybXNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzIxOlx0ZGVwZW5kcyBvbiBQQ0lcbmFyY2gveDg2L0tjb25maWctNzIyLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzM2PWNvbmZpZyBJT1NGX01CSV9ERUJVR1xuYXJjaC94ODYvS2NvbmZpZy03MzctXHRib29sIFwmIzM0O0VuYWJsZSBJT1NGIHNpZGViYW5kIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBJT1NGX01CSSBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmFyY2gveDg2L0tjb25maWctNzM5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzQ5PWNvbmZpZyBYODZfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTc1MS1cdCMgTUNFIGNvZGUgY2FsbHMgbWVtb3J5X2ZhaWx1cmUoKTpcbmFyY2gveDg2L0tjb25maWc6NzUyOlx0ZGVwZW5kcyBvbiBYODZfTUNFXG5hcmNoL3g4Ni9LY29uZmlnLTc1My1cdCMgT24gMzItYml0IHRoaXMgYWRkcyB0b28gYmlnIG9mIE5PREVTX1NISUZUIGFuZCB3ZSBydW4gb3V0IG9mIHBhZ2UgZmxhZ3M6XG5hcmNoL3g4Ni9LY29uZmlnLTc1NC1cdCMgT24gMzItYml0IFNQQVJTRU1FTSBhZGRzIHRvbyBiaWcgb2YgU0VDVElPTlNfV0lEVEg6XG5hcmNoL3g4Ni9LY29uZmlnOjc1NTpcdGRlcGVuZHMgb24gWDg2XzY0IHx8ICFTUEFSU0VNRU1cbmFyY2gveDg2L0tjb25maWctNzU2LVx0c2VsZWN0IEFSQ0hfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTc1OD1jb25maWcgWDg2XzMyX0lSSVNcbmFyY2gveDg2L0tjb25maWctNzU5LVx0dHJpc3RhdGUgXCYjMzQ7RXVyb2JyYWlsbGUvSXJpcyBwb3dlcm9mZiBtb2R1bGVcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6NzYwOlx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctNzYxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9NzcxPWNvbmZpZyBTQ0hFRF9PTUlUX0ZSQU1FX1BPSU5URVJcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTc3My1cdHByb21wdCBcJiMzNDtTaW5nbGUtZGVwdGggV0NIQU4gb3V0cHV0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjc3NDpcdGRlcGVuZHMgb24gWDg2XG5hcmNoL3g4Ni9LY29uZmlnLTc3NS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTc5NT1jb25maWcgUEFSQVZJUlRcbmFyY2gveDg2L0tjb25maWctNzk2LVx0Ym9vbCBcJiMzNDtFbmFibGUgcGFyYXZpcnR1YWxpemF0aW9uIGNvZGVcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6Nzk3Olx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXG5hcmNoL3g4Ni9LY29uZmlnLTc5OC1cdHNlbGVjdCBIQVZFX1BWX1NURUFMX0NMT0NLX0dFTlxuLS1cbmFyY2gveDg2L0tjb25maWc9ODA1PWNvbmZpZyBQQVJBVklSVF9YWExcbmFyY2gveDg2L0tjb25maWctODA2LVx0Ym9vbFxuYXJjaC94ODYvS2NvbmZpZzo4MDc6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy04MDgtXHRzZWxlY3QgQVJDSF9IQVNfTEFaWV9NTVVfTU9ERVxuLS1cbmFyY2gveDg2L0tjb25maWc9ODEwPWNvbmZpZyBQQVJBVklSVF9TUElOTE9DS1NcbmFyY2gveDg2L0tjb25maWctODExLVx0Ym9vbCBcJiMzNDtQYXJhdmlydHVhbGl6YXRpb24gbGF5ZXIgZm9yIHNwaW5sb2Nrc1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo4MTI6XHRkZXBlbmRzIG9uIFBBUkFWSVJUIFx1MDAyNlx1MDAyNiBTTVBcbmFyY2gveDg2L0tjb25maWctODEzLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9ODI4PWNvbmZpZyBLVk1fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODI5LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo4MzA6XHRkZXBlbmRzIG9uIFBBUkFWSVJUXG5hcmNoL3g4Ni9LY29uZmlnLTgzMS1cdHNlbGVjdCBQQVJBVklSVF9DTE9DS1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODU0PWNvbmZpZyBQQVJBVklSVF9USU1FX0FDQ09VTlRJTkdcbmFyY2gveDg2L0tjb25maWctODU1LVx0Ym9vbCBcJiMzNDtQYXJhdmlydHVhbCBzdGVhbCB0aW1lIGFjY291bnRpbmdcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODU2Olx0ZGVwZW5kcyBvbiBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZy04NTctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Njg9Y29uZmlnIEpBSUxIT1VTRV9HVUVTVFxuYXJjaC94ODYvS2NvbmZpZy04NjktXHRib29sIFwmIzM0O0phaWxob3VzZSBub24tcm9vdCBjZWxsIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODcwOlx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IFBDSVxuYXJjaC94ODYvS2NvbmZpZy04NzEtXHRzZWxlY3QgWDg2X1BNX1RJTUVSXG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Nzc9Y29uZmlnIEFDUk5fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODc4LVx0Ym9vbCBcJiMzNDtBQ1JOIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODc5Olx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctODgwLVx0c2VsZWN0IFg4Nl9IVl9DQUxMQkFDS19WRUNUT1Jcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTg4OD1jb25maWcgQkhZVkVfR1VFU1RcbmFyY2gveDg2L0tjb25maWctODg5LVx0Ym9vbCBcJiMzNDtCaHl2ZSAoQlNEIEh5cGVydmlzb3IpIEd1ZXN0IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODkwOlx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctODkxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9ODk3PWNvbmZpZyBJTlRFTF9URFhfR1VFU1RcbmFyY2gveDg2L0tjb25maWctODk4LVx0Ym9vbCBcJiMzNDtJbnRlbCBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSAtIEd1ZXN0IFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6ODk5Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IENQVV9TVVBfSU5URUxcbmFyY2gveDg2L0tjb25maWc6OTAwOlx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXG5hcmNoL3g4Ni9LY29uZmlnOjkwMTpcdGRlcGVuZHMgb24gRUZJX1NUVUJcbmFyY2gveDg2L0tjb25maWc6OTAyOlx0ZGVwZW5kcyBvbiBQQVJBVklSVFxuYXJjaC94ODYvS2NvbmZpZy05MDMtXHRzZWxlY3QgQVJDSF9IQVNfQ0NfUExBVEZPUk1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTkzOD1jb25maWcgSFBFVF9FTVVMQVRFX1JUQ1xuYXJjaC94ODYvS2NvbmZpZy05MzktXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjk0MDpcdGRlcGVuZHMgb24gSFBFVF9USU1FUiBcdTAwMjZcdTAwMjYgKFJUQ19EUlZfQ01PUz1tIHx8IFJUQ19EUlZfQ01PUz15KVxuYXJjaC94ODYvS2NvbmZpZy05NDEtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz05NTQ9Y29uZmlnIEdBUlRfSU9NTVVcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTV0lPVExCXG5hcmNoL3g4Ni9LY29uZmlnOjk1ODpcdGRlcGVuZHMgb24gWDg2XzY0IFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEFNRF9OQlxuYXJjaC94ODYvS2NvbmZpZy05NTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz05ODI9Y29uZmlnIE1BWFNNUFxuYXJjaC94ODYvS2NvbmZpZy05ODMtXHRib29sIFwmIzM0O0VuYWJsZSBNYXhpbXVtIG51bWJlciBvZiBTTVAgUHJvY2Vzc29ycyBhbmQgTlVNQSBOb2Rlc1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzo5ODQ6XHRkZXBlbmRzIG9uIFg4Nl82NCBcdTAwMjZcdTAwMjYgU01QIFx1MDAyNlx1MDAyNiBERUJVR19LRVJORUxcbmFyY2gveDg2L0tjb25maWctOTg1LVx0c2VsZWN0IENQVU1BU0tfT0ZGU1RBQ0tcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwMTA9Y29uZmlnIE5SX0NQVVNfUkFOR0VfRU5EXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTEtXHRpbnRcbmFyY2gveDg2L0tjb25maWc6MTAxMjpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTMtXHRkZWZhdWx0ICAgIDggaWYgIFNNUFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTAxNj1jb25maWcgTlJfQ1BVU19SQU5HRV9FTkRcbmFyY2gveDg2L0tjb25maWctMTAxNy1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDE4Olx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMTAxOS1cdGRlZmF1bHQgODE5MiBpZiAgU01QIFx1MDAyNlx1MDAyNiBDUFVNQVNLX09GRlNUQUNLXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDIzPWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcbmFyY2gveDg2L0tjb25maWctMTAyNC1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDI1Olx0ZGVwZW5kcyBvbiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctMTAyNi1cdGRlZmF1bHQgICAgOCBpZiAgU01QXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDI5PWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcbmFyY2gveDg2L0tjb25maWctMTAzMC1cdGludFxuYXJjaC94ODYvS2NvbmZpZzoxMDMxOlx0ZGVwZW5kcyBvbiBYODZfNjRcbmFyY2gveDg2L0tjb25maWctMTAzMi1cdGRlZmF1bHQgODE5MiBpZiAgTUFYU01QXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMDQ5PWNvbmZpZyBTQ0hFRF9NQ19QUklPXG5hcmNoL3g4Ni9LY29uZmlnLTEwNTAtXHRib29sIFwmIzM0O0NQVSBjb3JlIHByaW9yaXRpZXMgc2NoZWR1bGVyIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTA1MTpcdGRlcGVuZHMgb24gU0NIRURfTUNcbmFyY2gveDg2L0tjb25maWctMTA1Mi1cdHNlbGVjdCBYODZfSU5URUxfUFNUQVRFIGlmIENQVV9TVVBfSU5URUxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzE9Y29uZmlnIFVQX0xBVEVfSU5JVFxuYXJjaC94ODYvS2NvbmZpZy0xMDcyLVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMDczOlx0ZGVwZW5kcyBvbiAhU01QIFx1MDAyNlx1MDAyNiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMDc0LVxuYXJjaC94ODYvS2NvbmZpZz0xMDc1PWNvbmZpZyBYODZfVVBfQVBJQ1xuLS1cbmFyY2gveDg2L0tjb25maWctMTA3Ny1cdGRlZmF1bHQgUENJX01TSVxuYXJjaC94ODYvS2NvbmZpZzoxMDc4Olx0ZGVwZW5kcyBvbiBYODZfMzIgXHUwMDI2XHUwMDI2ICFTTVBcbmFyY2gveDg2L0tjb25maWctMTA3OS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEwODk9Y29uZmlnIFg4Nl9VUF9JT0FQSUNcbmFyY2gveDg2L0tjb25maWctMTA5MC1cdGJvb2wgXCYjMzQ7SU8tQVBJQyBzdXBwb3J0IG9uIHVuaXByb2Nlc3NvcnNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTA5MTpcdGRlcGVuZHMgb24gWDg2X1VQX0FQSUNcbmFyY2gveDg2L0tjb25maWctMTA5Mi1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExMDE9Y29uZmlnIFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExMDItXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjExMDM6XHRkZXBlbmRzIG9uIFg4Nl82NCB8fCBTTVAgfHwgWDg2X1VQX0FQSUMgfHwgUENJX01TSVxuYXJjaC94ODYvS2NvbmZpZy0xMTA0LVx0c2VsZWN0IElSUV9ET01BSU5fSElFUkFSQ0hZXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTA2PWNvbmZpZyBBQ1BJX01BRFRfV0FLRVVQXG5hcmNoL3g4Ni9LY29uZmlnLTExMDctXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjExMDg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZzoxMTA5Olx0ZGVwZW5kcyBvbiBBQ1BJXG5hcmNoL3g4Ni9LY29uZmlnOjExMTA6XHRkZXBlbmRzIG9uIFNNUFxuYXJjaC94ODYvS2NvbmZpZzoxMTExOlx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMTEyLVxuYXJjaC94ODYvS2NvbmZpZz0xMTEzPWNvbmZpZyBYODZfSU9fQVBJQ1xuYXJjaC94ODYvS2NvbmZpZy0xMTE0LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxMTE1Olx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQyB8fCBYODZfVVBfSU9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExMTYtXG5hcmNoL3g4Ni9LY29uZmlnPTExMTc9Y29uZmlnIFg4Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTXG5hcmNoL3g4Ni9LY29uZmlnLTExMTgtXHRib29sIFwmIzM0O1Jlcm91dGUgZm9yIGJyb2tlbiBib290IElSUXNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTExOTpcdGRlcGVuZHMgb24gWDg2X0lPX0FQSUNcbmFyY2gveDg2L0tjb25maWctMTEyMC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExNDA9Y29uZmlnIFg4Nl9NQ0Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTExNDYtXHQgIGtlcm5lbCBpZiBpdCBkZXRlY3RzIGEgcHJvYmxlbSAoZS5nLiBvdmVyaGVhdGluZywgZGF0YSBjb3JydXB0aW9uKS5cbmFyY2gveDg2L0tjb25maWc6MTE0NzpcdCAgVGhlIGFjdGlvbiB0aGUga2VybmVsIHRha2VzIGRlcGVuZHMgb24gdGhlIHNldmVyaXR5IG9mIHRoZSBwcm9ibGVtLFxuYXJjaC94ODYvS2NvbmZpZy0xMTQ4LVx0ICByYW5naW5nIGZyb20gd2FybmluZyBtZXNzYWdlcyB0byBoYWx0aW5nIHRoZSBtYWNoaW5lLlxuLS1cbmFyY2gveDg2L0tjb25maWc9MTE1MD1jb25maWcgWDg2X01DRUxPR19MRUdBQ1lcbmFyY2gveDg2L0tjb25maWctMTE1MS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgZGVwcmVjYXRlZCAvZGV2L21jZWxvZyBjaGFyYWN0ZXIgZGV2aWNlXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNTI6XHRkZXBlbmRzIG9uIFg4Nl9NQ0VcbmFyY2gveDg2L0tjb25maWctMTE1My1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTExNTg9Y29uZmlnIFg4Nl9NQ0VfSU5URUxcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTExNjAtXHRwcm9tcHQgXCYjMzQ7SW50ZWwgTUNFIGZlYXR1cmVzXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNjE6XHRkZXBlbmRzIG9uIFg4Nl9NQ0UgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExNjItXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTY2PWNvbmZpZyBYODZfTUNFX0FNRFxuLS1cbmFyY2gveDg2L0tjb25maWctMTE2OC1cdHByb21wdCBcJiMzNDtBTUQgTUNFIGZlYXR1cmVzXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjExNjk6XHRkZXBlbmRzIG9uIFg4Nl9NQ0UgXHUwMDI2XHUwMDI2IFg4Nl9MT0NBTF9BUElDXG5hcmNoL3g4Ni9LY29uZmlnLTExNzAtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTc0PWNvbmZpZyBYODZfQU5DSUVOVF9NQ0VcbmFyY2gveDg2L0tjb25maWctMTE3NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3Igb2xkIFBlbnRpdW0gNSAvIFdpbkNoaXAgbWFjaGluZSBjaGVja3NcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTE3NjpcdGRlcGVuZHMgb24gWDg2XzMyIFx1MDAyNlx1MDAyNiBYODZfTUNFXG5hcmNoL3g4Ni9LY29uZmlnLTExNzctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTgyPWNvbmZpZyBYODZfTUNFX1RIUkVTSE9MRFxuYXJjaC94ODYvS2NvbmZpZzoxMTgzOlx0ZGVwZW5kcyBvbiBYODZfTUNFX0FNRCB8fCBYODZfTUNFX0lOVEVMXG5hcmNoL3g4Ni9LY29uZmlnLTExODQtXHRkZWZfYm9vbCB5XG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMTg2PWNvbmZpZyBYODZfTUNFX0lOSkVDVFxuYXJjaC94ODYvS2NvbmZpZzoxMTg3Olx0ZGVwZW5kcyBvbiBYODZfTUNFIFx1MDAyNlx1MDAyNiBYODZfTE9DQUxfQVBJQyBcdTAwMjZcdTAwMjYgREVCVUdfRlNcbmFyY2gveDg2L0tjb25maWctMTE4OC1cdHRyaXN0YXRlIFwmIzM0O01hY2hpbmUgY2hlY2sgaW5qZWN0b3Igc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9MTE5Nj1jb25maWcgWDg2X0xFR0FDWV9WTTg2XG5hcmNoL3g4Ni9LY29uZmlnLTExOTctXHRib29sIFwmIzM0O0xlZ2FjeSBWTTg2IHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTE5ODpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTExOTktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjI3PWNvbmZpZyBYODZfMTZCSVRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEyMjktXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6MTIzMDpcdGRlcGVuZHMgb24gTU9ESUZZX0xEVF9TWVNDQUxMXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzEtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjM3PWNvbmZpZyBYODZfRVNQRklYMzJcbmFyY2gveDg2L0tjb25maWctMTIzOC1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MTIzOTpcdGRlcGVuZHMgb24gWDg2XzE2QklUIFx1MDAyNlx1MDAyNiBYODZfMzJcbmFyY2gveDg2L0tjb25maWctMTI0MC1cbmFyY2gveDg2L0tjb25maWc9MTI0MT1jb25maWcgWDg2X0VTUEZJWDY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDItXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEyNDM6XHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDQtXG5hcmNoL3g4Ni9LY29uZmlnPTEyNDU9Y29uZmlnIFg4Nl9WU1lTQ0FMTF9FTVVMQVRJT05cbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDctXHRkZWZhdWx0IHlcbmFyY2gveDg2L0tjb25maWc6MTI0ODpcdGRlcGVuZHMgb24gWDg2XzY0XG5hcmNoL3g4Ni9LY29uZmlnLTEyNDktXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMjgxPWNvbmZpZyBUT1NISUJBXG5hcmNoL3g4Ni9LY29uZmlnLTEyODItXHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIExhcHRvcCBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEyODM6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMjg0LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTI5Nz1jb25maWcgWDg2X1JFQk9PVEZJWFVQU1xuYXJjaC94ODYvS2NvbmZpZy0xMjk4LVx0Ym9vbCBcJiMzNDtFbmFibGUgWDg2IGJvYXJkIHNwZWNpZmljIGZpeHVwcyBmb3IgcmVib290XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEyOTk6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMzAwLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTMxND1jb25maWcgTUlDUk9DT0RFXG5hcmNoL3g4Ni9LY29uZmlnLTEzMTUtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEzMTY6XHRkZXBlbmRzIG9uIENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSU5URUxcbmFyY2gveDg2L0tjb25maWctMTMxNy1cdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NiBpZiBDUFVfU1VQX0FNRFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTMxOT1jb25maWcgTUlDUk9DT0RFX0lOSVRSRDMyXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjAtXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjEzMjE6XHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcdTAwMjZcdTAwMjYgWDg2XzMyIFx1MDAyNlx1MDAyNiBCTEtfREVWX0lOSVRSRFxuYXJjaC94ODYvS2NvbmZpZy0xMzIyLVxuYXJjaC94ODYvS2NvbmZpZz0xMzIzPWNvbmZpZyBNSUNST0NPREVfTEFURV9MT0FESU5HXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xMzI1LVx0ZGVmYXVsdCBuXG5hcmNoL3g4Ni9LY29uZmlnOjEzMjY6XHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcdTAwMjZcdTAwMjYgU01QXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjctXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xMzM3PWNvbmZpZyBNSUNST0NPREVfTEFURV9GT1JDRV9NSU5SRVZcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTEzMzktXHRkZWZhdWx0IG5cbmFyY2gveDg2L0tjb25maWc6MTM0MDpcdGRlcGVuZHMgb24gTUlDUk9DT0RFX0xBVEVfTE9BRElOR1xuYXJjaC94ODYvS2NvbmZpZy0xMzQxLVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTM1NT1jb25maWcgTUlDUk9DT0RFX0RCR1xuLS1cbmFyY2gveDg2L0tjb25maWctMTM1Ny1cdGRlZmF1bHQgblxuYXJjaC94ODYvS2NvbmZpZzoxMzU4Olx0ZGVwZW5kcyBvbiBNSUNST0NPREVcbmFyY2gveDg2L0tjb25maWctMTM1OS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTEzODY9Y29uZmlnIEhJR0hNRU00R1xuYXJjaC94ODYvS2NvbmZpZy0xMzg3LVx0Ym9vbCBcJiMzNDtIaWdoIE1lbW9yeSBTdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjEzODg6XHRkZXBlbmRzIG9uIFg4Nl8zMlxuYXJjaC94ODYvS2NvbmZpZy0xMzg5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQxMD1jaG9pY2Vcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTItXHRkZWZhdWx0IFZNU1BMSVRfM0dcbmFyY2gveDg2L0tjb25maWc6MTQxMzpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTQtXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0xNDMyLVx0Y29uZmlnIFZNU1BMSVRfM0dfT1BUXG5hcmNoL3g4Ni9LY29uZmlnOjE0MzM6XHRcdGRlcGVuZHMgb24gIVg4Nl9QQUVcbmFyY2gveDg2L0tjb25maWctMTQzNC1cdFx0Ym9vbCBcJiMzNDszRy8xRyB1c2VyL2tlcm5lbCBzcGxpdCAoZm9yIGZ1bGwgMUcgbG93IG1lbW9yeSlcJiMzNDtcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0MzctXHRjb25maWcgVk1TUExJVF8yR19PUFRcbmFyY2gveDg2L0tjb25maWc6MTQzODpcdFx0ZGVwZW5kcyBvbiAhWDg2X1BBRVxuYXJjaC94ODYvS2NvbmZpZy0xNDM5LVx0XHRib29sIFwmIzM0OzJHLzJHIHVzZXIva2VybmVsIHNwbGl0IChmb3IgZnVsbCAyRyBsb3cgbWVtb3J5KVwmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ0ND1jb25maWcgUEFHRV9PRkZTRVRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTAtXHRkZWZhdWx0IDB4QzAwMDAwMDBcbmFyY2gveDg2L0tjb25maWc6MTQ1MTpcdGRlcGVuZHMgb24gWDg2XzMyXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTItXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNDU2PWNvbmZpZyBYODZfUEFFXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTctXHRib29sIFwmIzM0O1BBRSAoUGh5c2ljYWwgQWRkcmVzcyBFeHRlbnNpb24pIFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTQ1ODpcdGRlcGVuZHMgb24gWDg2XzMyIFx1MDAyNlx1MDAyNiBYODZfSEFWRV9QQUVcbmFyY2gveDg2L0tjb25maWctMTQ1OS1cdHNlbGVjdCBQSFlTX0FERFJfVF82NEJJVFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ2Nj1jb25maWcgWDg2X0RJUkVDVF9HQlBBR0VTXG5hcmNoL3g4Ni9LY29uZmlnLTE0NjctXHRkZWZfYm9vbCB5XG5hcmNoL3g4Ni9LY29uZmlnOjE0Njg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNDY5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ3NT1jb25maWcgWDg2X0NQQV9TVEFUSVNUSUNTXG5hcmNoL3g4Ni9LY29uZmlnLTE0NzYtXHRib29sIFwmIzM0O0VuYWJsZSBzdGF0aXN0aWMgZm9yIENoYW5nZSBQYWdlIEF0dHJpYnV0ZVwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNDc3Olx0ZGVwZW5kcyBvbiBERUJVR19GU1xuYXJjaC94ODYvS2NvbmZpZy0xNDc4LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTQ4OD1jb25maWcgQU1EX01FTV9FTkNSWVBUXG5hcmNoL3g4Ni9LY29uZmlnLTE0ODktXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgTWVtb3J5IEVuY3J5cHRpb24gKFNNRSkgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNDkwOlx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IENQVV9TVVBfQU1EXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTE6XHRkZXBlbmRzIG9uIEVGSV9TVFVCXG5hcmNoL3g4Ni9LY29uZmlnLTE0OTItXHRzZWxlY3QgRE1BX0NPSEVSRU5UX1BPT0xcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1MDU9Y29uZmlnIE5VTUFcbmFyY2gveDg2L0tjb25maWctMTUwNi1cdGJvb2wgXCYjMzQ7TlVNQSBNZW1vcnkgQWxsb2NhdGlvbiBhbmQgU2NoZWR1bGVyIFN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTUwNzpcdGRlcGVuZHMgb24gU01QXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDg6XHRkZXBlbmRzIG9uIFg4Nl82NFxuYXJjaC94ODYvS2NvbmZpZy0xNTA5LVx0c2VsZWN0IFVTRV9QRVJDUFVfTlVNQV9OT0RFX0lEXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTIzPWNvbmZpZyBBTURfTlVNQVxuLS1cbmFyY2gveDg2L0tjb25maWctMTUyNS1cdHByb21wdCBcJiMzNDtPbGQgc3R5bGUgQU1EIE9wdGVyb24gTlVNQSBkZXRlY3Rpb25cJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTUyNjpcdGRlcGVuZHMgb24gWDg2XzY0IFx1MDAyNlx1MDAyNiBOVU1BIFx1MDAyNlx1MDAyNiBQQ0lcbmFyY2gveDg2L0tjb25maWctMTUyNy1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1MzQ9Y29uZmlnIFg4Nl82NF9BQ1BJX05VTUFcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE1MzYtXHRwcm9tcHQgXCYjMzQ7QUNQSSBOVU1BIGRldGVjdGlvblwmIzM0O1xuYXJjaC94ODYvS2NvbmZpZzoxNTM3Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IE5VTUEgXHUwMDI2XHUwMDI2IEFDUEkgXHUwMDI2XHUwMDI2IFBDSVxuYXJjaC94ODYvS2NvbmZpZy0xNTM4LVx0c2VsZWN0IEFDUElfTlVNQVxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU0Mj1jb25maWcgTk9ERVNfU0hJRlRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTE1NDctXHRkZWZhdWx0IFwmIzM0OzNcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTU0ODpcdGRlcGVuZHMgb24gTlVNQVxuYXJjaC94ODYvS2NvbmZpZy0xNTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L0tjb25maWc9MTU1Mz1jb25maWcgQVJDSF9GTEFUTUVNX0VOQUJMRVxuYXJjaC94ODYvS2NvbmZpZy0xNTU0LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxNTU1Olx0ZGVwZW5kcyBvbiBYODZfMzIgXHUwMDI2XHUwMDI2ICFOVU1BXG5hcmNoL3g4Ni9LY29uZmlnLTE1NTYtXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTY1PWNvbmZpZyBBUkNIX1NFTEVDVF9NRU1PUllfTU9ERUxcbmFyY2gveDg2L0tjb25maWctMTU2Ni1cdGRlZl9ib29sIHlcbmFyY2gveDg2L0tjb25maWc6MTU2NzpcdGRlcGVuZHMgb24gQVJDSF9TUEFSU0VNRU1fRU5BQkxFIFx1MDAyNlx1MDAyNiBBUkNIX0ZMQVRNRU1fRU5BQkxFXG5hcmNoL3g4Ni9LY29uZmlnLTE1NjgtXG5hcmNoL3g4Ni9LY29uZmlnPTE1Njk9Y29uZmlnIEFSQ0hfTUVNT1JZX1BST0JFXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXHRib29sIFwmIzM0O0VuYWJsZSBzeXNmcyBtZW1vcnkvcHJvYmUgaW50ZXJmYWNlXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnOjE1NzE6XHRkZXBlbmRzIG9uIE1FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzItXHRoZWxwXG4tLVxuYXJjaC94ODYvS2NvbmZpZz0xNTc3PWNvbmZpZyBBUkNIX1BST0NfS0NPUkVfVEVYVFxuYXJjaC94ODYvS2NvbmZpZy0xNTc4LVx0ZGVmX2Jvb2wgeVxuYXJjaC94ODYvS2NvbmZpZzoxNTc5Olx0ZGVwZW5kcyBvbiBYODZfNjQgXHUwMDI2XHUwMDI2IFBST0NfS0NPUkVcbmFyY2gveDg2L0tjb25maWctMTU4MC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTE1ODk9Y29uZmlnIFg4Nl9QTUVNX0xFR0FDWVxuYXJjaC94ODYvS2NvbmZpZy0xNTkwLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBub24tc3RhbmRhcmQgTlZESU1NcyBhbmQgQURSIHByb3RlY3RlZCBtZW1vcnlcJiMzNDtcbmFyY2gveDg2L0tjb25maWc6MTU5MTpcdGRlcGVuZHMgb24gUEhZU19BRERSX1RfNjRCSVRcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTIzMgoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiA3NDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBDaGFuZ2VzIGZvciBWTSBEZWF0aCBIYW5kbGluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZSwgZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHMgYW5kIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbnMgaW1wYWN0ZWQuIEZpcnN0LCBJIG5lZWQgdG8gbGlzdCB0aGUgcmVsZXZhbnQga2VybmVsIGNvbmZpZ3MuIEkgcXVpY2tseSBzZWUgdGhhdCBgSU5URUxfVERYX0hPU1RgIGRlcGVuZHMgb24gYFg4Nl82NGAsIGBDUFVfU1VQX0lOVEVMYCwgYW5kIGBYODZfWDJBUElDYCwgbWVhbmluZyB0aGF0IGBLVk1fSU5URUxfVERYYCBpcyB2YWxpZCBpbiB0aGlzIGNhc2UuIAoKTXkgaW5pdGlhbCBjb25maWcgbGlzdCBpczogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBgS1ZNX0lOVEVMX1REWGAuIEJ1dCB3YWl0LCBgS1ZNX0lOVEVMX1REWGAgcmVsaWVzIG9uIGBJTlRFTF9URFhfSE9TVGAsIHNvIHRoYXQgbmVlZHMgdG8gYmUgaW5jbHVkZWQgYXMgd2VsbC4gQWxzbyBgSU5URUxfVERYX0hPU1RgIGRlcGVuZHMgb24gYFg4Nl9YMkFQSUNgLCBzbyB0aGUgbGlzdCBpcyB1cGRhdGVkLiBMZXQmIzM5O3MgbWFrZSB0aGF0IGV4cGxpY2l0OiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYEtWTV9JTlRFTF9URFhgLCBhbmQgYElOVEVMX1REWF9IT1NUYC4KCk5vdywgdGhlIHBhdGNoJiMzOTtzIGNvcmUgZnVuY3Rpb24gaXMgY2hhbmdpbmcgaG93IGBLVk1fUkVRX1ZNX0RFQURgIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhlIGNoYW5nZSBmcm9tIGBrdm1fY2hlY2tfcmVxdWVzdGAgdG8gYGt2bV90ZXN0X3JlcXVlc3RgLiBUaGlzIG1lYW5zIHRoZSBWTSYjMzk7cyBkZWFkIHN0YXRlIHBlcnNpc3RzIGFmdGVyIGJlaW5nIGNoZWNrZWQuIEEgY3J1Y2lhbCBkZXRhaWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRoYXQgSSBrbm93IHRoZSBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgYXQsIHNvIEkgZG91YmxlLWNoZWNrZWQgdGhlIG5hbWUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyB0aGUgcmlnaHQgZnVuY3Rpb24uIEkmIzM5O20gYWxzbyBjb25maXJtaW5nIHdoYXQgdGhlIGNvbmZpZyBzeW1ib2xzIGFyZSB0byBjb25maXJtIG91ciBpbml0aWFsIGZpbmRpbmdzLiBgQ09ORklHX0tWTV9JTlRFTF9URFhgIGFuZCBgQ09ORklHX0lOVEVMX1REWF9IT1NUYCBsaXZlIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZyBmaWxlcywgYWxvbmcgd2l0aCBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuIEkgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcyB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZXMgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCwgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBTbywgYXJtNjQgYW5kIHg4NiBhcmUgaW1wYWN0ZWQuCgpJJiMzOTt2ZSBnb3QgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlcy4KCk15IGZvY3VzIHN5bWJvbHMgYXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4KCk5vdywgSSYjMzk7bGwgcGFja2FnZSB1cCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUwmIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7LAogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDssCiAgICAmIzM0O0lOVEVMX1REWF9IT1NUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjoxMy4zNjYxODA2NjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDUwNDAzNjczNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fSU5URUxcIixcbiAgICBcIktWTV9BTURcIixcbiAgICBcIktWTV9JTlRFTF9URFhcIixcbiAgICBcIklOVEVMX1REWF9IT1NUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIHRvIGBrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSlgIGluIHNldmVyYWwgS1ZNIGNvbXBvbmVudHMgKGFybTY0LCB4ODYgTU1VLCBURFgsIHg4NiBjb3JlKS4gVGhpcyBwcmV2ZW50cyB0aGUgYEtWTV9SRVFfVk1fREVBRGAgZmxhZyBmcm9tIGJlaW5nIGNsZWFyZWQgd2hlbiBjaGVja2VkLCBlbnN1cmluZyB0aGF0IGEgZGVhZCBWTSBzdGF5cyBkZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBLVk0gbG9naWMgdGhhdCBhZmZlY3RzIFZNIGV4ZWN1dGlvbiBhbmQgZmF1bHQgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjEzLjM2NjE4NzgxMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MDI1MjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTY2OWM3ODJhYzZlMTljNGRmMmQ1ZmY1YzYzODgzZWIxZDQzNzdjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjI2OjEyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcXG5pbmRleCA1MGFkZmZmNzViZTgyLi5hNTZlYWQ0MjM4OTdiIDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jXFxuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcXG5AQCAtMTEwOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBrdm1fdmNwdV9zdXNwZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gc3RhdGljIGludCBjaGVja192Y3B1X3JlcXVlc3RzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xcbi1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcXG4rXFx0XFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbiBcXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9TTEVFUCwgdmNwdSkpXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbkBAIC01MDMzLDcgKzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcXG4gXFx0XFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlRSO1xcbiBcXG4tXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiBcXG4gXFx0XFx0Y29uZF9yZXNjaGVkKCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmMgYi9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXFxuaW5kZXggYjI3MmMyMDU4NmE3NC4uNmM4NDJlOTE5MWE1MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xcbkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFxuLVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpIHtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTztcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5AQCAtODA2MCw3ICs4MDYwLDcgQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0Ym9vbCByZXFfaW1tZWRpYXRlX2V4aXQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7XFxuLVxcdFxcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XFxuK1xcdFxcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpIHtcXG4gXFx0XFx0XFx0ciA9IC1FSU87XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuQEAgLTIzMjQsMTMgKzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRyZXR1cm4gdGVzdF9iaXQocmVxIFxcdTAwMjYgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKilcXHUwMDI2dmNwdS1cXHUwMDNlcmVxdWVzdHMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuK1xcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcXG4rXFxuIFxcdGNsZWFyX2JpdChyZXEgXFx1MDAyNiBLVk1fUkVRVUVTVF9NQVNLLCAodm9pZCAqKVxcdTAwMjZ2Y3B1LVxcdTAwM2VyZXF1ZXN0cyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4rXFx0LyogT25jZSBhIFZNIGlzIGRlYWQsIGl0IG5lZWRzIHRvIHN0YXkgZGVhZC4gKi9cXG4rXFx0QlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpO1xcbitcXG4gXFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QocmVxLCB2Y3B1KSkge1xcbiBcXHRcXHRrdm1fY2xlYXJfcmVxdWVzdChyZXEsIHZjcHUpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MTMuOTM3MjU4NTg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA0NDY5MjgwMzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjY5Yzc4MmFjNmUxOWM0ZGYyZDVmZjVjNjM4ODNlYjFkNDM3N2M4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwMToyNjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbmluZGV4IDUwYWRmZmY3NWJlODIuLmE1NmVhZDQyMzg5N2IgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uY1xuKysrIGIvYXJjaC9hcm02NC9rdm0vYXJtLmNcbkBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IGt2bV92Y3B1X3N1c3BlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHN0YXRpYyBpbnQgY2hlY2tfdmNwdV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0aWYgKGt2bV9yZXF1ZXN0X3BlbmRpbmcodmNwdSkpIHtcbi1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4rXHRcdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfVk1fREVBRCwgdmNwdSkpXG4gXHRcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1NMRUVQLCB2Y3B1KSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggYzUxOWU4ZThkNjQ2Zi4uZWMzNGNhYTA2YjZhNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC01MDMzLDcgKzUwMzMsNyBAQCBzdGF0aWMgaW50IGt2bV90ZHBfcGFnZV9wcmVmYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSxcbiBcdFx0aWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdHJldHVybiAtRUlOVFI7XG4gXG4tXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKVxuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKVxuIFx0XHRcdHJldHVybiAtRUlPO1xuIFxuIFx0XHRjb25kX3Jlc2NoZWQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggYjI3MmMyMDU4NmE3NC4uNmM4NDJlOTE5MWE1MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcbkBAIC0xOTk1LDcgKzE5OTUsNyBAQCBzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdGlmIChrdm1fdmNwdV9oYXNfZXZlbnRzKHZjcHUpIHx8IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKVxuIFx0XHRcdGJyZWFrO1xuIFxuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0cmV0ID0gLUVJTztcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggZDk0YjU5MTQwYzQ1Mi4uMGFmNGI0YTk1YzJkZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtODA2MCw3ICs4MDYwLDcgQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGJvb2wgcmVxX2ltbWVkaWF0ZV9leGl0ID0gZmFsc2U7XG4gXG4gXHRpZiAoa3ZtX3JlcXVlc3RfcGVuZGluZyh2Y3B1KSkge1xuLVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9WTV9ERUFELCB2Y3B1KSkge1xuK1x0XHRpZiAoa3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpKSB7XG4gXHRcdFx0ciA9IC1FSU87XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IDAzYmZjOTI4NjRiNmUuLmNmN2ZlODM1YzRhZDIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbisrKyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuQEAgLTIzMjQsMTMgKzIzMjQsMTggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV90ZXN0X3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0cmV0dXJuIHRlc3RfYml0KHJlcSBcdTAwMjYgS1ZNX1JFUVVFU1RfTUFTSywgKHZvaWQgKilcdTAwMjZ2Y3B1LVx1MDAzZXJlcXVlc3RzKTtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIGt2bV9jbGVhcl9yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbitzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQga3ZtX2NsZWFyX3JlcXVlc3QoaW50IHJlcSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbitcdEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKTtcbitcbiBcdGNsZWFyX2JpdChyZXEgXHUwMDI2IEtWTV9SRVFVRVNUX01BU0ssICh2b2lkICopXHUwMDI2dmNwdS1cdTAwM2VyZXF1ZXN0cyk7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fY2hlY2tfcmVxdWVzdChpbnQgcmVxLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIGt2bV9jaGVja19yZXF1ZXN0KGludCByZXEsIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4rXHQvKiBPbmNlIGEgVk0gaXMgZGVhZCwgaXQgbmVlZHMgdG8gc3RheSBkZWFkLiAqL1xuK1x0QlVJTERfQlVHX09OKHJlcSA9PSBLVk1fUkVRX1ZNX0RFQUQpO1xuK1xuIFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QocmVxLCB2Y3B1KSkge1xuIFx0XHRrdm1fY2xlYXJfcmVxdWVzdChyZXEsIHZjcHUpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MTMuOTM3MjYxMjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU4OTU1NTkwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdHdlYWtzIHNvbWUgS1ZNIGNvZGUuIEl0J3MgbWFraW5nIGEgc2VlbWluZ2x5IG1pbm9yIGNoYW5nZTogc3dhcHBpbmcgb3V0IGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbiBhIGZldyBrZXkgcGxhY2VzIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBmaWxlczogYGFybTY0L2FybS5jYCwgYHg4Ni9tbXUvbW11LmNgLCBgeDg2L3ZteC90ZHguY2AsIGFuZCBgeDg2L3g4Ni5jYC4gVGhlIHBhdGNoIGFsc28gdGhyb3dzIGluIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgaW4gYGt2bV9jbGVhcl9yZXF1ZXN0YCBhbmQgYGt2bV9jaGVja19yZXF1ZXN0YCBpbiBga3ZtX2hvc3QuaGAuXG5cblRoZSBjb3JlIG9mIHRoaXMgaXMgZnVuY3Rpb25hbC4gYGt2bV9jaGVja19yZXF1ZXN0YCAqY2xlYXJzKiB0aGUgcmVxdWVzdCBiaXQsIHdoaWxlIGBrdm1fdGVzdF9yZXF1ZXN0YCBvbmx5ICp0ZXN0cyogaXQuIFRoZSBjb21tZW50IGluIHRoZSBwYXRjaCBpcyBwcmV0dHkgZXhwbGljaXQ6IFwiT25jZSBhIFZNIGlzIGRlYWQsIGl0IG5lZWRzIHRvIHN0YXkgZGVhZC5cIiBTbywgaXQgbG9va3MgbGlrZSB0aGlzIGlzIGEgYnVnIGZpeCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gZG9lc24ndCByZXN1cnJlY3QgaXRzZWxmIGR1ZSB0byB0aGUgcmVxdWVzdCBiZWluZyBjbGVhcmVkIGluY29ycmVjdGx5LiBNYWtlcyBzZW5zZS5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3Igc3VidGxlIHN0YXRlIGNoYW5nZXMgaW4gYSBjb3JlIGNvbXBvbmVudCBsaWtlIHRoaXMsIEknbSB0aGlua2luZyB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgYSB2aWFibGUgc2V0IG9mIGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzIHRvIHRhcmdldC5cblxuRm9yIGNvbmZpZyBvcHRpb25zLCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgS1ZNIHN1YnN5c3RlbSBpdHNlbGYsIHBsdXMgYXJjaC1zcGVjaWZpYyBvcHRpb25zOiBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuXG5cbk5vdywgZm9yIGZvY3VzIHN5bWJvbHMsIHRoZSBwYXRjaCBpdHNlbGYgZ2l2ZXMgYSBmZXcgc3VnZ2VzdGlvbnMgYmFzZWQgb24gdGhlIGxvY2F0aW9ucyBvZiB0aGUgZnVuY3Rpb24gY2hhbmdlczogYGNoZWNrX3ZjcHVfcmVxdWVzdHNgIChhcm02NCksIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgICh4ODYpLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCAoeDg2KSwgYW5kIGB2Y3B1X2VudGVyX2d1ZXN0YCAoeDg2KS4gU28sIGxldCdzIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmVuJ3QgaW5saW5lZCBvciBzdGF0aWM7IHdlIHdhbnQgdGhlIGVudHJ5cG9pbnRzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGF0IGBjaGVja192Y3B1X3JlcXVlc3RzYCwgYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAsIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIGFuZCBgdmNwdV9lbnRlcl9ndWVzdGAgYXJlIGFsbCBzdGF0aWMgaW4gdGhlaXIgcmVzcGVjdGl2ZSBmaWxlcy4gVGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIHRoZSBwcm9tcHQgc3RhdGVkIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucy5cblxuT2theSwgbGV0J3MgZmluZCB0aGUgY2FsbGVycyBvZiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBzZWUgaWYgdGhleSBhcmUgbm9uLXN0YXRpYzsgdGhleSBzaG91bGQgYmUgYmV0dGVyIHRhcmdldHMuXG5cbkZvciBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AgaW4gYGFyY2gvYXJtNjQva3ZtL2FybS5jYCwgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBvbmUgY2FsbGVyLiBUaGlzIGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MjIuNTI2ODIwMTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwMTYxNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV90ZHBfcGFnZV9wcmVmYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9tbXUvbW11LmM9NDk1NT1zdGF0aWMgaW50IGt2bV9tbXVfZG9fcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGNyMl9vcl9ncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwMTktXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDIwOnN0YXRpYyBpbnQga3ZtX3RkcF9wYWdlX3ByZWZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLFxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTAyMS1cXHRcXHRcXHRcXHQgdTY0IGVycm9yX2NvZGUsIHU4ICpsZXZlbClcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM9NTA2ND1sb25nIGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwOTctXFx0ICovXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDk4OlxcdHIgPSBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQodmNwdSwgcmFuZ2UtXFx1MDAzZWdwYSB8IGRpcmVjdF9iaXRzLCBlcnJvcl9jb2RlLCBcXHUwMDI2bGV2ZWwpO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtNTA5OS1cXHRpZiAociBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjIyLjYxNjk4Njk4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTU4NTIxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIE1lbW9yeSBGYXVsdCBIYW5kbGluZyBGbG93KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgS1ZNIG1lbW9yeSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGFyb3VuZCBwcmUtZmF1bHRpbmcuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbCBmb3IgcHJlcGFyaW5nIG1lbW9yeSBwYWdlcywgbGlrZWx5IHByaW9yIHRvIGEgbW9yZSBnZW5lcmFsIGZhdWx0LlxuXG5TcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGNhbGwgdG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uLiBURFAgKFRhZ2dlZCBEYXRhIFBhZ2UpIGlzIGEga2V5IGFzcGVjdCBoZXJlLCBhbmQgdGhlIFwicHJlLWZhdWx0XCIgc3VnZ2VzdHMgd2UncmUgcHJvYWN0aXZlbHkgc2V0dGluZyB1cCBzb21ldGhpbmcuIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYGt2bV90ZHBfcGFnZV9wcmVmYXVsdGAgdG8gdW5kZXJzdGFuZCAqd2hhdCogaXQncyBzZXR0aW5nIHVwIGFuZCAqd2h5Ki4gSXMgdGhpcyByZWxhdGVkIHRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgY2hlY2tzLCBvciBib3RoPyBBcmUgd2UgcHJlLWZhdWx0aW5nIHRvIG1ha2UgYWNjZXNzIGZhc3RlciBvciB0byBlbnN1cmUgc29tZXRoaW5nIGxpa2UgYSB3cml0ZSBkb2Vzbid0IHZpb2xhdGUgYSBzaGFkb3cgcGFnZT9cblxuTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIEl0IHNlZW1zIHJlbGV2YW50IHRvIHRoZSBwcmUtZmF1bHRpbmcgZmxvdywgYXMgaXQgY29tZXMgdXAgaW4gdGhlIGNvbnRleHQgb2YgVERYIChUcnVzdGVkIERvbWFpbiBFeHRlbnNpb24pIHN5c3RlbXMsIHdoaWNoIGlzIHNvbWV0aGluZyB2ZXJ5IGhpZ2gtbGV2ZWwuIEkgYW0gZ29pbmcgdG8gZXhwbG9yZSB0aGUgY29kZSBpbiBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AgdG8gc2VlIGhvdyBFUFQgKEV4dGVuZGVkIFBhZ2UgVGFibGVzKSB2aW9sYXRpb25zIGFyZSBiZWluZyBoYW5kbGVkIGluIHRoZSBjb250ZXh0IG9mIFREWC4gV2hhdCBpcyB0aGUgYXJjaGl0ZWN0dXJlIGRvaW5nIHRoYXQgbmVlZHMgcHJlLWZhdWx0aW5nPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSB2aW9sYXRpb24/IElzIHRoaXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIGd1ZXN04oCZcyB2aWV3IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgaW4gVERYPyBUaGlzIHdpbGwgYmUgdmVyeSBpbXBvcnRhbnQgZm9yIG1lIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgcGljdHVyZS4gU28gZmFyIEkga25vdyB0aGF0IGEgcHJlLWZhdWx0IGhhcyB0YWtlbiBwbGFjZS4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgcHJlLWZhdWx0aW5nIGlzIGRvaW5nLCBhbmQgd2h5IGl0IGlzIGRvaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTExLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MjcuMDEyODQxNzE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzE5MzcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC90ZHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE5MDM9c3RhdGljIGlubGluZSBib29sIHRkeF9pc19zZXB0X3Zpb2xhdGlvbl91bmV4cGVjdGVkX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xOTEzLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTkxNDpzdGF0aWMgaW50IHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xOTE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjAzMT1pbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjEwNi1cXHRjYXNlIEVYSVRfUkVBU09OX0VQVF9WSU9MQVRJT046XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyMTA3OlxcdFxcdHJldHVybiB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb24odmNwdSk7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMTA4LVxcdGNhc2UgRVhJVF9SRUFTT05fT1RIRVJfU01JOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjoyNy4xMTYwMzk2MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2Njg1Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6XG5cbioqQW5hbHl6aW5nIFREWCBFeGl0IEhhbmRsaW5nIGluIEtWTSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBURFggZXhpdHMgYXJlIGhhbmRsZWQgaW4gdGhlIEtWTSBjb250ZXh0LiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYSBjYWxsIHRvIGB0ZHhfaGFuZGxlX2V4aXRgIHRyaWdnZXJzIGEgZnVydGhlciBhY3Rpb24sIHNwZWNpZmljYWxseSBhIGNhbGwgdG8gYHRkeF9oYW5kbGVfZXB0X3Zpb2xhdGlvbmAuIFRoYXQgc3VnZ2VzdHMgdGhhdCBgdGR4X2hhbmRsZV9leGl0YCBpcyB0aGUgZ2VuZXJhbCBlbnRyeSBwb2ludCBmb3IgYW55IFREWCBleGl0LCBhbmQgaXQgdGhlbiBkaXNwYXRjaGVzIHRvIGB0ZHhfaGFuZGxlX2VwdF92aW9sYXRpb25gIHdoZW4gdGhlIGV4aXQgaXMgcmVsYXRlZCB0byBhbiBFUFQgdmlvbGF0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgZGVzaWduIHBhdHRlcm4gZm9yIGhhbmRsaW5nIGRpZmZlcmVudCBraW5kcyBvZiBleGNlcHRpb25zOiBhIHRvcC1sZXZlbCBmdW5jdGlvbiB0aGF0IGV4YW1pbmVzIHRoZSBleGl0IHJlYXNvbiBhbmQgcm91dGVzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBoYW5kbGVyLlxuXG5Ob3cgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zIGluc2lkZSBgdmNwdV9lbnRlcl9ndWVzdGAsIGxvY2F0ZWQgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoaXMgaXMgdGhlIGNvcmUgZnVuY3Rpb24gd2hlcmUgdGhlIHZpcnR1YWwgQ1BVIHJlc3VtZXMgZXhlY3V0aW9uIHdpdGhpbiB0aGUgZ3Vlc3QuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIGluIGRldGVybWluaW5nIGhvdyB0aGVzZSBleGl0cyBhcmUgZGV0ZWN0ZWQsIGhvdyB0aGV5IGludGVycnVwdCB0aGUgZ3Vlc3QsIGFuZCBob3cgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgaGFuZGxlci4gSSdtIGFzc3VtaW5nIHRoYXQgaW5zaWRlIGB2Y3B1X2VudGVyX2d1ZXN0YCwgdGhlcmUgYXJlIGNoZWNrcyBmb3IgVERYLXJlbGF0ZWQgY29uZGl0aW9ucyBhbmQsIGlmIGFuIGV4aXQgaXMgcGVuZGluZywgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXJzIGFyZSBpbnZva2VkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgdG8gY29uZmlybSB0aGlzLCBzcGVjaWZpY2FsbHkgaG93IGB0ZHhfaGFuZGxlX2V4aXRgIGlzIGludGVncmF0ZWQgd2l0aGluIHRoZSBDUFUgZW50cnkgc2VxdWVuY2UuIEknbGwgbmVlZCB0byBsb29rIGZvciBjYWxscyB0byB0aGF0IGZ1bmN0aW9uLCBvciBmbGFncyB0aGF0IHdvdWxkIGVuYWJsZSB0aGF0IGhhbmRsZXIgdG8gZ2V0IGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczOSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjMwLjk2MjcyNzgyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjI5MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZjcHVfZW50ZXJfZ3Vlc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ2LVxcdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjU0NzpcXHQgKiB2Y3B1X2VudGVyX2d1ZXN0KCkgcmVxdWVzdHMgYW4gaW1tZWRpYXRlIGV4aXQsIGFuZCB0aGUgZ3Vlc3RcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVxcdCAqIHNob3VsZG4ndCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yMDI2PXN0YXRpYyBpbmxpbmUgdm9pZCBrdm1fdmNwdV9mbHVzaF90bGJfY3VycmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjAzMy0gKiBTZXJ2aWNlIFxcXCJsb2NhbFxcXCIgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjIwMzQ6ICogY29udGV4dC4gIEluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIGV2ZW50IGhhbmRsaW5nIGluIHZjcHVfZW50ZXJfZ3Vlc3QoKSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjAzNS0gKiBUTEIgZmx1c2hlcyB0aGF0IGFyZSB0YXJnZXRlZCBhdCBhbiBNTVUgY29udGV4dCBhbHNvIG5lZWQgdG8gYmUgc2VydmljZWRcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03ODkzPXZvaWQgX19rdm1fc2V0X29yX2NsZWFyX2FwaWN2X2luaGliaXQoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTMtXFx0XFx0ICogS2ljayBhbGwgdkNQVXMgYmVmb3JlIHNldHRpbmcgYXBpY3ZfaW5oaWJpdF9yZWFzb25zIHRvIGF2b2lkXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTQ6XFx0XFx0ICogZmFsc2UgcG9zaXRpdmVzIGluIHRoZSBzYW5pdHkgY2hlY2sgV0FSTiBpbiB2Y3B1X2VudGVyX2d1ZXN0KCkuXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTUtXFx0XFx0ICogVGhpcyB0YXNrIHdpbGwgd2FpdCBmb3IgYWxsIHZDUFVzIHRvIGFjayB0aGUga2ljayBJUlEgYmVmb3JlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxNy1cXHRcXHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4ndFxcbmFyY2gveDg2L2t2bS94ODYuYzo3OTE4OlxcdFxcdCAqIHJlZG8gdmNwdV9lbnRlcl9ndWVzdCgpIHdpdGhvdXQgc2VlaW5nIHRoZSBuZXcgaW5oaWJpdCBzdGF0ZS5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOS1cXHRcXHQgKlxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTAtICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgwNTE6c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODA1Mi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODYzMT1zdGF0aWMgaW50IHZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjQ1LVxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDY6XFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzEuMDIxOTYzMDg4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNDAxODI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBFeGVjdXRpb24gRmxvdyBvZiBgdmNwdV9ydW5gKipcblxuUmlnaHQsIGB2Y3B1X3J1bmAgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgdmlydHVhbCBDUFUncyBleGVjdXRpb24gbG9vcC4gQW5kIGl0IGltbWVkaWF0ZWx5IGNhbGxzIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLCBpbml0aWFsaXppbmcgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gU2luY2UgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIEkgaW1tZWRpYXRlbHkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgZGV0ZXJtaW5lIGFsbCBjYWxsIHNpdGVzLiBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBjYWxsLiBJIHdhbnQgdG8gc2VlIHByZWNpc2VseSB3aGF0IHRyaWdnZXJzIGB2Y3B1X3J1bmAuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgb2YgYHZjcHVfcnVuYCBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgVkNQVSBzY2hlZHVsaW5nIGFuZCBjb250ZXh0LXN3aXRjaGluZyBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbnMgd2hlcmUgdGhpcyBjcml0aWNhbCBmdW5jdGlvbiBpcyBpbnZva2VkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA0MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjM0LjA0NTk4Mzc2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA2NjcwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xNTY5PXN0YXRpYyB2b2lkIHB2Y2xvY2tfdXBkYXRlX3ZtX2d0b2RfY29weShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJhY2t3YXJkc190c2Nfb2JzZXJ2ZWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU5MS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXFx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjI2OlxcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXFx0ICogd2hlbiB0aGlzIGlzIHRydWUsIGZvciBleGFtcGxlIGFsbG93aW5nIHRoZSB2Q1BVIHRvIGJlIG1hcmtlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMzc9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDYtICogQ2FsbGVkIHdpdGhpbiBrdm0tXFx1MDAzZXNyY3UgcmVhZCBzaWRlLlxcbmFyY2gveDg2L2t2bS94ODYuYzo4MDQ3OiAqIFJldHVybnMgMSB0byBsZXQgdmNwdV9ydW4oKSBjb250aW51ZSB0aGUgZ3Vlc3QgZXhlY3V0aW9uIGxvb3Agd2l0aG91dFxcbmFyY2gveDg2L2t2bS94ODYuYy04MDQ4LSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1MT1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzNjc6XFx0XFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM2OC1cXHRcXHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTAzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NTA0OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTU0PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1NjppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTcte1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTU4OlxcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXFx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1OS1cXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTYzPXN0YXRpYyBpbmxpbmUgaW50IHZjcHVfYmxvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1Njc6XFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjgtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTkzLVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTk0OlxcdFxcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5NS1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjMwLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVxcdTAwM2VzcmN1IHJlYWQgc2lkZS4gICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzE6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDQtXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ1OlxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDYtXFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcxOT1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3Mjc6XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjgtXFx0XFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODgxPWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4NjpcXHRyID0gdmNwdV9ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjM0LjExNjY1NzI5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzUyODU3MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTSdzIFJ1biBFbnRyeXBvaW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGtpY2sgb2ZmIGEgS1ZNIHZpcnR1YWwgQ1BVJ3MgZXhlY3V0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLCBiZWNhdXNlIGl0J3MgaGFuZGxpbmcgdGhlIElPQ1RMIGNhbGwgYW5kIEknbSBndWVzc2luZyB0aGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZnJvbSB1c2Vyc3BhY2UuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGB2Y3B1X3J1bmAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyB0aG91Z2gsIGxldCdzIGFsc28gdGFrZSBhIGxvb2sgYXQgdGhlIEFSTTY0LXNwZWNpZmljIGltcGxlbWVudGF0aW9uOyBJJ2xsIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgYW5kIHNwZWNpZmljYWxseSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBzcGVjaWZpY3MgSSBuZWVkIGZvciB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBhbmQgY29uZmlybSBteSBpbml0aWFsIHRob3VnaHQgb24gdGhlIGVudHJ5cG9pbnQgYW5kIGl0cyBwbGFjZSBpbiB0aGUgZXhlY3V0aW9uIGZsb3cuIFRoaXMgd2lsbCBsZXQgbWUgc2VlIGlmIGFueXRoaW5nIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBoYXBwZW5zIGJlZm9yZSBgdmNwdV9ydW5gIGdldHMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzcuNDY5NTE4ODE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODI1NTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uYz0xMDY2PXN0YXRpYyBpbnQga3ZtX3ZjcHVfc3VzcGVuZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDkyLVxcdCAqIE90aGVyd2lzZSwgd2Ugd2VyZSB1bmJsb2NrZWQgdG8gcHJvY2VzcyBhIGRpZmZlcmVudCBldmVudCwgc3VjaCBhcyBhXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MTA5MzpcXHQgKiBwZW5kaW5nIHNpZ25hbC4gUmV0dXJuIDEgYW5kIGFsbG93IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkgdG9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMDk0LVxcdCAqIHByb2Nlc3MgdGhlIGV2ZW50Llxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MTIzMD1zdGF0aWMgaW50IG5vaW5zdHIga3ZtX2FybV92Y3B1X2VudGVyX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0MS0vKipcXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoxMjQyOiAqIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC0gdGhlIG1haW4gVkNQVSBydW4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBndWVzdCBjb2RlXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMTI0My0gKiBAdmNwdTpcXHRUaGUgVkNQVSBwb2ludGVyXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUwLSAqL1xcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjEyNTE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0xMjUyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6MzcuNTI3NzgwOTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjU2NDY4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS2V5IEtWTSBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gZGlyZWN0IG15IGF0dGVudGlvbiB3aXRoaW4gdGhpcyBLVk0gY29kZS4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzZWVtcyBsaWtlIGEgZ29vZCwgc29saWQgZW50cnkgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEl0J3MgYSBrZXkgZnVuY3Rpb24sIHRoZSBsaWtlbHkgY2VudGVyIG9mIG11Y2ggb2YgdGhlIGFjdGlvbi4gQnV0LCBsZXQncyBleHBsb3JlIGEgZmV3IG1vcmUgb3B0aW9ucyBiZWZvcmUgY29tbWl0dGluZy4gSSBzZWUgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAg4oCTIHRoYXQgb25lJ3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZyBmb3IgcG90ZW50aWFsIGludGVyYWN0aW9ucywgYW5kLCBpdCdzIG5vbi1zdGF0aWMsIHNvIGl0J3MgcHJvYmFibHkgaW1wb3J0YW50LiBBbmQsIGFoYSwgYHRkeF9oYW5kbGVfZXhpdGAhIFRoYXQncyBhbHNvIG5vbi1zdGF0aWMuIFRoaXMgb25lIGxvb2tzIHBhcnRpY3VsYXJseSByZWxldmFudC4gTGV0J3Mgc2VlLi4uIEknbGwgY2hlY2sgYHRkeF9oYW5kbGVfZXhpdGAgaW4gYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgIGZvciBtb3JlIGluZm9ybWF0aW9uLiBMb29rcyBsaWtlIGEgZ29vZCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjo0MS4xOTM0MzE3NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNjk1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRkeF9oYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdGR4LmM9OTI0PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTMyIHRkeF90b192bXhfZXhpdF9yZWFzb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NDktXFx0XFx0LypcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjk1MDpcXHRcXHQgKiBEZWZlciBLVk1fQlVHX09OKCkgdW50aWwgdGR4X2hhbmRsZV9leGl0KCkgYmVjYXVzZSB0aGlzIGlzIGluXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy05NTEtXFx0XFx0ICogbm9uLWluc3RydW1lbnRhYmxlIGNvZGUgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0xMTMyPXN0YXRpYyBpbnQgdGR4X2hhbmRsZV9leGNlcHRpb25fbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzNy1cXHQgKiBNYWNoaW5lIGNoZWNrcyBhcmUgaGFuZGxlZCBieSBoYW5kbGVfZXhjZXB0aW9uX2lycW9mZigpLCBvciBieVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MTEzODpcXHQgKiB0ZHhfaGFuZGxlX2V4aXQoKSB3aXRoIFREWF9OT05fUkVDT1ZFUkFCTEUgc2V0IGlmIGEgI01DIG9jY3VycyBvblxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMTEzOS1cXHQgKiBWTS1FbnRyeS4gIE5NSXMgYXJlIGhhbmRsZWQgYnkgdGR4X3ZjcHVfZW50ZXJfZXhpdCgpLlxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yMDE3PWludCB0ZHhfY29tcGxldGVfZW11bGF0ZWRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGVycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjAzMC1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjIwMzE6aW50IHRkeF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGZhc3RwYXRoX3QgZmFzdHBhdGgpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMDMyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6NDEuMjY1MTM2NzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2MDQwNTAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGB0ZHhfaGFuZGxlX2V4aXRgIGFuZCBNZW1vcnkgRmF1bHQgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBgdGR4X2hhbmRsZV9leGl0YCBpc24ndCBzdGF0aWMuIFRoYXQncyBnb29kIHRvIGtub3cuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBtZW1vcnkgZmF1bHQgaGFuZGxpbmcgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIHg4NiBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyB3b3Jrcywgc28gbGV0J3MgdGFrZSBhIGxvb2sgYXQgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaW4gYGFyY2gveDg2L2t2bS9tbXUvbW11LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBgdGR4X2hhbmRsZV9leGl0YCAob3IgKmlmKiBpdCBpbnRlcmFjdHMgd2l0aCBpdCksIGFzIG1lbW9yeSBmYXVsdHMgYXJlIGNyaXRpY2FsIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgYW5kIGEgVERYIGV4aXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGEgZmF1bHQuIEknbGwgbmVlZCB0byBzZWUgaWYgdGhlIG5vbi1zdGF0aWMgbmF0dXJlIG9mIGB0ZHhfaGFuZGxlX2V4aXRgIGlzIHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDUyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MjY6NDQuNDI1NTQ0Mjg0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDc0NzY0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL21tdS9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjMtXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSAqcmFuZ2UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ0LjUxNjI5NzE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI4MDY3MzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgSG90c3BvdHMgYW5kIENhbGwgQ2hhaW5zKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBwaW5wb2ludCB0aGUga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlIHdpdGhpbiB0aGlzIGNvZGViYXNlLiBJJ20gdGhpbmtpbmcgdGhlIHJlYWwgYm90dGxlbmVja3MsIHRoZSBhcmVhcyB3aGVyZSB3ZSdyZSBzcGVuZGluZyB0aGUgbW9zdCBjeWNsZXMsIGFyZSBwcm9iYWJseSBsaW5rZWQgdG8gdGhlc2UgZm9jdXMgc3ltYm9sczogYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCwgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAsIGFuZCBgdGR4X2hhbmRsZV9leGl0YC4gVGhlc2UgYXJlIG15IGluaXRpYWwgY2FuZGlkYXRlcyBmb3IgaG90c3BvdHMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSBhbSBnb2luZyB0byBzZWUgd2hpY2ggb2YgdGhlc2UgZnVuY3Rpb25zIGlzIHBvdGVudGlhbGx5IGNhbGxlZCBieSBhbnl0aGluZy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIHBhdGhzIHRvIHNlZSB3aGVyZSBgdGR4X2hhbmRsZV9leGl0YCBpcyBiZWluZyBpbnZva2VkLiBUaGF0IGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ3Ljc0NDM2NzYxNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzOTMxMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4X2hhbmRsZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE1Nz1zdGF0aWMgaW50IHZ0X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE2MC1cXHRpZiAoaXNfdGRfdmNwdSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNjE6XFx0XFx0cmV0dXJuIHRkeF9oYW5kbGVfZXhpdCh2Y3B1LCBmYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTYyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz05MjQ9c3RhdGljIF9fYWx3YXlzX2lubGluZSB1MzIgdGR4X3RvX3ZteF9leGl0X3JlYXNvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTk0OS1cXHRcXHQvKlxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6OTUwOlxcdFxcdCAqIERlZmVyIEtWTV9CVUdfT04oKSB1bnRpbCB0ZHhfaGFuZGxlX2V4aXQoKSBiZWNhdXNlIHRoaXMgaXMgaW5cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTk1MS1cXHRcXHQgKiBub24taW5zdHJ1bWVudGFibGUgY29kZSB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTExMzI9c3RhdGljIGludCB0ZHhfaGFuZGxlX2V4Y2VwdGlvbl9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM3LVxcdCAqIE1hY2hpbmUgY2hlY2tzIGFyZSBoYW5kbGVkIGJ5IGhhbmRsZV9leGNlcHRpb25faXJxb2ZmKCksIG9yIGJ5XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxMTM4OlxcdCAqIHRkeF9oYW5kbGVfZXhpdCgpIHdpdGggVERYX05PTl9SRUNPVkVSQUJMRSBzZXQgaWYgYSAjTUMgb2NjdXJzIG9uXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xMTM5LVxcdCAqIFZNLUVudHJ5LiAgTk1JcyBhcmUgaGFuZGxlZCBieSB0ZHhfdmNwdV9lbnRlcl9leGl0KCkuXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTIwMTc9aW50IHRkeF9jb21wbGV0ZV9lbXVsYXRlZF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgZXJyKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yMDMwLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjAzMTppbnQgdGR4X2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBmYXN0cGF0aClcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTIwMzIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MTQzPXZvaWQgdGR4X3ZjcHVfcHV0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTQ0OmludCB0ZHhfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oLTE0NS1cXHRcXHRlbnVtIGV4aXRfZmFzdHBhdGhfY29tcGxldGlvbiBmYXN0cGF0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjQ3LjgxNTc2NTc4MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDcyOTQ4NTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEV4aXQgSGFuZGxpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIEtWTS9WTVggY29kZSBhZ2Fpbiwgc3BlY2lmaWNhbGx5IHRoZSBleGl0IGhhbmRsaW5nLiBJIHNlZSB0aGF0IGB2dF9oYW5kbGVfZXhpdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyB1bHRpbWF0ZWx5IHJlc3BvbnNpYmxlIGZvciBkZWFsaW5nIHdpdGggVk0gZXhpdHMgd2l0aGluIHRoZSBWTVggYXJjaGl0ZWN0dXJlLiBUaGF0J3Mgbm8gc3VycHJpc2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgaW4gbW9yZSBkZXRhaWwuIFRoZSBicmVhZGNydW1iIEkndmUgZ290IGlzIHRoYXQgYHZ0X2hhbmRsZV9leGl0YCBjYWxscyBgdGR4X2hhbmRsZV9leGl0YC4gVGhhdCB0ZWxscyBtZSB0aGF0IGZvciBURFgtZW5hYmxlZCBzeXN0ZW1zIHRoZXJlJ3MgYSBzcGVjaWZpYywgbG93ZXItbGV2ZWwgaGFuZGxlciBiZWluZyBpbnZva2VkLiBUaGlzIG1ha2VzIHNlbnNlOyBURFggaW50cm9kdWNlcyBhIHdob2xlIHNldCBvZiBuZXcgZXhpdCByZWFzb25zIGFuZCBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyB0aGF0IHdvdWxkIG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGludGVncmF0aW9uIHdvcmtzLiBMZXQgbWUgY29uZmlybSB0aGUgY29udGV4dCBvZiBgdnRfaGFuZGxlX2V4aXRgIGFuZCB3aGVyZSBpdCBsaXZlczogYWgsIGl0J3MgZGVmaW5lZCBpbiBgYXJjaC94ODYva3ZtL3ZteC9tYWluLmNgLiBUaGF0IGdpdmVzIG1lIHRoZSByZWxldmFudCBzb3VyY2UgZmlsZSB0byBjaGVjayB0aGUgY2FsbCBzdGFjayBhbmQgdW5kZXJzdGFuZCBpdHMgaW50ZWdyYXRpb24gd2l0aCB0aGUgcmVzdCBvZiB0aGUgVk1YIGFyY2hpdGVjdHVyZS4gTmV4dCwgSSB3aWxsIGNoZWNrIHRoZSBjYWxsZXIvY2FsbGVlIHJlbGF0aW9uc2hpcHMgaW4gdGhpcyBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjUxLjI4ODcxNzgwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMyNzEyMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ0X2hhbmRsZV9leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTE0OT1zdGF0aWMgZmFzdHBhdGhfdCB2dF92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBydW5fZmxhZ3MpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy0xNTYtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6MTU3OnN0YXRpYyBpbnQgdnRfaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE1OC1cXHRcXHRcXHQgIGVudW0gZXhpdF9mYXN0cGF0aF9jb21wbGV0aW9uIGZhc3RwYXRoKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNjo1MS43MjE0MzUyMDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyODAyMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBLVk0veDg2IEludGVyYWN0aW9uKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBzb21lIGxvdy1sZXZlbCBLVk0gaW50ZXJhY3Rpb25zLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSBzZWUgdGhhdCBgdnRfaGFuZGxlX2V4aXRgIGlzIGEgY3J1Y2lhbCBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gYGt2bV94ODZfb3BzYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyB0aGlzIGlzIGEgY3JpdGljYWwgcG9pbnQgb2YgY29udHJvbCwgbGlrZWx5IGhhbmRsaW5nIFZNIGV4aXRzIG9mIHNvbWUga2luZC5cblxuTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIG1hcCB0aGlzIHdpdGhpbiB0aGUgS1ZNL3g4NiBjb250cm9sIGZsb3cuIFRvIGdldCBhIGJldHRlciBncmFzcCBvZiB0aGUgcmVsZXZhbnQgbG9naWMsIEkgc2hvdWxkIHRyYWNlIGl0IGluIHRoZSBicm9hZGVyIEtWTS94ODYgZWNvc3lzdGVtLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBJIHNob3VsZCBub3cgY29uc2lkZXIgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgdnRfaGFuZGxlX2V4aXRgIGNhbGxiYWNrIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSXQncyBjbGVhciB0aGF0IHRoZSBvdGhlciBzeW1ib2xzIGlkZW50aWZpZWQgYXJlIHNpZ25pZmljYW50OiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHNvIGl0J3MgYSBjcml0aWNhbCBzdGFydGluZyBwb2ludCB0byBjaGVjayBpZiBpdCdzIHg4NiBzcGVjaWZpYy5cblxuTm93IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzeW1ib2xzIGludGVyYWN0LiBJIHdhbnQgdG8gY2hlY2sgaG93IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGZpdCBpbnRvIHRoaXMgcGljdHVyZSwgZXNwZWNpYWxseSBpbiByZWxhdGlvbiB0byBgdnRfaGFuZGxlX2V4aXRgLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIHRob3NlIGNhbGxzIGlzIHBhcmFtb3VudCB0byBmaWd1cmluZyBvdXQgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ0MiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjU1Ljc0OTQ1ODI2M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzMTYzNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz04ODQ0PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4ODAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4ODE6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg4Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI2OjU1LjgxNzc3OTA4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjA0MjM2OTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtWTSBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgcGF0aCBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIEtWTSBjb2RlLiBSaWdodCwgKmBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAqIC0gSSBzZWVtIHRvIHJlY2FsbCB0aGF0J3MgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCBxdWlja2x5LlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgc2hvdWxkIGNoZWNrIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19LVk1fSU5URUxgIGFzIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzLCBidXQgSSBoYXZlIGEgZmVlbGluZyB0aGVyZSBtaWdodCBiZSBtb3JlIGludm9sdmVkLiBHaXZlbiB0aGUgY29udGV4dCwgSSB0aGluayBURFggaGFzIHRvIGZhY3RvciBpbnRvIHRoaXMuIEFuZCwgeWVzLCBURFggaXMgdmVyeSBsaWtlbHkgY29ubmVjdGVkIHRvIGBDT05GSUdfSU5URUxfVERYX0hPU1RgLiBMZXQncyBjb25maXJtIHRoYXQgYnkgY2hlY2tpbmcgb3V0IGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBjbHVlcyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDUwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAwLjAyMjAxODg1NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1MjA1OTcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRkeC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS92bXgvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAwLjExNTU0NjkxMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU2NjU3NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCdzIHN0YXJ0IGJ5IG5hdmlnYXRpbmcgcmlnaHQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIg4oCTIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhbmQgcmVsZXZhbnQgeDg2LXNwZWNpZmljIGNvbXBvbmVudHMgYXJlIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoaXMgTWFrZWZpbGUgaXMgZ29pbmcgdG8gYmUgdGhlIHJvYWRtYXAuIEknbSBsb29raW5nIGZvciB0aGUga2V5IHZhcmlhYmxlcywgaW5jbHVkZSBwYXRocywgc291cmNlIGZpbGVzLCBhbmQgYW55IHNwZWNpYWwgYnVpbGQgcnVsZXMgc3BlY2lmaWMgdG8gS1ZNIHdpdGhpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IGhvdyBLVk0gaW50ZXJhY3RzIHdpdGggZmVhdHVyZXMgbGlrZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIChWVC14IG9yIEFNRC1WKSwgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgb24gdGhlIHg4NiBwbGF0Zm9ybS4gVGhlIGRlcGVuZGVuY2llcyB3aWxsIGxpa2VseSByZXZlYWwgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0IHRyZWFzdXJlcyB0aGlzIE1ha2VmaWxlIGhvbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQwNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjAzLjE3MjIwODUxOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUzNDE0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0yMT1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIyOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVxcdCs9IHZteC90ZHgub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MDMuMjQ3NTU5NzE3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzcwODczNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIEtWTSBhbmQgVERYIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX0tWTV9JTlRFTF9URFhgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBnb2VzIHRvIHZlcmlmeWluZyBob3cgdGhpcyBpcyBzZXQgdXAgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGBhcmNoL3g4Ni9rdm0vbW11L21tdS5jYCwgc3BlY2lmaWNhbGx5IGZvciBga3ZtX3RkcF9wYWdlX3ByZWZhdWx0YC4gSSBrbm93IHRoYXQncyB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQgZm9yIHg4NiBLVk0sIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHNlZSBob3cgVERYIG1pZ2h0IHJlbGF0ZS4gVGhlbiwgSSBuZWVkIHRvIGNvbXBhcmUgdGhhdCB0byB0aGUgQVJNNjQgc2lkZSwgc28gSSdsbCBhbHNvIGNoZWNrIGBhcmNoL2FybTY0L2t2bS9hcm0uY2AgdG8gc2VlIHRoZSBzZXR1cCB0aGVyZS4gSSByZWNhbGwgdGhhdCdzIGNvbXBpbGVkIGZvciBgQ09ORklHX0tWTWAuXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlOiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYW5kIGBLVk1fSU5URUxfVERYYC4gTm93LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBLVk1fSU5URUxfVERYYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBLY29uZmlnIGZpbGVzLiBDYW4ndCBiZSB0b28gY2FyZWZ1bC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MDcuMjI0NjQ5MTM3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjM3MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0lOVEVMX1REWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjA3LjMxNzAyNDkyNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTgwMjQ3NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTS9URFggRW50cnkgUG9pbnQgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIGBLVk1fSU5URUxfVERYYC4gUmlnaHQuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgaW50byB0aGUgS1ZNL1REWCBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBpbnN0aW5jdHMgdGVsbCBtZSB0byBjaGVjayBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCDigJMgc3RhbmRhcmQgc3RhcnRpbmcgcG9pbnRzLiBCdXQsIGFyZSB0aGVyZSBvdGhlcnM/IEknbGwgbmVlZCB0byBtYXAgb3V0IHRoZSBjYWxsIHBhdGhzLlxuXG5MZXQgbWUgc2VlLi4uIGRpZ2dpbmcgaW50byBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgSSBzZWUgdGhhdCBgdmNwdV9lbnRlcl9ndWVzdGAgaXMgY2FsbGVkIGZyb20gYHZjcHVfcnVuYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgb25lLiBOb3csIGxvb2tpbmcgYXQgYGFyY2gveDg2L2t2bS92bXgvdGR4LmNgLCBgdGR4X2hhbmRsZV9lcHRfdmlvbGF0aW9uYCBpcyBjYWxsZWQgZnJvbSBgdGR4X2hhbmRsZV9leGl0YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHZ0X2hhbmRsZV9leGl0YC4gVGhhdCBsb29rcyBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBzaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggVERYLiBJbiBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIEkgc2VlIGBrdm1fdGRwX3BhZ2VfcHJlZmF1bHRgIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBBbmQganVzdCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcywgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBjYWxscyBgY2hlY2tfdmNwdV9yZXF1ZXN0c2AgZnJvbSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLlxuXG5Pa2F5LCBzbyB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgcGljdHVyZTogVGhlIHByaW1hcnkgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlIGFyZTpcblxuKiAgIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmBcbiogICBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YFxuKiAgIGB2dF9oYW5kbGVfZXhpdGBcblxuTm93LCBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIGB2dF9oYW5kbGVfZXhpdGAgaXMgc3RhdGljLi4uIHRoYXQgd2lsbCBpbmZsdWVuY2UgaG93IEkgdHJhY2UgaXRzIHVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQzMzMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MTIuODk3Mjc2NTQ2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1OTYwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnRfaGFuZGxlX2V4aXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9MTQ5PXN0YXRpYyBmYXN0cGF0aF90IHZ0X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHJ1bl9mbGFncylcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTE1Ni1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYzoxNTc6c3RhdGljIGludCB2dF9oYW5kbGVfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtMTU4LVxcdFxcdFxcdCAgZW51bSBleGl0X2Zhc3RwYXRoX2NvbXBsZXRpb24gZmFzdHBhdGgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjEzLjAxNTg3NzI4MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTcwNDEwMDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBoYW5kbGVfZXhpdGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgdnRfaGFuZGxlX2V4aXRgIGlzIGEgYHN0YXRpY2AgZnVuY3Rpb24uIFRoYXQncyBhIGtleSBkZXRhaWw7IGl0IG1lYW5zIGl0cyBzY29wZSBpcyBsaW1pdGVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQuIEl0J3MgYWxzbyBhc3NpZ25lZCB0byBga3ZtX3g4Nl9vcHMuaGFuZGxlX2V4aXRgLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYGhhbmRsZV9leGl0YCBsaWtlbHkgYWN0cyBhcyBhIGhhbmRsZXIgd2l0aGluIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGVudmlyb25tZW50LCBzcGVjaWZpY2FsbHkgZm9yIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJdCdzIHBhcnQgb2YgYSBzZXQgb2Ygb3BlcmF0aW9ucyAoYGt2bV94ODZfb3BzYCkgdGhhdCBLVk0gdXNlcy4gTm93IHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiB3aGF0IHRyaWdnZXJzIHRoZSBleGVjdXRpb24gb2YgYGhhbmRsZV9leGl0YD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjaGFpbiB0byBgaGFuZGxlX2V4aXRgIGlzIHRoZSBuZXh0LCBhbmQgbW9zdCB2aXRhbCwgc3RlcCBpbiBjb21wcmVoZW5kaW5nIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGhhbmRsZV9leGl0YCB0byB1bmRlcnN0YW5kIHRoZSBldmVudCBpdCdzIG1lYW50IHRvIGhhbmRsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUyODMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoxNi4xODYyOTAwNDdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDQ0MzA4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoYW5kbGVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTgwNTE9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NDIxLVxcdC8qXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0MjI6XFx0ICogU3luYyB4ZmQgYmVmb3JlIGNhbGxpbmcgaGFuZGxlX2V4aXRfaXJxb2ZmKCkgd2hpY2ggbWF5XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0MjMtXFx0ICogcmVseSBvbiB0aGUgZmFjdCB0aGF0IGd1ZXN0X2ZwdTo6eGZkIGlzIHVwLXRvLWRhdGUgKGUuZy5cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NDI4LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NDI5OlxcdGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdF9pcnFvZmYpKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy04NDMwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0OTAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg0OTE6XFx0ciA9IGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdCkodmNwdSwgZXhpdF9mYXN0cGF0aCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg0OTItXFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjE2LjMwMDczODA3M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3MTY2NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIEVudHJ5IFBvaW50cyBpbnRvIHRoZSBLVk0gR3Vlc3QgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBJJ20gZm9jdXNpbmcgb24gaG93IHdlIGVudGVyIGd1ZXN0IGV4ZWN1dGlvbiB3aXRoaW4gS1ZNLiBNeSBtZW50YWwgbWFwIHNob3dzIHRoYXQgYHZjcHVfZW50ZXJfZ3Vlc3RgIGlzIGEga2V5IGZ1bmN0aW9uIGhlcmUsIGFuZCB0aGF0IGl0IGV2ZW50dWFsbHkgY2FsbHMgYGt2bV94ODZfY2FsbChoYW5kbGVfZXhpdClgLiAgTm93LCBJIHJlY2FsbCB0aGF0IGB2Y3B1X2VudGVyX2d1ZXN0YCBpcyBjYWxsZWQgZnJvbSBgdmNwdV9ydW5gLiBBbmQgYHZjcHVfcnVuYCwgaW4gdHVybiwgaXMgaW52b2tlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBTbywgdGhhdCBsYXN0IGZ1bmN0aW9uLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBzZWVtcyB0byBiZSBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBndWVzdCBleGVjdXRpb24sIGNvdmVyaW5nIGEgc2lnbmlmaWNhbnQgcGFydCBvZiB0aGUgY2FsbCBjaGFpbi4gSXQgY29ubmVjdHMgYWxsIHRoZSBwaWVjZXMsIGV4Y2VwdCBmb3IgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAuXG5cblRoZXJlZm9yZSwgbXkgY29yZSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBhcmU6IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBhIHNlY3VyZSBhbmQgZWZmaWNpZW50IHdheS5cblxuTm93LCBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgaXMgZXhwb3NlZCBvciByZWFjaGFibGUgdmlhIHRoZSBzeXNjYWxsIGludGVyZmFjZS4gVGhhdCdzIGEgY3J1Y2lhbCBjaGVjayBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciB1bmV4cGVjdGVkIGV4ZWN1dGlvbiBwYXRocy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU5MTIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MjAuNTM3OTA4MDk1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTQ1MTE2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbW11L21tdS5jPTUwMjA9c3RhdGljIGludCBrdm1fdGRwX3BhZ2VfcHJlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBncGFfdCBncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjMtXFxuYXJjaC94ODYva3ZtL21tdS9tbXUuYzo1MDY0Omxvbmcga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTUwNjUtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fcHJlX2ZhdWx0X21lbW9yeSAqcmFuZ2UpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTE2OTg9c3RhdGljIGludCB0ZHhfc2VwdF9tYXBfbGVhZl9zcHRlKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3QgZ2ZuLCBlbnVtIHBnX2xldmVsIGxldmVsLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEwLVxcdC8qXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoxNzExOlxcdCAqIEVuc3VyZSBwcmVfZmF1bHRfYWxsb3dlZCBpcyByZWFkIGJ5IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSgpXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0xNzEyLVxcdCAqIGJlZm9yZSBrdm1fdGR4LVxcdTAwM2VzdGF0ZS4gIFVzZXJzcGFjZSBtdXN0IG5vdCBiZSBhbGxvd2VkIHRvIHByZS1mYXVsdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyMC42MTkzNjgwNDNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwODcwOTA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyBNZW1vcnkgRmF1bHRzIGluIEtWTSAtIFRoZSBIdW50IEJlZ2lucyoqXG5cbkFscmlnaHQsIGEgbWVtb3J5IGZhdWx0J3MgZ290IG1lIHN0dW1wZWQsIHNvIGxldCdzIGRpZyBpbnRvIHRoaXMuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIEtWTSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQgdXN1YWxseSBtZWFucyBsb29raW5nIGF0IHRoZSBjb21tb24gZW50cnkgcG9pbnRzLlxuXG5UaGUgZnVuY3Rpb24gYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUg4oCTIGl0J3MgcmlnaHQgdGhlcmUgaW4gdGhlIG5hbWU6IHByZS1mYXVsdCwgbWVtb3J5LiBNeSB0aGlua2luZyBpcywgbGV0J3Mgc3RhcnQgYnkgZmluZGluZyBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBUaGUgc291cmNlIGNvZGUgaXMgbXkgbWFwIGhlcmUsIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2Agb3Igc29tZXRoaW5nIGFuYWxvZ291cyB3aWxsIHByb2JhYmx5IGJlIHdoZXJlIHRoaXMgY3JpdGljYWwgc3R1ZmYgaXMgc2V0IHVwLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGFuZCB0cmlja3MgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMuIEZyb20gdGhlcmUsIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIG5hcnJvdyBkb3duIHRoZSBzY29wZSBvZiB0aGUgcHJvYmxlbS4gVGhpcyBpbml0aWFsIHNlYXJjaCBzaG91bGQgaGVscCBtZSBwYWludCBhIHBpY3R1cmUgYW5kIHNob3cgbWUgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGVuZXJneS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyNC4wMjgwNzg5MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY4MTYxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTQzNTM9c3RhdGljIGludCBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM3Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQzNzg6XFx0XFx0ciA9IGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeSh2Y3B1LCByYW5nZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy00Mzc5LVxcdFxcdGlmIChXQVJOX09OX09OQ0UociA9PSAwIHx8IHIgPT0gLUVJTykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjI0LjExNDkwMTE0OFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0NTEyMjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gS1ZNIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhdWx0IEhhbmRsaW5nKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC4gSW1tZWRpYXRlbHksIEkgY29ubmVjdCB0aGF0IGZ1bmN0aW9uIG5hbWUgdG8gdGhlIGJyb2FkZXIgS1ZNIGFyY2hpdGVjdHVyZS4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgZmF1bHRzLCBzcGVjaWZpY2FsbHkgKmJlZm9yZSogdGhlIGFjdHVhbCBmYXVsdCBoYW5kbGluZyBvY2N1cnMsIHdoaWNoIGlzIGEga2V5IHBoYXNlIGluIHZpcnR1YWwgbWFjaGluZSBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGl0cyBpbnZvY2F0aW9uLlxuXG5UaGUgdGV4dCBwb2ludHMgb3V0IHRoYXQgYGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGlzIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9pb2N0bGAuIEFoLCBub3cgaXQncyBjbGVhci4gYGlvY3RsYCBjYWxscyBhcmUgdGhlIGdhdGV3YXkgZm9yIHVzZXItc3BhY2UgcmVxdWVzdHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgcHJlLWZhdWx0IGZ1bmN0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZCAqaW4gcmVzcG9uc2UqIHRvIGEgY29udHJvbCBvcGVyYXRpb24gaW5pdGlhdGVkIGZyb20gb3V0c2lkZSB0aGUga2VybmVsLCBsaWtlbHkgZnJvbSBRRU1VIG9yIGFub3RoZXIgdXNlci1zcGFjZSBLVk0gbWFuYWdlbWVudCBhcHBsaWNhdGlvbi4gVGhpcyBtZWFucyB3ZSBhcmUgd2l0aGluIHRoZSBpb2N0bCBoYW5kbGVyLCBhbmQgc29tZXRoaW5nIGluaXRpYXRlZCBieSB1c2VyLXNwYWNlIHJlcXVpcmVzIHRoZSBrZXJuZWwgdG8gKnByZWVtcHRpdmVseSogY2hlY2sgbWVtb3J5LlxuXG5TbywgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBoeXBvdGhlc2lzLiBUaGUgYGlvY3RsYCByZXF1ZXN0IG11c3QgYmUgcmVsYXRlZCB0byBzb21lIG1lbW9yeSBvcGVyYXRpb24uIFBlcmhhcHMgdGhlIHVzZXItc3BhY2UgaXMgdHJ5aW5nIHRvIGFjY2VzcyBvciBtYW5pcHVsYXRlIGEgbWVtb3J5IHJlZ2lvbiB0aGF0J3MgZWl0aGVyIG5vdCB5ZXQgZnVsbHkgc2V0IHVwIGZvciB0aGUgdkNQVSBvciByZXF1aXJlcyBzb21lIHByZS1lbXB0aXZlIGNoZWNrIG9uIHRoZSBtZW1vcnkgc3RhdGUgcHJpb3IgdG8gdGhlIHZDUFUgYWNjZXNzaW5nIHRoZSBtZW1vcnkuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBwYWdlIHRhYmxlIG1hbmFnZW1lbnQsIG1lbW9yeSBhbGxvY2F0aW9uLCBvciBwb3NzaWJseSBldmVuIHNoYWRvdyBwYWdlIHRhYmxlIHVwZGF0ZXMsIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBpb2N0bCBjb21tYW5kLiBJdCdzIGFsbW9zdCBhbHdheXMgYSBnb29kIGluZGljYXRpb24gdGhhdCBzb21ldGhpbmcgdW51c3VhbCBpcyBnb2luZyBvbi5cblxuTXkgbmV4dCBzdGVwIHdvdWxkIGJlIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBmcm9tIHRoZSBzcGVjaWZpYyBgaW9jdGxgIGNhbGwgdGhhdCB0cmlnZ2VycyB0aGlzIHByZS1mYXVsdCBmdW5jdGlvbiwgYW5kIGRldGVybWluZSB0aGUgZXhhY3QgcmVhc29uIGZvciB0aGUgY2hlY2suIFdoYXQgbWVtb3J5IHJlZ2lvbiBpcyBiZWluZyB0b3VjaGVkPyBXaGF0IGlzIGl0IHRyeWluZyB0byBhY2NvbXBsaXNoPyBBcmUgd2UgZGVhbGluZyB3aXRoIGd1ZXN0IHBoeXNpY2FsIG1lbW9yeSBvciBzaGFkb3cgcGFnZSB0YWJsZSBlbnRyaWVzPyBBIGRlZXBlciBkaXZlIGlzIHJlcXVpcmVkIHRvIHVuZGVyc3RhbmQgdGhlIHdoeSBhbmQgdGhlIGhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcyMzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyOC4zNDk0MTc1NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI3NTQzMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NDMyNz1zdGF0aWMgaW50IGt2bV92Y3B1X2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQzNTItI2lmZGVmIENPTkZJR19LVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0va3ZtX21haW4uYzo0MzUzOnN0YXRpYyBpbnQga3ZtX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxudmlydC9rdm0va3ZtX21haW4uYy00MzU0LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV9wcmVfZmF1bHRfbWVtb3J5ICpyYW5nZSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDQyNT1zdGF0aWMgbG9uZyBrdm1fdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDY1Ny1cXHRcXHRcXHRicmVhaztcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ2NTg6XFx0XFx0ciA9IGt2bV92Y3B1X3ByZV9mYXVsdF9tZW1vcnkodmNwdSwgXFx1MDAyNnJhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ2NTktXFx0XFx0LyogUGFzcyBiYWNrIGxlZnRvdmVyIHJhbmdlLiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzoyOC40MTIxODU2OThaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExMjQzMjIzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyBhbmQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoZSBLVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBlbnRyeSBwb2ludHMgZm9yIGNlcnRhaW4gb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBrdm1fdmNwdV9pb2N0bGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQsIGFuZCB0aGF0IGZvY3VzaW5nIG9uIGBrdm1fdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCBvciwgYmV0dGVyIHlldCwgYGt2bV9hcmNoX3ZjcHVfcHJlX2ZhdWx0X21lbW9yeWAsIHdvdWxkIGJlIGEgZ29vZCBhcHByb2FjaC4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhbHNvIGNhbGxlZCBmcm9tIGBrdm1fdmNwdV9pb2N0bGAuIFRoaXMgbWVhbnMgYGt2bV92Y3B1X2lvY3RsYCBpcyB0aGUgcHJpbWFyeSwgYnV0IGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlgIGFyZSBtb3JlIGdyYW51bGFyLlxuXG5JIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIExldCdzIGxvb2sgYXQgYGFyY2gvYXJtNjQva3ZtL2FybS5jYCBhbmQgYGFyY2gveDg2L2t2bS94ODYuY2AgdG8gc2VlIGhvdyBpdCdzIGRlZmluZWQgYW5kIHVzZWQuIEdvb2QsIGl0J3Mgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdtIHNlZWluZyBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYENPTkZJR19LVk1fQU1EYCwgYW5kIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAuIFdhaXQsIGlzIGBDT05GSUdfS1ZNX0lOVEVMX1REWGAgYSByZWFsIGNvbmZpZz8gWWVzLCBJIHJlbWVtYmVyIHNlZWluZyBpdCBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLlxuXG5Ob3csIEknbGwgbW92ZSBvbiB0byBgYXJjaC9hcm02NC9rdm0vS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyB0aGVyZSB0aGF0IGFyZSByZWxldmFudCB0byBteSBjdXJyZW50IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjM0LjUyNDYyMDYzNFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI0NTE1MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6MzQuNjE3MDc5MDExWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjgwMDI2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIEZpeCBmb3IgVk0gRGVhZCBTdGF0ZSBvbiBhcm02NCoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgdGhpcyBvbiBhcm02NCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBMZXQncyBkaWcgaW50byBgaW5jbHVkZS9saW51eC9rdm1faG9zdC5oYCBhbmQgc2VlIHdoYXQncyBjaGFuZ2VkLiBBaCwgcmlnaHQsIHRoZSBwYXRjaCBhZGRzIGEgYEJVSUxEX0JVR19PTihyZXEgPT0gS1ZNX1JFUV9WTV9ERUFEKWAgd2l0aGluIGBrdm1fY2xlYXJfcmVxdWVzdGAgYW5kIGBrdm1fY2hlY2tfcmVxdWVzdGAuIEVzc2VudGlhbGx5LCBpdCdzIGEgY29tcGlsZS10aW1lIGNoZWNrIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbSBpbmFkdmVydGVudGx5IGNsZWFyaW5nIG9yIGNoZWNraW5nIHRoZSBgS1ZNX1JFUV9WTV9ERUFEYCByZXF1ZXN0IGZsYWcuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgb25jZSBhIFZNIGlzIG1hcmtlZCBhcyBcImRlYWQsXCIgaXQgc3RheXMgdGhhdCB3YXkuXG5cblRoZSBjb3JlIG9mIHRoZSBmaXggaXMgdG8gdXNlIGBrdm1fdGVzdF9yZXF1ZXN0YCBpbnN0ZWFkIG9mIGBrdm1fY2hlY2tfcmVxdWVzdGAgZm9yIHRoYXQgc3BlY2lmaWMgYEtWTV9SRVFfVk1fREVBRGAgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5LiBQcmV2aW91c2x5LCBgS1ZNX1JFUV9WTV9ERUFEYCB3YXMgZ2V0dGluZyBjbGVhcmVkLCB3aGljaCB3b3VsZCBsb2dpY2FsbHkgbGVhZCB0byB0aGUgVk0gKm5vdCogc3RheWluZyBkZWFkLCB3aGljaCBpcyBjbGVhcmx5IHVuZGVzaXJhYmxlLiBOb3csIHdpdGggdGhpcyBjaGFuZ2UsIHRoZSBkZWFkIHN0YXRlIHNob3VsZCBiZSBwZXJzaXN0ZW50LlxuXG5JIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiBhIGNvdXBsZSBvZiBrZXkgc3ltYm9scyBoZXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YCB0byBzZWUgaG93IHRoaXMgaW1wYWN0cyB0aGUgb3ZlcmFsbCBmbG93LiBBbmQsIG9mIGNvdXJzZSwgSSBzaG91bGQgdmVyaWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uczogYEtWTWAsIGBLVk1fSU5URUxgLCBgS1ZNX0FNRGAsIGFuZCBlc3BlY2lhbGx5IGBLVk1fSU5URUxfVERYYC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODc0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjQwLjI4NTA4NDQyWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzkyNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTUyPWNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2ICgoRVhQRVJUIFxcdTAwMjZcXHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk4OlxcdGRlcGVuZHMgb24gS1ZNIFxcdTAwMjZcXHUwMDI2IElBMzJfRkVBVF9DVExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFxcdTAwMjZcXHUwMDI2IEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiU29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBYODZfU0dYIFxcdTAwMjZcXHUwMDI2IEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBJTlRFTF9URFhfSE9TVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzM9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mz1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODctXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTk0PWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxMDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjI3OjQwLjM2MzAxODcwOFoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg2NDA0OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogS1ZNX0lOVEVMX1REWCBhbmQgSU5URUxfVERYX0hPU1QqKlxuXG5BbHJpZ2h0LCBzbyBgS1ZNX0lOVEVMX1REWGAgaXMgY2xlYXJseSBsZWFuaW5nIG9uIGBJTlRFTF9URFhfSE9TVGAuIE5vIHN1cnByaXNlcyB0aGVyZTsgVERYIGhvc3Qgc3VwcG9ydCBpcyB0aGUgZm91bmRhdGlvbi4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBJTlRFTF9URFhfSE9TVGAgaXRzZWxmLiBHb3R0YSBlbnN1cmUgdGhlcmUncyBubyBjYXNjYWRlIGVmZmVjdCwgbm8gaGlkZGVuIHByZXJlcXVpc2l0ZXMgdGhhdCBtaWdodCB0cmlwIG1lIHVwIGxhdGVyLiBXaGF0IG90aGVyIGNvbXBvbmVudHMsIGRyaXZlcnMsIG9yIGZpcm13YXJlIHZlcnNpb25zIGFyZSBhYnNvbHV0ZWx5ICpyZXF1aXJlZCogZm9yIHRoZSBob3N0IHN1cHBvcnQgdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBJIHNob3VsZCBhbnRpY2lwYXRlPyBJIG5lZWQgdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIGRlcGVuZGVuY3kgZ3JhcGggdG8gZnVsbHkgZXZhbHVhdGUgdGhpcy4gTGV0J3Mgc2VlLi4uIHdoZXJlIGRvIEkgc3RhcnQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjQ1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6NDMuODQ5NDI3NzcyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njg4MTA2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5URUxfVERYX0hPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTE4NDQ9Y29uZmlnIFg4Nl9VU0VSX1NIQURPV19TVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xODYzLVxcbmFyY2gveDg2L0tjb25maWc6MTg2NDpjb25maWcgSU5URUxfVERYX0hPU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTE4NjUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgaG9zdCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo0My45MTYzMTI5NDFaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4NzY2NzY5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZWNvc3lzdGVtIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGUgZGVwZW5kZW5jaWVzLiBXaGF0IGxpYnJhcmllcywgZnJhbWV3b3Jrcywgb3IgZXh0ZXJuYWwgc2VydmljZXMgaXMgdGhpcyB0aGluZyBsZWFuaW5nIG9uPyBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgdmVyc2lvbnMsIHdoZXJlIHRoZXkncmUgc291cmNlZCBmcm9tLCBhbmQgYW55IHBvdGVudGlhbCBjb25mbGljdHMgdGhhdCBtaWdodCBhcmlzZS4gQXJlIHRoZXkgYWxsIHVwLXRvLWRhdGUgYW5kIHBhdGNoZWQ/IEhhdmUgYW55IGRlcHJlY2F0aW9uIHdhcm5pbmdzIHBvcHBlZCB1cD8gVGhpcyBpc24ndCBqdXN0IGEgY3Vyc29yeSBnbGFuY2U7IEkgbmVlZCB0byBhc3Nlc3MgdGhlIHRyYW5zaXRpdmUgZGVwZW5kZW5jaWVzIHRvbywgZ2V0dGluZyBhIGNvbXBsZXRlIGRlcGVuZGVuY3kgZ3JhcGggaW4gbXkgaGVhZC4gQSBzb2xpZCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgY3J1Y2lhbCBmb3IgdHJvdWJsZXNob290aW5nLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIGFuZCwgb2YgY291cnNlLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0J3MgdGhlIGZvdW5kYXRpb24g4oCTIEkgY2FuJ3QgYnVpbGQgYW55dGhpbmcgc3RhYmxlIHdpdGhvdXQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjE1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo0Ni43MDM5ODI1NDZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzg0NzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5ODIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L0tjb25maWc9MTA9Y29uZmlnIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiAhNjRCSVRcXG5hcmNoL3g4Ni9LY29uZmlnLTEzLVxcdCMgT3B0aW9ucyB0aGF0IGFyZSBpbmhlcmVudGx5IDMyLWJpdCBrZXJuZWwgb25seTpcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MjM9Y29uZmlnIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctMjQtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MjU6XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmFyY2gveDg2L0tjb25maWctMjYtXFx0IyBPcHRpb25zIHRoYXQgYXJlIGluaGVyZW50bHkgNjQtYml0IGtlcm5lbCBvbmx5Olxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00MT1jb25maWcgRk9SQ0VfRFlOQU1JQ19GVFJBQ0VcXG5hcmNoL3g4Ni9LY29uZmlnLTQyLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjQzOlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIEZVTkNUSU9OX1RSQUNFUlxcbmFyY2gveDg2L0tjb25maWctNDUtXFx0c2VsZWN0IERZTkFNSUNfRlRSQUNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTM0MD1jb25maWcgSU5TVFJVQ1RJT05fREVDT0RFUlxcbmFyY2gveDg2L0tjb25maWctMzQxLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM0MjpcXHRkZXBlbmRzIG9uIEtQUk9CRVMgfHwgUEVSRl9FVkVOVFMgfHwgVVBST0JFU1xcbmFyY2gveDg2L0tjb25maWctMzQzLVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0zNzU9Y29uZmlnIEdFTkVSSUNfSVNBX0RNQVxcbmFyY2gveDg2L0tjb25maWctMzc2LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM3NzpcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJXFxuYXJjaC94ODYvS2NvbmZpZy0zNzgtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTM4Mz1jb25maWcgR0VORVJJQ19CVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTM4NC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzozODU6XFx0ZGVwZW5kcyBvbiBCVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgR0VORVJJQ19CVUdfUkVMQVRJVkVfUE9JTlRFUlNcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MzkxPWNvbmZpZyBBUkNIX01BWV9IQVZFX1BDX0ZEQ1xcbmFyY2gveDg2L0tjb25maWctMzkyLVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJXFxuYXJjaC94ODYvS2NvbmZpZy0zOTQtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTQxMD1jb25maWcgS0FTQU5fU0hBRE9XX09GRlNFVFxcbmFyY2gveDg2L0tjb25maWctNDExLVxcdGhleFxcbmFyY2gveDg2L0tjb25maWc6NDEyOlxcdGRlcGVuZHMgb24gS0FTQU5cXG5hcmNoL3g4Ni9LY29uZmlnLTQxMy1cXHRkZWZhdWx0IDB4ZGZmZmZjMDAwMDAwMDAwMFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00MTU9Y29uZmlnIEhBVkVfSU5URUxfVFhUXFxuYXJjaC94ODYvS2NvbmZpZy00MTYtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6NDE3OlxcdGRlcGVuZHMgb24gSU5URUxfSU9NTVUgXFx1MDAyNlxcdTAwMjYgQUNQSVxcbmFyY2gveDg2L0tjb25maWctNDE4LVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00NTk9Y29uZmlnIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTQ2MC1cXHRib29sIFxcXCJ4MkFQSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlIHN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo0NjE6XFx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgKElSUV9SRU1BUCB8fCBIWVBFUlZJU09SX0dVRVNUKVxcbmFyY2gveDg2L0tjb25maWctNDYyLVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00ODM9Y29uZmlnIEFNRF9TRUNVUkVfQVZJQ1xcbmFyY2gveDg2L0tjb25maWctNDg0LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgQVZJQ1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjQ4NTpcXHRkZXBlbmRzIG9uIEFNRF9NRU1fRU5DUllQVCBcXHUwMDI2XFx1MDAyNiBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZy00ODYtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz00OTY9Y29uZmlnIFg4Nl9QT1NURURfTVNJXFxuYXJjaC94ODYvS2NvbmZpZy00OTctXFx0Ym9vbCBcXFwiRW5hYmxlIE1TSSBhbmQgTVNJLXggZGVsaXZlcnkgYnkgcG9zdGVkIGludGVycnVwdHNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo0OTg6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgSVJRX1JFTUFQXFxuYXJjaC94ODYvS2NvbmZpZy00OTktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01MDc9Y29uZmlnIFg4Nl9NUFBBUlNFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTUwOS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9LY29uZmlnOjUxMDpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy01MTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01MTU9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTFxcbmFyY2gveDg2L0tjb25maWctNTE2LVxcdGJvb2wgXFxcIng4NiBDUFUgcmVzb3VyY2UgY29udHJvbCBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTE3OlxcdGRlcGVuZHMgb24gWDg2IFxcdTAwMjZcXHUwMDI2IChDUFVfU1VQX0lOVEVMIHx8IENQVV9TVVBfQU1EKVxcbmFyY2gveDg2L0tjb25maWc6NTE4OlxcdGRlcGVuZHMgb24gTUlTQ19GSUxFU1lTVEVNU1xcbmFyY2gveDg2L0tjb25maWctNTE5LVxcdHNlbGVjdCBBUkNIX0hBU19DUFVfUkVTQ1RSTFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01Mzg9Y29uZmlnIFg4Nl9DUFVfUkVTQ1RSTF9JTlRFTF9BRVRcXG5hcmNoL3g4Ni9LY29uZmlnLTUzOS1cXHRib29sIFxcXCJJbnRlbCBBcHBsaWNhdGlvbiBFbmVyZ3kgVGVsZW1ldHJ5XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTQwOlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFg4Nl9DUFVfUkVTQ1RSTCBcXHUwMDI2XFx1MDAyNiBDUFVfU1VQX0lOVEVMIFxcdTAwMjZcXHUwMDI2IElOVEVMX1BNVF9URUxFTUVUUlk9eSBcXHUwMDI2XFx1MDAyNiBJTlRFTF9UUE1JPXlcXG5hcmNoL3g4Ni9LY29uZmlnLTU0MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTU1MT1jb25maWcgWDg2X0ZSRURcXG5hcmNoL3g4Ni9LY29uZmlnLTU1Mi1cXHRib29sIFxcXCJGbGV4aWJsZSBSZXR1cm4gYW5kIEV2ZW50IERlbGl2ZXJ5XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NTUzOlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy01NTQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz01OTA9Y29uZmlnIFg4Nl9OVU1BQ0hJUFxcbmFyY2gveDg2L0tjb25maWctNTkxLVxcdGJvb2wgXFxcIk51bWFzY2FsZSBOdW1hQ2hpcFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjU5MjpcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWc6NTkzOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo1OTQ6XFx0ZGVwZW5kcyBvbiBOVU1BXFxuYXJjaC94ODYvS2NvbmZpZzo1OTU6XFx0ZGVwZW5kcyBvbiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjU5NjpcXHRkZXBlbmRzIG9uIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnOjU5NzpcXHRkZXBlbmRzIG9uIFBDSV9NTUNPTkZJR1xcbmFyY2gveDg2L0tjb25maWctNTk4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjAzPWNvbmZpZyBYODZfVlNNUFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy02MDYtXFx0c2VsZWN0IFBBUkFWSVJUXFxuYXJjaC94ODYvS2NvbmZpZzo2MDc6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2MDg6XFx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cXG5hcmNoL3g4Ni9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFNNUFxcbmFyY2gveDg2L0tjb25maWctNjEwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjE1PWNvbmZpZyBYODZfVVZcXG5hcmNoL3g4Ni9LY29uZmlnLTYxNi1cXHRib29sIFxcXCJTR0kgVWx0cmF2aW9sZXRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnOjYxODpcXHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxcbmFyY2gveDg2L0tjb25maWc6NjE5OlxcdGRlcGVuZHMgb24gTlVNQVxcbmFyY2gveDg2L0tjb25maWc6NjIwOlxcdGRlcGVuZHMgb24gRUZJXFxuYXJjaC94ODYvS2NvbmZpZzo2MjE6XFx0ZGVwZW5kcyBvbiBLRVhFQ19DT1JFXFxuYXJjaC94ODYvS2NvbmZpZzo2MjI6XFx0ZGVwZW5kcyBvbiBYODZfWDJBUElDXFxuYXJjaC94ODYvS2NvbmZpZzo2MjM6XFx0ZGVwZW5kcyBvbiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTYyNC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTYyOD1jb25maWcgWDg2X0lOVEVMX01JRFxcbmFyY2gveDg2L0tjb25maWctNjI5LVxcdGJvb2wgXFxcIkludGVsIFozNHh4L1ozNXh4IE1JRCBwbGF0Zm9ybSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NjMwOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo2MzE6XFx0ZGVwZW5kcyBvbiBYODZfUExBVEZPUk1fREVWSUNFU1xcbmFyY2gveDg2L0tjb25maWc6NjMyOlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2MzM6XFx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEVYUEVSVCBcXHUwMDI2XFx1MDAyNiBQQ0lfR09BTlkpXFxuYXJjaC94ODYvS2NvbmZpZzo2MzQ6XFx0ZGVwZW5kcyBvbiBYODZfSU9fQVBJQ1xcbmFyY2gveDg2L0tjb25maWctNjM1LVxcdHNlbGVjdCBJMkNcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NjU0PWNvbmZpZyBYODZfR09MREZJU0hcXG5hcmNoL3g4Ni9LY29uZmlnLTY1NS1cXHRib29sIFxcXCJHb2xkZmlzaCAoVmlydHVhbCBQbGF0Zm9ybSlcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2NTY6XFx0ZGVwZW5kcyBvbiBYODZfRVhURU5ERURfUExBVEZPUk1cXG5hcmNoL3g4Ni9LY29uZmlnLTY1Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY2NT1jb25maWcgWDg2X0lOVEVMX0NFXFxuYXJjaC94ODYvS2NvbmZpZy02NjYtXFx0Ym9vbCBcXFwiQ0U0MTAwIFRWIHBsYXRmb3JtXFxcIlxcbmFyY2gveDg2L0tjb25maWc6NjY3OlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2Njg6XFx0ZGVwZW5kcyBvbiBQQ0lfR09ESVJFQ1RcXG5hcmNoL3g4Ni9LY29uZmlnOjY2OTpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZzo2NzA6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnOjY3MTpcXHRkZXBlbmRzIG9uIFg4Nl9FWFRFTkRFRF9QTEFURk9STVxcbmFyY2gveDg2L0tjb25maWctNjcyLVxcdHNlbGVjdCBYODZfUkVCT09URklYVVBTXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY4MD1jb25maWcgWDg2X0lOVEVMX1FVQVJLXFxuYXJjaC94ODYvS2NvbmZpZy02ODEtXFx0Ym9vbCBcXFwiSW50ZWwgUXVhcmsgcGxhdGZvcm0gc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjY4MjpcXHRkZXBlbmRzIG9uIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWc6NjgzOlxcdGRlcGVuZHMgb24gWDg2X0VYVEVOREVEX1BMQVRGT1JNXFxuYXJjaC94ODYvS2NvbmZpZzo2ODQ6XFx0ZGVwZW5kcyBvbiBYODZfUExBVEZPUk1fREVWSUNFU1xcbmFyY2gveDg2L0tjb25maWc6Njg1OlxcdGRlcGVuZHMgb24gUENJXFxuYXJjaC94ODYvS2NvbmZpZzo2ODY6XFx0ZGVwZW5kcyBvbiBQQ0lfR09BTllcXG5hcmNoL3g4Ni9LY29uZmlnOjY4NzpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZy02ODgtXFx0c2VsZWN0IElPU0ZfTUJJXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTY5Nj1jb25maWcgWDg2X0lOVEVMX0xQU1NcXG5hcmNoL3g4Ni9LY29uZmlnLTY5Ny1cXHRib29sIFxcXCJJbnRlbCBMb3cgUG93ZXIgU3Vic3lzdGVtIFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo2OTg6XFx0ZGVwZW5kcyBvbiBYODYgXFx1MDAyNlxcdTAwMjYgQUNQSSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTY5OS1cXHRzZWxlY3QgQ09NTU9OX0NMS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz03MDg9Y29uZmlnIFg4Nl9BTURfUExBVEZPUk1fREVWSUNFXFxuYXJjaC94ODYvS2NvbmZpZy03MDktXFx0Ym9vbCBcXFwiQU1EIEFDUEkyUGxhdGZvcm0gZGV2aWNlcyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6NzEwOlxcdGRlcGVuZHMgb24gQUNQSVxcbmFyY2gveDg2L0tjb25maWctNzExLVxcdHNlbGVjdCBDT01NT05fQ0xLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTcxOT1jb25maWcgSU9TRl9NQklcXG5hcmNoL3g4Ni9LY29uZmlnLTcyMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgU29DIElPU0YgU2lkZWJhbmQgc3VwcG9ydCBmb3IgU29DIHBsYXRmb3Jtc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjcyMTpcXHRkZXBlbmRzIG9uIFBDSVxcbmFyY2gveDg2L0tjb25maWctNzIyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NzM2PWNvbmZpZyBJT1NGX01CSV9ERUJVR1xcbmFyY2gveDg2L0tjb25maWctNzM3LVxcdGJvb2wgXFxcIkVuYWJsZSBJT1NGIHNpZGViYW5kIGFjY2VzcyB0aHJvdWdoIGRlYnVnZnNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBJT1NGX01CSSBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmFyY2gveDg2L0tjb25maWctNzM5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9NzQ5PWNvbmZpZyBYODZfU1VQUE9SVFNfTUVNT1JZX0ZBSUxVUkVcXG4tLVxcbmFyY2gveDg2L0tjb25maWctNzUxLVxcdCMgTUNFIGNvZGUgY2FsbHMgbWVtb3J5X2ZhaWx1cmUoKTpcXG5hcmNoL3g4Ni9LY29uZmlnOjc1MjpcXHRkZXBlbmRzIG9uIFg4Nl9NQ0VcXG5hcmNoL3g4Ni9LY29uZmlnLTc1My1cXHQjIE9uIDMyLWJpdCB0aGlzIGFkZHMgdG9vIGJpZyBvZiBOT0RFU19TSElGVCBhbmQgd2UgcnVuIG91dCBvZiBwYWdlIGZsYWdzOlxcbmFyY2gveDg2L0tjb25maWctNzU0LVxcdCMgT24gMzItYml0IFNQQVJTRU1FTSBhZGRzIHRvbyBiaWcgb2YgU0VDVElPTlNfV0lEVEg6XFxuYXJjaC94ODYvS2NvbmZpZzo3NTU6XFx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgIVNQQVJTRU1FTVxcbmFyY2gveDg2L0tjb25maWctNzU2LVxcdHNlbGVjdCBBUkNIX1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc1OD1jb25maWcgWDg2XzMyX0lSSVNcXG5hcmNoL3g4Ni9LY29uZmlnLTc1OS1cXHR0cmlzdGF0ZSBcXFwiRXVyb2JyYWlsbGUvSXJpcyBwb3dlcm9mZiBtb2R1bGVcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3NjA6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTc2MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc3MT1jb25maWcgU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTc3My1cXHRwcm9tcHQgXFxcIlNpbmdsZS1kZXB0aCBXQ0hBTiBvdXRwdXRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3NzQ6XFx0ZGVwZW5kcyBvbiBYODZcXG5hcmNoL3g4Ni9LY29uZmlnLTc3NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTc5NT1jb25maWcgUEFSQVZJUlRcXG5hcmNoL3g4Ni9LY29uZmlnLTc5Ni1cXHRib29sIFxcXCJFbmFibGUgcGFyYXZpcnR1YWxpemF0aW9uIGNvZGVcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo3OTc6XFx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXFxuYXJjaC94ODYvS2NvbmZpZy03OTgtXFx0c2VsZWN0IEhBVkVfUFZfU1RFQUxfQ0xPQ0tfR0VOXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgwNT1jb25maWcgUEFSQVZJUlRfWFhMXFxuYXJjaC94ODYvS2NvbmZpZy04MDYtXFx0Ym9vbFxcbmFyY2gveDg2L0tjb25maWc6ODA3OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy04MDgtXFx0c2VsZWN0IEFSQ0hfSEFTX0xBWllfTU1VX01PREVcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODEwPWNvbmZpZyBQQVJBVklSVF9TUElOTE9DS1NcXG5hcmNoL3g4Ni9LY29uZmlnLTgxMS1cXHRib29sIFxcXCJQYXJhdmlydHVhbGl6YXRpb24gbGF5ZXIgZm9yIHNwaW5sb2Nrc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjgxMjpcXHRkZXBlbmRzIG9uIFBBUkFWSVJUIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmFyY2gveDg2L0tjb25maWctODEzLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9ODI4PWNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjgzMDpcXHRkZXBlbmRzIG9uIFBBUkFWSVJUXFxuYXJjaC94ODYvS2NvbmZpZy04MzEtXFx0c2VsZWN0IFBBUkFWSVJUX0NMT0NLXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg1ND1jb25maWcgUEFSQVZJUlRfVElNRV9BQ0NPVU5USU5HXFxuYXJjaC94ODYvS2NvbmZpZy04NTUtXFx0Ym9vbCBcXFwiUGFyYXZpcnR1YWwgc3RlYWwgdGltZSBhY2NvdW50aW5nXFxcIlxcbmFyY2gveDg2L0tjb25maWc6ODU2OlxcdGRlcGVuZHMgb24gUEFSQVZJUlRcXG5hcmNoL3g4Ni9LY29uZmlnLTg1Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg2OD1jb25maWcgSkFJTEhPVVNFX0dVRVNUXFxuYXJjaC94ODYvS2NvbmZpZy04NjktXFx0Ym9vbCBcXFwiSmFpbGhvdXNlIG5vbi1yb290IGNlbGwgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjg3MDpcXHRkZXBlbmRzIG9uIFg4Nl82NCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5hcmNoL3g4Ni9LY29uZmlnLTg3MS1cXHRzZWxlY3QgWDg2X1BNX1RJTUVSXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg3Nz1jb25maWcgQUNSTl9HVUVTVFxcbmFyY2gveDg2L0tjb25maWctODc4LVxcdGJvb2wgXFxcIkFDUk4gR3Vlc3Qgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjg3OTpcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbmFyY2gveDg2L0tjb25maWctODgwLVxcdHNlbGVjdCBYODZfSFZfQ0FMTEJBQ0tfVkVDVE9SXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg4OD1jb25maWcgQkhZVkVfR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTg4OS1cXHRib29sIFxcXCJCaHl2ZSAoQlNEIEh5cGVydmlzb3IpIEd1ZXN0IHN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzo4OTA6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTg5MS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTg5Nz1jb25maWcgSU5URUxfVERYX0dVRVNUXFxuYXJjaC94ODYvS2NvbmZpZy04OTgtXFx0Ym9vbCBcXFwiSW50ZWwgVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgLSBHdWVzdCBTdXBwb3J0XFxcIlxcbmFyY2gveDg2L0tjb25maWc6ODk5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IENQVV9TVVBfSU5URUxcXG5hcmNoL3g4Ni9LY29uZmlnOjkwMDpcXHRkZXBlbmRzIG9uIFg4Nl9YMkFQSUNcXG5hcmNoL3g4Ni9LY29uZmlnOjkwMTpcXHRkZXBlbmRzIG9uIEVGSV9TVFVCXFxuYXJjaC94ODYvS2NvbmZpZzo5MDI6XFx0ZGVwZW5kcyBvbiBQQVJBVklSVFxcbmFyY2gveDg2L0tjb25maWctOTAzLVxcdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz05Mzg9Y29uZmlnIEhQRVRfRU1VTEFURV9SVENcXG5hcmNoL3g4Ni9LY29uZmlnLTkzOS1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzo5NDA6XFx0ZGVwZW5kcyBvbiBIUEVUX1RJTUVSIFxcdTAwMjZcXHUwMDI2IChSVENfRFJWX0NNT1M9bSB8fCBSVENfRFJWX0NNT1M9eSlcXG5hcmNoL3g4Ni9LY29uZmlnLTk0MS1cXG4tLVxcbmFyY2gveDg2L0tjb25maWc9OTU0PWNvbmZpZyBHQVJUX0lPTU1VXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTk1Ny1cXHRzZWxlY3QgU1dJT1RMQlxcbmFyY2gveDg2L0tjb25maWc6OTU4OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBBTURfTkJcXG5hcmNoL3g4Ni9LY29uZmlnLTk1OS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTk4Mj1jb25maWcgTUFYU01QXFxuYXJjaC94ODYvS2NvbmZpZy05ODMtXFx0Ym9vbCBcXFwiRW5hYmxlIE1heGltdW0gbnVtYmVyIG9mIFNNUCBQcm9jZXNzb3JzIGFuZCBOVU1BIE5vZGVzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6OTg0OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFNNUCBcXHUwMDI2XFx1MDAyNiBERUJVR19LRVJORUxcXG5hcmNoL3g4Ni9LY29uZmlnLTk4NS1cXHRzZWxlY3QgQ1BVTUFTS19PRkZTVEFDS1xcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDEwPWNvbmZpZyBOUl9DUFVTX1JBTkdFX0VORFxcbmFyY2gveDg2L0tjb25maWctMTAxMS1cXHRpbnRcXG5hcmNoL3g4Ni9LY29uZmlnOjEwMTI6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTMtXFx0ZGVmYXVsdCAgICA4IGlmICBTTVBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTAxNj1jb25maWcgTlJfQ1BVU19SQU5HRV9FTkRcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMTctXFx0aW50XFxuYXJjaC94ODYvS2NvbmZpZzoxMDE4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMDE5LVxcdGRlZmF1bHQgODE5MiBpZiAgU01QIFxcdTAwMjZcXHUwMDI2IENQVU1BU0tfT0ZGU1RBQ0tcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTAyMz1jb25maWcgTlJfQ1BVU19ERUZBVUxUXFxuYXJjaC94ODYvS2NvbmZpZy0xMDI0LVxcdGludFxcbmFyY2gveDg2L0tjb25maWc6MTAyNTpcXHRkZXBlbmRzIG9uIFg4Nl8zMlxcbmFyY2gveDg2L0tjb25maWctMTAyNi1cXHRkZWZhdWx0ICAgIDggaWYgIFNNUFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDI5PWNvbmZpZyBOUl9DUFVTX0RFRkFVTFRcXG5hcmNoL3g4Ni9LY29uZmlnLTEwMzAtXFx0aW50XFxuYXJjaC94ODYvS2NvbmZpZzoxMDMxOlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMDMyLVxcdGRlZmF1bHQgODE5MiBpZiAgTUFYU01QXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNDk9Y29uZmlnIFNDSEVEX01DX1BSSU9cXG5hcmNoL3g4Ni9LY29uZmlnLTEwNTAtXFx0Ym9vbCBcXFwiQ1BVIGNvcmUgcHJpb3JpdGllcyBzY2hlZHVsZXIgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjEwNTE6XFx0ZGVwZW5kcyBvbiBTQ0hFRF9NQ1xcbmFyY2gveDg2L0tjb25maWctMTA1Mi1cXHRzZWxlY3QgWDg2X0lOVEVMX1BTVEFURSBpZiBDUFVfU1VQX0lOVEVMXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzE9Y29uZmlnIFVQX0xBVEVfSU5JVFxcbmFyY2gveDg2L0tjb25maWctMTA3Mi1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMDczOlxcdGRlcGVuZHMgb24gIVNNUCBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQ1xcbmFyY2gveDg2L0tjb25maWctMTA3NC1cXG5hcmNoL3g4Ni9LY29uZmlnPTEwNzU9Y29uZmlnIFg4Nl9VUF9BUElDXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEwNzctXFx0ZGVmYXVsdCBQQ0lfTVNJXFxuYXJjaC94ODYvS2NvbmZpZzoxMDc4OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2ICFTTVBcXG5hcmNoL3g4Ni9LY29uZmlnLTEwNzktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMDg5PWNvbmZpZyBYODZfVVBfSU9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMDkwLVxcdGJvb2wgXFxcIklPLUFQSUMgc3VwcG9ydCBvbiB1bmlwcm9jZXNzb3JzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTA5MTpcXHRkZXBlbmRzIG9uIFg4Nl9VUF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMDkyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTEwMT1jb25maWcgWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMDItXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTEwMzpcXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCBTTVAgfHwgWDg2X1VQX0FQSUMgfHwgUENJX01TSVxcbmFyY2gveDg2L0tjb25maWctMTEwNC1cXHRzZWxlY3QgSVJRX0RPTUFJTl9ISUVSQVJDSFlcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTEwNj1jb25maWcgQUNQSV9NQURUX1dBS0VVUFxcbmFyY2gveDg2L0tjb25maWctMTEwNy1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMTA4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZzoxMTA5OlxcdGRlcGVuZHMgb24gQUNQSVxcbmFyY2gveDg2L0tjb25maWc6MTExMDpcXHRkZXBlbmRzIG9uIFNNUFxcbmFyY2gveDg2L0tjb25maWc6MTExMTpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTEyLVxcbmFyY2gveDg2L0tjb25maWc9MTExMz1jb25maWcgWDg2X0lPX0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMTQtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTExNTpcXHRkZXBlbmRzIG9uIFg4Nl9MT0NBTF9BUElDIHx8IFg4Nl9VUF9JT0FQSUNcXG5hcmNoL3g4Ni9LY29uZmlnLTExMTYtXFxuYXJjaC94ODYvS2NvbmZpZz0xMTE3PWNvbmZpZyBYODZfUkVST1VURV9GT1JfQlJPS0VOX0JPT1RfSVJRU1xcbmFyY2gveDg2L0tjb25maWctMTExOC1cXHRib29sIFxcXCJSZXJvdXRlIGZvciBicm9rZW4gYm9vdCBJUlFzXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTExOTpcXHRkZXBlbmRzIG9uIFg4Nl9JT19BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTIwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTE0MD1jb25maWcgWDg2X01DRVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xMTQ2LVxcdCAga2VybmVsIGlmIGl0IGRldGVjdHMgYSBwcm9ibGVtIChlLmcuIG92ZXJoZWF0aW5nLCBkYXRhIGNvcnJ1cHRpb24pLlxcbmFyY2gveDg2L0tjb25maWc6MTE0NzpcXHQgIFRoZSBhY3Rpb24gdGhlIGtlcm5lbCB0YWtlcyBkZXBlbmRzIG9uIHRoZSBzZXZlcml0eSBvZiB0aGUgcHJvYmxlbSxcXG5hcmNoL3g4Ni9LY29uZmlnLTExNDgtXFx0ICByYW5naW5nIGZyb20gd2FybmluZyBtZXNzYWdlcyB0byBoYWx0aW5nIHRoZSBtYWNoaW5lLlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMTUwPWNvbmZpZyBYODZfTUNFTE9HX0xFR0FDWVxcbmFyY2gveDg2L0tjb25maWctMTE1MS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBkZXByZWNhdGVkIC9kZXYvbWNlbG9nIGNoYXJhY3RlciBkZXZpY2VcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMTUyOlxcdGRlcGVuZHMgb24gWDg2X01DRVxcbmFyY2gveDg2L0tjb25maWctMTE1My1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExNTg9Y29uZmlnIFg4Nl9NQ0VfSU5URUxcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTE2MC1cXHRwcm9tcHQgXFxcIkludGVsIE1DRSBmZWF0dXJlc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExNjE6XFx0ZGVwZW5kcyBvbiBYODZfTUNFIFxcdTAwMjZcXHUwMDI2IFg4Nl9MT0NBTF9BUElDXFxuYXJjaC94ODYvS2NvbmZpZy0xMTYyLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTE2Nj1jb25maWcgWDg2X01DRV9BTURcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTE2OC1cXHRwcm9tcHQgXFxcIkFNRCBNQ0UgZmVhdHVyZXNcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMTY5OlxcdGRlcGVuZHMgb24gWDg2X01DRSBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQ1xcbmFyY2gveDg2L0tjb25maWctMTE3MC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExNzQ9Y29uZmlnIFg4Nl9BTkNJRU5UX01DRVxcbmFyY2gveDg2L0tjb25maWctMTE3NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBvbGQgUGVudGl1bSA1IC8gV2luQ2hpcCBtYWNoaW5lIGNoZWNrc1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExNzY6XFx0ZGVwZW5kcyBvbiBYODZfMzIgXFx1MDAyNlxcdTAwMjYgWDg2X01DRVxcbmFyY2gveDg2L0tjb25maWctMTE3Ny1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExODI9Y29uZmlnIFg4Nl9NQ0VfVEhSRVNIT0xEXFxuYXJjaC94ODYvS2NvbmZpZzoxMTgzOlxcdGRlcGVuZHMgb24gWDg2X01DRV9BTUQgfHwgWDg2X01DRV9JTlRFTFxcbmFyY2gveDg2L0tjb25maWctMTE4NC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTExODY9Y29uZmlnIFg4Nl9NQ0VfSU5KRUNUXFxuYXJjaC94ODYvS2NvbmZpZzoxMTg3OlxcdGRlcGVuZHMgb24gWDg2X01DRSBcXHUwMDI2XFx1MDAyNiBYODZfTE9DQUxfQVBJQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmFyY2gveDg2L0tjb25maWctMTE4OC1cXHR0cmlzdGF0ZSBcXFwiTWFjaGluZSBjaGVjayBpbmplY3RvciBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMTk2PWNvbmZpZyBYODZfTEVHQUNZX1ZNODZcXG5hcmNoL3g4Ni9LY29uZmlnLTExOTctXFx0Ym9vbCBcXFwiTGVnYWN5IFZNODYgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjExOTg6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTExOTktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjI3PWNvbmZpZyBYODZfMTZCSVRcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTIyOS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9LY29uZmlnOjEyMzA6XFx0ZGVwZW5kcyBvbiBNT0RJRllfTERUX1NZU0NBTExcXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjM3PWNvbmZpZyBYODZfRVNQRklYMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyMzgtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTIzOTpcXHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcXHUwMDI2XFx1MDAyNiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDAtXFxuYXJjaC94ODYvS2NvbmZpZz0xMjQxPWNvbmZpZyBYODZfRVNQRklYNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDItXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTI0MzpcXHRkZXBlbmRzIG9uIFg4Nl8xNkJJVCBcXHUwMDI2XFx1MDAyNiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDQtXFxuYXJjaC94ODYvS2NvbmZpZz0xMjQ1PWNvbmZpZyBYODZfVlNZU0NBTExfRU1VTEFUSU9OXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEyNDctXFx0ZGVmYXVsdCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxMjQ4OlxcdGRlcGVuZHMgb24gWDg2XzY0XFxuYXJjaC94ODYvS2NvbmZpZy0xMjQ5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTI4MT1jb25maWcgVE9TSElCQVxcbmFyY2gveDg2L0tjb25maWctMTI4Mi1cXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBMYXB0b3Agc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjEyODM6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEyODQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMjk3PWNvbmZpZyBYODZfUkVCT09URklYVVBTXFxuYXJjaC94ODYvS2NvbmZpZy0xMjk4LVxcdGJvb2wgXFxcIkVuYWJsZSBYODYgYm9hcmQgc3BlY2lmaWMgZml4dXBzIGZvciByZWJvb3RcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMjk5OlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xMzAwLVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTMxND1jb25maWcgTUlDUk9DT0RFXFxuYXJjaC94ODYvS2NvbmZpZy0xMzE1LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjEzMTY6XFx0ZGVwZW5kcyBvbiBDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0lOVEVMXFxuYXJjaC94ODYvS2NvbmZpZy0xMzE3LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NiBpZiBDUFVfU1VQX0FNRFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMzE5PWNvbmZpZyBNSUNST0NPREVfSU5JVFJEMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjAtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTMyMTpcXHRkZXBlbmRzIG9uIE1JQ1JPQ09ERSBcXHUwMDI2XFx1MDAyNiBYODZfMzIgXFx1MDAyNlxcdTAwMjYgQkxLX0RFVl9JTklUUkRcXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjItXFxuYXJjaC94ODYvS2NvbmZpZz0xMzIzPWNvbmZpZyBNSUNST0NPREVfTEFURV9MT0FESU5HXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEzMjUtXFx0ZGVmYXVsdCBuXFxuYXJjaC94ODYvS2NvbmZpZzoxMzI2OlxcdGRlcGVuZHMgb24gTUlDUk9DT0RFIFxcdTAwMjZcXHUwMDI2IFNNUFxcbmFyY2gveDg2L0tjb25maWctMTMyNy1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTEzMzc9Y29uZmlnIE1JQ1JPQ09ERV9MQVRFX0ZPUkNFX01JTlJFVlxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xMzM5LVxcdGRlZmF1bHQgblxcbmFyY2gveDg2L0tjb25maWc6MTM0MDpcXHRkZXBlbmRzIG9uIE1JQ1JPQ09ERV9MQVRFX0xPQURJTkdcXG5hcmNoL3g4Ni9LY29uZmlnLTEzNDEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xMzU1PWNvbmZpZyBNSUNST0NPREVfREJHXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTEzNTctXFx0ZGVmYXVsdCBuXFxuYXJjaC94ODYvS2NvbmZpZzoxMzU4OlxcdGRlcGVuZHMgb24gTUlDUk9DT0RFXFxuYXJjaC94ODYvS2NvbmZpZy0xMzU5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTM4Nj1jb25maWcgSElHSE1FTTRHXFxuYXJjaC94ODYvS2NvbmZpZy0xMzg3LVxcdGJvb2wgXFxcIkhpZ2ggTWVtb3J5IFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxMzg4OlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xMzg5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQxMD1jaG9pY2VcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTQxMi1cXHRkZWZhdWx0IFZNU1BMSVRfM0dcXG5hcmNoL3g4Ni9LY29uZmlnOjE0MTM6XFx0ZGVwZW5kcyBvbiBYODZfMzJcXG5hcmNoL3g4Ni9LY29uZmlnLTE0MTQtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNDMyLVxcdGNvbmZpZyBWTVNQTElUXzNHX09QVFxcbmFyY2gveDg2L0tjb25maWc6MTQzMzpcXHRcXHRkZXBlbmRzIG9uICFYODZfUEFFXFxuYXJjaC94ODYvS2NvbmZpZy0xNDM0LVxcdFxcdGJvb2wgXFxcIjNHLzFHIHVzZXIva2VybmVsIHNwbGl0IChmb3IgZnVsbCAxRyBsb3cgbWVtb3J5KVxcXCJcXG4tLVxcbmFyY2gveDg2L0tjb25maWctMTQzNy1cXHRjb25maWcgVk1TUExJVF8yR19PUFRcXG5hcmNoL3g4Ni9LY29uZmlnOjE0Mzg6XFx0XFx0ZGVwZW5kcyBvbiAhWDg2X1BBRVxcbmFyY2gveDg2L0tjb25maWctMTQzOS1cXHRcXHRib29sIFxcXCIyRy8yRyB1c2VyL2tlcm5lbCBzcGxpdCAoZm9yIGZ1bGwgMkcgbG93IG1lbW9yeSlcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE0NDQ9Y29uZmlnIFBBR0VfT0ZGU0VUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE0NTAtXFx0ZGVmYXVsdCAweEMwMDAwMDAwXFxuYXJjaC94ODYvS2NvbmZpZzoxNDUxOlxcdGRlcGVuZHMgb24gWDg2XzMyXFxuYXJjaC94ODYvS2NvbmZpZy0xNDUyLVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNDU2PWNvbmZpZyBYODZfUEFFXFxuYXJjaC94ODYvS2NvbmZpZy0xNDU3LVxcdGJvb2wgXFxcIlBBRSAoUGh5c2ljYWwgQWRkcmVzcyBFeHRlbnNpb24pIFN1cHBvcnRcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNDU4OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2IFg4Nl9IQVZFX1BBRVxcbmFyY2gveDg2L0tjb25maWctMTQ1OS1cXHRzZWxlY3QgUEhZU19BRERSX1RfNjRCSVRcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQ2Nj1jb25maWcgWDg2X0RJUkVDVF9HQlBBR0VTXFxuYXJjaC94ODYvS2NvbmZpZy0xNDY3LVxcdGRlZl9ib29sIHlcXG5hcmNoL3g4Ni9LY29uZmlnOjE0Njg6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTE0NjktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNDc1PWNvbmZpZyBYODZfQ1BBX1NUQVRJU1RJQ1NcXG5hcmNoL3g4Ni9LY29uZmlnLTE0NzYtXFx0Ym9vbCBcXFwiRW5hYmxlIHN0YXRpc3RpYyBmb3IgQ2hhbmdlIFBhZ2UgQXR0cmlidXRlXFxcIlxcbmFyY2gveDg2L0tjb25maWc6MTQ3NzpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuYXJjaC94ODYvS2NvbmZpZy0xNDc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTQ4OD1jb25maWcgQU1EX01FTV9FTkNSWVBUXFxuYXJjaC94ODYvS2NvbmZpZy0xNDg5LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgTWVtb3J5IEVuY3J5cHRpb24gKFNNRSkgc3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTA6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgQ1BVX1NVUF9BTURcXG5hcmNoL3g4Ni9LY29uZmlnOjE0OTE6XFx0ZGVwZW5kcyBvbiBFRklfU1RVQlxcbmFyY2gveDg2L0tjb25maWctMTQ5Mi1cXHRzZWxlY3QgRE1BX0NPSEVSRU5UX1BPT0xcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTUwNT1jb25maWcgTlVNQVxcbmFyY2gveDg2L0tjb25maWctMTUwNi1cXHRib29sIFxcXCJOVU1BIE1lbW9yeSBBbGxvY2F0aW9uIGFuZCBTY2hlZHVsZXIgU3VwcG9ydFxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDc6XFx0ZGVwZW5kcyBvbiBTTVBcXG5hcmNoL3g4Ni9LY29uZmlnOjE1MDg6XFx0ZGVwZW5kcyBvbiBYODZfNjRcXG5hcmNoL3g4Ni9LY29uZmlnLTE1MDktXFx0c2VsZWN0IFVTRV9QRVJDUFVfTlVNQV9OT0RFX0lEXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1MjM9Y29uZmlnIEFNRF9OVU1BXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE1MjUtXFx0cHJvbXB0IFxcXCJPbGQgc3R5bGUgQU1EIE9wdGVyb24gTlVNQSBkZXRlY3Rpb25cXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTI2OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IE5VTUEgXFx1MDAyNlxcdTAwMjYgUENJXFxuYXJjaC94ODYvS2NvbmZpZy0xNTI3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTUzND1jb25maWcgWDg2XzY0X0FDUElfTlVNQVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0xNTM2LVxcdHByb21wdCBcXFwiQUNQSSBOVU1BIGRldGVjdGlvblxcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1Mzc6XFx0ZGVwZW5kcyBvbiBYODZfNjQgXFx1MDAyNlxcdTAwMjYgTlVNQSBcXHUwMDI2XFx1MDAyNiBBQ1BJIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmFyY2gveDg2L0tjb25maWctMTUzOC1cXHRzZWxlY3QgQUNQSV9OVU1BXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1NDI9Y29uZmlnIE5PREVTX1NISUZUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTE1NDctXFx0ZGVmYXVsdCBcXFwiM1xcXCJcXG5hcmNoL3g4Ni9LY29uZmlnOjE1NDg6XFx0ZGVwZW5kcyBvbiBOVU1BXFxuYXJjaC94ODYvS2NvbmZpZy0xNTQ5LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L0tjb25maWc9MTU1Mz1jb25maWcgQVJDSF9GTEFUTUVNX0VOQUJMRVxcbmFyY2gveDg2L0tjb25maWctMTU1NC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxNTU1OlxcdGRlcGVuZHMgb24gWDg2XzMyIFxcdTAwMjZcXHUwMDI2ICFOVU1BXFxuYXJjaC94ODYvS2NvbmZpZy0xNTU2LVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNTY1PWNvbmZpZyBBUkNIX1NFTEVDVF9NRU1PUllfTU9ERUxcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NjYtXFx0ZGVmX2Jvb2wgeVxcbmFyY2gveDg2L0tjb25maWc6MTU2NzpcXHRkZXBlbmRzIG9uIEFSQ0hfU1BBUlNFTUVNX0VOQUJMRSBcXHUwMDI2XFx1MDAyNiBBUkNIX0ZMQVRNRU1fRU5BQkxFXFxuYXJjaC94ODYvS2NvbmZpZy0xNTY4LVxcbmFyY2gveDg2L0tjb25maWc9MTU2OT1jb25maWcgQVJDSF9NRU1PUllfUFJPQkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzAtXFx0Ym9vbCBcXFwiRW5hYmxlIHN5c2ZzIG1lbW9yeS9wcm9iZSBpbnRlcmZhY2VcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTcxOlxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9LY29uZmlnLTE1NzItXFx0aGVscFxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZz0xNTc3PWNvbmZpZyBBUkNIX1BST0NfS0NPUkVfVEVYVFxcbmFyY2gveDg2L0tjb25maWctMTU3OC1cXHRkZWZfYm9vbCB5XFxuYXJjaC94ODYvS2NvbmZpZzoxNTc5OlxcdGRlcGVuZHMgb24gWDg2XzY0IFxcdTAwMjZcXHUwMDI2IFBST0NfS0NPUkVcXG5hcmNoL3g4Ni9LY29uZmlnLTE1ODAtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTE1ODk9Y29uZmlnIFg4Nl9QTUVNX0xFR0FDWVxcbmFyY2gveDg2L0tjb25maWctMTU5MC1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBub24tc3RhbmRhcmQgTlZESU1NcyBhbmQgQURSIHByb3RlY3RlZCBtZW1vcnlcXFwiXFxuYXJjaC94ODYvS2NvbmZpZzoxNTkxOlxcdGRlcGVuZHMgb24gUEhZU19BRERSX1RfNjRCSVRcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6Mjc6NDYuODExODM1MTYzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDI3MTgwNzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gQ2hhbmdlcyBmb3IgVk0gRGVhdGggSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgY2hhbmdlLCBmb2N1c2luZyBvbiB0aGUgY29uZmlndXJhdGlvbiBlbGVtZW50cyBhbmQgY3JpdGljYWwga2VybmVsIGZ1bmN0aW9ucyBpbXBhY3RlZC4gRmlyc3QsIEkgbmVlZCB0byBsaXN0IHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlncy4gSSBxdWlja2x5IHNlZSB0aGF0IGBJTlRFTF9URFhfSE9TVGAgZGVwZW5kcyBvbiBgWDg2XzY0YCwgYENQVV9TVVBfSU5URUxgLCBhbmQgYFg4Nl9YMkFQSUNgLCBtZWFuaW5nIHRoYXQgYEtWTV9JTlRFTF9URFhgIGlzIHZhbGlkIGluIHRoaXMgY2FzZS4gXG5cbk15IGluaXRpYWwgY29uZmlnIGxpc3QgaXM6IGBLVk1gLCBgS1ZNX0lOVEVMYCwgYEtWTV9BTURgLCBhbmQgYEtWTV9JTlRFTF9URFhgLiBCdXQgd2FpdCwgYEtWTV9JTlRFTF9URFhgIHJlbGllcyBvbiBgSU5URUxfVERYX0hPU1RgLCBzbyB0aGF0IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGFzIHdlbGwuIEFsc28gYElOVEVMX1REWF9IT1NUYCBkZXBlbmRzIG9uIGBYODZfWDJBUElDYCwgc28gdGhlIGxpc3QgaXMgdXBkYXRlZC4gTGV0J3MgbWFrZSB0aGF0IGV4cGxpY2l0OiBgS1ZNYCwgYEtWTV9JTlRFTGAsIGBLVk1fQU1EYCwgYEtWTV9JTlRFTF9URFhgLCBhbmQgYElOVEVMX1REWF9IT1NUYC5cblxuTm93LCB0aGUgcGF0Y2gncyBjb3JlIGZ1bmN0aW9uIGlzIGNoYW5naW5nIGhvdyBgS1ZNX1JFUV9WTV9ERUFEYCBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhlIGNoYW5nZSBmcm9tIGBrdm1fY2hlY2tfcmVxdWVzdGAgdG8gYGt2bV90ZXN0X3JlcXVlc3RgLiBUaGlzIG1lYW5zIHRoZSBWTSdzIGRlYWQgc3RhdGUgcGVyc2lzdHMgYWZ0ZXIgYmVpbmcgY2hlY2tlZC4gQSBjcnVjaWFsIGRldGFpbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3IuIFRoaXMgaXMgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGltcGFjdHMgVk0gZXhlY3V0aW9uIGFuZCBmYXVsdCBoYW5kbGluZy5cblxuSSdtIG1ha2luZyBzdXJlIHRoYXQgSSBrbm93IHRoZSBmdW5jdGlvbiBJJ20gbG9va2luZyBhdCwgc28gSSBkb3VibGUtY2hlY2tlZCB0aGUgbmFtZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3MgdGhlIHJpZ2h0IGZ1bmN0aW9uLiBJJ20gYWxzbyBjb25maXJtaW5nIHdoYXQgdGhlIGNvbmZpZyBzeW1ib2xzIGFyZSB0byBjb25maXJtIG91ciBpbml0aWFsIGZpbmRpbmdzLiBgQ09ORklHX0tWTV9JTlRFTF9URFhgIGFuZCBgQ09ORklHX0lOVEVMX1REWF9IT1NUYCBsaXZlIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZyBmaWxlcywgYWxvbmcgd2l0aCBgQ09ORklHX0tWTWAsIGBDT05GSUdfS1ZNX0lOVEVMYCwgYW5kIGBDT05GSUdfS1ZNX0FNRGAuIEkgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcyB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZXMgdGhlIHBhdGNoIG1vZGlmaWVzOiBgYXJjaC9hcm02NC9rdm0vYXJtLmNgLCBgYXJjaC94ODYva3ZtL21tdS9tbXUuY2AsIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYCwgYW5kIGBhcmNoL3g4Ni9rdm0veDg2LmNgLiBTbywgYXJtNjQgYW5kIHg4NiBhcmUgaW1wYWN0ZWQuXG5cbkkndmUgZ290IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGFyY2hpdGVjdHVyZXMuXG5cbk15IGZvY3VzIHN5bWJvbHMgYXJlOiBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9wcmVfZmF1bHRfbWVtb3J5YC5cblxuTm93LCBJJ2xsIHBhY2thZ2UgdXAgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjMyLCJPdXRwdXRUb2tlbnMiOjIxNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToyNzo1OC4yMzkwMTk1MDlaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjc1MTUwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0lOVEVMXCIsXG4gICAgXCJLVk1fQU1EXCIsXG4gICAgXCJLVk1fSU5URUxfVERYXCIsXG4gICAgXCJJTlRFTF9URFhfSE9TVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X3ByZV9mYXVsdF9tZW1vcnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGBrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCB0byBga3ZtX3Rlc3RfcmVxdWVzdChLVk1fUkVRX1ZNX0RFQUQsIHZjcHUpYCBpbiBzZXZlcmFsIEtWTSBjb21wb25lbnRzIChhcm02NCwgeDg2IE1NVSwgVERYLCB4ODYgY29yZSkuIFRoaXMgcHJldmVudHMgdGhlIGBLVk1fUkVRX1ZNX0RFQURgIGZsYWcgZnJvbSBiZWluZyBjbGVhcmVkIHdoZW4gY2hlY2tlZCwgZW5zdXJpbmcgdGhhdCBhIGRlYWQgVk0gc3RheXMgZGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgS1ZNIGxvZ2ljIHRoYXQgYWZmZWN0cyBWTSBleGVjdXRpb24gYW5kIGZhdWx0IGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[1] Phase: Succeeded StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 01:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 01:28:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2] Phase: Succeeded StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 01:29:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 01:28:52 +0000 UTC FinishedAt: 2026-08-07 01:29:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6rwg/series-workflowf6rwg-convert-artifact-3352165573/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 01:29:19 +0000 UTC FinishedAt: 2026-08-07 01:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 01:29:19 +0000 UTC FinishedAt: 2026-08-07 01:48:21 +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:*9dcd4b18-190c-4fc6-b75c-a3fbc7c7e903,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-workflowf6rwg/series-workflowf6rwg-convert-artifact-3352165573/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": "10fdc669-54cb-46fc-8ebd-c39cc5bd62ad", "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-workflowf6rwg/series-workflowf6rwg-build-action-1859036011/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:29:19 +0000 UTC FinishedAt: 2026-08-07 01:48:11 +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:*9dcd4b18-190c-4fc6-b75c-a3fbc7c7e903,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-workflowf6rwg/series-workflowf6rwg-convert-artifact-3352165573/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": "10fdc669-54cb-46fc-8ebd-c39cc5bd62ad", "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-workflowf6rwg/series-workflowf6rwg-build-action-1859036011/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 01:48:21 +0000 UTC FinishedAt: 2026-08-07 01:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 01:48:21 +0000 UTC FinishedAt: 2026-08-07 01:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 01:48:21 +0000 UTC FinishedAt: 2026-08-07 01:48:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 01:48:21 +0000 UTC FinishedAt: 2026-08-07 01:48:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf6rwg/series-workflowf6rwg-convert-artifact-2719601056/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 01:48:32 +0000 UTC FinishedAt: 2026-08-07 01:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 01:48:32 +0000 UTC FinishedAt: 2026-08-07 01:50:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10fdc669-54cb-46fc-8ebd-c39cc5bd62ad,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-workflowf6rwg/series-workflowf6rwg-build-action-1859036011/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-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 01:50:42 +0000 UTC FinishedAt: 2026-08-07 01:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 01:50:42 +0000 UTC FinishedAt: 2026-08-07 01:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 01:50:42 +0000 UTC FinishedAt: 2026-08-07 02:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 01:50:42 +0000 UTC FinishedAt: 2026-08-07 02:06:55 +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:*9dcd4b18-190c-4fc6-b75c-a3fbc7c7e903,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-workflowf6rwg/series-workflowf6rwg-convert-artifact-2719601056/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": "3abadc13-1a60-4198-ba3d-96bad266abea", "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-workflowf6rwg/series-workflowf6rwg-build-action-3392849756/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:50:42 +0000 UTC FinishedAt: 2026-08-07 02:06:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9dcd4b18-190c-4fc6-b75c-a3fbc7c7e903,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-workflowf6rwg/series-workflowf6rwg-convert-artifact-2719601056/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": "3abadc13-1a60-4198-ba3d-96bad266abea", "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-workflowf6rwg/series-workflowf6rwg-build-action-3392849756/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 02:06:55 +0000 UTC FinishedAt: 2026-08-07 02:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 02:06:55 +0000 UTC FinishedAt: 2026-08-07 02:06:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 02:06:55 +0000 UTC FinishedAt: 2026-08-07 02:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 02:06:55 +0000 UTC FinishedAt: 2026-08-07 02:08:49 +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:*3abadc13-1a60-4198-ba3d-96bad266abea,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-workflowf6rwg/series-workflowf6rwg-build-action-3392849756/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-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +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_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"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:*10fdc669-54cb-46fc-8ebd-c39cc5bd62ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3abadc13-1a60-4198-ba3d-96bad266abea,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-workflowf6rwg/series-workflowf6rwg-build-action-1859036011/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-workflowf6rwg/series-workflowf6rwg-build-action-3392849756/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 02:09:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 02:09:04 +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_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"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-workflowf6rwg/series-workflowf6rwg-convert-artifact-1353282297/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 02:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 02:08:59 +0000 UTC FinishedAt: 2026-08-07 02:08:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 02:09:00 +0000 UTC FinishedAt: 2026-08-07 02:09:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 02:09:10 +0000 UTC FinishedAt: 2026-08-07 05:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6rwg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_pre_fault_memory"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a806d364ef288a6443a1337820ea8410a7ccc6b3","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_INTEL","KVM_AMD","KVM_INTEL_TDX","INTEL_TDX_HOST"],"series_id":"410de8be-900a-4d20-9050-cccc03489738","tree_name":"kvm-x86","tree_url":"https://github.com/kvm-x86/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 02:09:10 +0000 UTC FinishedAt: 2026-08-07 05:11:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10fdc669-54cb-46fc-8ebd-c39cc5bd62ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3abadc13-1a60-4198-ba3d-96bad266abea,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-workflowf6rwg/series-workflowf6rwg-build-action-1859036011/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-workflowf6rwg/series-workflowf6rwg-build-action-3392849756/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-workflowf6rwg/series-workflowf6rwg-convert-artifact-1353282297/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}