Name: series-workflowchrb7 Phase: Succeeded StartedAt: 2026-08-15 14:35:22 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[0] Phase: Succeeded StartedAt: 2026-08-15 14:35:22 +0000 UTC FinishedAt: 2026-08-15 14:39:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 14:35:22 +0000 UTC FinishedAt: 2026-08-15 14:39:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "baad156b-3602-4c79-9249-316a96d2c0b0" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_prepare_memory_region", "kvm_arch_free_memslot", "kvm_arch_commit_memory_region", "kvm_set_internal_memslot" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjM3OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTM0ODgsNyAmIzQzOzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHtcbi1cdFx0dmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiYjNDM7XHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTEzNTQ0LDcgJiM0MzsxMzU0NCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuIFxuIFx0XHRscGFnZXMgPSBfX2t2bV9tbXVfc2xvdF9scGFnZXMoc2xvdCwgbnBhZ2VzLCBsZXZlbCk7XG4gXG4tXHRcdGxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4mIzQzO1x0XHRsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbGluZm8pXG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC0xMzU4MCw3ICYjNDM7MTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xuIFxuIFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICYjNDM7JiM0MztpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4mIzQzO1x0XHRrdmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiBcdFx0c2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcbiBcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwLi41MmFmMWViZGQxNGMyIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTkyNyw3ICYjNDM7OTI3LDcgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG4gXHRpZiAoIW1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR2ZnJlZShtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCk7XG4mIzQzO1x0a3ZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbiBcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcbiB9XG4gXG5AQCAtMTQyMiw3ICYjNDM7MTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpO1xuIFxuLVx0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4mIzQzO1x0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBrdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghbWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgICAmIzM0O2t2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE0OjM3OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IGFmY2FjMTA0Mjk0N2EuLjc3NTY3YWEyMGQ4MzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTEzNDg4LDcgJiM0MzsxMzQ4OCw3IEBAIHZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCkKIAltZW1zbG90X3JtYXBfZnJlZShzbG90KTsKIAogCWZvciAoaSA9IDE7IGkgJmx0OyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHsKLQkJdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiYjNDM7CQlrdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiAJCXNsb3QtJmd0O2FyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMOwogCX0KIApAQCAtMTM1NDQsNyAmIzQzOzEzNTQ0LDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sCiAKIAkJbHBhZ2VzID0gX19rdm1fbW11X3Nsb3RfbHBhZ2VzKHNsb3QsIG5wYWdlcywgbGV2ZWwpOwogCi0JCWxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7CiYjNDM7CQlsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbGluZm8pCiAJCQlnb3RvIG91dF9mcmVlOwogCkBAIC0xMzU4MCw3ICYjNDM7MTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSwKIAltZW1zbG90X3JtYXBfZnJlZShzbG90KTsKIAogCWZvciAoaSA9IDE7IGkgJmx0OyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHsKLQkJdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiYjNDM7CQlrdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiAJCXNsb3QtJmd0O2FyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMOwogCX0KIAlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTAuLjUyYWYxZWJkZDE0YzIgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uYwpAQCAtOTI3LDcgJiM0Mzs5MjcsNyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCkKIAlpZiAoIW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCkKIAkJcmV0dXJuOwogCi0JdmZyZWUobWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKTsKJiM0MzsJa3ZmcmVlKG1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCk7CiAJbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwID0gTlVMTDsKIH0KIApAQCAtMTQyMiw3ICYjNDM7MTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KQogewogCXVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpOwogCi0JbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwID0gX192Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBrdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBzd2FwcGluZyBvdXQgYHZmcmVlYCBmb3IgYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIGZvciBga3ZjYWxsb2NgIHdpdGhpbiB0aGUgS1ZNIG1lbW9yeSBzbG90IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgcGF0aHMuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgbWVtb3J5IGFsbG9jYXRpb24gQVBJIGNoYW5nZSwgd2hpY2ggaXMgaW1wb3J0YW50LiBCdXQgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuCgpUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3k6IGBfX3ZjYWxsb2NgIHJlbGllcyBvbiBgdm1hbGxvY2AsIHdoZXJlYXMgYGt2Y2FsbG9jYCB1c2VzIGBrbWFsbG9jYCBpZiBwb3NzaWJsZSwgZmFsbGluZyBiYWNrIHRvIGB2bWFsbG9jYCBpZiBuZWVkZWQuIFRoaXMgY291bGQgaGF2ZSBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLCBvciBhbHRlciBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IgdGhlc2UgY3JpdGljYWwgS1ZNIG9wZXJhdGlvbnMuIEdpdmVuIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCwgYW5kIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYCwgYWxsIG9mIHdoaWNoIGFyZSByZWFjaGVkIHZpYSBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYCwgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUgaW1wb3J0YW50LgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gV2hpbGUgaXQmIzM5O3MgYSBzZWVtaW5nbHkgc2ltcGxlIEFQSSByZXBsYWNlbWVudCwgdGhlIHNoaWZ0IGZyb20gdm1hbGxvYyB0byBrdm1hbGxvYyBpcyBzaWduaWZpY2FudCBlbm91Z2ggdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IHRvIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbGVha3MgaW50cm9kdWNlZC4gU28sIGZ1enppbmcgaXMgcHJvYmFibHkgYSBnb29kIGlkZWEuCgpGaXJzdCwgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExvb2tzIGxpa2UgYENPTkZJR19LVk1gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZy4KCk9rYXksIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhZ2FpbiB0byByZWZyZXNoIG15IG1lbW9yeTogYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBBIGtleSB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIG5lZWQgdG8gYmUgcGFpcmVkLCBzbyBpdCYjMzk7cyBlc3NlbnRpYWwgdGhpcyBwYXRjaCBtYWludGFpbnMgdGhhdCBjb25zaXN0ZW5jeS4KClJpZ2h0LCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCwgYW5kIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYCBhcmUgYWxsICpzdGF0aWMqLiBUaGF0IG1lYW5zIHRoZWlyIHNjb3BlIGlzIGxpbWl0ZWQgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgZmlsZXMuIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgIGlzICpub3QqIHN0YXRpYywgc28gaXQmIzM5O3MgdGhlIG1vcmUgbGlrZWx5IGNhbmRpZGF0ZSB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuCgpOb3csIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBvZiB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgdGhlIHN0YXRpYyBvbmVzLiBMZXQmIzM5O3Mgc2VlLi4uIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAgaXMgY2FsbGVkIGJ5IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLiBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAgaXMgY2FsbGVkIGJ5IGBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYW5kIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgIGlzIGNhbGxlZCBieSBga3ZtX2ZyZWVfbWVtc2xvdGAuIExldCYjMzk7cyBncmVwIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xMzQ3ND1zdGF0aWMgdm9pZCBtZW1zbG90X3JtYXBfZnJlZShzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ4NDp2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzc2NT12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXHRpZiAoY2hhbmdlID09IEtWTV9NUl9NT1ZFKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2Olx0XHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBvbGQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIEtWTSBrZXJuZWwgbW9kdWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gYGdyZXBgIGlzIHRoZSBvYnZpb3VzIHRvb2wgaGVyZTsgSSYjMzk7bGwgdXNlIGl0IHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoYXQgZnVuY3Rpb24uIEkgd2FudCB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyAqY2FsbGVkKiwgd2hhdCBhcmd1bWVudHMgaXQgdGFrZXMsIGFuZCBob3cgdGhlIHJldHVybmVkIGRhdGEgaXMgaGFuZGxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgYWJvdXQgaXRzIHB1cnBvc2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIGhvdyBtZW1vcnkgc2xvdHMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEtWTSBtZW1vcnkgbW9kZWwuIEJhc2ljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGxpZmUgY3ljbGUgYW5kIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBsYXJnZXIgS1ZNIGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCBkaWdzIHVwLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGludGVyZXN0aW5nIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTEzNDk4PWludCBtZW1zbG90X3JtYXBfYWxsb2Moc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgdW5zaWduZWQgbG9uZyBucGFnZXMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTE5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNTIwOnN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTIxLVx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTM2MDU9aW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjIzLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNjI0Olx0XHRyZXR1cm4ga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoa3ZtLCBuZXcpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjI1LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBvZiBEaXJ0eSBCaXRtYXBzIGluIEtWTSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBrZXJuZWwgbW9kdWxlIGhhbmRsZXMgZGlydHkgYml0bWFwIGFsbG9jYXRpb24uIE15IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb24sIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0JiMzOTtsbCBiZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50LiBJIGV4cGVjdCB0byBmaW5kIHRoZSBpbml0aWFsIGFsbG9jYXRpb24gY2FsbHMsIGJ1dCBhbHNvIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgZnJlZSBvciBtYW5hZ2UgdGhlIGJpdG1hcHMuIEkmIzM5O2xsIGJlIGludGVyZXN0ZWQgaW4gd2hlcmUgYW5kIHdoZW4gdGhlc2UgYml0bWFwcyBhcmUgYWxsb2NhdGVkLCBob3cgbXVjaCBtZW1vcnkgdGhleSBjb25zdW1lLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCB1c2FnZSBwYXR0ZXJucyBsb29rIGxpa2UuIFRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGFueSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBgZ3JlcGAgdHVybnMgdXAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYWxsb2NfZGlydHlfYml0bWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE0MTU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV91bmxvY2tfYWxsX3ZjcHVzKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjAtICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE0MjE6c3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjIte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY3Ny1cdFx0ZWxzZSBpZiAoa3ZtX3VzZV9kaXJ0eV9iaXRtYXAoa3ZtKSkge1xudmlydC9rdm0va3ZtX21haW4uYzoxNjc4Olx0XHRcdHIgPSBrdm1fYWxsb2NfZGlydHlfYml0bWFwKG5ldyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NzktXHRcdFx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gYW5hbHl6ZSB0aGUgZnVuY3Rpb24gYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxldmVyYWdlIGBncmVwYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHVzYWdlIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gY29kZWJhc2UuIEkgd2FudCB0byBzZWUgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLCBob3cgaXQmIzM5O3MgY2FsbGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gaXQuIFRoaXMgaW5pdGlhbCBzZWFyY2ggc2hvdWxkIGhlbHAgbWUgZm9ybSBhIHByZWxpbWluYXJ5IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcml0aWNhbCBpbiByZWxlYXNpbmcgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdHJhY2tpbmcgZGlydHkgcGFnZXMsIHNvIEkgbmVlZCB0byBhc3Nlc3MgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiBpdHMgdXNhZ2UgYXMgd2VsbC4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIHNob3VsZCBiZSB1c2VkIGR1cmluZyBWTSB0ZWFyZG93biBvciB3aGVuIHJlc2V0dGluZyBwYWdlIHRyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9OTIwPXN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3BtX25vdGlmaWVyKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTI1OnN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxudmlydC9rdm0va3ZtX21haW4uYy05MjYte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9OTM1PXN0YXRpYyB2b2lkIGt2bV9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtOTM5LVxudmlydC9rdm0va3ZtX21haW4uYzo5NDA6XHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2NTg9c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2OTAtXHRpZiAociBcdTAwMjZcdTAwMjYgbmV3IFx1MDAyNlx1MDAyNiBuZXctXHUwMDNlZGlydHlfYml0bWFwIFx1MDAyNlx1MDAyNiAoIW9sZCB8fCAhb2xkLVx1MDAzZWRpcnR5X2JpdG1hcCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2OTE6XHRcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChuZXcpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNjkyLVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY5Nj1zdGF0aWMgdm9pZCBrdm1fY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTc0MC1cdFx0aWYgKG9sZC1cdTAwM2VkaXJ0eV9iaXRtYXAgXHUwMDI2XHUwMDI2ICFuZXctXHUwMDNlZGlydHlfYml0bWFwKVxudmlydC9rdm0va3ZtX21haW4uYzoxNzQxOlx0XHRcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChvbGQpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNzQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEtWTSBtZW1vcnkgbWFuYWdlbWVudC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGNsb3NlbHkgYXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBhbmQgYGt2bV9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIFdhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZT8gVGhlIG90aGVyIHRocmVlLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAgYW5kIGBrdm1fZnJlZV9tZW1zbG90YCBhcmUgZGVjbGFyZWQgc3RhdGljLCBzbyBJIGNhbiBpZ25vcmUgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MTYwMD1zdGF0aWMgdm9pZCBrdm1fc3dhcF9hY3RpdmVfbWVtc2xvdHMoc3RydWN0IGt2bSAqa3ZtLCBpbnQgYXNfaWQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNjU3LVxudmlydC9rdm0va3ZtX21haW4uYzoxNjU4OnN0YXRpYyBpbnQga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NTktXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4ODY9c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTkzMS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTkzMjpcdHIgPSBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKGt2bSwgb2xkLCBuZXcsIGNoYW5nZSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE5MzMtXHRpZiAocikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9uIG9mIGEgU3RhdGljIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBrdm1fc2V0X21lbXNsb3RgIGlzIGRlZmluZWQgYXMgc3RhdGljLiBSaWdodCBhd2F5LCB0aGF0IHRyaWdnZXJzIHNvbWUgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaW4gbXkgbWluZC4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGtleXdvcmQsIGBzdGF0aWNgLCBhcmUgcHJldHR5IGNsZWFyLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIGV4cGxpY2l0IGFib3V0IHRoZW0sIGFzIGl0IGhhcyByYW1pZmljYXRpb25zIG9uIGhvdyB0aGUgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYW5kIHdoYXQgdGhlIGNvbXBpbGVyIGNhbiBkbyB3aXRoIGl0LgoKRmlyc3QsIEkgcmVjYWxsIHRoYXQgYmVpbmcgc3RhdGljIG1lYW5zIGl0cyB2aXNpYmlsaXR5IGlzICpsaW1pdGVkKiB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCYjMzk7cyBkZWZpbmVkIGluLiBJbiBvdGhlciB3b3JkcywgSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gY29kZSBpbiAqb3RoZXIqIHNvdXJjZSBmaWxlcyB3aXRoaW4gdGhlIEtWTSBwcm9qZWN0IOKAkyBpdCYjMzk7cyBsb2NhbC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzcGVjdC4KClNlY29uZGx5LCBhbmQgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCB0aGUgY29tcGlsZXIgd2lsbCBoYXZlIGdyZWF0ZXIgZmxleGliaWxpdHkgaW4gb3B0aW1pemF0aW9uLiBCZWNhdXNlIHRoZSBjb21waWxlciAqa25vd3MqIHRoYXQgdGhlIGZ1bmN0aW9uIGNhbiYjMzk7dCBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIGl0cyBzb3VyY2UgZmlsZSwgaXQmIzM5O3MgYWJsZSB0byBpbmxpbmUgaXQgbW9yZSBhZ2dyZXNzaXZlbHkgaWYgdGhlIG9wdGltaXphdGlvbiBzZXR0aW5ncyBhcmUgaGlnaCBlbm91Z2gsIHdoaWNoIHdvdWxkIGF2b2lkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0IGFsc28gcmVkdWNlcyBsaW5rYWdlIG92ZXJoZWFkLCByZWR1Y2luZyBiaW5hcnkgc2l6ZS4KClNvLCB3aGVuIEkgc2VlIGBzdGF0aWNgLCBJIGltbWVkaWF0ZWx5IGJlZ2luIHRvIGNvbnNpZGVyOiB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIGxpbWl0aW5nIGl0cyB2aXNpYmlsaXR5PyBJcyBpdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCAqc2hvdWxkbiYjMzk7dCogYmUgZXhwb3NlZCBleHRlcm5hbGx5PyBPciBpcyBpdCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbj8gT3IgcGVyaGFwcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28/IEFuZCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGFmZmVjdHMgbWFpbnRhaW5hYmlsaXR5IGFuZCBwb3RlbnRpYWwgZnV0dXJlIHJlZmFjdG9yaW5nLiBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIEtWTSBjb2RlYmFzZSB0byBkZXRlcm1pbmUgdGhlIG1vdGl2YXRpb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE2MDA9c3RhdGljIHZvaWQga3ZtX3N3YXBfYWN0aXZlX21lbXNsb3RzKHN0cnVjdCBrdm0gKmt2bSwgaW50IGFzX2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTYyNy1cdC8qXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2Mjg6XHQgKiBBY3F1aXJlZCBpbiBrdm1fc2V0X21lbXNsb3QuIE11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHN5bmNocm9uaXplXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2MjktXHQgKiBTUkNVIGJlbG93IGluIG9yZGVyIHRvIGF2b2lkIGRlYWRsb2NrIHdpdGggYW5vdGhlciB0aHJlYWRcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4NzM9c3RhdGljIHZvaWQga3ZtX3VwZGF0ZV9mbGFnc19tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODUtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE4ODY6c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0xODg3LVx0XHRcdCAgIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA0OC1cdCAqIE5vdGUsIHRoZSBvbGQgbWVtc2xvdCAoYW5kIHRoZSBwb2ludGVyIGl0c2VsZiEpIG1heSBiZSBpbnZhbGlkYXRlZFxudmlydC9rdm0va3ZtX21haW4uYzoyMDQ5Olx0ICogYW5kL29yIGRlc3Ryb3llZCBieSBrdm1fc2V0X21lbXNsb3QoKS5cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA1MC1cdCAqL1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA1OS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjA2MDpcdFx0cmV0dXJuIGt2bV9zZXRfbWVtc2xvdChrdm0sIG9sZCwgTlVMTCwgS1ZNX01SX0RFTEVURSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNjEtXHR9XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTEyLVxudmlydC9rdm0va3ZtX21haW4uYzoyMTEzOlx0ciA9IGt2bV9zZXRfbWVtc2xvdChrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xudmlydC9rdm0va3ZtX21haW4uYy0yMTE0LVx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9uIENoZWNrKioKCk9rYXksIHNvIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLi4uIGlzIGl0IGRlY2xhcmVkIGFzIGBzdGF0aWNgPyBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0LiBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCwgYXMgc3RhdGljIGZ1bmN0aW9ucyBoYXZlIGxpbWl0ZWQgc2NvcGUsIGFuZCB0aGF0IGNvbnRleHQgaXMgcGFyYW1vdW50IHdoZW4gcmVhc29uaW5nIGFib3V0IHRoZSBiZWhhdmlvciBvZiBLVk0uIEl0IGRpY3RhdGVzIGhvdyBhbmQgd2hlcmUgdGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQsIHdoaWNoLCBpbiB0dXJuLCBpbXBhY3RzIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgc3RhdGljIG5hdHVyZSBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nIHN0ZXBzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5ODE9c3RhdGljIGJvb2wga3ZtX2NoZWNrX21lbXNsb3Rfb3ZlcmxhcChzdHJ1Y3Qga3ZtX21lbXNsb3RzICpzbG90cywgaW50IGlkLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTk5NDpzdGF0aWMgaW50IGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE5OTUtXHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMjc9aW50IGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTM1LVxudmlydC9rdm0va3ZtX21haW4uYzoyMTM2Olx0cmV0dXJuIGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIG1lbSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMzctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjE0MD1zdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTQ2LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0NzpcdHJldHVybiBrdm1fc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy0yMTQ4LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgbWVtb3J5IHJlZ2lvbiBtYW5hZ2VtZW50LiBUaGUgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAgZnVuY3Rpb24gaXMgdGhlIGlvY3RsIGhhbmRsZXIsIHdoaWNoIGlzIGltcG9ydGFudC4gRnJvbSB0aGVyZSBJIHNlZSBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBleHBvcnRlZCwgc28gdGhhdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIGEga2V5IHBvaW50IHRvby4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM6IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLgoKSG1tLCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgZWFjaC4gQWxyaWdodCwgbG9va3MgbGlrZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBhbHJlYWR5IG5vbi1zdGF0aWMuIFRoZSBpb2N0bCBoYW5kbGVyIGl0c2VsZiwgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAsICppcyogc3RhdGljLCBidXQgdGhhdCYjMzk7cyB0eXBpY2FsIGZvciBpb2N0bCBoYW5kbGVycy4gSXQmIzM5O3MgdXN1YWxseSBnb29kIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgbmFtaW5nIGNvbmZsaWN0cyBpbiB0aGUgaW9jdGwgaXRzZWxmLiBXYWl0LCBga3ZtX3ZtX2lvY3RsYCBpcyBub24tc3RhdGljIQoKT2theSwgdGltZSB0byBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBjaGVjayBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYCB3aXRoaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMzg9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMzktXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxNDA6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yMTQxLVx0XHRcdFx0XHQgIHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01MTQ4PXN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMDI6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcdTAwMjZtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MjAzLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk2MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gTWVtb3J5IFJlZ2lvbiBGb2N1cyBTeW1ib2wgU2VsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIGhhbmRsZWQgaW4gS1ZNIGFuZCBuZWVkIHRvIHBpY2sgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGBrdm1fdm1faW9jdGxgIHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gQnV0LCBoYW5nIG9uLCBpdCYjMzk7cyBhIHZlcnkgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgYW5kIHRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0byBhdm9pZCB0aG9zZSB0byBwcmV2ZW50IGJpYXNlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoZXkmIzM5O3JlIG1vcmUgaW50ZXJlc3RlZCBpbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgcmF0aGVyIHRoYW4gaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuCgpTbywgSSB0aG91Z2h0IGFib3V0IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gSSBuZWVkIHRvIGJlIGNhcmVmdWwuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgbGVzcyByaXNreSBhcHByb2FjaC4KCkkgc3RhcnRlZCBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9uczogSSB0aG91Z2h0IG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLCBidXQgaXQgaXMgYW4gaW50ZXJuYWwgS1ZNIGZ1bmN0aW9uLCBzbyB0aGF0IHdvbiYjMzk7dCB3b3JrLiBIb3dldmVyLCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGxvb2sgcHJvbWlzaW5nLiBUaGV5IGFyZSBub24tc3RhdGljIGFuZCBzZWVtIGxpa2UgdGhleSBkbyB0aGUgcmlnaHQgdGhpbmcuCgpUaGVuIEkgY2hlY2tlZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAuIFRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tZW1zbG90YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHRoZSBzdGF0aWMgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIEkgY2FuIHVzZSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBzaW5jZSB0aGF0IGlzIGEgbm9uLXN0YXRpYyBBUEkuIEkmIzM5O20gc3RhcnRpbmcgdG8gZ2V0IGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBjYWxsIHN0YWNrIG5vdy4KCkFsc28sIEkgY2hlY2tlZCBvdXQgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIFRoaXMgaXMgY2FsbGVkIGZyb20gYGt2bV9mcmVlX21lbXNsb3RgIGFuZCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSBga3ZtX2Rlc3Ryb3lfdm1gIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTk2Nj1zdGF0aWMgdW1vZGVfdCBrdm1fc3RhdHNfZGVidWdmc19tb2RlKGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyAqZGVzYylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk3OC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTc5OnN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoc3RydWN0IGt2bSAqa3ZtKVxudmlydC9rdm0va3ZtX21haW4uYy05ODAte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9OTk3PXN0YXRpYyBpbnQga3ZtX2NyZWF0ZV92bV9kZWJ1Z2ZzKHN0cnVjdCBrdm0gKmt2bSwgY29uc3QgY2hhciAqZmRuYW1lKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA2NC1vdXRfZXJyOlxudmlydC9rdm0va3ZtX21haW4uYzoxMDY1Olx0a3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy0xMDY2LVx0cmV0dXJuIHJldDtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTEwNzM9dm9pZCBfX3dlYWsga3ZtX2FyY2hfcHJlX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA3OS0gKiBiZSBzZXR1cCBhbHJlYWR5LCBzbyB3ZSBjYW4gY3JlYXRlIGFyY2gtc3BlY2lmaWMgZGVidWdmcyBlbnRyaWVzIHVuZGVyIGl0LlxudmlydC9rdm0va3ZtX21haW4uYzoxMDgwOiAqIENsZWFudXAgc2hvdWxkIGJlIGF1dG9tYXRpYyBkb25lIGluIGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoKSByZWN1cnNpdmVseSwgc29cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA4MS0gKiBhIHBlci1hcmNoIGRlc3Ryb3kgaW50ZXJmYWNlIGlzIG5vdCBuZWVkZWQuXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0xMjMzPXN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RldmljZXMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI1NDpzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEyNTUte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI2MC1cdGt2bV91ZXZlbnRfbm90aWZ5X2NoYW5nZShLVk1fRVZFTlRfREVTVFJPWV9WTSwga3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI2MTpcdGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoa3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI2Mi1cdG11dGV4X2xvY2soXHUwMDI2a3ZtX2xvY2spO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTMyOD12b2lkIGt2bV9wdXRfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzAtXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmt2bS1cdTAwM2V1c2Vyc19jb3VudCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEzMzE6XHRcdGt2bV9kZXN0cm95X3ZtKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzItfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NjA5ND1zdGF0aWMgaW50IGt2bV9kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MTAyLVx0ICogVGhlIGRlYnVnZnMgZmlsZXMgYXJlIGEgcmVmZXJlbmNlIHRvIHRoZSBrdm0gc3RydWN0IHdoaWNoXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYxMDM6ICAgICAgICAqIGlzIHN0aWxsIHZhbGlkIHdoZW4ga3ZtX2Rlc3Ryb3lfdm0gaXMgY2FsbGVkLiAga3ZtX2dldF9rdm1fc2FmZVxudmlydC9rdm0va3ZtX21haW4uYy02MTA0LSAgICAgICAgKiBhdm9pZHMgdGhlIHJhY2UgYmV0d2VlbiBvcGVuIGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgZGVidWdmcyBkaXJlY3RvcnkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTM2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOgoKKipGb2N1c2luZyBpbiBvbiBLVk0gQ2xlYW51cCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEtWTSByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAuIGBrdm1fZGVzdHJveV92bWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGxpbWl0cyBpdHMgdmlzaWJpbGl0eS4gVGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcHV0X2t2bWAgaXMgKm5vbiotc3RhdGljLiBUaGF0IG1ha2VzIGl0IGEgYmV0dGVyIGNhbmRpZGF0ZSBmb3IgYSBtb3JlIGdsb2JhbCBzeW1ib2wg4oCTIGl0JiMzOTtzIHByb2JhYmx5IGV4cG9ydGVkIGFuZCB1c2VkIG1vcmUgYnJvYWRseSBhY3Jvc3MgdGhlIEtWTSBjb2RlYmFzZS4gVGhlcmVmb3JlLCBga3ZtX3B1dF9rdm1gIGlzIGEgZ29vZCBmb2N1cyBzeW1ib2wgZm9yIGZpZ3VyaW5nIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJJiMzOTtsbCBzdGFydCB0aGVyZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgaG93IHRoZSBpbnRlcm5hbCBtZW1vcnkgc2xvdHMgYXJlIGhhbmRsZWQuIExldCYjMzk7cyBzZWUgd2hhdCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBkb2VzLiBUaGF0IG1pZ2h0IHByb3ZpZGUgc29tZSB1c2VmdWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEyNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEyNzppbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEyOC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEzODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzLCBzdXJwcmlzaW5nbHksIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGludHVpdGlvbiBzYXlzIHRoaXMgbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2h5IGl0JiMzOTtzIG5vdCBiZWluZyBsZXZlcmFnZWQgbW9yZSB3aXRoaW4gdGhlIGV4aXN0aW5nIGFyY2hpdGVjdHVyZS4gCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIHRoZSBjb3VudGVycGFydCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAuIFRoZSBwYWlyaW5nIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyBsaWtlbHkgdG8gcHJvdmlkZSBpbXBvcnRhbnQgY29udGV4dC4gRG9lcyB0aGUgdXNlLCBvciBub24tdXNlLCBvZiB0aGUgYGludGVybmFsX21lbXNsb3RgIGZ1bmN0aW9uIGhhdmUgcmFtaWZpY2F0aW9ucyBvbiBob3cgdGhlIG1lbW9yeSBzbG90cyBhcmUgdWx0aW1hdGVseSBmcmVlZD8gSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIGFib3V0IG93bmVyc2hpcCwgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgdGhhdCBtaWdodCBhcmlzZSBmcm9tIGltcHJvcGVyIHVzZSBvciBpbnRlZ3JhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTkzNT1zdGF0aWMgdm9pZCBrdm1fZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTQyOlx0a3ZtX2FyY2hfZnJlZV9tZW1zbG90KGt2bSwgc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhIGd1ZXN0JiMzOTtzIG1lbW9yeSByZWdpb24sIGJlZm9yZSBLVk0gaGFuZHMgaXQgb2ZmIHRvIHRoZSBNTVUuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBhcmNoaXRlY3R1cmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSXMgdGhpcyB4ODYsIEFSTSwgUklTQy1WLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgcmFkaWNhbGx5IGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgaGFyZHdhcmUuCgpNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aWN1bGFyIHJlZ2lvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIFJBTSByZWdpb24sIGFuIEkvTyByZWdpb24sIHNvbWV0aGluZyBmb3IgTU1JTywgb3IgcGVyaGFwcyBhIHNwZWNpYWwgbWVtb3J5IHR5cGU/IFRoZSBhbnN3ZXJzIHdpbGwgZGljdGF0ZSB3aGljaCBhcmNoaXRlY3R1cmFsIG1lbW9yeSBtYXAgc2V0dGluZ3MgYXJlIGFwcGxpZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbGFncyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBhcyB3ZWxsLCB3aGljaCB3aWxsIGdpdmUgbWUgaGludHMgYWJvdXQgdGhlIHJlcXVpcmVkIG1lbW9yeSBhdHRyaWJ1dGVzOiByZWFkL3dyaXRlL2V4ZWN1dGUgcGVybWlzc2lvbnMsIGNhY2hpbmcgc2V0dGluZ3MgKGUuZy4sIHdyaXRlLWJhY2ssIHdyaXRlLXRocm91Z2gsIHVuY2FjaGVkKSwgYW5kIHBvdGVudGlhbGx5IHdoZXRoZXIgdGhpcyBpcyBhIHNwZWNpYWwgbWVtb3J5IHJlZ2lvbiBmb3IgZGV2aWNlcyBvciBwZXJpcGhlcmFscy4KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHdoYXQgbG9ja2luZywgaWYgYW55LCBpcyB1c2VkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBNZW1vcnkgcmVnaW9uIHNldHVwIGlzIGEgY3JpdGljYWwgc2VjdGlvbi4gUmFjZSBjb25kaXRpb25zIGhlcmUgd291bGQgYmUgY2F0YXN0cm9waGljLCBzbyBJIGV4cGVjdCBzb21lIGZvcm0gb2YgcHJvdGVjdGlvbiwgbGlrZWx5IGEgc3BpbmxvY2sgb3IgbXV0ZXgsIG1heWJlIGV2ZW4gYSByZWFkLWNvcHktdXBkYXRlIHNjaGVtZSBpZiBtdWx0aXBsZSB2Q1BVcyBuZWVkIGNvbmN1cnJlbnQgYWNjZXNzLgoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBhZ2UgdGFibGVzLiBEb2VzIGl0IGRpcmVjdGx5IG1vZGlmeSB0aGVtLCBvciBkb2VzIGl0IGNhbGwgaW50byBvdGhlciBLVk0gaGVscGVycz8gVW5kZXJzdGFuZGluZyB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaGVyZSBpcyBrZXkuIEFyZSB3ZSBkZWFsaW5nIHdpdGggMi1sZXZlbCwgMy1sZXZlbCwgb3IgNC1sZXZlbCBwYWdlIHRhYmxlcz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBuZXN0ZWQgcGFnaW5nPyBBcmUgdGhlcmUgYW55IGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllciAoQVNJRCkgY29uc2lkZXJhdGlvbnM/CgpGaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaW1wb3J0YW50LiBXaGF0IGNhbiBnbyB3cm9uZyBkdXJpbmcgbWVtb3J5IHJlZ2lvbiBwcmVwYXJhdGlvbj8gSW52YWxpZCBwYXJhbWV0ZXJzLCBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLCBvciBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBhcmUgYWxsIHBvc3NpYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG90ZW50aWFsIGVycm9ycyBhcmUgZGV0ZWN0ZWQgYW5kIGhhbmRsZWQgdG8gZW5zdXJlIHRoZSBWTSByZW1haW5zIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgZG9lc24mIzM5O3QgY3Jhc2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz0xNjU4PXN0YXRpYyBpbnQga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNjg2LVxudmlydC9rdm0va3ZtX21haW4uYzoxNjg3Olx0ciA9IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNjg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIGF0IHRoZSBhcmNoaXRlY3R1cmUgbGV2ZWwuIFdoYXQgc3BlY2lmaWMgdGFza3MgZG9lcyBpdCBoYW5kbGUgd2l0aGluIHRoZSBLVk0gbWVtb3J5IG1hbmFnZW1lbnQgcGlwZWxpbmU/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBpdHMgcm9sZSBpbiB0aGUgY29tbWl0IHBoYXNlIG9mIG1lbW9yeSByZWdpb25zLCBidXQgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgdGhpbmdzIGxpa2UgVExCIGZsdXNoZXMsIGNhY2hlIGludmFsaWRhdGlvbiwgb3IgZXZlbiBwb3RlbnRpYWxseSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgcGFnZSB0YWJsZSBtYW5pcHVsYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgZ3Vlc3QmIzM5O3MgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCBhbmQgYW55IHJlbGV2YW50IGFyY2hpdGVjdHVyZSBtYW51YWxzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCBmaXRzIHRvZ2V0aGVyLiBUaGUgZ29hbCBpcyB0byBkZXZlbG9wIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz0xNjk2PXN0YXRpYyB2b2lkIGt2bV9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNzE3LVxudmlydC9rdm0va3ZtX21haW4uYzoxNzE4Olx0a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTcxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBhbmQgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBrZXkgc3ltYm9scyBmb3IgdGhpcyBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSwgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBndWlkYW5jZSwgSSYjMzk7bSB0aGlua2luZzogYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCBhbmQgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBrdm1fcHV0X2t2bWAsIGJ1dCB0aGF0JiMzOTtzIGEgYml0IHRvbyBnZW5lcmljLCBpc24mIzM5O3QgaXQ/CgpUaGVuIEkgdGhvdWdodCBhYm91dCBga3ZtX3ZtX2lvY3RsYCwgYXMgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdGhlIFZNIGZ1bmN0aW9uYWxpdHkuIEJ1dCwgaGFuZyBvbi4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyB1cyB0byBhdm9pZCB0aG9zZSAmIzM0O2dlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiYjMzQ7IGBrdm1fdm1faW9jdGxgIGlzIG1vcmUgb2YgYW4gaW9jdGwgaGFuZGxlciBhbnl3YXksIG5vdCByZWFsbHkgYSBob3QtcGF0aCBmdW5jdGlvbiBhcyBzdWNoLiBTbywgSSYjMzk7bGwgc3RpY2sgd2l0aCB0aGUgb3JpZ2luYWwgc2V0LiBUaGV5IGFwcGVhciB0byBiZSBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cywgd2hpY2gsIGJ5IGltcGxpY2F0aW9uLCBzZWVtIGZhciBtb3JlIGFwcHJvcHJpYXRlLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgY29uZmlnIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSBuZWVkIGBDT05GSUdfS1ZNYCBlbmFibGVkLCBhbmQsIGp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzA1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gVGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGBLVk1gIGlzIHRoZSBjb3JlLCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGl0ZW0gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWcgb3B0aW9ucy4gQWgsIHllcywgdGhlcmUmIzM5O3MgYEtWTV9YODZgLiBJdCYjMzk7cyBsaWtlbHkgYWxzbyByZXF1aXJlZCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEdvb2QgdG8ga25vdy4gQnV0IGFnYWluLCBgS1ZNYCBpdHNlbGYgc3RpbGwgYXBwZWFycyB0byBiZSB0aGUgbW9zdCBmdW5kYW1lbnRhbCBwaWVjZSBvZiB0aGUgcHV6emxlLgoKVGltZSB0byBkaXZlIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGB2aXJ0L2t2bS9LY29uZmlnYCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcuIFRoYXQgc2hvdWxkIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCBob3cgdGhpcyBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzU1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNZW1vcnkgUmVnaW9uIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCB3aXRoaW4gS1ZNLiBUaGUgY29kZSBJJiMzOTttIGZvY3VzaW5nIG9uIGlzIHByaW1hcmlseSB3aXRoaW4gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhhdCB0ZWxscyBtZSBqdXN0IGZvY3VzaW5nIG9uIGBLVk1gIGlzIGVub3VnaCBmb3IgdGhlIHNlYXJjaC4KCkxldCYjMzk7cyBzZWUgd2hhdCBzeW1ib2xzIGFyZSBvZiBpbnRlcmVzdCBoZXJlOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gIFdhaXQsIHdhc24mIzM5O3QgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaW50ZXJuYWw/IFJpZ2h0LCBpdCYjMzk7cyBub3QgZXhwb3NlZCBkaXJlY3RseSB0byB1c2Vyc3BhY2UuIFNvIHRoYXQgbWVhbnMgaXQgbWlnaHQgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIG90aGVyIGlvY3Rscy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBrdm1fdm1faW9jdGxgLiAgVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgaW9jdGxzLiBCdXQgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgaXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uISBJdCBpcyBub3QgYSBnb29kIGZvY3VzIGZ1bmN0aW9uLgoKR2l2ZW4gdGhhdCwgSSB0aGluayBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBnb29kIGZvY2FsIHBvaW50cywgYWxvbmcgd2l0aCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4KCkhvbGQgb24uLi4gSSYjMzk7bSByZW1pbmRlZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBXYWl0LCBhcmUgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGV5IGFyZS4gU28gYWN0dWFsbHkgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21lbW9yeV9yZWdpb25gIGFuZCBub3QgYnkgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIFNvIEkgaGF2ZSB0byBmaW5kIHRoZSBjYWxsZXJzIG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTMzNzE9dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxMi1cdFx0bS5tZW1vcnlfc2l6ZSA9IHNpemU7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0MTM6XHRcdHIgPSBrdm1fc2V0X2ludGVybmFsX21lbXNsb3Qoa3ZtLCBcdTAwMjZtKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxNC1cdFx0aWYgKHIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEtWTSBNZW1vcnkgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIG1lbW9yeSByZWdpb24gc2V0dXAgaW4gS1ZNLiBJdCBsb29rcyBsaWtlIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGVudHJ5IHBvaW50cyBhcmUgdGhlcmUgdG8gY29uZmlndXJlIG1lbW9yeT8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgY3VyaW91cyBhYm91dCBob3cgYGt2bV92bV9pb2N0bGAgbWlnaHQgaW50ZXJhY3QgaGVyZS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpb2N0bCBoYW5kbGVyLCBzbyBpdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgc29tZWhvdy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBrdm1fdm1faW9jdGxgJiMzOTtzIGRlZmluaXRpb24gdG8gc2VlIGhvdyBpdCBtaWdodCBiZSBjYWxsaW5nIG9yIGNvb3JkaW5hdGluZyB3aXRoIHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucy4gSSBzaG91bGQgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiBgdmlydC9rdm0va3ZtX21haW4uY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIHRoZSBjZW50cmFsIEtWTSBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZtX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE0MTU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV91bmxvY2tfYWxsX3ZjcHVzKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MTgtICogQWxsb2NhdGlvbiBzaXplIGlzIHR3aWNlIGFzIGxhcmdlIGFzIHRoZSBhY3R1YWwgZGlydHkgYml0bWFwIHNpemUuXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE0MTk6ICogU2VlIGt2bV92bV9pb2N0bF9nZXRfZGlydHlfbG9nKCkgd2h5IHRoaXMgaXMgbmVlZGVkLlxudmlydC9rdm0va3ZtX21haW4uYy0xNDIwLSAqL1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjEzOD1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0MDpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDEtXHRcdFx0XHRcdCAgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIyMjE9c3RhdGljIGludCBrdm1fZ2V0X2RpcnR5X2xvZ19wcm90ZWN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIyOTMtLyoqXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIyOTQ6ICoga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2cgLSBnZXQgYW5kIGNsZWFyIHRoZSBsb2cgb2YgZGlydHkgcGFnZXMgaW4gYSBzbG90XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIyOTUtICogQGt2bToga3ZtIGluc3RhbmNlXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMzExLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyMzEyOnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yMzEzLVx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIzMzE9c3RhdGljIGludCBrdm1fY2xlYXJfZGlydHlfbG9nX3Byb3RlY3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjQwNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjQwNzpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yNDA4LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2NsZWFyX2RpcnR5X2xvZyAqbG9nKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjUzNz1zdGF0aWMgaW50IGt2bV92bV9zZXRfbWVtX2F0dHJpYnV0ZXMoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBzdGFydCwgZ2ZuX3QgZW5kLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjU5OC19XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI1OTk6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjYwMC1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfYXR0cmlidXRlcyAqYXR0cnMpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0zOTYwPXZvaWQga3ZtX3ZjcHVfb25fc3BpbihzdHJ1Y3Qga3ZtX3ZjcHUgKm1lLCBib29sIHlpZWxkX3RvX2tlcm5lbF9tb2RlKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzk3MC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mzk3MTpcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoKS4gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzk3Mi1cdHNtcF9ybWIoKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQxMzE9c3RhdGljIHZvaWQga3ZtX2NyZWF0ZV92Y3B1X2RlYnVnZnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDE1MS0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6NDE1MjpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTMte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDM3OT1zdGF0aWMgaW50IGt2bV93YWl0X2Zvcl92Y3B1X29ubGluZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00MzkxLVx0ICogQWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgdkNQVSYjMzk7cyBtdXRleCB0byB3YWl0IGZvciB2Q1BVIGNyZWF0aW9uIHRvXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQzOTI6XHQgKiBjb21wbGV0ZSAoa3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkgaG9sZHMgdGhlIG11dGV4IHVudGlsIHRoZSB2Q1BVXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQzOTMtXHQgKiBpcyBmdWxseSBvbmxpbmUpLlxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDgwNT1zdGF0aWMgaW50IGt2bV9pb2N0bF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4NjMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ4NjQ6c3RhdGljIGludCBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoc3RydWN0IGt2bSAqa3ZtLCBsb25nIGFyZylcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDg2NS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00OTM3LVx0fVxudmlydC9rdm0va3ZtX21haW4uYzo0OTM4Olx0cmV0dXJuIGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oa3ZtLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy00OTM5LX1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0MC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NDk0MTpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9lbmFibGVfZGlydHlfbG9nX3Jpbmcoc3RydWN0IGt2bSAqa3ZtLCB1MzIgc2l6ZSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0Mi17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00OTc4LVxudmlydC9rdm0va3ZtX21haW4uYzo0OTc5OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk4MC17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDAzLVxudmlydC9rdm0va3ZtX21haW4uYzo1MDA0OmludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy01MDA1LVx0XHRcdFx0XHRcdCAgc3RydWN0IGt2bV9lbmFibGVfY2FwICpjYXApXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01MDIzPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fYXJlX2FsbF9tZW1zbG90c19lbXB0eSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwMjQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwMjU6c3RhdGljIGludCBrdm1fdm1faW9jdGxfZW5hYmxlX2NhcF9nZW5lcmljKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAyNi1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9lbmFibGVfY2FwICpjYXApXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDYwLVx0Y2FzZSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw6XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjE6XHRcdGlmICgha3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKGt2bSwgY2FwLVx1MDAzZWNhcCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwNjItXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwNjMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjQ6XHRcdHJldHVybiBrdm1fdm1faW9jdGxfZW5hYmxlX2RpcnR5X2xvZ19yaW5nKGt2bSwgY2FwLVx1MDAzZWFyZ3NbMF0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MDY1LVx0Y2FzZSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX1dJVEhfQklUTUFQOiB7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDg4LVx0ZGVmYXVsdDpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTA4OTpcdFx0cmV0dXJuIGt2bV92bV9pb2N0bF9lbmFibGVfY2FwKGt2bSwgY2FwKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA5MC1cdH1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMga3ZtX3ZtX3N0YXRzX2ZvcHMgPSB7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MTE3LVxudmlydC9rdm0va3ZtX21haW4uYzo1MTE4OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtICprdm0pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxMTkte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0MT1kbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE0Ny1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE0ODpzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNDktXHRcdFx0ICAgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNTgtXHRjYXNlIEtWTV9DUkVBVEVfVkNQVTpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE1OTpcdFx0ciA9IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShrdm0sIGFyZyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNjAtXHRcdGJyZWFrO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2Ni1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE2NzpcdFx0ciA9IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoa3ZtLCBcdTAwMjZjYXApO1xudmlydC9rdm0va3ZtX21haW4uYy01MTY4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMDI6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcdTAwMjZtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MjAzLVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTAtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMTE6XHRcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X2RpcnR5X2xvZyhrdm0sIFx1MDAyNmxvZyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTItXHRcdGJyZWFrO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIyMC1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTIyMTpcdFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xudmlydC9rdm0va3ZtX21haW4uYy01MjIyLVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMzEtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMzI6XHRcdHIgPSBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcdTAwMjZ6b25lKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIzMy1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MjQwLVx0XHRcdGdvdG8gb3V0O1xudmlydC9rdm0va3ZtX21haW4uYzo1MjQxOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX3VucmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcdTAwMjZ6b25lKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI0Mi1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MjgyLVxudmlydC9rdm0va3ZtX21haW4uYzo1MjgzOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX2lycV9saW5lKGt2bSwgXHUwMDI2aXJxX2V2ZW50LFxudmlydC9rdm0va3ZtX21haW4uYy01Mjg0LVx0XHRcdFx0XHRpb2N0bCA9PSBLVk1fSVJRX0xJTkVfU1RBVFVTKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUzMzc6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKGt2bSwgXHUwMDI2YXR0cnMpO1xudmlydC9rdm0va3ZtX21haW4uYy01MzM4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNTktXHRjYXNlIEtWTV9DSEVDS19FWFRFTlNJT046XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUzNjA6XHRcdHIgPSBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoa3ZtLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01MzYxLVx0XHRicmVhaztcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTM2Mi1cdGNhc2UgS1ZNX1JFU0VUX0RJUlRZX1JJTkdTOlxudmlydC9rdm0va3ZtX21haW4uYzo1MzYzOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNjQtXHRcdGJyZWFrO1xudmlydC9rdm0va3ZtX21haW4uYy01MzY1LVx0Y2FzZSBLVk1fR0VUX1NUQVRTX0ZEOlxudmlydC9rdm0va3ZtX21haW4uYzo1MzY2Olx0XHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MzY3LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU0MTM9c3RhdGljIGxvbmcga3ZtX3ZtX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NDAtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0NDE6XHRcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXHUwMDI2bG9nKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ0Mi1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NDU2LVxudmlydC9rdm0va3ZtX21haW4uYzo1NDU3Olx0XHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xudmlydC9rdm0va3ZtX21haW4uYy01NDU4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjAtXHRkZWZhdWx0OlxudmlydC9rdm0va3ZtX21haW4uYzo1NDYxOlx0XHRyID0ga3ZtX3ZtX2lvY3RsKGZpbHAsIGlvY3RsLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01NDYyLVx0fVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTQ2Nz1zdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBrdm1fdm1fZm9wcyA9IHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ2OC1cdC5yZWxlYXNlICAgICAgICA9IGt2bV92bV9yZWxlYXNlLFxudmlydC9rdm0va3ZtX21haW4uYzo1NDY5Olx0LnVubG9ja2VkX2lvY3RsID0ga3ZtX3ZtX2lvY3RsLFxudmlydC9rdm0va3ZtX21haW4uYy01NDcwLVx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTUyMz1zdGF0aWMgbG9uZyBrdm1fZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTUzNy1cdGNhc2UgS1ZNX0NIRUNLX0VYVEVOU0lPTjpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTUzODpcdFx0ciA9IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb25fZ2VuZXJpYyhOVUxMLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01NTM5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhpcyBLVk0gY29kZSwgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIGBrdm1fdm1faW9jdGxgIHN0YXRpYz8mIzM0OyBCZWNhdXNlIGlmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBzeW1ib2wgdG8gZm9jdXMgb24gd2hlbiBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgb3ZlcmFsbCBmbG93LiBBaGEhIEl0ICppcyogZGVjbGFyZWQgYXMgYHN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylgLiBUaGF0JiMzOTtzIHRoYXQuIFNvIGl0JiMzOTtzIHN0YXRpYywgYnV0IHRoZW4gaXQmIzM5O3MgYXNzaWduZWQgdG8gYC51bmxvY2tlZF9pb2N0bCA9IGt2bV92bV9pb2N0bGAuIFJpZ2h0LCB0aGF0IG1ha2VzIGl0IGFuIGVudHJ5IHBvaW50LiBJdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNrLCBzaW5jZSBpdCBpcyBzdGF0aWMsIEkgbWlnaHQgd2FudCB0byBmaW5kIG90aGVyIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90IHN0YXRpYy4KClNvLCBzaW5jZSBga3ZtX3ZtX2lvY3RsYCBpcyBzdGF0aWMsIEkgbmVlZCB0byBsb29rIGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gPyBUaGF0IG9uZSBsb29rcyBub24tc3RhdGljLiBHb29kLiBBbmQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGA/IE5vbi1zdGF0aWMgYWdhaW4uIFBlcmZlY3QuIEFuZCB0aGUgZm9sbG93aW5nIGFyZSBhbHNvIG5vbi1zdGF0aWMsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAgYW5kIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuIE5vdyBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19feDg2X3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbGFwaWMuYz0yOTAxPWludCBrdm1fYWxsb2NfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMjkxMC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjI5MTE6XHRodmEgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMjkxMi1cdFx0XHRcdCAgICAgIEFQSUNfREVGQVVMVF9QSFlTX0JBU0UsIFBBR0VfU0laRSk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MjkyMj12b2lkIGt2bV9pbmhpYml0X2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzMtXHRpZiAoa3ZtLVx1MDAzZWFyY2guYXBpY19hY2Nlc3NfbWVtc2xvdF9lbmFibGVkKSB7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoyOTM0Olx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULCAwLCAwKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzUtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz00MDEwPXN0YXRpYyBpbnQgaW5pdF9ybW9kZV9pZGVudGl0eV9tYXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNDAyNS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NDAyNjpcdHVhZGRyID0gX194ODZfc2V0X21lbW9yeV9yZWdpb24oa3ZtLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy00MDI3LVx0XHRcdFx0XHRJREVOVElUWV9QQUdFVEFCTEVfUFJJVkFURV9NRU1TTE9ULFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTI1ND1pbnQgdm14X3NldF90c3NfYWRkcihzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBhZGRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTI2MS1cdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjYyOlx0cmV0ID0gX194ODZfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBUU1NfUFJJVkFURV9NRU1TTE9ULCBhZGRyLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjYzLVx0XHRcdFx0ICAgICAgUEFHRV9TSVpFICogMyk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzMjc2PWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzM0OS0vKipcbmFyY2gveDg2L2t2bS94ODYuYzoxMzM1MDogKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbjogU2V0dXAgS1ZNIGludGVybmFsIG1lbW9yeSBzbG90XG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNTEtICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzAtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTMzNzE6dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzcyLVx0XHRcdFx0ICAgICAgdTMyIHNpemUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDIyLX1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQyMzpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX194ODZfc2V0X21lbW9yeV9yZWdpb24pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDI0LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzQ0MT12b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ0OS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0NTA6XHRcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0NTEtXHRcdFx0XHRcdDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDUyOlx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0NTMtXHRcdFx0XHRcdDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDU0Olx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDU1LVx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg1MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNZW1vcnkgUmVnaW9uIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEtWTSBzeXN0ZW0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBtaWdodCBiZSBhIGtleSBmdW5jdGlvbiwgc2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCBhcyBwb3RlbnRpYWwgZm9jdXMgcG9pbnRzLCBhbG9uZyB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLgoKQnV0IHRoZW4gSSByZWFsaXplZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gIGlzIHNwZWNpZmljIHRvICppbnRlcm5hbCogbWVtb3J5IHNsb3RzLiBIbW0sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLiBXaGF0IGFib3V0IHRoZSB1c2VyIG1lbW9yeSByZWdpb25zPyBUaG9zZSBhcmUgc2V0IHVzaW5nIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBTaG9vdCwgdGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0JiMzOTtzIG9mZiB0aGUgdGFibGUgZm9yIG15IHB1cnBvc2VzLiBJIHRob3VnaHQgbWF5YmUgSSBjb3VsZCB1c2UgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgc2luY2UgaXQgaXMgZXhwb3J0ZWQsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBhbHNvIGp1c3QgZm9yIGludGVybmFsIG1lbXNsb3RzLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAgY2FsbHMgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBJIG5lZWQgYSAqbm9uLXN0YXRpYyogZnVuY3Rpb24gYWxvbmcgdGhhdCBleGVjdXRpb24gcGF0aC4gQWhhISBIZXJlIHdlIGdvLi4uIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGlzIGNhbGxlZCBmb3IgKmFsbCogbWVtb3J5IHJlZ2lvbnMsIGJvdGggaW50ZXJuYWwgYW5kIHVzZXIuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgbmVlZC4gSXTigJlzIHBlcmZlY3QhCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgdGhhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBpcyBpbmRlZWQgZXhwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTM1ODk9dm9pZCBrdm1fYXJjaF9tZW1zbG90c191cGRhdGVkKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdlbilcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDQtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM2MDU6aW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDYtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzMwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiBLVk0gbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHNoaWZ0IGZyb20gYF9fdmNhbGxvY2AvYHZmcmVlYCB0byBga3ZjYWxsb2NgL2BrdmZyZWVgLiBUaGUgY29kZSBpc24mIzM5O3QgZXhwb3J0aW5nIHRoZXNlIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMsIHNvIHRoZXkmIzM5O2xsIGhhdmUgdW5pcXVlIHN5bWJvbCBhZGRyZXNzZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gSSBqdXN0IGNoZWNrZWQgYW5kIHllcywgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCBpcyBpbmRlZWQgc3RhdGljLCBzbyBpdCYjMzk7cyBub3QgYSBwcmltYXJ5IGZvY3VzLgoKVGhlcmVmb3JlLCBteSBhdHRlbnRpb24gaXMgb24gdGhlc2Ugc3ltYm9sczogYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBiZWhhdmluZyBhcyBleHBlY3RlZCBhZnRlciB0aGlzIGNoYW5nZS4gSSYjMzk7bGwgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYEtWTWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgb25lIGFmZmVjdGVkLgoKVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIHBhdGNoIGlzIGNsZWFyOiBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBhbGxvY2F0aW9uLiBJdCBzd2l0Y2hlcyBmcm9tIGEgbW9yZSBnZW5lcmljIGFsbG9jYXRpb24gYXBwcm9hY2ggdG8gb25lIHNwZWNpZmljIHRvIHRoZSBrZXJuZWwuIFRoaXMgcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbnRyb2R1Y2luZyBtZW1vcnkgbGVha3MsIGRhdGEgY29ycnVwdGlvbiwgb3IgY2hhbmdlcyBpbiBob3cgYWxsb2NhdGlvbnMgYmVoYXZlLCBsaWtlIHRoZSB2bWFsbG9jIGZhbGxiYWNrLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBpbXBhY3RpbmcgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBLVk0uIFRoYXQgc2NyZWFtcyBmb3IgZnV6emluZyB0byBjYXRjaCBlZGdlIGNhc2VzLgoKTm93LCBhIHNtYWxsIGRldGFpbCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dDogaXMgYGt2Y2FsbG9jYCBhIG1hY3JvIG9yIGEgZnVuY3Rpb24/IE9rYXksIGEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCYjMzk7cyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gSXQgYWN0dWFsbHkgY2FsbHMgYGt2bWFsbG9jX2FycmF5YC4gQmVjYXVzZSBpdCBpcyBzdGF0aWMgaW5saW5lLCBpdCB3b24mIzM5O3QgYmUgYSBzeW1ib2wgaXRzZWxmLiBCdXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgYXJlIHN0YXRpYyAoYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhvc2UsIGFuZCB0aHVzIGluZGlyZWN0bHkgaW52b2x2ZWQsIGFyZSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBhbmQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAuIFRpbWUgdG8gcmUtZXhhbWluZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xMzQ3ND1zdGF0aWMgdm9pZCBtZW1zbG90X3JtYXBfZnJlZShzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ4NDp2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzc2NT12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXHRpZiAoY2hhbmdlID09IEtWTV9NUl9NT1ZFKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2Olx0XHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBvbGQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5OTQKCQkJCQkJCW91dHB1dDogMjI5CgkJCQkJCQl0aG91Z2h0czogNzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBjb2RlIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtZW1vcnkgYWxsb2NhdGlvbiBjaGFuZ2VzLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBpcywgaW4gZmFjdCwgbm9uLXN0YXRpYywgd2hpY2ggaXMgYW4gaW1wb3J0YW50IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBzZW5zZSBvZiB0aGUgc2NvcGUuCgpJIHN0YXJ0ZWQgYnkgbG9va2luZyBhdCBjYWxsZXJzIG9mIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3NldF9tZW1zbG90YC4gIGBrdm1fc2V0X21lbXNsb3RgIGlzIGNhbGxlZCBieSB0aGUgc3RhdGljIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLCBidXQgdGhhdCBpcyBhbHNvIGNhbGxlZCBieSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAuIFRoaXMgbWVhbnMgdGhlIGxhdHRlciBpcyBvdXIgcG9pbnQgb2YgZm9jdXMgZm9yIHRoaXMgcGF0aC4KClRoZW4gSSBjaGVja2VkIG91dCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBjYWxsZXJzLiBUaGF0IGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9mcmVlX21lbXNsb3RgLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAgYW5kIGBrdm1fZGVzdHJveV92bWAuIGBrdm1fZGVzdHJveV92bWAgaXMgdGhlbiBjYWxsZWQgYnkgYGt2bV9wdXRfa3ZtYCwgd2hpY2ggaXMgKm5vbiotc3RhdGljLiBTbywgYGt2bV9wdXRfa3ZtYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLgoKTGV0JiMzOTtzIGxpc3QgdGhlIHN5bWJvbHMgZm9yIGZvY3VzLCB3aGljaCBhcmU6CmBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gCmBrdm1fYXJjaF9mcmVlX21lbXNsb3RgCmBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAKYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAKYGt2bV9wdXRfa3ZtYAoKV2FpdCwgYGt2bV9wdXRfa3ZtYCBpcyB2ZXJ5IGdlbmVyaWMsIGl0JiMzOTtzIGNhbGxlZCBpbiBtYW55IHBsYWNlcy4KCklzIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGA/IE5vLCBsZXQmIzM5O3Mga2VlcCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gIFNvLCB0aGF0IHNlZW1zIHNvbGlkLgoKSSYjMzk7bSBzZXR0bGluZyBvbjoKYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAKYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAKYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYApga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YAoKVGhpcyBsb29rcyBnb29kLCBzbyBsZXQmIzM5O3Mgd3JpdGUgdXAgdGhlIHJhdGlvbmFsZS4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGB2ZnJlZWAgdG8gYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHRvIGBrdmNhbGxvY2AgaW4gdGhlIG1lbW9yeSBzbG90IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoaXMgbWVhbnMgYSBzaGlmdCBpbiBhbGxvY2F0aW9uIGJlaGF2aW9yIHRvIHByZWZlcnJpbmcga21hbGxvYyAod2l0aCB2bWFsbG9jIGZhbGxiYWNrKS4gIFRoaXMgY291bGQgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIHRoZXJlIGFyZSBidWdzLiBUaGUgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBLVk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lPTmAgYW5kIG90aGVyIEtWTSBpb2N0bHMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHJlY29tbWVuZCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBwcm9wZXJseS4gVGhlIGBLVk1gIGNvbmZpZyBpcywgb2YgY291cnNlLCBhIHByZS1yZXF1aXNpdGUuCgpOb3cgSSYjMzk7bGwgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NDljZWZiYjQ1MjUzMjFlYTI0YjYxNTllN2YwZTU0NTBjYzQxOTg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMTQ6Mzc6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMTM0ODgsNyAmIzQzOzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KQogCW1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpOwogCiAJZm9yIChpID0gMTsgaSAmbHQ7IEtWTV9OUl9QQUdFX1NJWkVTOyAmIzQzOyYjNDM7aSkgewotCQl2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKJiM0MzsJCWt2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKIAkJc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7CiAJfQogCkBAIC0xMzU0NCw3ICYjNDM7MTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSwKIAogCQlscGFnZXMgPSBfX2t2bV9tbXVfc2xvdF9scGFnZXMoc2xvdCwgbnBhZ2VzLCBsZXZlbCk7CiAKLQkJbGluZm8gPSBfX3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCWxpbmZvID0ga3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAkJaWYgKCFsaW5mbykKIAkJCWdvdG8gb3V0X2ZyZWU7CiAKQEAgLTEzNTgwLDcgJiM0MzsxMzU4MCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLAogCW1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpOwogCiAJZm9yIChpID0gMTsgaSAmbHQ7IEtWTV9OUl9QQUdFX1NJWkVTOyAmIzQzOyYjNDM7aSkgewotCQl2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKJiM0MzsJCWt2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKIAkJc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7CiAJfQogCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKaW5kZXggZTQ0YzIwYzA0OTYxMC4uNTJhZjFlYmRkMTRjMiAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC05MjcsNyAmIzQzOzkyNyw3IEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KQogCWlmICghbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKQogCQlyZXR1cm47CiAKLQl2ZnJlZShtZW1zbG90LSZndDtkaXJ0eV9iaXRtYXApOwomIzQzOwlrdmZyZWUobWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKTsKIAltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBOVUxMOwogfQogCkBAIC0xNDIyLDcgJiM0MzsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpCiB7CiAJdW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7CiAKLQltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiYjNDM7CW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKQogCQlyZXR1cm4gLUVOT01FTTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NAoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gTmVlZHMgQXNzZXNzbWVudCBmb3IgS1ZNIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcDogYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBhbmQgYHZmcmVlYCB0byBga3ZmcmVlYCBpbiBhIGNvdXBsZSBvZiBLVk0gZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgc2hvdWxkIGJlIHByZXR0eSBiZW5pZ24gZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLiBgX192Y2FsbG9jYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbGxvY2F0ZXMgbWVtb3J5IHdpdGggYHZtYWxsb2NgIGFuZCBpbXBvcnRhbnRseSwgKnplcm9lcyogaXQuIFRoZSByZXBsYWNlbWVudCwgYGt2Y2FsbG9jYCwgaW50cm9kdWNlcyBhIGZhbGxiYWNrIHRvIGBrbWFsbG9jYCAodmlhIGBrdm1hbGxvY19hcnJheWAgd2l0aCBgX19HRlBfWkVST2ApLCB3aGljaCBjb3VsZCBiZSBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsZXIgYWxsb2NhdGlvbnMuIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgKmt2Y2FsbG9jKiAqYWxzbyogemVyby1pbml0aWFsaXplcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhpcyBpcyB0aGUga2V5LgoKU2luY2UgdGhlIG1lbW9yeSBpcyBleHBsaWNpdGx5IHplcm9lZCBpbiAqYm90aCogdGhlIG9sZCBhbmQgdGhlIG5ldyB2ZXJzaW9ucywgd2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIGRhdGEsIHdoaWNoIGlzIHdoYXQgS01TQU4gd291bGQgYmUgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSSBjb25zaWRlcmVkIHRoYXQgYF9fdmNhbGxvY2AgbWlnaHQgYmUgYSBjdXN0b20gZnVuY3Rpb24sIGJ1dCBJIGNoZWNrZWQgdGhlIGtlcm5lbCBjb2RlIGFuZCBjb25maXJtZWQga3ZjYWxsb2MgemVyby1pbml0cyB0aGUgbWVtb3J5LgoKU28sIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gR29pbmcgdG8gZG91YmxlIGNoZWNrIGt2Y2FsbG9jLiBZdXAsIGBrdmNhbGxvYyhuLCBzaXplLCBmbGFncylgIGlzIGp1c3QgYSB3cmFwcGVyLCBlcXVpdmFsZW50IHRvIGBrdm1hbGxvY19hcnJheShuLCBzaXplLCBmbGFncyB8IF9fR0ZQX1pFUk8pYC4gQWJzb2x1dGVseSBjb3JyZWN0LCBpdCB6ZXJvLWluaXRpYWxpemVzLiBUaGUgb2xkIGNvZGUgdXNlZCBgX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVClgIGFuZCBgX192Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIE1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcywgd2hpY2ggYXJlIHN0aWxsIHBvc3NpYmxlLCBhcmUgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSAoanVzdCBsaWtlIGBfX3ZjYWxsb2NgIGRpZCksIHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gS01TQU4gaXMgbm90IG5lZWRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjI2Ljk0MzA3MTM0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODI5NTY0NDM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjI2Ljk0MzA3OTU4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyOTk1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDozNzoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCBhZmNhYzEwNDI5NDdhLi43NzU2N2FhMjBkODM4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC0xMzQ4OCw3ICsxMzQ4OCw3IEBAIHZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4gXFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XFxuIFxcbiBcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICsraSkge1xcbi1cXHRcXHR2ZnJlZShzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcXG4rXFx0XFx0a3ZmcmVlKHNsb3QtXFx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xcbiBcXHRcXHRzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMTM1NDQsNyArMTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFxuIFxcdFxcdGxwYWdlcyA9IF9fa3ZtX21tdV9zbG90X2xwYWdlcyhzbG90LCBucGFnZXMsIGxldmVsKTtcXG4gXFxuLVxcdFxcdGxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdGxpbmZvID0ga3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKCFsaW5mbylcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuQEAgLTEzNTgwLDcgKzEzNTgwLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xcbiBcXG4gXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIEtWTV9OUl9QQUdFX1NJWkVTOyArK2kpIHtcXG4tXFx0XFx0dmZyZWUoc2xvdC1cXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XFxuK1xcdFxcdGt2ZnJlZShzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcXG4gXFx0XFx0c2xvdC1cXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMC4uNTJhZjFlYmRkMTRjMiAxMDA2NDRcXG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xcbkBAIC05MjcsNyArOTI3LDcgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXFxuIFxcdGlmICghbWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2ZnJlZShtZW1zbG90LVxcdTAwM2VkaXJ0eV9iaXRtYXApO1xcbitcXHRrdmZyZWUobWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwKTtcXG4gXFx0bWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcXG4gfVxcbiBcXG5AQCAtMTQyMiw3ICsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7XFxuIFxcbi1cXHRtZW1zbG90LVxcdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdG1lbXNsb3QtXFx1MDAzZWRpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIW1lbXNsb3QtXFx1MDAzZWRpcnR5X2JpdG1hcClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzoyNy40MTY4NjQ0OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTAzMDc0ODA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fYXJjaF9mcmVlX21lbXNsb3RcIixcbiAgICBcImt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NDljZWZiYjQ1MjUzMjFlYTI0YjYxNTllN2YwZTU0NTBjYzQxOTg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTQ6Mzc6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IGFmY2FjMTA0Mjk0N2EuLjc3NTY3YWEyMGQ4MzggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTEzNDg4LDcgKzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgKytpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4rXHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTEzNTQ0LDcgKzEzNTQ0LDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHRcdGxwYWdlcyA9IF9fa3ZtX21tdV9zbG90X2xwYWdlcyhzbG90LCBucGFnZXMsIGxldmVsKTtcbiBcbi1cdFx0bGluZm8gPSBfX3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bGluZm8gPSBrdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIWxpbmZvKVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXG5AQCAtMTM1ODAsNyArMTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xuIFxuIFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICsraSkge1xuLVx0XHR2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuK1x0XHRrdmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiBcdFx0c2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcbiBcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwLi41MmFmMWViZGQxNGMyIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTkyNyw3ICs5MjcsNyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdClcbiBcdGlmICghbWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApXG4gXHRcdHJldHVybjtcbiBcbi1cdHZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbitcdGt2ZnJlZShtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCk7XG4gXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IE5VTEw7XG4gfVxuIFxuQEAgLTE0MjIsNyArMTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpO1xuIFxuLVx0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzoyNy40MTY4NjYzMDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTMzMTEzNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTSBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHN3YXBwaW5nIG91dCBgdmZyZWVgIGZvciBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2AgZm9yIGBrdmNhbGxvY2Agd2l0aGluIHRoZSBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocy4gRnVuY3Rpb25hbGx5LCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBhbGxvY2F0aW9uIEFQSSBjaGFuZ2UsIHdoaWNoIGlzIGltcG9ydGFudC4gQnV0IGxldCdzIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuXG5cblRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBzdHJhdGVneTogYF9fdmNhbGxvY2AgcmVsaWVzIG9uIGB2bWFsbG9jYCwgd2hlcmVhcyBga3ZjYWxsb2NgIHVzZXMgYGttYWxsb2NgIGlmIHBvc3NpYmxlLCBmYWxsaW5nIGJhY2sgdG8gYHZtYWxsb2NgIGlmIG5lZWRlZC4gVGhpcyBjb3VsZCBoYXZlIHBlcmZvcm1hbmNlIHJhbWlmaWNhdGlvbnMsIG9yIGFsdGVyIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvciB0aGVzZSBjcml0aWNhbCBLVk0gb3BlcmF0aW9ucy4gR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLCBhbGwgb2Ygd2hpY2ggYXJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFyZSBpbXBvcnRhbnQuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFdoaWxlIGl0J3MgYSBzZWVtaW5nbHkgc2ltcGxlIEFQSSByZXBsYWNlbWVudCwgdGhlIHNoaWZ0IGZyb20gdm1hbGxvYyB0byBrdm1hbGxvYyBpcyBzaWduaWZpY2FudCBlbm91Z2ggdGhhdCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxlYWtzIGludHJvZHVjZWQuIFNvLCBmdXp6aW5nIGlzIHByb2JhYmx5IGEgZ29vZCBpZGVhLlxuXG5GaXJzdCwgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLlxuXG5Pa2F5LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhZ2FpbiB0byByZWZyZXNoIG15IG1lbW9yeTogYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBBIGtleSB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIG5lZWQgdG8gYmUgcGFpcmVkLCBzbyBpdCdzIGVzc2VudGlhbCB0aGlzIHBhdGNoIG1haW50YWlucyB0aGF0IGNvbnNpc3RlbmN5LlxuXG5SaWdodCwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAsIGFuZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAgYXJlIGFsbCAqc3RhdGljKi4gVGhhdCBtZWFucyB0aGVpciBzY29wZSBpcyBsaW1pdGVkIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGZpbGVzLiBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBpcyAqbm90KiBzdGF0aWMsIHNvIGl0J3MgdGhlIG1vcmUgbGlrZWx5IGNhbmRpZGF0ZSB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuXG5cbk5vdywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIG9mIHRoZXNlIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgc3RhdGljIG9uZXMuIExldCdzIHNlZS4uLiBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgIGlzIGNhbGxlZCBieSBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBpcyBjYWxsZWQgYnkgYGt2bV9mcmVlX21lbXNsb3RgLiBMZXQncyBncmVwIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzozNi45NDk5ODIwMTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MjIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZnJlZV9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTM0NzQ9c3RhdGljIHZvaWQgbWVtc2xvdF9ybWFwX2ZyZWUoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0ODQ6dm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTM3NjU9dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXFx0aWYgKGNoYW5nZSA9PSBLVk1fTVJfTU9WRSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM3ODY6XFx0XFx0a3ZtX2FyY2hfZnJlZV9tZW1zbG90KGt2bSwgb2xkKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzozNy4wMDI5MDk4NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg3MzMwNzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBgZ3JlcGAgaXMgdGhlIG9idmlvdXMgdG9vbCBoZXJlOyBJJ2xsIHVzZSBpdCB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgKmNhbGxlZCosIHdoYXQgYXJndW1lbnRzIGl0IHRha2VzLCBhbmQgaG93IHRoZSByZXR1cm5lZCBkYXRhIGlzIGhhbmRsZWQuIFRoaXMgd2lsbCB0ZWxsIG1lIGFib3V0IGl0cyBwdXJwb3NlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIGhvdyBtZW1vcnkgc2xvdHMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEtWTSBtZW1vcnkgbW9kZWwuIEJhc2ljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgbGlmZSBjeWNsZSBhbmQgaXRzIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGxhcmdlciBLVk0gYXJjaGl0ZWN0dXJlLiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgZGlncyB1cC4gSSdtIGFudGljaXBhdGluZyBzb21lIGludGVyZXN0aW5nIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0MC4xOTAyNDI4ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNDcwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xMzQ5OD1pbnQgbWVtc2xvdF9ybWFwX2FsbG9jKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTE5LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzUyMDpzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM1MjEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMzYwNT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzYyMy1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM2MjQ6XFx0XFx0cmV0dXJuIGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKGt2bSwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MjUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0MC4yNDQyOTQwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ2MTk4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBBbGxvY2F0aW9uIG9mIERpcnR5IEJpdG1hcHMgaW4gS1ZNKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0ga2VybmVsIG1vZHVsZSBoYW5kbGVzIGRpcnR5IGJpdG1hcCBhbGxvY2F0aW9uLiBNeSBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0J2xsIGJlIG15IHByaW1hcnkgZW50cnkgcG9pbnQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBjYWxscywgYnV0IGFsc28gcG90ZW50aWFsbHkgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBmcmVlIG9yIG1hbmFnZSB0aGUgYml0bWFwcy4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHdoZXJlIGFuZCB3aGVuIHRoZXNlIGJpdG1hcHMgYXJlIGFsbG9jYXRlZCwgaG93IG11Y2ggbWVtb3J5IHRoZXkgY29uc3VtZSwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgdXNhZ2UgcGF0dGVybnMgbG9vayBsaWtlLiBUaGUgZ29hbCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBhbnkgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgd2l0aGluIHRoaXMgYXJlYS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBgZ3JlcGAgdHVybnMgdXAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQzLjM2ODkxNjUyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzk4ODI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYWxsb2NfZGlydHlfYml0bWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNDE1PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdW5sb2NrX2FsbF92Y3B1cyk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoxNDIxOnN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTQyMi17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2NTg9c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY3Ny1cXHRcXHRlbHNlIGlmIChrdm1fdXNlX2RpcnR5X2JpdG1hcChrdm0pKSB7XFxudmlydC9rdm0va3ZtX21haW4uYzoxNjc4OlxcdFxcdFxcdHIgPSBrdm1fYWxsb2NfZGlydHlfYml0bWFwKG5ldyk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xNjc5LVxcdFxcdFxcdGlmIChyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0My40MjI5MTA0MjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYyOTc3MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCoqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gYW5hbHl6ZSB0aGUgZnVuY3Rpb24gYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxldmVyYWdlIGBncmVwYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHVzYWdlIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gY29kZWJhc2UuIEkgd2FudCB0byBzZWUgd2hlcmUgaXQncyBjYWxsZWQsIGhvdyBpdCdzIGNhbGxlZCwgYW5kIHdoYXQgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIGl0LiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lIGxpZmVjeWNsZSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIEknbSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcml0aWNhbCBpbiByZWxlYXNpbmcgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdHJhY2tpbmcgZGlydHkgcGFnZXMsIHNvIEkgbmVlZCB0byBhc3Nlc3MgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiBpdHMgdXNhZ2UgYXMgd2VsbC4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIHNob3VsZCBiZSB1c2VkIGR1cmluZyBWTSB0ZWFyZG93biBvciB3aGVuIHJlc2V0dGluZyBwYWdlIHRyYWNraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzc6NDYuMTg1ODkwMzQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTE0NTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTkyMD1zdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9wbV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjkyNTpzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNi17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTkzNT1zdGF0aWMgdm9pZCBrdm1fZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtOTM5LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6OTQwOlxcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzbG90KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjkwLVxcdGlmIChyIFxcdTAwMjZcXHUwMDI2IG5ldyBcXHUwMDI2XFx1MDAyNiBuZXctXFx1MDAzZWRpcnR5X2JpdG1hcCBcXHUwMDI2XFx1MDAyNiAoIW9sZCB8fCAhb2xkLVxcdTAwM2VkaXJ0eV9iaXRtYXApKVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTY5MTpcXHRcXHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAobmV3KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2OTItXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2OTY9c3RhdGljIHZvaWQga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTc0MC1cXHRcXHRpZiAob2xkLVxcdTAwM2VkaXJ0eV9iaXRtYXAgXFx1MDAyNlxcdTAwMjYgIW5ldy1cXHUwMDNlZGlydHlfYml0bWFwKVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTc0MTpcXHRcXHRcXHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAob2xkKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE3NDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQ2LjI3NzA0MTk5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyMjc4NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gS1ZNIG1lbW9yeSBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gV2FpdCBhIG1pbnV0ZSwgd2hhdCdzIGdvaW5nIG9uIGhlcmU/IFRoZSBvdGhlciB0aHJlZSwgYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGFuZCBga3ZtX2ZyZWVfbWVtc2xvdGAgYXJlIGRlY2xhcmVkIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQ5Ljg3OTMyNDMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM1NzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNjAwPXN0YXRpYyB2b2lkIGt2bV9zd2FwX2FjdGl2ZV9tZW1zbG90cyhzdHJ1Y3Qga3ZtICprdm0sIGludCBhc19pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY1Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2NTg6c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NTktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4ODY9c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xOTMxLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTkzMjpcXHRyID0ga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTkzMy1cXHRpZiAocikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0OS45MjY2OTAwNjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNTI5ODgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9uIG9mIGEgU3RhdGljIEZ1bmN0aW9uKipcblxuT2theSwgc28gYGt2bV9zZXRfbWVtc2xvdGAgaXMgZGVmaW5lZCBhcyBzdGF0aWMuIFJpZ2h0IGF3YXksIHRoYXQgdHJpZ2dlcnMgc29tZSBzcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBpbiBteSBtaW5kLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQga2V5d29yZCwgYHN0YXRpY2AsIGFyZSBwcmV0dHkgY2xlYXIsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVtLCBhcyBpdCBoYXMgcmFtaWZpY2F0aW9ucyBvbiBob3cgdGhlIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFuZCB3aGF0IHRoZSBjb21waWxlciBjYW4gZG8gd2l0aCBpdC5cblxuRmlyc3QsIEkgcmVjYWxsIHRoYXQgYmVpbmcgc3RhdGljIG1lYW5zIGl0cyB2aXNpYmlsaXR5IGlzICpsaW1pdGVkKiB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIEluIG90aGVyIHdvcmRzLCBJIGNhbid0IGRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGNvZGUgaW4gKm90aGVyKiBzb3VyY2UgZmlsZXMgd2l0aGluIHRoZSBLVk0gcHJvamVjdCDigJMgaXQncyBsb2NhbC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgYXNwZWN0LlxuXG5TZWNvbmRseSwgYW5kIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG9wdGltaXphdGlvbi4gQmVjYXVzZSB0aGUgY29tcGlsZXIgKmtub3dzKiB0aGF0IHRoZSBmdW5jdGlvbiBjYW4ndCBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIGl0cyBzb3VyY2UgZmlsZSwgaXQncyBhYmxlIHRvIGlubGluZSBpdCBtb3JlIGFnZ3Jlc3NpdmVseSBpZiB0aGUgb3B0aW1pemF0aW9uIHNldHRpbmdzIGFyZSBoaWdoIGVub3VnaCwgd2hpY2ggd291bGQgYXZvaWQgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZC4gSXQgYWxzbyByZWR1Y2VzIGxpbmthZ2Ugb3ZlcmhlYWQsIHJlZHVjaW5nIGJpbmFyeSBzaXplLlxuXG5Tbywgd2hlbiBJIHNlZSBgc3RhdGljYCwgSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlcjogd2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIGxpbWl0aW5nIGl0cyB2aXNpYmlsaXR5PyBJcyBpdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCAqc2hvdWxkbid0KiBiZSBleHBvc2VkIGV4dGVybmFsbHk/IE9yIGlzIGl0IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uPyBPciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgdGhlIHR3bz8gQW5kIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBhZmZlY3RzIG1haW50YWluYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1dHVyZSByZWZhY3RvcmluZy4gSSdkIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIEtWTSBjb2RlYmFzZSB0byBkZXRlcm1pbmUgdGhlIG1vdGl2YXRpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjUzLjg1MTk5MjQ2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDcyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NldF9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNjAwPXN0YXRpYyB2b2lkIGt2bV9zd2FwX2FjdGl2ZV9tZW1zbG90cyhzdHJ1Y3Qga3ZtICprdm0sIGludCBhc19pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTYyNy1cXHQvKlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTYyODpcXHQgKiBBY3F1aXJlZCBpbiBrdm1fc2V0X21lbXNsb3QuIE11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHN5bmNocm9uaXplXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjI5LVxcdCAqIFNSQ1UgYmVsb3cgaW4gb3JkZXIgdG8gYXZvaWQgZGVhZGxvY2sgd2l0aCBhbm90aGVyIHRocmVhZFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xODczPXN0YXRpYyB2b2lkIGt2bV91cGRhdGVfZmxhZ3NfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODUtXFxudmlydC9rdm0va3ZtX21haW4uYzoxODg2OnN0YXRpYyBpbnQga3ZtX3NldF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODctXFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xOTk0PXN0YXRpYyBpbnQga3ZtX3NldF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA0OC1cXHQgKiBOb3RlLCB0aGUgb2xkIG1lbXNsb3QgKGFuZCB0aGUgcG9pbnRlciBpdHNlbGYhKSBtYXkgYmUgaW52YWxpZGF0ZWRcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIwNDk6XFx0ICogYW5kL29yIGRlc3Ryb3llZCBieSBrdm1fc2V0X21lbXNsb3QoKS5cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNTAtXFx0ICovXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNTktXFxudmlydC9rdm0va3ZtX21haW4uYzoyMDYwOlxcdFxcdHJldHVybiBrdm1fc2V0X21lbXNsb3Qoa3ZtLCBvbGQsIE5VTEwsIEtWTV9NUl9ERUxFVEUpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA2MS1cXHR9XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMTItXFxudmlydC9rdm0va3ZtX21haW4uYzoyMTEzOlxcdHIgPSBrdm1fc2V0X21lbXNsb3Qoa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMTQtXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjUzLjg5NzcwMzU4M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI5NjIyOTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqU3RhdGljIEZ1bmN0aW9uIENoZWNrKipcblxuT2theSwgc28gYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAuLi4gaXMgaXQgZGVjbGFyZWQgYXMgYHN0YXRpY2A/IFRoYXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdC4gVGhlIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQsIGFzIHN0YXRpYyBmdW5jdGlvbnMgaGF2ZSBsaW1pdGVkIHNjb3BlLCBhbmQgdGhhdCBjb250ZXh0IGlzIHBhcmFtb3VudCB3aGVuIHJlYXNvbmluZyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgS1ZNLiBJdCBkaWN0YXRlcyBob3cgYW5kIHdoZXJlIHRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkLCB3aGljaCwgaW4gdHVybiwgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHN0YXRpYyBuYXR1cmUgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZyBzdGVwcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbi4gTGV0J3MgZGlnIGluIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjU2LjgyNzMyOTgwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMjA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NldF9tZW1vcnlfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xOTgxPXN0YXRpYyBib29sIGt2bV9jaGVja19tZW1zbG90X292ZXJsYXAoc3RydWN0IGt2bV9tZW1zbG90cyAqc2xvdHMsIGludCBpZCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE5OTQ6c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5NS1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjEyNz1pbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzNS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxMzY6XFx0cmV0dXJuIGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIG1lbSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjE0MD1zdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDYtXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0NzpcXHRyZXR1cm4ga3ZtX3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgbWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo1Ni44NzQ0NTg2OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjAzMDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudC4gVGhlIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIGZ1bmN0aW9uIGlzIHRoZSBpb2N0bCBoYW5kbGVyLCB3aGljaCBpcyBpbXBvcnRhbnQuIEZyb20gdGhlcmUgSSBzZWUgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBhIGtleSBwb2ludCB0b28uIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIGxpa2VseSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzOiBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC5cblxuSG1tLCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgZWFjaC4gQWxyaWdodCwgbG9va3MgbGlrZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBhbHJlYWR5IG5vbi1zdGF0aWMuIFRoZSBpb2N0bCBoYW5kbGVyIGl0c2VsZiwgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAsICppcyogc3RhdGljLCBidXQgdGhhdCdzIHR5cGljYWwgZm9yIGlvY3RsIGhhbmRsZXJzLiBJdCdzIHVzdWFsbHkgZ29vZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIG5hbWluZyBjb25mbGljdHMgaW4gdGhlIGlvY3RsIGl0c2VsZi4gV2FpdCwgYGt2bV92bV9pb2N0bGAgaXMgbm9uLXN0YXRpYyFcblxuT2theSwgdGltZSB0byBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJ2xsIGNoZWNrIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIHdpdGhpbiBgdmlydC9rdm0va3ZtX21haW4uY2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MDEuNzAwNDkxNTA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUyNzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMzg9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM5LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0MDpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTQxLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0OD1zdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MjAyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcXHUwMDI2bWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjAxLjc0ODAyNzM1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTQyODI2MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBNZW1vcnkgUmVnaW9uIEZvY3VzIFN5bWJvbCBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIGhhbmRsZWQgaW4gS1ZNIGFuZCBuZWVkIHRvIHBpY2sgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGBrdm1fdm1faW9jdGxgIHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50LiBCdXQsIGhhbmcgb24sIGl0J3MgYSB2ZXJ5IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gYXZvaWQgdGhvc2UgdG8gcHJldmVudCBiaWFzZWQgdGVzdCBkaXN0cmlidXRpb25zLiBUaGV5J3JlIG1vcmUgaW50ZXJlc3RlZCBpbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgcmF0aGVyIHRoYW4gaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuXG5cblNvLCBJIHRob3VnaHQgYWJvdXQgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIEl0J3Mgc3RhdGljLCBzbyBpdCAqbWlnaHQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBiZSBjYXJlZnVsLiBMZXQncyBzdGFydCB3aXRoIGEgbGVzcyByaXNreSBhcHByb2FjaC5cblxuSSBzdGFydGVkIGxpc3RpbmcgcG9zc2libGUgZnVuY3Rpb25zOiBJIHRob3VnaHQgb2YgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAsIGJ1dCBpdCBpcyBhbiBpbnRlcm5hbCBLVk0gZnVuY3Rpb24sIHNvIHRoYXQgd29uJ3Qgd29yay4gSG93ZXZlciwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCBsb29rIHByb21pc2luZy4gVGhleSBhcmUgbm9uLXN0YXRpYyBhbmQgc2VlbSBsaWtlIHRoZXkgZG8gdGhlIHJpZ2h0IHRoaW5nLlxuXG5UaGVuIEkgY2hlY2tlZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAuIFRoYXQncyBjYWxsZWQgZnJvbSBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tZW1vcnlfcmVnaW9uYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gdGhlIHN0YXRpYyBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYC4gSSBjYW4gdXNlIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIHNpbmNlIHRoYXQgaXMgYSBub24tc3RhdGljIEFQSS4gSSdtIHN0YXJ0aW5nIHRvIGdldCBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY2FsbCBzdGFjayBub3cuXG5cbkFsc28sIEkgY2hlY2tlZCBvdXQgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIFRoaXMgaXMgY2FsbGVkIGZyb20gYGt2bV9mcmVlX21lbXNsb3RgIGFuZCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSBga3ZtX2Rlc3Ryb3lfdm1gIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NjAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MDguMjkwODU3MjM1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgxMzczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZGVzdHJveV92bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9OTY2PXN0YXRpYyB1bW9kZV90IGt2bV9zdGF0c19kZWJ1Z2ZzX21vZGUoY29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjICpkZXNjKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy05NzgtXFxudmlydC9rdm0va3ZtX21haW4uYzo5Nzk6c3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhzdHJ1Y3Qga3ZtICprdm0pXFxudmlydC9rdm0va3ZtX21haW4uYy05ODAte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz05OTc9c3RhdGljIGludCBrdm1fY3JlYXRlX3ZtX2RlYnVnZnMoc3RydWN0IGt2bSAqa3ZtLCBjb25zdCBjaGFyICpmZG5hbWUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwNjQtb3V0X2VycjpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEwNjU6XFx0a3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhrdm0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA2Ni1cXHRyZXR1cm4gcmV0O1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xMDczPXZvaWQgX193ZWFrIGt2bV9hcmNoX3ByZV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA3OS0gKiBiZSBzZXR1cCBhbHJlYWR5LCBzbyB3ZSBjYW4gY3JlYXRlIGFyY2gtc3BlY2lmaWMgZGVidWdmcyBlbnRyaWVzIHVuZGVyIGl0LlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTA4MDogKiBDbGVhbnVwIHNob3VsZCBiZSBhdXRvbWF0aWMgZG9uZSBpbiBrdm1fZGVzdHJveV92bV9kZWJ1Z2ZzKCkgcmVjdXJzaXZlbHksIHNvXFxudmlydC9rdm0va3ZtX21haW4uYy0xMDgxLSAqIGEgcGVyLWFyY2ggZGVzdHJveSBpbnRlcmZhY2UgaXMgbm90IG5lZWRlZC5cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTIzMz1zdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kZXZpY2VzKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEyNTQ6c3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1NS17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEyNjAtXFx0a3ZtX3VldmVudF9ub3RpZnlfY2hhbmdlKEtWTV9FVkVOVF9ERVNUUk9ZX1ZNLCBrdm0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI2MTpcXHRrdm1fZGVzdHJveV92bV9kZWJ1Z2ZzKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xMjYyLVxcdG11dGV4X2xvY2soXFx1MDAyNmt2bV9sb2NrKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTMyOD12b2lkIGt2bV9wdXRfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTMzMC1cXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZrdm0tXFx1MDAzZXVzZXJzX2NvdW50KSlcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEzMzE6XFx0XFx0a3ZtX2Rlc3Ryb3lfdm0oa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzItfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz02MDk0PXN0YXRpYyBpbnQga3ZtX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjEwMi1cXHQgKiBUaGUgZGVidWdmcyBmaWxlcyBhcmUgYSByZWZlcmVuY2UgdG8gdGhlIGt2bSBzdHJ1Y3Qgd2hpY2hcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYxMDM6ICAgICAgICAqIGlzIHN0aWxsIHZhbGlkIHdoZW4ga3ZtX2Rlc3Ryb3lfdm0gaXMgY2FsbGVkLiAga3ZtX2dldF9rdm1fc2FmZVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjEwNC0gICAgICAgICogYXZvaWRzIHRoZSByYWNlIGJldHdlZW4gb3BlbiBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGRlYnVnZnMgZGlyZWN0b3J5LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODowOC4zMzY2NzY1NTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyMTIwMzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipGb2N1c2luZyBpbiBvbiBLVk0gQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBLVk0gcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwLiBga3ZtX2Rlc3Ryb3lfdm1gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBsaW1pdHMgaXRzIHZpc2liaWxpdHkuIFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcHV0X2t2bWAgaXMgKm5vbiotc3RhdGljLiBUaGF0IG1ha2VzIGl0IGEgYmV0dGVyIGNhbmRpZGF0ZSBmb3IgYSBtb3JlIGdsb2JhbCBzeW1ib2wg4oCTIGl0J3MgcHJvYmFibHkgZXhwb3J0ZWQgYW5kIHVzZWQgbW9yZSBicm9hZGx5IGFjcm9zcyB0aGUgS1ZNIGNvZGViYXNlLiBUaGVyZWZvcmUsIGBrdm1fcHV0X2t2bWAgaXMgYSBnb29kIGZvY3VzIHN5bWJvbCBmb3IgZmlndXJpbmcgb3V0IHdoYXQncyBnb2luZyBvbi4gSSdsbCBzdGFydCB0aGVyZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBjaGVjayBob3cgdGhlIGludGVybmFsIG1lbW9yeSBzbG90cyBhcmUgaGFuZGxlZC4gTGV0J3Mgc2VlIHdoYXQgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgZG9lcy4gVGhhdCBtaWdodCBwcm92aWRlIHNvbWUgdXNlZnVsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MTIuMzU3ODgzMjY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NDA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTI2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEyNzppbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qga3ZtX3VzZXJzcGFjZV9tZW1vcnlfcmVnaW9uMiAqbWVtKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxMzg6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoxMi40MDUzNDE0ODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5NDI4OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEtWTSBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzLCBzdXJwcmlzaW5nbHksIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGludHVpdGlvbiBzYXlzIHRoaXMgbWVhbnMgaXQncyBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlLCB3aGljaCBiZWdzIHRoZSBxdWVzdGlvbiBvZiB3aHkgaXQncyBub3QgYmVpbmcgbGV2ZXJhZ2VkIG1vcmUgd2l0aGluIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFxuXG5Ob3csIEknbSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSBkaXZlIGludG8gdGhlIGNvdW50ZXJwYXJ0LCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4gVGhlIHBhaXJpbmcgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGxpa2VseSB0byBwcm92aWRlIGltcG9ydGFudCBjb250ZXh0LiBEb2VzIHRoZSB1c2UsIG9yIG5vbi11c2UsIG9mIHRoZSBgaW50ZXJuYWxfbWVtc2xvdGAgZnVuY3Rpb24gaGF2ZSByYW1pZmljYXRpb25zIG9uIGhvdyB0aGUgbWVtb3J5IHNsb3RzIGFyZSB1bHRpbWF0ZWx5IGZyZWVkPyBJIHdhbnQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgb3duZXJzaGlwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gaW1wcm9wZXIgdXNlIG9yIGludGVncmF0aW9uIG9mIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjE2LjM5OTYzNDUyNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MjI5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZnJlZV9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz05MzU9c3RhdGljIHZvaWQga3ZtX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjk0MjpcXHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBzbG90KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MTYuNDQ3MjYzOTk0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODQ2MDM2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhIGd1ZXN0J3MgbWVtb3J5IHJlZ2lvbiwgYmVmb3JlIEtWTSBoYW5kcyBpdCBvZmYgdG8gdGhlIE1NVS4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHdoYXQgYXJjaGl0ZWN0dXJlIHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXMgdGhpcyB4ODYsIEFSTSwgUklTQy1WLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gd2lsbCBiZSByYWRpY2FsbHkgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSdzIG1lbW9yeSBtYW5hZ2VtZW50IGhhcmR3YXJlLlxuXG5NeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQncyB0aGUgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgcmVnaW9uPyBJcyB0aGlzIGEgc3RhbmRhcmQgUkFNIHJlZ2lvbiwgYW4gSS9PIHJlZ2lvbiwgc29tZXRoaW5nIGZvciBNTUlPLCBvciBwZXJoYXBzIGEgc3BlY2lhbCBtZW1vcnkgdHlwZT8gVGhlIGFuc3dlcnMgd2lsbCBkaWN0YXRlIHdoaWNoIGFyY2hpdGVjdHVyYWwgbWVtb3J5IG1hcCBzZXR0aW5ncyBhcmUgYXBwbGllZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsYWdzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHdoaWNoIHdpbGwgZ2l2ZSBtZSBoaW50cyBhYm91dCB0aGUgcmVxdWlyZWQgbWVtb3J5IGF0dHJpYnV0ZXM6IHJlYWQvd3JpdGUvZXhlY3V0ZSBwZXJtaXNzaW9ucywgY2FjaGluZyBzZXR0aW5ncyAoZS5nLiwgd3JpdGUtYmFjaywgd3JpdGUtdGhyb3VnaCwgdW5jYWNoZWQpLCBhbmQgcG90ZW50aWFsbHkgd2hldGhlciB0aGlzIGlzIGEgc3BlY2lhbCBtZW1vcnkgcmVnaW9uIGZvciBkZXZpY2VzIG9yIHBlcmlwaGVyYWxzLlxuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHdoYXQgbG9ja2luZywgaWYgYW55LCBpcyB1c2VkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBNZW1vcnkgcmVnaW9uIHNldHVwIGlzIGEgY3JpdGljYWwgc2VjdGlvbi4gUmFjZSBjb25kaXRpb25zIGhlcmUgd291bGQgYmUgY2F0YXN0cm9waGljLCBzbyBJIGV4cGVjdCBzb21lIGZvcm0gb2YgcHJvdGVjdGlvbiwgbGlrZWx5IGEgc3BpbmxvY2sgb3IgbXV0ZXgsIG1heWJlIGV2ZW4gYSByZWFkLWNvcHktdXBkYXRlIHNjaGVtZSBpZiBtdWx0aXBsZSB2Q1BVcyBuZWVkIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlcy4gRG9lcyBpdCBkaXJlY3RseSBtb2RpZnkgdGhlbSwgb3IgZG9lcyBpdCBjYWxsIGludG8gb3RoZXIgS1ZNIGhlbHBlcnM/IFVuZGVyc3RhbmRpbmcgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5LiBBcmUgd2UgZGVhbGluZyB3aXRoIDItbGV2ZWwsIDMtbGV2ZWwsIG9yIDQtbGV2ZWwgcGFnZSB0YWJsZXM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggbmVzdGVkIHBhZ2luZz8gQXJlIHRoZXJlIGFueSBhZGRyZXNzIHNwYWNlIGlkZW50aWZpZXIgKEFTSUQpIGNvbnNpZGVyYXRpb25zP1xuXG5GaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaW1wb3J0YW50LiBXaGF0IGNhbiBnbyB3cm9uZyBkdXJpbmcgbWVtb3J5IHJlZ2lvbiBwcmVwYXJhdGlvbj8gSW52YWxpZCBwYXJhbWV0ZXJzLCBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLCBvciBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBhcmUgYWxsIHBvc3NpYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG90ZW50aWFsIGVycm9ycyBhcmUgZGV0ZWN0ZWQgYW5kIGhhbmRsZWQgdG8gZW5zdXJlIHRoZSBWTSByZW1haW5zIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgZG9lc24ndCBjcmFzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyMS4wMzE4NzExMDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTA4ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjg2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTY4NzpcXHRyID0ga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKGt2bSwgb2xkLCBuZXcsIGNoYW5nZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xNjg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyMS4wODAzODY0MDNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1ODc5NDMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBhdCB0aGUgYXJjaGl0ZWN0dXJlIGxldmVsLiBXaGF0IHNwZWNpZmljIHRhc2tzIGRvZXMgaXQgaGFuZGxlIHdpdGhpbiB0aGUgS1ZNIG1lbW9yeSBtYW5hZ2VtZW50IHBpcGVsaW5lPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgaXRzIHJvbGUgaW4gdGhlIGNvbW1pdCBwaGFzZSBvZiBtZW1vcnkgcmVnaW9ucywgYnV0IEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGluZ3MgbGlrZSBUTEIgZmx1c2hlcywgY2FjaGUgaW52YWxpZGF0aW9uLCBvciBldmVuIHBvdGVudGlhbGx5IGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBndWVzdCdzIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCBhbmQgYW55IHJlbGV2YW50IGFyY2hpdGVjdHVyZSBtYW51YWxzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCBmaXRzIHRvZ2V0aGVyLiBUaGUgZ29hbCBpcyB0byBkZXZlbG9wIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjI0LjQzOTE4Mzg0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1Mjg0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTE2OTY9c3RhdGljIHZvaWQga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTcxNy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE3MTg6XFx0a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE3MTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjI0LjQ4NjcxNzkzN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIxMzgxOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb24gYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBMZXQncyBzZWUsIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBndWlkYW5jZSwgSSdtIHRoaW5raW5nOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYGt2bV9wdXRfa3ZtYCwgYnV0IHRoYXQncyBhIGJpdCB0b28gZ2VuZXJpYywgaXNuJ3QgaXQ/XG5cblRoZW4gSSB0aG91Z2h0IGFib3V0IGBrdm1fdm1faW9jdGxgLCBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byB0aGUgVk0gZnVuY3Rpb25hbGl0eS4gQnV0LCBoYW5nIG9uLi4uIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIHVzIHRvIGF2b2lkIHRob3NlIFwiZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuXCIgYGt2bV92bV9pb2N0bGAgaXMgbW9yZSBvZiBhbiBpb2N0bCBoYW5kbGVyIGFueXdheSwgbm90IHJlYWxseSBhIGhvdC1wYXRoIGZ1bmN0aW9uIGFzIHN1Y2guIFNvLCBJJ2xsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHNldC4gVGhleSBhcHBlYXIgdG8gYmUgbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMsIHdoaWNoLCBieSBpbXBsaWNhdGlvbiwgc2VlbSBmYXIgbW9yZSBhcHByb3ByaWF0ZS5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBjb25maWcgZGVwZW5kZW5jaWVzLiBJJ20gcHJldHR5IHN1cmUgd2UgbmVlZCBgQ09ORklHX0tWTWAgZW5hYmxlZCwgYW5kLCBqdXN0IHRvIGJlIHN1cmUsIEknbGwgZ28gYWhlYWQgYW5kIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg3NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyOS44MDgxMDI0MTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzYxODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MjkuODUzODY5NzA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjE1MTk3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24uIFRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBgS1ZNYCBpcyB0aGUgY29yZSwgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBpdGVtIHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuT2theSwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWcgb3B0aW9ucy4gQWgsIHllcywgdGhlcmUncyBgS1ZNX1g4NmAuIEl0J3MgbGlrZWx5IGFsc28gcmVxdWlyZWQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEdvb2QgdG8ga25vdy4gQnV0IGFnYWluLCBgS1ZNYCBpdHNlbGYgc3RpbGwgYXBwZWFycyB0byBiZSB0aGUgbW9zdCBmdW5kYW1lbnRhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5UaW1lIHRvIGRpdmUgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgdmlydC9rdm0vS2NvbmZpZ2AgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LiBUaGF0IHNob3VsZCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgaG93IHRoaXMgaXMgc3RydWN0dXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODozMy45NzUzOTI1NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNzc4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODozNC4wMjE2ODAwNjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NDA1NDgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gTWVtb3J5IFJlZ2lvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gbWVtb3J5IHJlZ2lvbiBtYW5hZ2VtZW50IHdpdGhpbiBLVk0uIFRoZSBjb2RlIEknbSBmb2N1c2luZyBvbiBpcyBwcmltYXJpbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgdGVsbHMgbWUganVzdCBmb2N1c2luZyBvbiBgS1ZNYCBpcyBlbm91Z2ggZm9yIHRoZSBzZWFyY2guXG5cbkxldCdzIHNlZSB3aGF0IHN5bWJvbHMgYXJlIG9mIGludGVyZXN0IGhlcmU6IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYW5kIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiAgV2FpdCwgd2Fzbid0IGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGludGVybmFsPyBSaWdodCwgaXQncyBub3QgZXhwb3NlZCBkaXJlY3RseSB0byB1c2Vyc3BhY2UuIFNvIHRoYXQgbWVhbnMgaXQgbWlnaHQgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIG90aGVyIGlvY3Rscy5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBga3ZtX3ZtX2lvY3RsYC4gIFRoYXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgaW9jdGxzLiBCdXQgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgaXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uISBJdCBpcyBub3QgYSBnb29kIGZvY3VzIGZ1bmN0aW9uLlxuXG5HaXZlbiB0aGF0LCBJIHRoaW5rIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYW5kIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAgYXJlIGdvb2QgZm9jYWwgcG9pbnRzLCBhbG9uZyB3aXRoIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLlxuXG5Ib2xkIG9uLi4uIEknbSByZW1pbmRlZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBXYWl0LCBhcmUgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGV5IGFyZS4gU28gYWN0dWFsbHkgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21lbW9yeV9yZWdpb25gIGFuZCBub3QgYnkgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIFNvIEkgaGF2ZSB0byBmaW5kIHRoZSBjYWxsZXJzIG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NDAuMDY1NzM5MDA4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkxOTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTMzNzE9dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDEyLVxcdFxcdG0ubWVtb3J5X3NpemUgPSBzaXplO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQxMzpcXHRcXHRyID0ga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KGt2bSwgXFx1MDAyNm0pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxNC1cXHRcXHRpZiAociBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjQwLjExMTY2NjcxN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjU2MzE1MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgbWVtb3J5IHJlZ2lvbiBzZXR1cCBpbiBLVk0uIEl0IGxvb2tzIGxpa2UgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBlbnRyeSBwb2ludHMgYXJlIHRoZXJlIHRvIGNvbmZpZ3VyZSBtZW1vcnk/IEknbSBzcGVjaWZpY2FsbHkgY3VyaW91cyBhYm91dCBob3cgYGt2bV92bV9pb2N0bGAgbWlnaHQgaW50ZXJhY3QgaGVyZS4gSXQncyBhIGZ1bmRhbWVudGFsIGlvY3RsIGhhbmRsZXIsIHNvIGl0J3MgbGlrZWx5IGludm9sdmVkIHNvbWVob3cuIExldCdzIGRpZyBpbnRvIGBrdm1fdm1faW9jdGxgJ3MgZGVmaW5pdGlvbiB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIGNhbGxpbmcgb3IgY29vcmRpbmF0aW5nIHdpdGggdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zLiBJIHNob3VsZCBmaW5kIGl0cyBkZWZpbml0aW9uIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgdGhlIGNlbnRyYWwgS1ZNIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODo0Ny43Njc5ODUyNzFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzE0ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92bV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MTQxNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3VubG9ja19hbGxfdmNwdXMpO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNDE4LSAqIEFsbG9jYXRpb24gc2l6ZSBpcyB0d2ljZSBhcyBsYXJnZSBhcyB0aGUgYWN0dWFsIGRpcnR5IGJpdG1hcCBzaXplLlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTQxOTogKiBTZWUga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coKSB3aHkgdGhpcyBpcyBuZWVkZWQuXFxudmlydC9rdm0va3ZtX21haW4uYy0xNDIwLSAqL1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0yMTM4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0X2ludGVybmFsX21lbXNsb3QpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxNDA6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjE0MS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIyMjE9c3RhdGljIGludCBrdm1fZ2V0X2RpcnR5X2xvZ19wcm90ZWN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjI5My0vKipcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIyOTQ6ICoga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2cgLSBnZXQgYW5kIGNsZWFyIHRoZSBsb2cgb2YgZGlydHkgcGFnZXMgaW4gYSBzbG90XFxudmlydC9rdm0va3ZtX21haW4uYy0yMjk1LSAqIEBrdm06IGt2bSBpbnN0YW5jZVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMzExLSAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjMxMjpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9nZXRfZGlydHlfbG9nKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIzMTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjMzMT1zdGF0aWMgaW50IGt2bV9jbGVhcl9kaXJ0eV9sb2dfcHJvdGVjdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI0MDYtXFxudmlydC9rdm0va3ZtX21haW4uYzoyNDA3OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NsZWFyX2RpcnR5X2xvZyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yNDA4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fY2xlYXJfZGlydHlfbG9nICpsb2cpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI1Mzc9c3RhdGljIGludCBrdm1fdm1fc2V0X21lbV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3Qgc3RhcnQsIGdmbl90IGVuZCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjU5OC19XFxudmlydC9rdm0va3ZtX21haW4uYzoyNTk5OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3NldF9tZW1fYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yNjAwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fbWVtb3J5X2F0dHJpYnV0ZXMgKmF0dHJzKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zOTYwPXZvaWQga3ZtX3ZjcHVfb25fc3BpbihzdHJ1Y3Qga3ZtX3ZjcHUgKm1lLCBib29sIHlpZWxkX3RvX2tlcm5lbF9tb2RlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zOTcwLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mzk3MTpcXHQvKiBQYWlycyB3aXRoIHRoZSBzbXBfd21iKCkgaW4ga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkuICovXFxudmlydC9rdm0va3ZtX21haW4uYy0zOTcyLVxcdHNtcF9ybWIoKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDEzMT1zdGF0aWMgdm9pZCBrdm1fY3JlYXRlX3ZjcHVfZGVidWdmcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTEtICovXFxudmlydC9rdm0va3ZtX21haW4uYzo0MTUyOnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTMte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz00Mzc5PXN0YXRpYyBpbnQga3ZtX3dhaXRfZm9yX3ZjcHVfb25saW5lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM5MS1cXHQgKiBBY3F1aXJlIGFuZCByZWxlYXNlIHRoZSB2Q1BVJ3MgbXV0ZXggdG8gd2FpdCBmb3IgdkNQVSBjcmVhdGlvbiB0b1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDM5MjpcXHQgKiBjb21wbGV0ZSAoa3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkgaG9sZHMgdGhlIG11dGV4IHVudGlsIHRoZSB2Q1BVXFxudmlydC9rdm0va3ZtX21haW4uYy00MzkzLVxcdCAqIGlzIGZ1bGx5IG9ubGluZSkuXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ4MDU9c3RhdGljIGludCBrdm1faW9jdGxfY3JlYXRlX2RldmljZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4NjMtXFxudmlydC9rdm0va3ZtX21haW4uYzo0ODY0OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKHN0cnVjdCBrdm0gKmt2bSwgbG9uZyBhcmcpXFxudmlydC9rdm0va3ZtX21haW4uYy00ODY1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDkzNy1cXHR9XFxudmlydC9rdm0va3ZtX21haW4uYzo0OTM4OlxcdHJldHVybiBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uKGt2bSwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ5MzktfVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0MC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ5NDE6c3RhdGljIGludCBrdm1fdm1faW9jdGxfZW5hYmxlX2RpcnR5X2xvZ19yaW5nKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHNpemUpXFxudmlydC9rdm0va3ZtX21haW4uYy00OTQyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk3OC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ5Nzk6c3RhdGljIGludCBrdm1fdm1faW9jdGxfcmVzZXRfZGlydHlfcGFnZXMoc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk4MC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwMDMtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MDA0OmludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAwNS1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCAqY2FwKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01MDIzPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fYXJlX2FsbF9tZW1zbG90c19lbXB0eSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MDI0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTAyNTpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAyNi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgKmNhcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2MC1cXHRjYXNlIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjE6XFx0XFx0aWYgKCFrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoa3ZtLCBjYXAtXFx1MDAzZWNhcCkpXFxudmlydC9rdm0va3ZtX21haW4uYy01MDYyLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjQ6XFx0XFx0cmV0dXJuIGt2bV92bV9pb2N0bF9lbmFibGVfZGlydHlfbG9nX3Jpbmcoa3ZtLCBjYXAtXFx1MDAzZWFyZ3NbMF0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2NS1cXHRjYXNlIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfV0lUSF9CSVRNQVA6IHtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA4OC1cXHRkZWZhdWx0OlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTA4OTpcXHRcXHRyZXR1cm4ga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoa3ZtLCBjYXApO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA5MC1cXHR9XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMga3ZtX3ZtX3N0YXRzX2ZvcHMgPSB7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxMTctXFxudmlydC9rdm0va3ZtX21haW4uYzo1MTE4OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtICprdm0pXFxudmlydC9rdm0va3ZtX21haW4uYy01MTE5LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0MT1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MTQ3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE0ODpzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxudmlydC9rdm0va3ZtX21haW4uYy01MTQ5LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNTgtXFx0Y2FzZSBLVk1fQ1JFQVRFX1ZDUFU6XFxudmlydC9rdm0va3ZtX21haW4uYzo1MTU5OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoa3ZtLCBhcmcpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2MC1cXHRcXHRicmVhaztcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2Ni1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUxNjc6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoa3ZtLCBcXHUwMDI2Y2FwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNjgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MjAyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcXHUwMDI2bWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDMtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTAtXFx0XFx0XFx0Z290byBvdXQ7XFxudmlydC9rdm0va3ZtX21haW4uYzo1MjExOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X2RpcnR5X2xvZyhrdm0sIFxcdTAwMjZsb2cpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIxMi1cXHRcXHRicmVhaztcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIyMC1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMjE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcXHUwMDI2bG9nKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMjItXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMzEtXFx0XFx0XFx0Z290byBvdXQ7XFxudmlydC9rdm0va3ZtX21haW4uYzo1MjMyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcXHUwMDI2em9uZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MjMzLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MjQwLVxcdFxcdFxcdGdvdG8gb3V0O1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI0MTpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX3VucmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcXHUwMDI2em9uZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MjQyLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MjgyLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI4MzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2lycV9saW5lKGt2bSwgXFx1MDAyNmlycV9ldmVudCxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyODQtXFx0XFx0XFx0XFx0XFx0aW9jdGwgPT0gS1ZNX0lSUV9MSU5FX1NUQVRVUyk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzYtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MzM3OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKGt2bSwgXFx1MDAyNmF0dHJzKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNTktXFx0Y2FzZSBLVk1fQ0hFQ0tfRVhURU5TSU9OOlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTM2MDpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKGt2bSwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNjEtXFx0XFx0YnJlYWs7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzYyLVxcdGNhc2UgS1ZNX1JFU0VUX0RJUlRZX1JJTkdTOlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTM2MzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzY0LVxcdFxcdGJyZWFrO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTM2NS1cXHRjYXNlIEtWTV9HRVRfU1RBVFNfRkQ6XFxudmlydC9rdm0va3ZtX21haW4uYzo1MzY2OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X3N0YXRzX2ZkKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzY3LVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NDEzPXN0YXRpYyBsb25nIGt2bV92bV9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NDAtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NDQxOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXFx1MDAyNmxvZyk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NDQyLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NDU2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTQ1NzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coa3ZtLCBcXHUwMDI2bG9nKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NTgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjAtXFx0ZGVmYXVsdDpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0NjE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bChmaWxwLCBpb2N0bCwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjItXFx0fVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NDY3PXN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGt2bV92bV9mb3BzID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ2OC1cXHQucmVsZWFzZSAgICAgICAgPSBrdm1fdm1fcmVsZWFzZSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0Njk6XFx0LnVubG9ja2VkX2lvY3RsID0ga3ZtX3ZtX2lvY3RsLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ3MC1cXHQubGxzZWVrXFx0XFx0PSBub29wX2xsc2VlayxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTUyMz1zdGF0aWMgbG9uZyBrdm1fZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NTM3LVxcdGNhc2UgS1ZNX0NIRUNLX0VYVEVOU0lPTjpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU1Mzg6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb25fZ2VuZXJpYyhOVUxMLCBhcmcpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTUzOS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NDcuODE0NzA2MjhaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NzA0OTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhpcyBLVk0gY29kZSwgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIklzIGBrdm1fdm1faW9jdGxgIHN0YXRpYz9cIiBCZWNhdXNlIGlmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0J3MgcHJvYmFibHkgbm90IHRoZSBiZXN0IHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIG92ZXJhbGwgZmxvdy4gQWhhISBJdCAqaXMqIGRlY2xhcmVkIGFzIGBzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpYC4gVGhhdCdzIHRoYXQuIFNvIGl0J3Mgc3RhdGljLCBidXQgdGhlbiBpdCdzIGFzc2lnbmVkIHRvIGAudW5sb2NrZWRfaW9jdGwgPSBrdm1fdm1faW9jdGxgLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhbiBlbnRyeSBwb2ludC4gSXQncyBhIGJpdCBvZiBhIHRyaWNrLCBzaW5jZSBpdCBpcyBzdGF0aWMsIEkgbWlnaHQgd2FudCB0byBmaW5kIG90aGVyIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90IHN0YXRpYy5cblxuU28sIHNpbmNlIGBrdm1fdm1faW9jdGxgIGlzIHN0YXRpYywgSSBuZWVkIHRvIGxvb2sgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBMZXQncyBzZWUuLi4gd2hhdCBhYm91dCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYD8gVGhhdCBvbmUgbG9va3Mgbm9uLXN0YXRpYy4gR29vZC4gQW5kIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgPyBOb24tc3RhdGljIGFnYWluLiBQZXJmZWN0LiBBbmQgdGhlIGZvbGxvd2luZyBhcmUgYWxzbyBub24tc3RhdGljLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFuZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLiBOb3cgbGV0J3MgZGl2ZSBpbnRvIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDMzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjUyLjQwMTc1OTA5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQzNDk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jPTI5MDE9aW50IGt2bV9hbGxvY19hcGljX2FjY2Vzc19wYWdlKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MTAtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MjkxMTpcXHRodmEgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MTItXFx0XFx0XFx0XFx0ICAgICAgQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSwgUEFHRV9TSVpFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTI5MjI9dm9pZCBrdm1faW5oaWJpdF9hcGljX2FjY2Vzc19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzMtXFx0aWYgKGt2bS1cXHUwMDNlYXJjaC5hcGljX2FjY2Vzc19tZW1zbG90X2VuYWJsZWQpIHtcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoyOTM0OlxcdFxcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsIDAsIDApO1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzUtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NDAxMD1zdGF0aWMgaW50IGluaXRfcm1vZGVfaWRlbnRpdHlfbWFwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNDAyNS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjQwMjY6XFx0dWFkZHIgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy00MDI3LVxcdFxcdFxcdFxcdFxcdElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyNTQ9aW50IHZteF9zZXRfdHNzX2FkZHIoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgYWRkcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTI2MS1cXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTI2MjpcXHRyZXQgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIGFkZHIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjYzLVxcdFxcdFxcdFxcdCAgICAgIFBBR0VfU0laRSAqIDMpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzMjc2PWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzQ5LS8qKlxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzM1MDogKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbjogU2V0dXAgS1ZNIGludGVybmFsIG1lbW9yeSBzbG90XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzUxLSAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzAtICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzMzcxOnZvaWQgX191c2VyICogX194ODZfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCBpbnQgaWQsIGdwYV90IGdwYSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzItXFx0XFx0XFx0XFx0ICAgICAgdTMyIHNpemUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0MjItfVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQyMzpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX194ODZfc2V0X21lbW9yeV9yZWdpb24pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQyNC1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMzQ0MT12b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDQ5LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDUwOlxcdFxcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDUxLVxcdFxcdFxcdFxcdFxcdDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ1MjpcXHRcXHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDUzLVxcdFxcdFxcdFxcdFxcdDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ1NDpcXHRcXHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ1NS1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjUyLjQ0OTIwMDM2OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwNTI3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEtWTSBzeXN0ZW0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBtaWdodCBiZSBhIGtleSBmdW5jdGlvbiwgc2luY2UgaXQncyBleHBvcnRlZC4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFzIHBvdGVudGlhbCBmb2N1cyBwb2ludHMsIGFsb25nIHdpdGggdGhlIGFmb3JlbWVudGlvbmVkIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuXG5cbkJ1dCB0aGVuIEkgcmVhbGl6ZWQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBpcyBzcGVjaWZpYyB0byAqaW50ZXJuYWwqIG1lbW9yeSBzbG90cy4gSG1tLCB0aGF0J3Mgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLiBXaGF0IGFib3V0IHRoZSB1c2VyIG1lbW9yeSByZWdpb25zPyBUaG9zZSBhcmUgc2V0IHVzaW5nIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBTaG9vdCwgdGhhdCdzIHN0YXRpYywgc28gaXQncyBvZmYgdGhlIHRhYmxlIGZvciBteSBwdXJwb3Nlcy4gSSB0aG91Z2h0IG1heWJlIEkgY291bGQgdXNlIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIHNpbmNlIGl0IGlzIGV4cG9ydGVkLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQncyBhbHNvIGp1c3QgZm9yIGludGVybmFsIG1lbXNsb3RzLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIGNhbGxzIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gSSBuZWVkIGEgKm5vbi1zdGF0aWMqIGZ1bmN0aW9uIGFsb25nIHRoYXQgZXhlY3V0aW9uIHBhdGguIEFoYSEgSGVyZSB3ZSBnby4uLiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBpcyBjYWxsZWQgZm9yICphbGwqIG1lbW9yeSByZWdpb25zLCBib3RoIGludGVybmFsIGFuZCB1c2VyLiBUaGF0J3MgZXhhY3RseSB3aGF0IEkgbmVlZC4gSXTigJlzIHBlcmZlY3QhXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGF0IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGlzIGluZGVlZCBleHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NTguMTU5NzI5NTI4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQyOTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xMzU4OT12b2lkIGt2bV9hcmNoX21lbXNsb3RzX3VwZGF0ZWQoc3RydWN0IGt2bSAqa3ZtLCB1NjQgZ2VuKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjA0LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzYwNTppbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDYtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODo1OC4yMDcxNjU4OTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc4MDU3NDgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIG9uIEtWTSBtZW1vcnkgbWFuYWdlbWVudC4gVGhlIGtleSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgc2hpZnQgZnJvbSBgX192Y2FsbG9jYC9gdmZyZWVgIHRvIGBrdmNhbGxvY2AvYGt2ZnJlZWAuIFRoZSBjb2RlIGlzbid0IGV4cG9ydGluZyB0aGVzZSBmdW5jdGlvbnMsIGJ1dCB0aGV5J3JlIG5vbi1zdGF0aWMsIHNvIHRoZXknbGwgaGF2ZSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAgYW5kIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIEkganVzdCBjaGVja2VkIGFuZCB5ZXMsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAgaXMgaW5kZWVkIHN0YXRpYywgc28gaXQncyBub3QgYSBwcmltYXJ5IGZvY3VzLlxuXG5UaGVyZWZvcmUsIG15IGF0dGVudGlvbiBpcyBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYWZ0ZXIgdGhpcyBjaGFuZ2UuIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYEtWTWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgb25lIGFmZmVjdGVkLlxuXG5UaGUgcmVhc29uaW5nIGJlaGluZCB0aGUgcGF0Y2ggaXMgY2xlYXI6IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgYWxsb2NhdGlvbi4gSXQgc3dpdGNoZXMgZnJvbSBhIG1vcmUgZ2VuZXJpYyBhbGxvY2F0aW9uIGFwcHJvYWNoIHRvIG9uZSBzcGVjaWZpYyB0byB0aGUga2VybmVsLiBUaGlzIHJhaXNlcyB0aGUgcG9zc2liaWxpdHkgb2YgaW50cm9kdWNpbmcgbWVtb3J5IGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIGNoYW5nZXMgaW4gaG93IGFsbG9jYXRpb25zIGJlaGF2ZSwgbGlrZSB0aGUgdm1hbGxvYyBmYWxsYmFjay4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCdzIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCBzbyBpdCdzIGRpcmVjdGx5IGltcGFjdGluZyB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIEtWTS4gVGhhdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGNhdGNoIGVkZ2UgY2FzZXMuXG5cbk5vdywgYSBzbWFsbCBkZXRhaWwgSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQ6IGlzIGBrdmNhbGxvY2AgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBPa2F5LCBhIHF1aWNrIGNoZWNrIHJldmVhbHMgaXQncyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gSXQgYWN0dWFsbHkgY2FsbHMgYGt2bWFsbG9jX2FycmF5YC4gQmVjYXVzZSBpdCBpcyBzdGF0aWMgaW5saW5lLCBpdCB3b24ndCBiZSBhIHN5bWJvbCBpdHNlbGYuIEJ1dCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCBhcmUgc3RhdGljIChga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGluZyB0aG9zZSwgYW5kIHRodXMgaW5kaXJlY3RseSBpbnZvbHZlZCwgYXJlIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGFuZCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4gVGltZSB0byByZS1leGFtaW5lIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzczMCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOTowNC45ODc3NDM0OTVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Mjg2MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTEzNDc0PXN0YXRpYyB2b2lkIG1lbXNsb3Rfcm1hcF9mcmVlKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDg0OnZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzNzY1PXZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg1LVxcdGlmIChjaGFuZ2UgPT0gS1ZNX01SX01PVkUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2OlxcdFxcdGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChrdm0sIG9sZCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzk6MDUuMDM0MDM2MzU0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjA3MjU2NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBLVk0gY29kZSBhbmQgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbWVtb3J5IGFsbG9jYXRpb24gY2hhbmdlcy4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAgaXMsIGluIGZhY3QsIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBzZW5zZSBvZiB0aGUgc2NvcGUuXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IGNhbGxlcnMgb2YgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0IGZ1bmN0aW9uJ3MgY2FsbGVkIGJ5IHRoZSBzdGF0aWMgYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IHRoZSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAuICBga3ZtX3NldF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3NldF9tZW1vcnlfcmVnaW9uYCwgYnV0IHRoYXQgaXMgYWxzbyBjYWxsZWQgYnkgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiBUaGlzIG1lYW5zIHRoZSBsYXR0ZXIgaXMgb3VyIHBvaW50IG9mIGZvY3VzIGZvciB0aGlzIHBhdGguXG5cblRoZW4gSSBjaGVja2VkIG91dCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBjYWxsZXJzLiBUaGF0IGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9mcmVlX21lbXNsb3RgLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAgYW5kIGBrdm1fZGVzdHJveV92bWAuIGBrdm1fZGVzdHJveV92bWAgaXMgdGhlbiBjYWxsZWQgYnkgYGt2bV9wdXRfa3ZtYCwgd2hpY2ggaXMgKm5vbiotc3RhdGljLiBTbywgYGt2bV9wdXRfa3ZtYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLlxuXG5MZXQncyBsaXN0IHRoZSBzeW1ib2xzIGZvciBmb2N1cywgd2hpY2ggYXJlOlxuYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmBcbmBrdm1fYXJjaF9mcmVlX21lbXNsb3RgXG5ga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gXG5ga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YFxuYGt2bV9wdXRfa3ZtYFxuXG5XYWl0LCBga3ZtX3B1dF9rdm1gIGlzIHZlcnkgZ2VuZXJpYywgaXQncyBjYWxsZWQgaW4gbWFueSBwbGFjZXMuXG5cbklzIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGA/IE5vLCBsZXQncyBrZWVwIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiAgU28sIHRoYXQgc2VlbXMgc29saWQuXG5cbkknbSBzZXR0bGluZyBvbjpcbmBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gXG5ga3ZtX2FyY2hfZnJlZV9tZW1zbG90YFxuYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYFxuYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGBcblxuVGhpcyBsb29rcyBnb29kLCBzbyBsZXQncyB3cml0ZSB1cCB0aGUgcmF0aW9uYWxlLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYHZmcmVlYCB0byBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBpbiB0aGUgbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gVGhpcyBtZWFucyBhIHNoaWZ0IGluIGFsbG9jYXRpb24gYmVoYXZpb3IgdG8gcHJlZmVycmluZyBrbWFsbG9jICh3aXRoIHZtYWxsb2MgZmFsbGJhY2spLiAgVGhpcyBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgdGhlcmUgYXJlIGJ1Z3MuIFRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYCBhbmQgb3RoZXIgS1ZNIGlvY3Rscy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gcmVjb21tZW5kIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgYWxsb2NhdGlvbiBsb2dpYyBoYW5kbGVzIGVkZ2UgY2FzZXMgYW5kIGxhcmdlIGFsbG9jYXRpb25zIHByb3Blcmx5LiBUaGUgYEtWTWAgY29uZmlnIGlzLCBvZiBjb3Vyc2UsIGEgcHJlLXJlcXVpc2l0ZS5cblxuTm93IEknbGwgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTQsIk91dHB1dFRva2VucyI6MjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM5OjE3LjY0MTI5NjczOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMDQzNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fYXJjaF9mcmVlX21lbXNsb3RcIixcbiAgICBcImt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToxNy43MjQzNTExMTZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTQzNTI2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToxNy43MjUwNTYxMjZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzUxMzY0MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY0OWNlZmJiNDUyNTMyMWVhMjRiNjE1OWU3ZjBlNTQ1MGNjNDE5ODRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDozNzoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTM0ODgsNyArMTM0ODgsNyBAQCB2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG4gXHRtZW1zbG90X3JtYXBfZnJlZShzbG90KTtcbiBcbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjIEtWTV9OUl9QQUdFX1NJWkVTOyArK2kpIHtcbi1cdFx0dmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbitcdFx0a3ZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4gXHRcdHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7XG4gXHR9XG4gXG5AQCAtMTM1NDQsNyArMTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcbiBcdFx0bHBhZ2VzID0gX19rdm1fbW11X3Nsb3RfbHBhZ2VzKHNsb3QsIG5wYWdlcywgbGV2ZWwpO1xuIFxuLVx0XHRsaW5mbyA9IF9fdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbGluZm8pXG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC0xMzU4MCw3ICsxMzU4MCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgKytpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4rXHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFx0cmV0dXJuIC1FTk9NRU07XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTAuLjUyYWYxZWJkZDE0YzIgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5AQCAtOTI3LDcgKzkyNyw3IEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIFx0aWYgKCFtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcClcbiBcdFx0cmV0dXJuO1xuIFxuLVx0dmZyZWUobWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApO1xuK1x0a3ZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbiBcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcbiB9XG4gXG5AQCAtMTQyMiw3ICsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7XG4gXG4tXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IF9fdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0ga3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIW1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM5OjE3LjcyNTA1NzU1NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTEzNjE4NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIE5lZWRzIEFzc2Vzc21lbnQgZm9yIEtWTSBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcDogYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBhbmQgYHZmcmVlYCB0byBga3ZmcmVlYCBpbiBhIGNvdXBsZSBvZiBLVk0gZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgc2hvdWxkIGJlIHByZXR0eSBiZW5pZ24gZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLiBgX192Y2FsbG9jYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbGxvY2F0ZXMgbWVtb3J5IHdpdGggYHZtYWxsb2NgIGFuZCBpbXBvcnRhbnRseSwgKnplcm9lcyogaXQuIFRoZSByZXBsYWNlbWVudCwgYGt2Y2FsbG9jYCwgaW50cm9kdWNlcyBhIGZhbGxiYWNrIHRvIGBrbWFsbG9jYCAodmlhIGBrdm1hbGxvY19hcnJheWAgd2l0aCBgX19HRlBfWkVST2ApLCB3aGljaCBjb3VsZCBiZSBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsZXIgYWxsb2NhdGlvbnMuIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgKmt2Y2FsbG9jKiAqYWxzbyogemVyby1pbml0aWFsaXplcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhpcyBpcyB0aGUga2V5LlxuXG5TaW5jZSB0aGUgbWVtb3J5IGlzIGV4cGxpY2l0bHkgemVyb2VkIGluICpib3RoKiB0aGUgb2xkIGFuZCB0aGUgbmV3IHZlcnNpb25zLCB3ZSdyZSBub3QgaW50cm9kdWNpbmcgYW55IHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBkYXRhLCB3aGljaCBpcyB3aGF0IEtNU0FOIHdvdWxkIGJlIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCBpbiB0aGlzIGNvbnRleHQuIEkgY29uc2lkZXJlZCB0aGF0IGBfX3ZjYWxsb2NgIG1pZ2h0IGJlIGEgY3VzdG9tIGZ1bmN0aW9uLCBidXQgSSBjaGVja2VkIHRoZSBrZXJuZWwgY29kZSBhbmQgY29uZmlybWVkIGt2Y2FsbG9jIHplcm8taW5pdHMgdGhlIG1lbW9yeS5cblxuU28sIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEdvaW5nIHRvIGRvdWJsZSBjaGVjayBrdmNhbGxvYy4gWXVwLCBga3ZjYWxsb2Mobiwgc2l6ZSwgZmxhZ3MpYCBpcyBqdXN0IGEgd3JhcHBlciwgZXF1aXZhbGVudCB0byBga3ZtYWxsb2NfYXJyYXkobiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKWAuIEFic29sdXRlbHkgY29ycmVjdCwgaXQgemVyby1pbml0aWFsaXplcy4gVGhlIG9sZCBjb2RlIHVzZWQgYF9fdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpYCBhbmQgYF9fdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKWAuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLCB3aGljaCBhcmUgc3RpbGwgcG9zc2libGUsIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgSSdtIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnkgKGp1c3QgbGlrZSBgX192Y2FsbG9jYCBkaWQpLCBzbyB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NCwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToyNS4yMzg2Nzk3MDRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBfX3ZjYWxsb2NgIGFuZCBgdmZyZWVgIHdpdGggYGt2Y2FsbG9jYCBhbmQgYGt2ZnJlZWAgZm9yIGFsbG9jYXRpbmcgYW5kIGZyZWVpbmcgS1ZNIG1lbW9yeSBzbG90IG1ldGFkYXRhIGFuZCBkaXJ0eSBiaXRtYXBzLiBga3ZjYWxsb2NgIGFsbG9jYXRlcyB6ZXJvZWQgbWVtb3J5LCBlbnN1cmluZyB0aGF0IHRoZSBhbGxvY2F0ZWQgYnVmZmVycyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQuIFNpbmNlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGVzZSBjaGFuZ2VzLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyAoc3VjaCBhcyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIHVzZS1hZnRlci1mcmVlKSByZWxhdGVkIHRvIHRoZXNlIGFsbG9jYXRpb25zIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 14:35:22 +0000 UTC FinishedAt: 2026-08-15 14:39:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "baad156b-3602-4c79-9249-316a96d2c0b0" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_prepare_memory_region", "kvm_arch_free_memslot", "kvm_arch_commit_memory_region", "kvm_set_internal_memslot" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDE0OjM3OjI2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTM0ODgsNyAmIzQzOzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHtcbi1cdFx0dmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiYjNDM7XHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTEzNTQ0LDcgJiM0MzsxMzU0NCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuIFxuIFx0XHRscGFnZXMgPSBfX2t2bV9tbXVfc2xvdF9scGFnZXMoc2xvdCwgbnBhZ2VzLCBsZXZlbCk7XG4gXG4tXHRcdGxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4mIzQzO1x0XHRsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbGluZm8pXG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC0xMzU4MCw3ICYjNDM7MTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xuIFxuIFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICYjNDM7JiM0MztpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4mIzQzO1x0XHRrdmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiBcdFx0c2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcbiBcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwLi41MmFmMWViZGQxNGMyIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTkyNyw3ICYjNDM7OTI3LDcgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG4gXHRpZiAoIW1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKVxuIFx0XHRyZXR1cm47XG4gXG4tXHR2ZnJlZShtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCk7XG4mIzQzO1x0a3ZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbiBcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcbiB9XG4gXG5AQCAtMTQyMiw3ICYjNDM7MTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpO1xuIFxuLVx0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4mIzQzO1x0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBrdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghbWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgICAmIzM0O2t2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDE0OjM3OjI2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IGFmY2FjMTA0Mjk0N2EuLjc3NTY3YWEyMGQ4MzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ODYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTEzNDg4LDcgJiM0MzsxMzQ4OCw3IEBAIHZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCkKIAltZW1zbG90X3JtYXBfZnJlZShzbG90KTsKIAogCWZvciAoaSA9IDE7IGkgJmx0OyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHsKLQkJdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiYjNDM7CQlrdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiAJCXNsb3QtJmd0O2FyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMOwogCX0KIApAQCAtMTM1NDQsNyAmIzQzOzEzNTQ0LDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sCiAKIAkJbHBhZ2VzID0gX19rdm1fbW11X3Nsb3RfbHBhZ2VzKHNsb3QsIG5wYWdlcywgbGV2ZWwpOwogCi0JCWxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7CiYjNDM7CQlsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJCWlmICghbGluZm8pCiAJCQlnb3RvIG91dF9mcmVlOwogCkBAIC0xMzU4MCw3ICYjNDM7MTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSwKIAltZW1zbG90X3JtYXBfZnJlZShzbG90KTsKIAogCWZvciAoaSA9IDE7IGkgJmx0OyBLVk1fTlJfUEFHRV9TSVpFUzsgJiM0MzsmIzQzO2kpIHsKLQkJdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiYjNDM7CQlrdmZyZWUoc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7CiAJCXNsb3QtJmd0O2FyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMOwogCX0KIAlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IGU0NGMyMGMwNDk2MTAuLjUyYWYxZWJkZDE0YzIgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0va3ZtX21haW4uYwpAQCAtOTI3LDcgJiM0Mzs5MjcsNyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCkKIAlpZiAoIW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCkKIAkJcmV0dXJuOwogCi0JdmZyZWUobWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKTsKJiM0MzsJa3ZmcmVlKG1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCk7CiAJbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwID0gTlVMTDsKIH0KIApAQCAtMTQyMiw3ICYjNDM7MTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KQogewogCXVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpOwogCi0JbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwID0gX192Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwomIzQzOwltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBrdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBzd2FwcGluZyBvdXQgYHZmcmVlYCBmb3IgYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIGZvciBga3ZjYWxsb2NgIHdpdGhpbiB0aGUgS1ZNIG1lbW9yeSBzbG90IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgcGF0aHMuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgbWVtb3J5IGFsbG9jYXRpb24gQVBJIGNoYW5nZSwgd2hpY2ggaXMgaW1wb3J0YW50LiBCdXQgbGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuCgpUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gc3RyYXRlZ3k6IGBfX3ZjYWxsb2NgIHJlbGllcyBvbiBgdm1hbGxvY2AsIHdoZXJlYXMgYGt2Y2FsbG9jYCB1c2VzIGBrbWFsbG9jYCBpZiBwb3NzaWJsZSwgZmFsbGluZyBiYWNrIHRvIGB2bWFsbG9jYCBpZiBuZWVkZWQuIFRoaXMgY291bGQgaGF2ZSBwZXJmb3JtYW5jZSByYW1pZmljYXRpb25zLCBvciBhbHRlciBob3cgbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IgdGhlc2UgY3JpdGljYWwgS1ZNIG9wZXJhdGlvbnMuIEdpdmVuIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCwgYW5kIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYCwgYWxsIG9mIHdoaWNoIGFyZSByZWFjaGVkIHZpYSBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYCwgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhcmUgaW1wb3J0YW50LgoKVGhlIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gV2hpbGUgaXQmIzM5O3MgYSBzZWVtaW5nbHkgc2ltcGxlIEFQSSByZXBsYWNlbWVudCwgdGhlIHNoaWZ0IGZyb20gdm1hbGxvYyB0byBrdm1hbGxvYyBpcyBzaWduaWZpY2FudCBlbm91Z2ggdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgZWZmb3J0IHRvIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbGVha3MgaW50cm9kdWNlZC4gU28sIGZ1enppbmcgaXMgcHJvYmFibHkgYSBnb29kIGlkZWEuCgpGaXJzdCwgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIExvb2tzIGxpa2UgYENPTkZJR19LVk1gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZy4KCk9rYXksIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhZ2FpbiB0byByZWZyZXNoIG15IG1lbW9yeTogYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBBIGtleSB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIG5lZWQgdG8gYmUgcGFpcmVkLCBzbyBpdCYjMzk7cyBlc3NlbnRpYWwgdGhpcyBwYXRjaCBtYWludGFpbnMgdGhhdCBjb25zaXN0ZW5jeS4KClJpZ2h0LCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCwgYW5kIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYCBhcmUgYWxsICpzdGF0aWMqLiBUaGF0IG1lYW5zIHRoZWlyIHNjb3BlIGlzIGxpbWl0ZWQgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgZmlsZXMuIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgIGlzICpub3QqIHN0YXRpYywgc28gaXQmIzM5O3MgdGhlIG1vcmUgbGlrZWx5IGNhbmRpZGF0ZSB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuCgpOb3csIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBvZiB0aGVzZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgdGhlIHN0YXRpYyBvbmVzLiBMZXQmIzM5O3Mgc2VlLi4uIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAgaXMgY2FsbGVkIGJ5IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLiBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAgaXMgY2FsbGVkIGJ5IGBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYW5kIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgIGlzIGNhbGxlZCBieSBga3ZtX2ZyZWVfbWVtc2xvdGAuIExldCYjMzk7cyBncmVwIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xMzQ3ND1zdGF0aWMgdm9pZCBtZW1zbG90X3JtYXBfZnJlZShzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ4NDp2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzc2NT12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXHRpZiAoY2hhbmdlID09IEtWTV9NUl9NT1ZFKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2Olx0XHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBvbGQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIEtWTSBrZXJuZWwgbW9kdWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gYGdyZXBgIGlzIHRoZSBvYnZpb3VzIHRvb2wgaGVyZTsgSSYjMzk7bGwgdXNlIGl0IHRvIHNlYXJjaCBmb3IgaW5zdGFuY2VzIG9mIHRoYXQgZnVuY3Rpb24uIEkgd2FudCB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyAqY2FsbGVkKiwgd2hhdCBhcmd1bWVudHMgaXQgdGFrZXMsIGFuZCBob3cgdGhlIHJldHVybmVkIGRhdGEgaXMgaGFuZGxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgYWJvdXQgaXRzIHB1cnBvc2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIGhvdyBtZW1vcnkgc2xvdHMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEtWTSBtZW1vcnkgbW9kZWwuIEJhc2ljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJiMzOTtzIGxpZmUgY3ljbGUgYW5kIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBsYXJnZXIgS1ZNIGFyY2hpdGVjdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGBncmVwYCBkaWdzIHVwLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGludGVyZXN0aW5nIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTEzNDk4PWludCBtZW1zbG90X3JtYXBfYWxsb2Moc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgdW5zaWduZWQgbG9uZyBucGFnZXMpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTE5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNTIwOnN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTIxLVx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTM2MDU9aW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjIzLVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNjI0Olx0XHRyZXR1cm4ga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoa3ZtLCBuZXcpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjI1LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQWxsb2NhdGlvbiBvZiBEaXJ0eSBCaXRtYXBzIGluIEtWTSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBrZXJuZWwgbW9kdWxlIGhhbmRsZXMgZGlydHkgYml0bWFwIGFsbG9jYXRpb24uIE15IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb24sIHNvIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0JiMzOTtsbCBiZSBteSBwcmltYXJ5IGVudHJ5IHBvaW50LiBJIGV4cGVjdCB0byBmaW5kIHRoZSBpbml0aWFsIGFsbG9jYXRpb24gY2FsbHMsIGJ1dCBhbHNvIHBvdGVudGlhbGx5IHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgZnJlZSBvciBtYW5hZ2UgdGhlIGJpdG1hcHMuIEkmIzM5O2xsIGJlIGludGVyZXN0ZWQgaW4gd2hlcmUgYW5kIHdoZW4gdGhlc2UgYml0bWFwcyBhcmUgYWxsb2NhdGVkLCBob3cgbXVjaCBtZW1vcnkgdGhleSBjb25zdW1lLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCB1c2FnZSBwYXR0ZXJucyBsb29rIGxpa2UuIFRoZSBnb2FsIGlzIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBvdGVudGlhbCBib3R0bGVuZWNrcywgYW5kIGFueSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBgZ3JlcGAgdHVybnMgdXAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYWxsb2NfZGlydHlfYml0bWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE0MTU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV91bmxvY2tfYWxsX3ZjcHVzKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjAtICovXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE0MjE6c3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjIte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY3Ny1cdFx0ZWxzZSBpZiAoa3ZtX3VzZV9kaXJ0eV9iaXRtYXAoa3ZtKSkge1xudmlydC9rdm0va3ZtX21haW4uYzoxNjc4Olx0XHRcdHIgPSBrdm1fYWxsb2NfZGlydHlfYml0bWFwKG5ldyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NzktXHRcdFx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyMgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gYW5hbHl6ZSB0aGUgZnVuY3Rpb24gYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxldmVyYWdlIGBncmVwYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHVzYWdlIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gY29kZWJhc2UuIEkgd2FudCB0byBzZWUgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLCBob3cgaXQmIzM5O3MgY2FsbGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gaXQuIFRoaXMgaW5pdGlhbCBzZWFyY2ggc2hvdWxkIGhlbHAgbWUgZm9ybSBhIHByZWxpbWluYXJ5IHVuZGVyc3RhbmRpbmcgb2YgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSB2aXJ0dWFsIG1hY2hpbmUgbGlmZWN5Y2xlIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcml0aWNhbCBpbiByZWxlYXNpbmcgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdHJhY2tpbmcgZGlydHkgcGFnZXMsIHNvIEkgbmVlZCB0byBhc3Nlc3MgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiBpdHMgdXNhZ2UgYXMgd2VsbC4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIHNob3VsZCBiZSB1c2VkIGR1cmluZyBWTSB0ZWFyZG93biBvciB3aGVuIHJlc2V0dGluZyBwYWdlIHRyYWNraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9OTIwPXN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3BtX25vdGlmaWVyKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTI1OnN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxudmlydC9rdm0va3ZtX21haW4uYy05MjYte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9OTM1PXN0YXRpYyB2b2lkIGt2bV9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtOTM5LVxudmlydC9rdm0va3ZtX21haW4uYzo5NDA6XHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2NTg9c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2OTAtXHRpZiAociBcdTAwMjZcdTAwMjYgbmV3IFx1MDAyNlx1MDAyNiBuZXctXHUwMDNlZGlydHlfYml0bWFwIFx1MDAyNlx1MDAyNiAoIW9sZCB8fCAhb2xkLVx1MDAzZWRpcnR5X2JpdG1hcCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2OTE6XHRcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChuZXcpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNjkyLVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY5Nj1zdGF0aWMgdm9pZCBrdm1fY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTc0MC1cdFx0aWYgKG9sZC1cdTAwM2VkaXJ0eV9iaXRtYXAgXHUwMDI2XHUwMDI2ICFuZXctXHUwMDNlZGlydHlfYml0bWFwKVxudmlydC9rdm0va3ZtX21haW4uYzoxNzQxOlx0XHRcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChvbGQpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNzQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEtWTSBtZW1vcnkgbWFuYWdlbWVudC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBiZSBsb29raW5nIGNsb3NlbHkgYXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBhbmQgYGt2bV9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIFdhaXQgYSBtaW51dGUsIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZT8gVGhlIG90aGVyIHRocmVlLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAgYW5kIGBrdm1fZnJlZV9tZW1zbG90YCBhcmUgZGVjbGFyZWQgc3RhdGljLCBzbyBJIGNhbiBpZ25vcmUgdGhvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmM9MTYwMD1zdGF0aWMgdm9pZCBrdm1fc3dhcF9hY3RpdmVfbWVtc2xvdHMoc3RydWN0IGt2bSAqa3ZtLCBpbnQgYXNfaWQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNjU3LVxudmlydC9rdm0va3ZtX21haW4uYzoxNjU4OnN0YXRpYyBpbnQga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NTktXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4ODY9c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTkzMS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTkzMjpcdHIgPSBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKGt2bSwgb2xkLCBuZXcsIGNoYW5nZSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE5MzMtXHRpZiAocikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9uIG9mIGEgU3RhdGljIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBrdm1fc2V0X21lbXNsb3RgIGlzIGRlZmluZWQgYXMgc3RhdGljLiBSaWdodCBhd2F5LCB0aGF0IHRyaWdnZXJzIHNvbWUgc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgaW4gbXkgbWluZC4gVGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGtleXdvcmQsIGBzdGF0aWNgLCBhcmUgcHJldHR5IGNsZWFyLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIGJlIGV4cGxpY2l0IGFib3V0IHRoZW0sIGFzIGl0IGhhcyByYW1pZmljYXRpb25zIG9uIGhvdyB0aGUgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYW5kIHdoYXQgdGhlIGNvbXBpbGVyIGNhbiBkbyB3aXRoIGl0LgoKRmlyc3QsIEkgcmVjYWxsIHRoYXQgYmVpbmcgc3RhdGljIG1lYW5zIGl0cyB2aXNpYmlsaXR5IGlzICpsaW1pdGVkKiB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCYjMzk7cyBkZWZpbmVkIGluLiBJbiBvdGhlciB3b3JkcywgSSBjYW4mIzM5O3QgZGlyZWN0bHkgY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gY29kZSBpbiAqb3RoZXIqIHNvdXJjZSBmaWxlcyB3aXRoaW4gdGhlIEtWTSBwcm9qZWN0IOKAkyBpdCYjMzk7cyBsb2NhbC4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGFzcGVjdC4KClNlY29uZGx5LCBhbmQgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCB0aGUgY29tcGlsZXIgd2lsbCBoYXZlIGdyZWF0ZXIgZmxleGliaWxpdHkgaW4gb3B0aW1pemF0aW9uLiBCZWNhdXNlIHRoZSBjb21waWxlciAqa25vd3MqIHRoYXQgdGhlIGZ1bmN0aW9uIGNhbiYjMzk7dCBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIGl0cyBzb3VyY2UgZmlsZSwgaXQmIzM5O3MgYWJsZSB0byBpbmxpbmUgaXQgbW9yZSBhZ2dyZXNzaXZlbHkgaWYgdGhlIG9wdGltaXphdGlvbiBzZXR0aW5ncyBhcmUgaGlnaCBlbm91Z2gsIHdoaWNoIHdvdWxkIGF2b2lkIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQuIEl0IGFsc28gcmVkdWNlcyBsaW5rYWdlIG92ZXJoZWFkLCByZWR1Y2luZyBiaW5hcnkgc2l6ZS4KClNvLCB3aGVuIEkgc2VlIGBzdGF0aWNgLCBJIGltbWVkaWF0ZWx5IGJlZ2luIHRvIGNvbnNpZGVyOiB3aGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIGxpbWl0aW5nIGl0cyB2aXNpYmlsaXR5PyBJcyBpdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCAqc2hvdWxkbiYjMzk7dCogYmUgZXhwb3NlZCBleHRlcm5hbGx5PyBPciBpcyBpdCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbj8gT3IgcGVyaGFwcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28/IEFuZCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGFmZmVjdHMgbWFpbnRhaW5hYmlsaXR5IGFuZCBwb3RlbnRpYWwgZnV0dXJlIHJlZmFjdG9yaW5nLiBJJiMzOTtkIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIEtWTSBjb2RlYmFzZSB0byBkZXRlcm1pbmUgdGhlIG1vdGl2YXRpb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE2MDA9c3RhdGljIHZvaWQga3ZtX3N3YXBfYWN0aXZlX21lbXNsb3RzKHN0cnVjdCBrdm0gKmt2bSwgaW50IGFzX2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTYyNy1cdC8qXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2Mjg6XHQgKiBBY3F1aXJlZCBpbiBrdm1fc2V0X21lbXNsb3QuIE11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHN5bmNocm9uaXplXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2MjktXHQgKiBTUkNVIGJlbG93IGluIG9yZGVyIHRvIGF2b2lkIGRlYWRsb2NrIHdpdGggYW5vdGhlciB0aHJlYWRcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4NzM9c3RhdGljIHZvaWQga3ZtX3VwZGF0ZV9mbGFnc19tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODUtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE4ODY6c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0xODg3LVx0XHRcdCAgIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm9sZCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA0OC1cdCAqIE5vdGUsIHRoZSBvbGQgbWVtc2xvdCAoYW5kIHRoZSBwb2ludGVyIGl0c2VsZiEpIG1heSBiZSBpbnZhbGlkYXRlZFxudmlydC9rdm0va3ZtX21haW4uYzoyMDQ5Olx0ICogYW5kL29yIGRlc3Ryb3llZCBieSBrdm1fc2V0X21lbXNsb3QoKS5cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA1MC1cdCAqL1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA1OS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjA2MDpcdFx0cmV0dXJuIGt2bV9zZXRfbWVtc2xvdChrdm0sIG9sZCwgTlVMTCwgS1ZNX01SX0RFTEVURSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNjEtXHR9XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTEyLVxudmlydC9rdm0va3ZtX21haW4uYzoyMTEzOlx0ciA9IGt2bV9zZXRfbWVtc2xvdChrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xudmlydC9rdm0va3ZtX21haW4uYy0yMTE0LVx0aWYgKHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqU3RhdGljIEZ1bmN0aW9uIENoZWNrKioKCk9rYXksIHNvIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLi4uIGlzIGl0IGRlY2xhcmVkIGFzIGBzdGF0aWNgPyBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0LiBUaGUgaW1wbGljYXRpb25zIGFyZSBzaWduaWZpY2FudCwgYXMgc3RhdGljIGZ1bmN0aW9ucyBoYXZlIGxpbWl0ZWQgc2NvcGUsIGFuZCB0aGF0IGNvbnRleHQgaXMgcGFyYW1vdW50IHdoZW4gcmVhc29uaW5nIGFib3V0IHRoZSBiZWhhdmlvciBvZiBLVk0uIEl0IGRpY3RhdGVzIGhvdyBhbmQgd2hlcmUgdGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQsIHdoaWNoLCBpbiB0dXJuLCBpbXBhY3RzIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgc3RhdGljIG5hdHVyZSBiZWZvcmUgSSBwcm9jZWVkIHdpdGggYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgZGVidWdnaW5nIHN0ZXBzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5ODE9c3RhdGljIGJvb2wga3ZtX2NoZWNrX21lbXNsb3Rfb3ZlcmxhcChzdHJ1Y3Qga3ZtX21lbXNsb3RzICpzbG90cywgaW50IGlkLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTk5NDpzdGF0aWMgaW50IGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE5OTUtXHRcdFx0XHQgY29uc3Qgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMjc9aW50IGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTM1LVxudmlydC9rdm0va3ZtX21haW4uYzoyMTM2Olx0cmV0dXJuIGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIG1lbSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMzctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjE0MD1zdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTQ2LVx0Z3VhcmQobXV0ZXgpKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKTtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0NzpcdHJldHVybiBrdm1fc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy0yMTQ4LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA5NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgbWVtb3J5IHJlZ2lvbiBtYW5hZ2VtZW50LiBUaGUgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAgZnVuY3Rpb24gaXMgdGhlIGlvY3RsIGhhbmRsZXIsIHdoaWNoIGlzIGltcG9ydGFudC4gRnJvbSB0aGVyZSBJIHNlZSBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBleHBvcnRlZCwgc28gdGhhdCBsb29rcyBsaWtlIGl0IGNvdWxkIGJlIGEga2V5IHBvaW50IHRvby4gVGhhdCB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM6IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLgoKSG1tLCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgZWFjaC4gQWxyaWdodCwgbG9va3MgbGlrZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBhbHJlYWR5IG5vbi1zdGF0aWMuIFRoZSBpb2N0bCBoYW5kbGVyIGl0c2VsZiwgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAsICppcyogc3RhdGljLCBidXQgdGhhdCYjMzk7cyB0eXBpY2FsIGZvciBpb2N0bCBoYW5kbGVycy4gSXQmIzM5O3MgdXN1YWxseSBnb29kIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgbmFtaW5nIGNvbmZsaWN0cyBpbiB0aGUgaW9jdGwgaXRzZWxmLiBXYWl0LCBga3ZtX3ZtX2lvY3RsYCBpcyBub24tc3RhdGljIQoKT2theSwgdGltZSB0byBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBjaGVjayBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYCB3aXRoaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMzg9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMzktXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxNDA6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yMTQxLVx0XHRcdFx0XHQgIHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01MTQ4PXN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMDI6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcdTAwMjZtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MjAzLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk2MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gTWVtb3J5IFJlZ2lvbiBGb2N1cyBTeW1ib2wgU2VsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIGhhbmRsZWQgaW4gS1ZNIGFuZCBuZWVkIHRvIHBpY2sgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGBrdm1fdm1faW9jdGxgIHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gQnV0LCBoYW5nIG9uLCBpdCYjMzk7cyBhIHZlcnkgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgYW5kIHRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0byBhdm9pZCB0aG9zZSB0byBwcmV2ZW50IGJpYXNlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoZXkmIzM5O3JlIG1vcmUgaW50ZXJlc3RlZCBpbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgcmF0aGVyIHRoYW4gaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuCgpTbywgSSB0aG91Z2h0IGFib3V0IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICptaWdodCogYmUgaW5saW5lZC4gSSBuZWVkIHRvIGJlIGNhcmVmdWwuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgbGVzcyByaXNreSBhcHByb2FjaC4KCkkgc3RhcnRlZCBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9uczogSSB0aG91Z2h0IG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLCBidXQgaXQgaXMgYW4gaW50ZXJuYWwgS1ZNIGZ1bmN0aW9uLCBzbyB0aGF0IHdvbiYjMzk7dCB3b3JrLiBIb3dldmVyLCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGxvb2sgcHJvbWlzaW5nLiBUaGV5IGFyZSBub24tc3RhdGljIGFuZCBzZWVtIGxpa2UgdGhleSBkbyB0aGUgcmlnaHQgdGhpbmcuCgpUaGVuIEkgY2hlY2tlZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAuIFRoYXQmIzM5O3MgY2FsbGVkIGZyb20gYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tZW1zbG90YCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIHRoZSBzdGF0aWMgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIEkgY2FuIHVzZSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBzaW5jZSB0aGF0IGlzIGEgbm9uLXN0YXRpYyBBUEkuIEkmIzM5O20gc3RhcnRpbmcgdG8gZ2V0IGEgZ29vZCBwaWN0dXJlIG9mIHRoZSBjYWxsIHN0YWNrIG5vdy4KCkFsc28sIEkgY2hlY2tlZCBvdXQgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIFRoaXMgaXMgY2FsbGVkIGZyb20gYGt2bV9mcmVlX21lbXNsb3RgIGFuZCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSBga3ZtX2Rlc3Ryb3lfdm1gIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9kZXN0cm95X3ZtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTk2Nj1zdGF0aWMgdW1vZGVfdCBrdm1fc3RhdHNfZGVidWdmc19tb2RlKGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfZGVzYyAqZGVzYylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk3OC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTc5OnN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoc3RydWN0IGt2bSAqa3ZtKVxudmlydC9rdm0va3ZtX21haW4uYy05ODAte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9OTk3PXN0YXRpYyBpbnQga3ZtX2NyZWF0ZV92bV9kZWJ1Z2ZzKHN0cnVjdCBrdm0gKmt2bSwgY29uc3QgY2hhciAqZmRuYW1lKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA2NC1vdXRfZXJyOlxudmlydC9rdm0va3ZtX21haW4uYzoxMDY1Olx0a3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy0xMDY2LVx0cmV0dXJuIHJldDtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTEwNzM9dm9pZCBfX3dlYWsga3ZtX2FyY2hfcHJlX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA3OS0gKiBiZSBzZXR1cCBhbHJlYWR5LCBzbyB3ZSBjYW4gY3JlYXRlIGFyY2gtc3BlY2lmaWMgZGVidWdmcyBlbnRyaWVzIHVuZGVyIGl0LlxudmlydC9rdm0va3ZtX21haW4uYzoxMDgwOiAqIENsZWFudXAgc2hvdWxkIGJlIGF1dG9tYXRpYyBkb25lIGluIGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoKSByZWN1cnNpdmVseSwgc29cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA4MS0gKiBhIHBlci1hcmNoIGRlc3Ryb3kgaW50ZXJmYWNlIGlzIG5vdCBuZWVkZWQuXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0xMjMzPXN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RldmljZXMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI1NDpzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEyNTUte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI2MC1cdGt2bV91ZXZlbnRfbm90aWZ5X2NoYW5nZShLVk1fRVZFTlRfREVTVFJPWV9WTSwga3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI2MTpcdGt2bV9kZXN0cm95X3ZtX2RlYnVnZnMoa3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI2Mi1cdG11dGV4X2xvY2soXHUwMDI2a3ZtX2xvY2spO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTMyOD12b2lkIGt2bV9wdXRfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzAtXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNmt2bS1cdTAwM2V1c2Vyc19jb3VudCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEzMzE6XHRcdGt2bV9kZXN0cm95X3ZtKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzItfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NjA5ND1zdGF0aWMgaW50IGt2bV9kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy02MTAyLVx0ICogVGhlIGRlYnVnZnMgZmlsZXMgYXJlIGEgcmVmZXJlbmNlIHRvIHRoZSBrdm0gc3RydWN0IHdoaWNoXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYxMDM6ICAgICAgICAqIGlzIHN0aWxsIHZhbGlkIHdoZW4ga3ZtX2Rlc3Ryb3lfdm0gaXMgY2FsbGVkLiAga3ZtX2dldF9rdm1fc2FmZVxudmlydC9rdm0va3ZtX21haW4uYy02MTA0LSAgICAgICAgKiBhdm9pZHMgdGhlIHJhY2UgYmV0d2VlbiBvcGVuIGFuZCB0aGUgcmVtb3ZhbCBvZiB0aGUgZGVidWdmcyBkaXJlY3RvcnkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTM2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIHRoZSBwcm9ibGVtOgoKKipGb2N1c2luZyBpbiBvbiBLVk0gQ2xlYW51cCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IEtWTSByZXNvdXJjZXMgYXJlIGNsZWFuZWQgdXAuIGBrdm1fZGVzdHJveV92bWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGxpbWl0cyBpdHMgdmlzaWJpbGl0eS4gVGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcHV0X2t2bWAgaXMgKm5vbiotc3RhdGljLiBUaGF0IG1ha2VzIGl0IGEgYmV0dGVyIGNhbmRpZGF0ZSBmb3IgYSBtb3JlIGdsb2JhbCBzeW1ib2wg4oCTIGl0JiMzOTtzIHByb2JhYmx5IGV4cG9ydGVkIGFuZCB1c2VkIG1vcmUgYnJvYWRseSBhY3Jvc3MgdGhlIEtWTSBjb2RlYmFzZS4gVGhlcmVmb3JlLCBga3ZtX3B1dF9rdm1gIGlzIGEgZ29vZCBmb2N1cyBzeW1ib2wgZm9yIGZpZ3VyaW5nIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJJiMzOTtsbCBzdGFydCB0aGVyZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gY2hlY2sgaG93IHRoZSBpbnRlcm5hbCBtZW1vcnkgc2xvdHMgYXJlIGhhbmRsZWQuIExldCYjMzk7cyBzZWUgd2hhdCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBkb2VzLiBUaGF0IG1pZ2h0IHByb3ZpZGUgc29tZSB1c2VmdWwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEyNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEyNzppbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEyOC1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEzODpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIHNvIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzLCBzdXJwcmlzaW5nbHksIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGludHVpdGlvbiBzYXlzIHRoaXMgbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggYmVncyB0aGUgcXVlc3Rpb24gb2Ygd2h5IGl0JiMzOTtzIG5vdCBiZWluZyBsZXZlcmFnZWQgbW9yZSB3aXRoaW4gdGhlIGV4aXN0aW5nIGFyY2hpdGVjdHVyZS4gCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgcHJvYmFibHkgZGl2ZSBpbnRvIHRoZSBjb3VudGVycGFydCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAuIFRoZSBwYWlyaW5nIG9mIHRoZXNlIGZ1bmN0aW9ucyBpcyBsaWtlbHkgdG8gcHJvdmlkZSBpbXBvcnRhbnQgY29udGV4dC4gRG9lcyB0aGUgdXNlLCBvciBub24tdXNlLCBvZiB0aGUgYGludGVybmFsX21lbXNsb3RgIGZ1bmN0aW9uIGhhdmUgcmFtaWZpY2F0aW9ucyBvbiBob3cgdGhlIG1lbW9yeSBzbG90cyBhcmUgdWx0aW1hdGVseSBmcmVlZD8gSSB3YW50IHRvIGxvb2sgZm9yIGNsdWVzIGFib3V0IG93bmVyc2hpcCwgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIGFuZCBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgdGhhdCBtaWdodCBhcmlzZSBmcm9tIGltcHJvcGVyIHVzZSBvciBpbnRlZ3JhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTkzNT1zdGF0aWMgdm9pZCBrdm1fZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6OTQyOlx0a3ZtX2FyY2hfZnJlZV9tZW1zbG90KGt2bSwgc2xvdCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE4NDQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhIGd1ZXN0JiMzOTtzIG1lbW9yeSByZWdpb24sIGJlZm9yZSBLVk0gaGFuZHMgaXQgb2ZmIHRvIHRoZSBNTVUuIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBhcmNoaXRlY3R1cmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gSXMgdGhpcyB4ODYsIEFSTSwgUklTQy1WLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgcmFkaWNhbGx5IGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgaGFyZHdhcmUuCgpNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQmIzM5O3MgdGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXJ0aWN1bGFyIHJlZ2lvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIFJBTSByZWdpb24sIGFuIEkvTyByZWdpb24sIHNvbWV0aGluZyBmb3IgTU1JTywgb3IgcGVyaGFwcyBhIHNwZWNpYWwgbWVtb3J5IHR5cGU/IFRoZSBhbnN3ZXJzIHdpbGwgZGljdGF0ZSB3aGljaCBhcmNoaXRlY3R1cmFsIG1lbW9yeSBtYXAgc2V0dGluZ3MgYXJlIGFwcGxpZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmbGFncyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBhcyB3ZWxsLCB3aGljaCB3aWxsIGdpdmUgbWUgaGludHMgYWJvdXQgdGhlIHJlcXVpcmVkIG1lbW9yeSBhdHRyaWJ1dGVzOiByZWFkL3dyaXRlL2V4ZWN1dGUgcGVybWlzc2lvbnMsIGNhY2hpbmcgc2V0dGluZ3MgKGUuZy4sIHdyaXRlLWJhY2ssIHdyaXRlLXRocm91Z2gsIHVuY2FjaGVkKSwgYW5kIHBvdGVudGlhbGx5IHdoZXRoZXIgdGhpcyBpcyBhIHNwZWNpYWwgbWVtb3J5IHJlZ2lvbiBmb3IgZGV2aWNlcyBvciBwZXJpcGhlcmFscy4KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHdoYXQgbG9ja2luZywgaWYgYW55LCBpcyB1c2VkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBNZW1vcnkgcmVnaW9uIHNldHVwIGlzIGEgY3JpdGljYWwgc2VjdGlvbi4gUmFjZSBjb25kaXRpb25zIGhlcmUgd291bGQgYmUgY2F0YXN0cm9waGljLCBzbyBJIGV4cGVjdCBzb21lIGZvcm0gb2YgcHJvdGVjdGlvbiwgbGlrZWx5IGEgc3BpbmxvY2sgb3IgbXV0ZXgsIG1heWJlIGV2ZW4gYSByZWFkLWNvcHktdXBkYXRlIHNjaGVtZSBpZiBtdWx0aXBsZSB2Q1BVcyBuZWVkIGNvbmN1cnJlbnQgYWNjZXNzLgoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHBhZ2UgdGFibGVzLiBEb2VzIGl0IGRpcmVjdGx5IG1vZGlmeSB0aGVtLCBvciBkb2VzIGl0IGNhbGwgaW50byBvdGhlciBLVk0gaGVscGVycz8gVW5kZXJzdGFuZGluZyB0aGUgbGV2ZWwgb2YgYWJzdHJhY3Rpb24gaGVyZSBpcyBrZXkuIEFyZSB3ZSBkZWFsaW5nIHdpdGggMi1sZXZlbCwgMy1sZXZlbCwgb3IgNC1sZXZlbCBwYWdlIHRhYmxlcz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBuZXN0ZWQgcGFnaW5nPyBBcmUgdGhlcmUgYW55IGFkZHJlc3Mgc3BhY2UgaWRlbnRpZmllciAoQVNJRCkgY29uc2lkZXJhdGlvbnM/CgpGaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaW1wb3J0YW50LiBXaGF0IGNhbiBnbyB3cm9uZyBkdXJpbmcgbWVtb3J5IHJlZ2lvbiBwcmVwYXJhdGlvbj8gSW52YWxpZCBwYXJhbWV0ZXJzLCBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLCBvciBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBhcmUgYWxsIHBvc3NpYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG90ZW50aWFsIGVycm9ycyBhcmUgZGV0ZWN0ZWQgYW5kIGhhbmRsZWQgdG8gZW5zdXJlIHRoZSBWTSByZW1haW5zIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgZG9lc24mIzM5O3QgY3Jhc2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz0xNjU4PXN0YXRpYyBpbnQga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNjg2LVxudmlydC9rdm0va3ZtX21haW4uYzoxNjg3Olx0ciA9IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xudmlydC9rdm0va3ZtX21haW4uYy0xNjg4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIEkgd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIGF0IHRoZSBhcmNoaXRlY3R1cmUgbGV2ZWwuIFdoYXQgc3BlY2lmaWMgdGFza3MgZG9lcyBpdCBoYW5kbGUgd2l0aGluIHRoZSBLVk0gbWVtb3J5IG1hbmFnZW1lbnQgcGlwZWxpbmU/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSBpdHMgcm9sZSBpbiB0aGUgY29tbWl0IHBoYXNlIG9mIG1lbW9yeSByZWdpb25zLCBidXQgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgdGhpbmdzIGxpa2UgVExCIGZsdXNoZXMsIGNhY2hlIGludmFsaWRhdGlvbiwgb3IgZXZlbiBwb3RlbnRpYWxseSBkZWFsaW5nIHdpdGggaGFyZHdhcmUtc3BlY2lmaWMgcGFnZSB0YWJsZSBtYW5pcHVsYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgZ3Vlc3QmIzM5O3MgYXJjaGl0ZWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCBhbmQgYW55IHJlbGV2YW50IGFyY2hpdGVjdHVyZSBtYW51YWxzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCBmaXRzIHRvZ2V0aGVyLiBUaGUgZ29hbCBpcyB0byBkZXZlbG9wIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz0xNjk2PXN0YXRpYyB2b2lkIGt2bV9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xNzE3LVxudmlydC9rdm0va3ZtX21haW4uYzoxNzE4Olx0a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTcxOS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIFNlbGVjdGlvbiBhbmQgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBrZXkgc3ltYm9scyBmb3IgdGhpcyBhbmFseXNpcy4gTGV0JiMzOTtzIHNlZSwgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBndWlkYW5jZSwgSSYjMzk7bSB0aGlua2luZzogYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLCBhbmQgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIGBrdm1fcHV0X2t2bWAsIGJ1dCB0aGF0JiMzOTtzIGEgYml0IHRvbyBnZW5lcmljLCBpc24mIzM5O3QgaXQ/CgpUaGVuIEkgdGhvdWdodCBhYm91dCBga3ZtX3ZtX2lvY3RsYCwgYXMgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gdGhlIFZNIGZ1bmN0aW9uYWxpdHkuIEJ1dCwgaGFuZyBvbi4uLiB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YW50cyB1cyB0byBhdm9pZCB0aG9zZSAmIzM0O2dlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiYjMzQ7IGBrdm1fdm1faW9jdGxgIGlzIG1vcmUgb2YgYW4gaW9jdGwgaGFuZGxlciBhbnl3YXksIG5vdCByZWFsbHkgYSBob3QtcGF0aCBmdW5jdGlvbiBhcyBzdWNoLiBTbywgSSYjMzk7bGwgc3RpY2sgd2l0aCB0aGUgb3JpZ2luYWwgc2V0LiBUaGV5IGFwcGVhciB0byBiZSBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cywgd2hpY2gsIGJ5IGltcGxpY2F0aW9uLCBzZWVtIGZhciBtb3JlIGFwcHJvcHJpYXRlLgoKTm93LCBsZXQmIzM5O3MgbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgY29uZmlnIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSBuZWVkIGBDT05GSUdfS1ZNYCBlbmFibGVkLCBhbmQsIGp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NzA1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbi4gVGhlIGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGBLVk1gIGlzIHRoZSBjb3JlLCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGl0ZW0gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWcgb3B0aW9ucy4gQWgsIHllcywgdGhlcmUmIzM5O3MgYEtWTV9YODZgLiBJdCYjMzk7cyBsaWtlbHkgYWxzbyByZXF1aXJlZCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEdvb2QgdG8ga25vdy4gQnV0IGFnYWluLCBgS1ZNYCBpdHNlbGYgc3RpbGwgYXBwZWFycyB0byBiZSB0aGUgbW9zdCBmdW5kYW1lbnRhbCBwaWVjZSBvZiB0aGUgcHV6emxlLgoKVGltZSB0byBkaXZlIGRlZXBlci4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGB2aXJ0L2t2bS9LY29uZmlnYCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHZpZXcuIFRoYXQgc2hvdWxkIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCBob3cgdGhpcyBpcyBzdHJ1Y3R1cmVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxhY2UuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vS2NvbmZpZy0zLVxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTQ1LVxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG52aXJ0L2t2bS9LY29uZmlnLTUxLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuLS1cbnZpcnQva3ZtL0tjb25maWctNjEtXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xudmlydC9rdm0vS2NvbmZpZy02My0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuLS1cbnZpcnQva3ZtL0tjb25maWctNjctXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbnZpcnQva3ZtL0tjb25maWctNjktICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzAtXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG52aXJ0L2t2bS9LY29uZmlnLTcyLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTczLVxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxudmlydC9rdm0vS2NvbmZpZy03NS0gICAgICAgZGVmX2Jvb2wgeVxuLS1cbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXG4tLVxudmlydC9rdm0vS2NvbmZpZy05My1cbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG52aXJ0L2t2bS9LY29uZmlnLTk1LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xudmlydC9rdm0vS2NvbmZpZy05OC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05OS1cbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXG52aXJ0L2t2bS9LY29uZmlnLTEwMS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDItXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbnZpcnQva3ZtL0tjb25maWctMTA0LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcbnZpcnQva3ZtL0tjb25maWctMTA3LSAgICAgICBzZWxlY3QgWEFSUkFZX01VTFRJXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NzU1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktWTSBNZW1vcnkgUmVnaW9uIEZvY3VzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCB3aXRoaW4gS1ZNLiBUaGUgY29kZSBJJiMzOTttIGZvY3VzaW5nIG9uIGlzIHByaW1hcmlseSB3aXRoaW4gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhhdCB0ZWxscyBtZSBqdXN0IGZvY3VzaW5nIG9uIGBLVk1gIGlzIGVub3VnaCBmb3IgdGhlIHNlYXJjaC4KCkxldCYjMzk7cyBzZWUgd2hhdCBzeW1ib2xzIGFyZSBvZiBpbnRlcmVzdCBoZXJlOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gIFdhaXQsIHdhc24mIzM5O3QgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaW50ZXJuYWw/IFJpZ2h0LCBpdCYjMzk7cyBub3QgZXhwb3NlZCBkaXJlY3RseSB0byB1c2Vyc3BhY2UuIFNvIHRoYXQgbWVhbnMgaXQgbWlnaHQgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIG90aGVyIGlvY3Rscy4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIGBrdm1fdm1faW9jdGxgLiAgVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgaW9jdGxzLiBCdXQgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgaXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uISBJdCBpcyBub3QgYSBnb29kIGZvY3VzIGZ1bmN0aW9uLgoKR2l2ZW4gdGhhdCwgSSB0aGluayBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBnb29kIGZvY2FsIHBvaW50cywgYWxvbmcgd2l0aCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4KCkhvbGQgb24uLi4gSSYjMzk7bSByZW1pbmRlZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBXYWl0LCBhcmUgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGV5IGFyZS4gU28gYWN0dWFsbHkgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21lbW9yeV9yZWdpb25gIGFuZCBub3QgYnkgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIFNvIEkgaGF2ZSB0byBmaW5kIHRoZSBjYWxsZXJzIG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTMzNzE9dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxMi1cdFx0bS5tZW1vcnlfc2l6ZSA9IHNpemU7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0MTM6XHRcdHIgPSBrdm1fc2V0X2ludGVybmFsX21lbXNsb3Qoa3ZtLCBcdTAwMjZtKTtcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxNC1cdFx0aWYgKHIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEtWTSBNZW1vcnkgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIG1lbW9yeSByZWdpb24gc2V0dXAgaW4gS1ZNLiBJdCBsb29rcyBsaWtlIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuIFRoYXQgbWFrZXMgc2Vuc2UsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGVudHJ5IHBvaW50cyBhcmUgdGhlcmUgdG8gY29uZmlndXJlIG1lbW9yeT8gSSYjMzk7bSBzcGVjaWZpY2FsbHkgY3VyaW91cyBhYm91dCBob3cgYGt2bV92bV9pb2N0bGAgbWlnaHQgaW50ZXJhY3QgaGVyZS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBpb2N0bCBoYW5kbGVyLCBzbyBpdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgc29tZWhvdy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBrdm1fdm1faW9jdGxgJiMzOTtzIGRlZmluaXRpb24gdG8gc2VlIGhvdyBpdCBtaWdodCBiZSBjYWxsaW5nIG9yIGNvb3JkaW5hdGluZyB3aXRoIHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucy4gSSBzaG91bGQgZmluZCBpdHMgZGVmaW5pdGlvbiBpbiBgdmlydC9rdm0va3ZtX21haW4uY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIHRoZSBjZW50cmFsIEtWTSBtb2R1bGUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3ZtX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTE0MTU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV91bmxvY2tfYWxsX3ZjcHVzKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MTgtICogQWxsb2NhdGlvbiBzaXplIGlzIHR3aWNlIGFzIGxhcmdlIGFzIHRoZSBhY3R1YWwgZGlydHkgYml0bWFwIHNpemUuXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE0MTk6ICogU2VlIGt2bV92bV9pb2N0bF9nZXRfZGlydHlfbG9nKCkgd2h5IHRoaXMgaXMgbmVlZGVkLlxudmlydC9rdm0va3ZtX21haW4uYy0xNDIwLSAqL1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjEzOD1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0MDpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDEtXHRcdFx0XHRcdCAgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIyMjE9c3RhdGljIGludCBrdm1fZ2V0X2RpcnR5X2xvZ19wcm90ZWN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIyOTMtLyoqXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIyOTQ6ICoga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2cgLSBnZXQgYW5kIGNsZWFyIHRoZSBsb2cgb2YgZGlydHkgcGFnZXMgaW4gYSBzbG90XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIyOTUtICogQGt2bToga3ZtIGluc3RhbmNlXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0yMzExLSAqL1xudmlydC9rdm0va3ZtX21haW4uYzoyMzEyOnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yMzEzLVx0XHRcdFx0ICAgICAgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIzMzE9c3RhdGljIGludCBrdm1fY2xlYXJfZGlydHlfbG9nX3Byb3RlY3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjQwNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6MjQwNzpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy0yNDA4LVx0XHRcdFx0XHRzdHJ1Y3Qga3ZtX2NsZWFyX2RpcnR5X2xvZyAqbG9nKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MjUzNz1zdGF0aWMgaW50IGt2bV92bV9zZXRfbWVtX2F0dHJpYnV0ZXMoc3RydWN0IGt2bSAqa3ZtLCBnZm5fdCBzdGFydCwgZ2ZuX3QgZW5kLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMjU5OC19XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjI1OTk6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjYwMC1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfYXR0cmlidXRlcyAqYXR0cnMpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0zOTYwPXZvaWQga3ZtX3ZjcHVfb25fc3BpbihzdHJ1Y3Qga3ZtX3ZjcHUgKm1lLCBib29sIHlpZWxkX3RvX2tlcm5lbF9tb2RlKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzk3MC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6Mzk3MTpcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoKS4gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmMtMzk3Mi1cdHNtcF9ybWIoKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQxMzE9c3RhdGljIHZvaWQga3ZtX2NyZWF0ZV92Y3B1X2RlYnVnZnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDE1MS0gKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6NDE1MjpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTMte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDM3OT1zdGF0aWMgaW50IGt2bV93YWl0X2Zvcl92Y3B1X29ubGluZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00MzkxLVx0ICogQWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgdkNQVSYjMzk7cyBtdXRleCB0byB3YWl0IGZvciB2Q1BVIGNyZWF0aW9uIHRvXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQzOTI6XHQgKiBjb21wbGV0ZSAoa3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkgaG9sZHMgdGhlIG11dGV4IHVudGlsIHRoZSB2Q1BVXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQzOTMtXHQgKiBpcyBmdWxseSBvbmxpbmUpLlxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NDgwNT1zdGF0aWMgaW50IGt2bV9pb2N0bF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4NjMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ4NjQ6c3RhdGljIGludCBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoc3RydWN0IGt2bSAqa3ZtLCBsb25nIGFyZylcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDg2NS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00OTM3LVx0fVxudmlydC9rdm0va3ZtX21haW4uYzo0OTM4Olx0cmV0dXJuIGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oa3ZtLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy00OTM5LX1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0MC1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NDk0MTpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9lbmFibGVfZGlydHlfbG9nX3Jpbmcoc3RydWN0IGt2bSAqa3ZtLCB1MzIgc2l6ZSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0Mi17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy00OTc4LVxudmlydC9rdm0va3ZtX21haW4uYzo0OTc5OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk4MC17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDAzLVxudmlydC9rdm0va3ZtX21haW4uYzo1MDA0OmludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0va3ZtX21haW4uYy01MDA1LVx0XHRcdFx0XHRcdCAgc3RydWN0IGt2bV9lbmFibGVfY2FwICpjYXApXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01MDIzPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fYXJlX2FsbF9tZW1zbG90c19lbXB0eSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwMjQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwMjU6c3RhdGljIGludCBrdm1fdm1faW9jdGxfZW5hYmxlX2NhcF9nZW5lcmljKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAyNi1cdFx0XHRcdFx0ICAgc3RydWN0IGt2bV9lbmFibGVfY2FwICpjYXApXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDYwLVx0Y2FzZSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw6XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjE6XHRcdGlmICgha3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKGt2bSwgY2FwLVx1MDAzZWNhcCkpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwNjItXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwNjMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjQ6XHRcdHJldHVybiBrdm1fdm1faW9jdGxfZW5hYmxlX2RpcnR5X2xvZ19yaW5nKGt2bSwgY2FwLVx1MDAzZWFyZ3NbMF0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MDY1LVx0Y2FzZSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX1dJVEhfQklUTUFQOiB7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MDg4LVx0ZGVmYXVsdDpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTA4OTpcdFx0cmV0dXJuIGt2bV92bV9pb2N0bF9lbmFibGVfY2FwKGt2bSwgY2FwKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA5MC1cdH1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMga3ZtX3ZtX3N0YXRzX2ZvcHMgPSB7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MTE3LVxudmlydC9rdm0va3ZtX21haW4uYzo1MTE4OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtICprdm0pXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxMTkte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0MT1kbyB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE0Ny1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE0ODpzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNDktXHRcdFx0ICAgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNTgtXHRjYXNlIEtWTV9DUkVBVEVfVkNQVTpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE1OTpcdFx0ciA9IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShrdm0sIGFyZyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNjAtXHRcdGJyZWFrO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2Ni1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE2NzpcdFx0ciA9IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoa3ZtLCBcdTAwMjZjYXApO1xudmlydC9rdm0va3ZtX21haW4uYy01MTY4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMDI6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcdTAwMjZtZW0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MjAzLVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTAtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMTE6XHRcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X2RpcnR5X2xvZyhrdm0sIFx1MDAyNmxvZyk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTItXHRcdGJyZWFrO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIyMC1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTIyMTpcdFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xudmlydC9rdm0va3ZtX21haW4uYy01MjIyLVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMzEtXHRcdFx0Z290byBvdXQ7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMzI6XHRcdHIgPSBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcdTAwMjZ6b25lKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIzMy1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MjQwLVx0XHRcdGdvdG8gb3V0O1xudmlydC9rdm0va3ZtX21haW4uYzo1MjQxOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX3VucmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcdTAwMjZ6b25lKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI0Mi1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01MjgyLVxudmlydC9rdm0va3ZtX21haW4uYzo1MjgzOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX2lycV9saW5lKGt2bSwgXHUwMDI2aXJxX2V2ZW50LFxudmlydC9rdm0va3ZtX21haW4uYy01Mjg0LVx0XHRcdFx0XHRpb2N0bCA9PSBLVk1fSVJRX0xJTkVfU1RBVFVTKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUzMzc6XHRcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKGt2bSwgXHUwMDI2YXR0cnMpO1xudmlydC9rdm0va3ZtX21haW4uYy01MzM4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNTktXHRjYXNlIEtWTV9DSEVDS19FWFRFTlNJT046XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUzNjA6XHRcdHIgPSBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoa3ZtLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01MzYxLVx0XHRicmVhaztcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTM2Mi1cdGNhc2UgS1ZNX1JFU0VUX0RJUlRZX1JJTkdTOlxudmlydC9rdm0va3ZtX21haW4uYzo1MzYzOlx0XHRyID0ga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNjQtXHRcdGJyZWFrO1xudmlydC9rdm0va3ZtX21haW4uYy01MzY1LVx0Y2FzZSBLVk1fR0VUX1NUQVRTX0ZEOlxudmlydC9rdm0va3ZtX21haW4uYzo1MzY2Olx0XHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy01MzY3LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU0MTM9c3RhdGljIGxvbmcga3ZtX3ZtX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NDAtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0NDE6XHRcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXHUwMDI2bG9nKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ0Mi1cdFx0YnJlYWs7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NDU2LVxudmlydC9rdm0va3ZtX21haW4uYzo1NDU3Olx0XHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xudmlydC9rdm0va3ZtX21haW4uYy01NDU4LVx0XHRicmVhaztcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjAtXHRkZWZhdWx0OlxudmlydC9rdm0va3ZtX21haW4uYzo1NDYxOlx0XHRyID0ga3ZtX3ZtX2lvY3RsKGZpbHAsIGlvY3RsLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01NDYyLVx0fVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTQ2Nz1zdGF0aWMgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBrdm1fdm1fZm9wcyA9IHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ2OC1cdC5yZWxlYXNlICAgICAgICA9IGt2bV92bV9yZWxlYXNlLFxudmlydC9rdm0va3ZtX21haW4uYzo1NDY5Olx0LnVubG9ja2VkX2lvY3RsID0ga3ZtX3ZtX2lvY3RsLFxudmlydC9rdm0va3ZtX21haW4uYy01NDcwLVx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTUyMz1zdGF0aWMgbG9uZyBrdm1fZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTUzNy1cdGNhc2UgS1ZNX0NIRUNLX0VYVEVOU0lPTjpcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTUzODpcdFx0ciA9IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb25fZ2VuZXJpYyhOVUxMLCBhcmcpO1xudmlydC9rdm0va3ZtX21haW4uYy01NTM5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMzMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIHRocm91Z2ggdGhpcyBLVk0gY29kZSwgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0lzIGBrdm1fdm1faW9jdGxgIHN0YXRpYz8mIzM0OyBCZWNhdXNlIGlmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0JiMzOTtzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBzeW1ib2wgdG8gZm9jdXMgb24gd2hlbiBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgb3ZlcmFsbCBmbG93LiBBaGEhIEl0ICppcyogZGVjbGFyZWQgYXMgYHN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylgLiBUaGF0JiMzOTtzIHRoYXQuIFNvIGl0JiMzOTtzIHN0YXRpYywgYnV0IHRoZW4gaXQmIzM5O3MgYXNzaWduZWQgdG8gYC51bmxvY2tlZF9pb2N0bCA9IGt2bV92bV9pb2N0bGAuIFJpZ2h0LCB0aGF0IG1ha2VzIGl0IGFuIGVudHJ5IHBvaW50LiBJdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNrLCBzaW5jZSBpdCBpcyBzdGF0aWMsIEkgbWlnaHQgd2FudCB0byBmaW5kIG90aGVyIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90IHN0YXRpYy4KClNvLCBzaW5jZSBga3ZtX3ZtX2lvY3RsYCBpcyBzdGF0aWMsIEkgbmVlZCB0byBsb29rIGZvciBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiB3aGF0IGFib3V0IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gPyBUaGF0IG9uZSBsb29rcyBub24tc3RhdGljLiBHb29kLiBBbmQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGA/IE5vbi1zdGF0aWMgYWdhaW4uIFBlcmZlY3QuIEFuZCB0aGUgZm9sbG93aW5nIGFyZSBhbHNvIG5vbi1zdGF0aWMsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAgYW5kIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuIE5vdyBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19feDg2X3NldF9tZW1vcnlfcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vbGFwaWMuYz0yOTAxPWludCBrdm1fYWxsb2NfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMjkxMC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjI5MTE6XHRodmEgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMjkxMi1cdFx0XHRcdCAgICAgIEFQSUNfREVGQVVMVF9QSFlTX0JBU0UsIFBBR0VfU0laRSk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MjkyMj12b2lkIGt2bV9pbmhpYml0X2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzMtXHRpZiAoa3ZtLVx1MDAzZWFyY2guYXBpY19hY2Nlc3NfbWVtc2xvdF9lbmFibGVkKSB7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoyOTM0Olx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULCAwLCAwKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzUtXHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz00MDEwPXN0YXRpYyBpbnQgaW5pdF9ybW9kZV9pZGVudGl0eV9tYXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNDAyNS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NDAyNjpcdHVhZGRyID0gX194ODZfc2V0X21lbW9yeV9yZWdpb24oa3ZtLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy00MDI3LVx0XHRcdFx0XHRJREVOVElUWV9QQUdFVEFCTEVfUFJJVkFURV9NRU1TTE9ULFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NTI1ND1pbnQgdm14X3NldF90c3NfYWRkcihzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBhZGRyKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTI2MS1cdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuYXJjaC94ODYva3ZtL3ZteC92bXguYzo1MjYyOlx0cmV0ID0gX194ODZfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBUU1NfUFJJVkFURV9NRU1TTE9ULCBhZGRyLFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjYzLVx0XHRcdFx0ICAgICAgUEFHRV9TSVpFICogMyk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzMjc2PWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzM0OS0vKipcbmFyY2gveDg2L2t2bS94ODYuYzoxMzM1MDogKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbjogU2V0dXAgS1ZNIGludGVybmFsIG1lbW9yeSBzbG90XG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNTEtICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzAtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTMzNzE6dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzcyLVx0XHRcdFx0ICAgICAgdTMyIHNpemUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDIyLX1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQyMzpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX194ODZfc2V0X21lbW9yeV9yZWdpb24pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDI0LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzQ0MT12b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ0OS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0NTA6XHRcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0NTEtXHRcdFx0XHRcdDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDUyOlx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0NTMtXHRcdFx0XHRcdDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDU0Olx0XHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIDAsIDApO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDU1LVx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg1MgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBNZW1vcnkgUmVnaW9uIE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEtWTSBzeXN0ZW0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBtaWdodCBiZSBhIGtleSBmdW5jdGlvbiwgc2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCBhcyBwb3RlbnRpYWwgZm9jdXMgcG9pbnRzLCBhbG9uZyB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLgoKQnV0IHRoZW4gSSByZWFsaXplZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gIGlzIHNwZWNpZmljIHRvICppbnRlcm5hbCogbWVtb3J5IHNsb3RzLiBIbW0sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLiBXaGF0IGFib3V0IHRoZSB1c2VyIG1lbW9yeSByZWdpb25zPyBUaG9zZSBhcmUgc2V0IHVzaW5nIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBTaG9vdCwgdGhhdCYjMzk7cyBzdGF0aWMsIHNvIGl0JiMzOTtzIG9mZiB0aGUgdGFibGUgZm9yIG15IHB1cnBvc2VzLiBJIHRob3VnaHQgbWF5YmUgSSBjb3VsZCB1c2UgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgc2luY2UgaXQgaXMgZXhwb3J0ZWQsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCYjMzk7cyBhbHNvIGp1c3QgZm9yIGludGVybmFsIG1lbXNsb3RzLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjay4gYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAgY2FsbHMgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGFsc28gc3RhdGljLiBJIG5lZWQgYSAqbm9uLXN0YXRpYyogZnVuY3Rpb24gYWxvbmcgdGhhdCBleGVjdXRpb24gcGF0aC4gQWhhISBIZXJlIHdlIGdvLi4uIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGlzIGNhbGxlZCBmb3IgKmFsbCogbWVtb3J5IHJlZ2lvbnMsIGJvdGggaW50ZXJuYWwgYW5kIHVzZXIuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgbmVlZC4gSXTigJlzIHBlcmZlY3QhCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgdGhhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBpcyBpbmRlZWQgZXhwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTM1ODk9dm9pZCBrdm1fYXJjaF9tZW1zbG90c191cGRhdGVkKHN0cnVjdCBrdm0gKmt2bSwgdTY0IGdlbilcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDQtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM2MDU6aW50IGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDYtXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzMwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk0gTWVtb3J5IE1hbmFnZW1lbnQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBvbiBLVk0gbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBrZXkgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIHNoaWZ0IGZyb20gYF9fdmNhbGxvY2AvYHZmcmVlYCB0byBga3ZjYWxsb2NgL2BrdmZyZWVgLiBUaGUgY29kZSBpc24mIzM5O3QgZXhwb3J0aW5nIHRoZXNlIGZ1bmN0aW9ucywgYnV0IHRoZXkmIzM5O3JlIG5vbi1zdGF0aWMsIHNvIHRoZXkmIzM5O2xsIGhhdmUgdW5pcXVlIHN5bWJvbCBhZGRyZXNzZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gSSBqdXN0IGNoZWNrZWQgYW5kIHllcywgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCBpcyBpbmRlZWQgc3RhdGljLCBzbyBpdCYjMzk7cyBub3QgYSBwcmltYXJ5IGZvY3VzLgoKVGhlcmVmb3JlLCBteSBhdHRlbnRpb24gaXMgb24gdGhlc2Ugc3ltYm9sczogYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBiZWhhdmluZyBhcyBleHBlY3RlZCBhZnRlciB0aGlzIGNoYW5nZS4gSSYjMzk7bGwgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYEtWTWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgb25lIGFmZmVjdGVkLgoKVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIHBhdGNoIGlzIGNsZWFyOiBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBhbGxvY2F0aW9uLiBJdCBzd2l0Y2hlcyBmcm9tIGEgbW9yZSBnZW5lcmljIGFsbG9jYXRpb24gYXBwcm9hY2ggdG8gb25lIHNwZWNpZmljIHRvIHRoZSBrZXJuZWwuIFRoaXMgcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbnRyb2R1Y2luZyBtZW1vcnkgbGVha3MsIGRhdGEgY29ycnVwdGlvbiwgb3IgY2hhbmdlcyBpbiBob3cgYWxsb2NhdGlvbnMgYmVoYXZlLCBsaWtlIHRoZSB2bWFsbG9jIGZhbGxiYWNrLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCBzbyBpdCYjMzk7cyBkaXJlY3RseSBpbXBhY3RpbmcgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBLVk0uIFRoYXQgc2NyZWFtcyBmb3IgZnV6emluZyB0byBjYXRjaCBlZGdlIGNhc2VzLgoKTm93LCBhIHNtYWxsIGRldGFpbCBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dDogaXMgYGt2Y2FsbG9jYCBhIG1hY3JvIG9yIGEgZnVuY3Rpb24/IE9rYXksIGEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCYjMzk7cyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gSXQgYWN0dWFsbHkgY2FsbHMgYGt2bWFsbG9jX2FycmF5YC4gQmVjYXVzZSBpdCBpcyBzdGF0aWMgaW5saW5lLCBpdCB3b24mIzM5O3QgYmUgYSBzeW1ib2wgaXRzZWxmLiBCdXQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgYXJlIHN0YXRpYyAoYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGNhbGxpbmcgdGhvc2UsIGFuZCB0aHVzIGluZGlyZWN0bHkgaW52b2x2ZWQsIGFyZSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBhbmQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAuIFRpbWUgdG8gcmUtZXhhbWluZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2FyY2hfZnJlZV9tZW1zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz0xMzQ3ND1zdGF0aWMgdm9pZCBtZW1zbG90X3JtYXBfZnJlZShzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ4NDp2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzc2NT12b2lkIGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXHRpZiAoY2hhbmdlID09IEtWTV9NUl9NT1ZFKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2Olx0XHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBvbGQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5OTQKCQkJCQkJCW91dHB1dDogMjI5CgkJCQkJCQl0aG91Z2h0czogNzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBjb2RlIGFuZCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtZW1vcnkgYWxsb2NhdGlvbiBjaGFuZ2VzLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBpcywgaW4gZmFjdCwgbm9uLXN0YXRpYywgd2hpY2ggaXMgYW4gaW1wb3J0YW50IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBzZW5zZSBvZiB0aGUgc2NvcGUuCgpJIHN0YXJ0ZWQgYnkgbG9va2luZyBhdCBjYWxsZXJzIG9mIGBrdm1fYWxsb2NfZGlydHlfYml0bWFwYC4gVGhhdCBmdW5jdGlvbiYjMzk7cyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3NldF9tZW1zbG90YC4gIGBrdm1fc2V0X21lbXNsb3RgIGlzIGNhbGxlZCBieSB0aGUgc3RhdGljIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLCBidXQgdGhhdCBpcyBhbHNvIGNhbGxlZCBieSBhbiBleHBvcnRlZCBmdW5jdGlvbiwgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAuIFRoaXMgbWVhbnMgdGhlIGxhdHRlciBpcyBvdXIgcG9pbnQgb2YgZm9jdXMgZm9yIHRoaXMgcGF0aC4KClRoZW4gSSBjaGVja2VkIG91dCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBjYWxsZXJzLiBUaGF0IGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9mcmVlX21lbXNsb3RgLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAgYW5kIGBrdm1fZGVzdHJveV92bWAuIGBrdm1fZGVzdHJveV92bWAgaXMgdGhlbiBjYWxsZWQgYnkgYGt2bV9wdXRfa3ZtYCwgd2hpY2ggaXMgKm5vbiotc3RhdGljLiBTbywgYGt2bV9wdXRfa3ZtYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLgoKTGV0JiMzOTtzIGxpc3QgdGhlIHN5bWJvbHMgZm9yIGZvY3VzLCB3aGljaCBhcmU6CmBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gCmBrdm1fYXJjaF9mcmVlX21lbXNsb3RgCmBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAKYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAKYGt2bV9wdXRfa3ZtYAoKV2FpdCwgYGt2bV9wdXRfa3ZtYCBpcyB2ZXJ5IGdlbmVyaWMsIGl0JiMzOTtzIGNhbGxlZCBpbiBtYW55IHBsYWNlcy4KCklzIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGA/IE5vLCBsZXQmIzM5O3Mga2VlcCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gIFNvLCB0aGF0IHNlZW1zIHNvbGlkLgoKSSYjMzk7bSBzZXR0bGluZyBvbjoKYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAKYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAKYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYApga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YAoKVGhpcyBsb29rcyBnb29kLCBzbyBsZXQmIzM5O3Mgd3JpdGUgdXAgdGhlIHJhdGlvbmFsZS4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGB2ZnJlZWAgdG8gYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHRvIGBrdmNhbGxvY2AgaW4gdGhlIG1lbW9yeSBzbG90IGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoaXMgbWVhbnMgYSBzaGlmdCBpbiBhbGxvY2F0aW9uIGJlaGF2aW9yIHRvIHByZWZlcnJpbmcga21hbGxvYyAod2l0aCB2bWFsbG9jIGZhbGxiYWNrKS4gIFRoaXMgY291bGQgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIHRoZXJlIGFyZSBidWdzLiBUaGUgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBLVk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lPTmAgYW5kIG90aGVyIEtWTSBpb2N0bHMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHJlY29tbWVuZCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBwcm9wZXJseS4gVGhlIGBLVk1gIGNvbmZpZyBpcywgb2YgY291cnNlLCBhIHByZS1yZXF1aXNpdGUuCgpOb3cgSSYjMzk7bGwgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9mcmVlX21lbXNsb3QmIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24mIzM0OywKICAgICYjMzQ7a3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDE0OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NDljZWZiYjQ1MjUzMjFlYTI0YjYxNTllN2YwZTU0NTBjYzQxOTg0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMTQ6Mzc6MjYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMTM0ODgsNyAmIzQzOzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KQogCW1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpOwogCiAJZm9yIChpID0gMTsgaSAmbHQ7IEtWTV9OUl9QQUdFX1NJWkVTOyAmIzQzOyYjNDM7aSkgewotCQl2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKJiM0MzsJCWt2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKIAkJc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7CiAJfQogCkBAIC0xMzU0NCw3ICYjNDM7MTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSwKIAogCQlscGFnZXMgPSBfX2t2bV9tbXVfc2xvdF9scGFnZXMoc2xvdCwgbnBhZ2VzLCBsZXZlbCk7CiAKLQkJbGluZm8gPSBfX3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKJiM0MzsJCWxpbmZvID0ga3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAkJaWYgKCFsaW5mbykKIAkJCWdvdG8gb3V0X2ZyZWU7CiAKQEAgLTEzNTgwLDcgJiM0MzsxMzU4MCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLAogCW1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpOwogCiAJZm9yIChpID0gMTsgaSAmbHQ7IEtWTV9OUl9QQUdFX1NJWkVTOyAmIzQzOyYjNDM7aSkgewotCQl2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKJiM0MzsJCWt2ZnJlZShzbG90LSZndDthcmNoLmxwYWdlX2luZm9baSAtIDFdKTsKIAkJc2xvdC0mZ3Q7YXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7CiAJfQogCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKaW5kZXggZTQ0YzIwYzA0OTYxMC4uNTJhZjFlYmRkMTRjMiAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCkBAIC05MjcsNyAmIzQzOzkyNyw3IEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KQogCWlmICghbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKQogCQlyZXR1cm47CiAKLQl2ZnJlZShtZW1zbG90LSZndDtkaXJ0eV9iaXRtYXApOwomIzQzOwlrdmZyZWUobWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKTsKIAltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBOVUxMOwogfQogCkBAIC0xNDIyLDcgJiM0MzsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpCiB7CiAJdW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7CiAKLQltZW1zbG90LSZndDtkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiYjNDM7CW1lbXNsb3QtJmd0O2RpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpOwogCWlmICghbWVtc2xvdC0mZ3Q7ZGlydHlfYml0bWFwKQogCQlyZXR1cm4gLUVOT01FTTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMTQ6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NAoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiA1MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gTmVlZHMgQXNzZXNzbWVudCBmb3IgS1ZNIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcDogYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBhbmQgYHZmcmVlYCB0byBga3ZmcmVlYCBpbiBhIGNvdXBsZSBvZiBLVk0gZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgc2hvdWxkIGJlIHByZXR0eSBiZW5pZ24gZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLiBgX192Y2FsbG9jYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbGxvY2F0ZXMgbWVtb3J5IHdpdGggYHZtYWxsb2NgIGFuZCBpbXBvcnRhbnRseSwgKnplcm9lcyogaXQuIFRoZSByZXBsYWNlbWVudCwgYGt2Y2FsbG9jYCwgaW50cm9kdWNlcyBhIGZhbGxiYWNrIHRvIGBrbWFsbG9jYCAodmlhIGBrdm1hbGxvY19hcnJheWAgd2l0aCBgX19HRlBfWkVST2ApLCB3aGljaCBjb3VsZCBiZSBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsZXIgYWxsb2NhdGlvbnMuIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgKmt2Y2FsbG9jKiAqYWxzbyogemVyby1pbml0aWFsaXplcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhpcyBpcyB0aGUga2V5LgoKU2luY2UgdGhlIG1lbW9yeSBpcyBleHBsaWNpdGx5IHplcm9lZCBpbiAqYm90aCogdGhlIG9sZCBhbmQgdGhlIG5ldyB2ZXJzaW9ucywgd2UmIzM5O3JlIG5vdCBpbnRyb2R1Y2luZyBhbnkgcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIGRhdGEsIHdoaWNoIGlzIHdoYXQgS01TQU4gd291bGQgYmUgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSSBjb25zaWRlcmVkIHRoYXQgYF9fdmNhbGxvY2AgbWlnaHQgYmUgYSBjdXN0b20gZnVuY3Rpb24sIGJ1dCBJIGNoZWNrZWQgdGhlIGtlcm5lbCBjb2RlIGFuZCBjb25maXJtZWQga3ZjYWxsb2MgemVyby1pbml0cyB0aGUgbWVtb3J5LgoKU28sIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gR29pbmcgdG8gZG91YmxlIGNoZWNrIGt2Y2FsbG9jLiBZdXAsIGBrdmNhbGxvYyhuLCBzaXplLCBmbGFncylgIGlzIGp1c3QgYSB3cmFwcGVyLCBlcXVpdmFsZW50IHRvIGBrdm1hbGxvY19hcnJheShuLCBzaXplLCBmbGFncyB8IF9fR0ZQX1pFUk8pYC4gQWJzb2x1dGVseSBjb3JyZWN0LCBpdCB6ZXJvLWluaXRpYWxpemVzLiBUaGUgb2xkIGNvZGUgdXNlZCBgX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVClgIGFuZCBgX192Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpYC4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIE1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcywgd2hpY2ggYXJlIHN0aWxsIHBvc3NpYmxlLCBhcmUgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIEkmIzM5O20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSAoanVzdCBsaWtlIGBfX3ZjYWxsb2NgIGRpZCksIHNvIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgdXNlZCBvciBsZWFrZWQgdG8gdXNlciBzcGFjZS4gS01TQU4gaXMgbm90IG5lZWRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAxNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjI2Ljk0MzA3MTM0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODI5NTY0NDM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjI2Ljk0MzA3OTU4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyOTk1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjQ5Y2VmYmI0NTI1MzIxZWEyNGI2MTU5ZTdmMGU1NDUwY2M0MTk4NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDozNzoyNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCBhZmNhYzEwNDI5NDdhLi43NzU2N2FhMjBkODM4IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC0xMzQ4OCw3ICsxMzQ4OCw3IEBAIHZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4gXFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XFxuIFxcbiBcXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICsraSkge1xcbi1cXHRcXHR2ZnJlZShzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcXG4rXFx0XFx0a3ZmcmVlKHNsb3QtXFx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xcbiBcXHRcXHRzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcXG4gXFx0fVxcbiBcXG5AQCAtMTM1NDQsNyArMTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFxuIFxcdFxcdGxwYWdlcyA9IF9fa3ZtX21tdV9zbG90X2xwYWdlcyhzbG90LCBucGFnZXMsIGxldmVsKTtcXG4gXFxuLVxcdFxcdGxpbmZvID0gX192Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdFxcdGxpbmZvID0ga3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0XFx0aWYgKCFsaW5mbylcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuQEAgLTEzNTgwLDcgKzEzNTgwLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sXFxuIFxcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xcbiBcXG4gXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIEtWTV9OUl9QQUdFX1NJWkVTOyArK2kpIHtcXG4tXFx0XFx0dmZyZWUoc2xvdC1cXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XFxuK1xcdFxcdGt2ZnJlZShzbG90LVxcdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcXG4gXFx0XFx0c2xvdC1cXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMC4uNTJhZjFlYmRkMTRjMiAxMDA2NDRcXG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xcbkBAIC05MjcsNyArOTI3LDcgQEAgc3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXFxuIFxcdGlmICghbWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHR2ZnJlZShtZW1zbG90LVxcdTAwM2VkaXJ0eV9iaXRtYXApO1xcbitcXHRrdmZyZWUobWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwKTtcXG4gXFx0bWVtc2xvdC1cXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcXG4gfVxcbiBcXG5AQCAtMTQyMiw3ICsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7XFxuIFxcbi1cXHRtZW1zbG90LVxcdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuK1xcdG1lbXNsb3QtXFx1MDAzZWRpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiBcXHRpZiAoIW1lbXNsb3QtXFx1MDAzZWRpcnR5X2JpdG1hcClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzoyNy40MTY4NjQ0OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTAzMDc0ODA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fYXJjaF9mcmVlX21lbXNsb3RcIixcbiAgICBcImt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2NDljZWZiYjQ1MjUzMjFlYTI0YjYxNTllN2YwZTU0NTBjYzQxOTg0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMTQ6Mzc6MjYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IGFmY2FjMTA0Mjk0N2EuLjc3NTY3YWEyMGQ4MzggMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTEzNDg4LDcgKzEzNDg4LDcgQEAgdm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgKytpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4rXHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFxuQEAgLTEzNTQ0LDcgKzEzNTQ0LDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHRcdGxwYWdlcyA9IF9fa3ZtX21tdV9zbG90X2xwYWdlcyhzbG90LCBucGFnZXMsIGxldmVsKTtcbiBcbi1cdFx0bGluZm8gPSBfX3ZjYWxsb2MobHBhZ2VzLCBzaXplb2YoKmxpbmZvKSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdFx0bGluZm8gPSBrdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0XHRpZiAoIWxpbmZvKVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXG5AQCAtMTM1ODAsNyArMTM1ODAsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcdG1lbXNsb3Rfcm1hcF9mcmVlKHNsb3QpO1xuIFxuIFx0Zm9yIChpID0gMTsgaSBcdTAwM2MgS1ZNX05SX1BBR0VfU0laRVM7ICsraSkge1xuLVx0XHR2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuK1x0XHRrdmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbiBcdFx0c2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdID0gTlVMTDtcbiBcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5pbmRleCBlNDRjMjBjMDQ5NjEwLi41MmFmMWViZGQxNGMyIDEwMDY0NFxuLS0tIGEvdmlydC9rdm0va3ZtX21haW4uY1xuKysrIGIvdmlydC9rdm0va3ZtX21haW4uY1xuQEAgLTkyNyw3ICs5MjcsNyBAQCBzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdClcbiBcdGlmICghbWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApXG4gXHRcdHJldHVybjtcbiBcbi1cdHZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbitcdGt2ZnJlZShtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCk7XG4gXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IE5VTEw7XG4gfVxuIFxuQEAgLTE0MjIsNyArMTQyMiw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZGlydHlfYnl0ZXMgPSBrdm1fZGlydHlfYml0bWFwX2J5dGVzKG1lbXNsb3QpO1xuIFxuLVx0bWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXAgPSBfX3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4rXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IGt2Y2FsbG9jKDIsIGRpcnR5X2J5dGVzLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0aWYgKCFtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzoyNy40MTY4NjYzMDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTMzMTEzNzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTSBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHN3YXBwaW5nIG91dCBgdmZyZWVgIGZvciBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2AgZm9yIGBrdmNhbGxvY2Agd2l0aGluIHRoZSBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocy4gRnVuY3Rpb25hbGx5LCBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIG1lbW9yeSBhbGxvY2F0aW9uIEFQSSBjaGFuZ2UsIHdoaWNoIGlzIGltcG9ydGFudC4gQnV0IGxldCdzIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuXG5cblRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBzdHJhdGVneTogYF9fdmNhbGxvY2AgcmVsaWVzIG9uIGB2bWFsbG9jYCwgd2hlcmVhcyBga3ZjYWxsb2NgIHVzZXMgYGttYWxsb2NgIGlmIHBvc3NpYmxlLCBmYWxsaW5nIGJhY2sgdG8gYHZtYWxsb2NgIGlmIG5lZWRlZC4gVGhpcyBjb3VsZCBoYXZlIHBlcmZvcm1hbmNlIHJhbWlmaWNhdGlvbnMsIG9yIGFsdGVyIGhvdyBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvciB0aGVzZSBjcml0aWNhbCBLVk0gb3BlcmF0aW9ucy4gR2l2ZW4gdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLCBhbGwgb2Ygd2hpY2ggYXJlIHJlYWNoZWQgdmlhIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFyZSBpbXBvcnRhbnQuXG5cblRoZSBxdWVzdGlvbiBub3cgaXMsIGRvZXMgdGhpcyB3YXJyYW50IGZ1enppbmc/IFdoaWxlIGl0J3MgYSBzZWVtaW5nbHkgc2ltcGxlIEFQSSByZXBsYWNlbWVudCwgdGhlIHNoaWZ0IGZyb20gdm1hbGxvYyB0byBrdm1hbGxvYyBpcyBzaWduaWZpY2FudCBlbm91Z2ggdGhhdCBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgdG8gZW5zdXJlIHRoZXJlJ3Mgbm8gc3VidGxlIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxlYWtzIGludHJvZHVjZWQuIFNvLCBmdXp6aW5nIGlzIHByb2JhYmx5IGEgZ29vZCBpZGVhLlxuXG5GaXJzdCwgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gTG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLlxuXG5Pa2F5LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhZ2FpbiB0byByZWZyZXNoIG15IG1lbW9yeTogYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAsIGBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBgLCBhbmQgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBBIGtleSB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIG5lZWQgdG8gYmUgcGFpcmVkLCBzbyBpdCdzIGVzc2VudGlhbCB0aGlzIHBhdGNoIG1haW50YWlucyB0aGF0IGNvbnNpc3RlbmN5LlxuXG5SaWdodCwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAsIGFuZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAgYXJlIGFsbCAqc3RhdGljKi4gVGhhdCBtZWFucyB0aGVpciBzY29wZSBpcyBsaW1pdGVkIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGZpbGVzLiBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCBpcyAqbm90KiBzdGF0aWMsIHNvIGl0J3MgdGhlIG1vcmUgbGlrZWx5IGNhbmRpZGF0ZSB0byBiZSBjYWxsZWQgZnJvbSBlbHNld2hlcmUuXG5cbk5vdywgSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIG9mIHRoZXNlIGZ1bmN0aW9ucywgZXNwZWNpYWxseSB0aGUgc3RhdGljIG9uZXMuIExldCdzIHNlZS4uLiBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgIGlzIGNhbGxlZCBieSBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBpcyBjYWxsZWQgYnkgYGt2bV9mcmVlX21lbXNsb3RgLiBMZXQncyBncmVwIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NjcsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzozNi45NDk5ODIwMTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MjIxODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZnJlZV9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTM0NzQ9c3RhdGljIHZvaWQgbWVtc2xvdF9ybWFwX2ZyZWUoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4My1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM0ODQ6dm9pZCBrdm1fYXJjaF9mcmVlX21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ4NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTM3NjU9dm9pZCBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODUtXFx0aWYgKGNoYW5nZSA9PSBLVk1fTVJfTU9WRSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM3ODY6XFx0XFx0a3ZtX2FyY2hfZnJlZV9tZW1zbG90KGt2bSwgb2xkKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM3ODctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzozNy4wMDI5MDk4NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg3MzMwNzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHNlZSBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgS1ZNIGtlcm5lbCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBgZ3JlcGAgaXMgdGhlIG9idmlvdXMgdG9vbCBoZXJlOyBJJ2xsIHVzZSBpdCB0byBzZWFyY2ggZm9yIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgKmNhbGxlZCosIHdoYXQgYXJndW1lbnRzIGl0IHRha2VzLCBhbmQgaG93IHRoZSByZXR1cm5lZCBkYXRhIGlzIGhhbmRsZWQuIFRoaXMgd2lsbCB0ZWxsIG1lIGFib3V0IGl0cyBwdXJwb3NlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgYWxsb2NhdGlvbiBzdHJhdGVnaWVzLCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIG9yIGhvdyBtZW1vcnkgc2xvdHMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIEtWTSBtZW1vcnkgbW9kZWwuIEJhc2ljYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgbGlmZSBjeWNsZSBhbmQgaXRzIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGxhcmdlciBLVk0gYXJjaGl0ZWN0dXJlLiBMZXQncyBzZWUgd2hhdCBgZ3JlcGAgZGlncyB1cC4gSSdtIGFudGljaXBhdGluZyBzb21lIGludGVyZXN0aW5nIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0MC4xOTAyNDI4ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNDcwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xMzQ5OD1pbnQgbWVtc2xvdF9ybWFwX2FsbG9jKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNTE5LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzUyMDpzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM1MjEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMzYwNT1pbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0xMzYyMy1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTM2MjQ6XFx0XFx0cmV0dXJuIGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKGt2bSwgbmV3KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MjUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0MC4yNDQyOTQwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjQ2MTk4OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBBbGxvY2F0aW9uIG9mIERpcnR5IEJpdG1hcHMgaW4gS1ZNKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBLVk0ga2VybmVsIG1vZHVsZSBoYW5kbGVzIGRpcnR5IGJpdG1hcCBhbGxvY2F0aW9uLiBNeSBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCBzbyBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCBmb3IgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0J2xsIGJlIG15IHByaW1hcnkgZW50cnkgcG9pbnQuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGluaXRpYWwgYWxsb2NhdGlvbiBjYWxscywgYnV0IGFsc28gcG90ZW50aWFsbHkgcmVsYXRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBmcmVlIG9yIG1hbmFnZSB0aGUgYml0bWFwcy4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHdoZXJlIGFuZCB3aGVuIHRoZXNlIGJpdG1hcHMgYXJlIGFsbG9jYXRlZCwgaG93IG11Y2ggbWVtb3J5IHRoZXkgY29uc3VtZSwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgdXNhZ2UgcGF0dGVybnMgbG9vayBsaWtlLiBUaGUgZ29hbCBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGFuZCBhbnkgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgd2l0aGluIHRoaXMgYXJlYS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBgZ3JlcGAgdHVybnMgdXAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQzLjM2ODkxNjUyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzk4ODI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYWxsb2NfZGlydHlfYml0bWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNDE1PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdW5sb2NrX2FsbF92Y3B1cyk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE0MjAtICovXFxudmlydC9rdm0va3ZtX21haW4uYzoxNDIxOnN0YXRpYyBpbnQga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTQyMi17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2NTg9c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY3Ny1cXHRcXHRlbHNlIGlmIChrdm1fdXNlX2RpcnR5X2JpdG1hcChrdm0pKSB7XFxudmlydC9rdm0va3ZtX21haW4uYzoxNjc4OlxcdFxcdFxcdHIgPSBrdm1fYWxsb2NfZGlydHlfYml0bWFwKG5ldyk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xNjc5LVxcdFxcdFxcdGlmIChyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0My40MjI5MTA0MjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYyOTc3MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCoqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gYW5hbHl6ZSB0aGUgZnVuY3Rpb24gYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxldmVyYWdlIGBncmVwYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaXRzIHVzYWdlIGNvbnRleHQgd2l0aGluIHRoZSBLVk0gY29kZWJhc2UuIEkgd2FudCB0byBzZWUgd2hlcmUgaXQncyBjYWxsZWQsIGhvdyBpdCdzIGNhbGxlZCwgYW5kIHdoYXQgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIGl0LiBUaGlzIGluaXRpYWwgc2VhcmNoIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBwcmVsaW1pbmFyeSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgdmlydHVhbCBtYWNoaW5lIGxpZmVjeWNsZSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIEknbSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcml0aWNhbCBpbiByZWxlYXNpbmcgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdHJhY2tpbmcgZGlydHkgcGFnZXMsIHNvIEkgbmVlZCB0byBhc3Nlc3MgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiBpdHMgdXNhZ2UgYXMgd2VsbC4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIHNob3VsZCBiZSB1c2VkIGR1cmluZyBWTSB0ZWFyZG93biBvciB3aGVuIHJlc2V0dGluZyBwYWdlIHRyYWNraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzc6NDYuMTg1ODkwMzQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTE0NTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTkyMD1zdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9wbV9ub3RpZmllcihzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjkyNTpzdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAoc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTkyNi17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTkzNT1zdGF0aWMgdm9pZCBrdm1fZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtOTM5LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6OTQwOlxcdGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzbG90KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjkwLVxcdGlmIChyIFxcdTAwMjZcXHUwMDI2IG5ldyBcXHUwMDI2XFx1MDAyNiBuZXctXFx1MDAzZWRpcnR5X2JpdG1hcCBcXHUwMDI2XFx1MDAyNiAoIW9sZCB8fCAhb2xkLVxcdTAwM2VkaXJ0eV9iaXRtYXApKVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTY5MTpcXHRcXHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAobmV3KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2OTItXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE2OTY9c3RhdGljIHZvaWQga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTc0MC1cXHRcXHRpZiAob2xkLVxcdTAwM2VkaXJ0eV9iaXRtYXAgXFx1MDAyNlxcdTAwMjYgIW5ldy1cXHUwMDNlZGlydHlfYml0bWFwKVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTc0MTpcXHRcXHRcXHRrdm1fZGVzdHJveV9kaXJ0eV9iaXRtYXAob2xkKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE3NDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQ2LjI3NzA0MTk5NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyMjc4NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gS1ZNIG1lbW9yeSBtYW5hZ2VtZW50LiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgY2xvc2VseSBhdCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gV2FpdCBhIG1pbnV0ZSwgd2hhdCdzIGdvaW5nIG9uIGhlcmU/IFRoZSBvdGhlciB0aHJlZSwgYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGFuZCBga3ZtX2ZyZWVfbWVtc2xvdGAgYXJlIGRlY2xhcmVkIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjQ5Ljg3OTMyNDMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzM1NzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNjAwPXN0YXRpYyB2b2lkIGt2bV9zd2FwX2FjdGl2ZV9tZW1zbG90cyhzdHJ1Y3Qga3ZtICprdm0sIGludCBhc19pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTY1Ny1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE2NTg6c3RhdGljIGludCBrdm1fcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE2NTktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpvbGQsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE4ODY9c3RhdGljIGludCBrdm1fc2V0X21lbXNsb3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xOTMxLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTkzMjpcXHRyID0ga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbihrdm0sIG9sZCwgbmV3LCBjaGFuZ2UpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTkzMy1cXHRpZiAocikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo0OS45MjY2OTAwNjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNTI5ODgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEltcGxpY2F0aW9uIG9mIGEgU3RhdGljIEZ1bmN0aW9uKipcblxuT2theSwgc28gYGt2bV9zZXRfbWVtc2xvdGAgaXMgZGVmaW5lZCBhcyBzdGF0aWMuIFJpZ2h0IGF3YXksIHRoYXQgdHJpZ2dlcnMgc29tZSBzcGVjaWZpYyBjb25zaWRlcmF0aW9ucyBpbiBteSBtaW5kLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoYXQga2V5d29yZCwgYHN0YXRpY2AsIGFyZSBwcmV0dHkgY2xlYXIsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBleHBsaWNpdCBhYm91dCB0aGVtLCBhcyBpdCBoYXMgcmFtaWZpY2F0aW9ucyBvbiBob3cgdGhlIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFuZCB3aGF0IHRoZSBjb21waWxlciBjYW4gZG8gd2l0aCBpdC5cblxuRmlyc3QsIEkgcmVjYWxsIHRoYXQgYmVpbmcgc3RhdGljIG1lYW5zIGl0cyB2aXNpYmlsaXR5IGlzICpsaW1pdGVkKiB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIEluIG90aGVyIHdvcmRzLCBJIGNhbid0IGRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGNvZGUgaW4gKm90aGVyKiBzb3VyY2UgZmlsZXMgd2l0aGluIHRoZSBLVk0gcHJvamVjdCDigJMgaXQncyBsb2NhbC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgYXNwZWN0LlxuXG5TZWNvbmRseSwgYW5kIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgdGhlIGNvbXBpbGVyIHdpbGwgaGF2ZSBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG9wdGltaXphdGlvbi4gQmVjYXVzZSB0aGUgY29tcGlsZXIgKmtub3dzKiB0aGF0IHRoZSBmdW5jdGlvbiBjYW4ndCBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIGl0cyBzb3VyY2UgZmlsZSwgaXQncyBhYmxlIHRvIGlubGluZSBpdCBtb3JlIGFnZ3Jlc3NpdmVseSBpZiB0aGUgb3B0aW1pemF0aW9uIHNldHRpbmdzIGFyZSBoaWdoIGVub3VnaCwgd2hpY2ggd291bGQgYXZvaWQgZnVuY3Rpb24gY2FsbCBvdmVyaGVhZC4gSXQgYWxzbyByZWR1Y2VzIGxpbmthZ2Ugb3ZlcmhlYWQsIHJlZHVjaW5nIGJpbmFyeSBzaXplLlxuXG5Tbywgd2hlbiBJIHNlZSBgc3RhdGljYCwgSSBpbW1lZGlhdGVseSBiZWdpbiB0byBjb25zaWRlcjogd2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIGxpbWl0aW5nIGl0cyB2aXNpYmlsaXR5PyBJcyBpdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCAqc2hvdWxkbid0KiBiZSBleHBvc2VkIGV4dGVybmFsbHk/IE9yIGlzIGl0IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uPyBPciBwZXJoYXBzIGEgY29tYmluYXRpb24gb2YgdGhlIHR3bz8gQW5kIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgdGhpcyBhZmZlY3RzIG1haW50YWluYWJpbGl0eSBhbmQgcG90ZW50aWFsIGZ1dHVyZSByZWZhY3RvcmluZy4gSSdkIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbnRleHQgb2YgaXRzIHVzZSB3aXRoaW4gdGhlIEtWTSBjb2RlYmFzZSB0byBkZXRlcm1pbmUgdGhlIG1vdGl2YXRpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjUzLjg1MTk5MjQ2NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3MDcyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NldF9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xNjAwPXN0YXRpYyB2b2lkIGt2bV9zd2FwX2FjdGl2ZV9tZW1zbG90cyhzdHJ1Y3Qga3ZtICprdm0sIGludCBhc19pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTYyNy1cXHQvKlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTYyODpcXHQgKiBBY3F1aXJlZCBpbiBrdm1fc2V0X21lbXNsb3QuIE11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHN5bmNocm9uaXplXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjI5LVxcdCAqIFNSQ1UgYmVsb3cgaW4gb3JkZXIgdG8gYXZvaWQgZGVhZGxvY2sgd2l0aCBhbm90aGVyIHRocmVhZFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xODczPXN0YXRpYyB2b2lkIGt2bV91cGRhdGVfZmxhZ3NfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODUtXFxudmlydC9rdm0va3ZtX21haW4uYzoxODg2OnN0YXRpYyBpbnQga3ZtX3NldF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4ODctXFx0XFx0XFx0ICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xOTk0PXN0YXRpYyBpbnQga3ZtX3NldF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA0OC1cXHQgKiBOb3RlLCB0aGUgb2xkIG1lbXNsb3QgKGFuZCB0aGUgcG9pbnRlciBpdHNlbGYhKSBtYXkgYmUgaW52YWxpZGF0ZWRcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIwNDk6XFx0ICogYW5kL29yIGRlc3Ryb3llZCBieSBrdm1fc2V0X21lbXNsb3QoKS5cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNTAtXFx0ICovXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIwNTktXFxudmlydC9rdm0va3ZtX21haW4uYzoyMDYwOlxcdFxcdHJldHVybiBrdm1fc2V0X21lbXNsb3Qoa3ZtLCBvbGQsIE5VTEwsIEtWTV9NUl9ERUxFVEUpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjA2MS1cXHR9XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMTItXFxudmlydC9rdm0va3ZtX21haW4uYzoyMTEzOlxcdHIgPSBrdm1fc2V0X21lbXNsb3Qoa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMTQtXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjUzLjg5NzcwMzU4M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI5NjIyOTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqU3RhdGljIEZ1bmN0aW9uIENoZWNrKipcblxuT2theSwgc28gYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAuLi4gaXMgaXQgZGVjbGFyZWQgYXMgYHN0YXRpY2A/IFRoYXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdC4gVGhlIGltcGxpY2F0aW9ucyBhcmUgc2lnbmlmaWNhbnQsIGFzIHN0YXRpYyBmdW5jdGlvbnMgaGF2ZSBsaW1pdGVkIHNjb3BlLCBhbmQgdGhhdCBjb250ZXh0IGlzIHBhcmFtb3VudCB3aGVuIHJlYXNvbmluZyBhYm91dCB0aGUgYmVoYXZpb3Igb2YgS1ZNLiBJdCBkaWN0YXRlcyBob3cgYW5kIHdoZXJlIHRoZSBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkLCB3aGljaCwgaW4gdHVybiwgaW1wYWN0cyBtZW1vcnkgbWFuYWdlbWVudCB3aXRoaW4gdGhlIHZpcnR1YWwgbWFjaGluZS4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIHN0YXRpYyBuYXR1cmUgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBmdXJ0aGVyIGFuYWx5c2lzIG9yIGRlYnVnZ2luZyBzdGVwcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbi4gTGV0J3MgZGlnIGluIGFuZCBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM3OjU2LjgyNzMyOTgwOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMjA4NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3NldF9tZW1vcnlfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xOTgxPXN0YXRpYyBib29sIGt2bV9jaGVja19tZW1zbG90X292ZXJsYXAoc3RydWN0IGt2bV9tZW1zbG90cyAqc2xvdHMsIGludCBpZCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE5OTQ6c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTk5NS1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjEyNz1pbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzNS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxMzY6XFx0cmV0dXJuIGt2bV9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIG1lbSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjE0MD1zdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDYtXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0NzpcXHRyZXR1cm4ga3ZtX3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgbWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxNDgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozNzo1Ni44NzQ0NTg2OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyNjAzMDA4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudC4gVGhlIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIGZ1bmN0aW9uIGlzIHRoZSBpb2N0bCBoYW5kbGVyLCB3aGljaCBpcyBpbXBvcnRhbnQuIEZyb20gdGhlcmUgSSBzZWUgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQgbG9va3MgbGlrZSBpdCBjb3VsZCBiZSBhIGtleSBwb2ludCB0b28uIFRoYXQgdGVsbHMgbWUgdGhlc2UgYXJlIGxpa2VseSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzOiBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC5cblxuSG1tLCBob2xkIG9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgZWFjaC4gQWxyaWdodCwgbG9va3MgbGlrZSBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFyZSBhbHJlYWR5IG5vbi1zdGF0aWMuIFRoZSBpb2N0bCBoYW5kbGVyIGl0c2VsZiwgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAsICppcyogc3RhdGljLCBidXQgdGhhdCdzIHR5cGljYWwgZm9yIGlvY3RsIGhhbmRsZXJzLiBJdCdzIHVzdWFsbHkgZ29vZCB0byBjaGVjayBmb3IgcG90ZW50aWFsIG5hbWluZyBjb25mbGljdHMgaW4gdGhlIGlvY3RsIGl0c2VsZi4gV2FpdCwgYGt2bV92bV9pb2N0bGAgaXMgbm9uLXN0YXRpYyFcblxuT2theSwgdGltZSB0byBjaGVjayB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBJJ2xsIGNoZWNrIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIHdpdGhpbiBgdmlydC9rdm0va3ZtX21haW4uY2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MDEuNzAwNDkxNTA2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzUyNzQxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTIxMzg9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM5LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjE0MDpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTQxLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbjIgKm1lbSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0OD1zdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MjAyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcXHUwMDI2bWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjAxLjc0ODAyNzM1NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTQyODI2MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktWTSBNZW1vcnkgUmVnaW9uIEZvY3VzIFN5bWJvbCBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIGhhbmRsZWQgaW4gS1ZNIGFuZCBuZWVkIHRvIHBpY2sgc29tZSBnb29kIGZvY3VzIHN5bWJvbHMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGBrdm1fdm1faW9jdGxgIHdvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBiZWNhdXNlIGl0J3MgdGhlIGVudHJ5IHBvaW50LiBCdXQsIGhhbmcgb24sIGl0J3MgYSB2ZXJ5IGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gYXZvaWQgdGhvc2UgdG8gcHJldmVudCBiaWFzZWQgdGVzdCBkaXN0cmlidXRpb25zLiBUaGV5J3JlIG1vcmUgaW50ZXJlc3RlZCBpbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgcmF0aGVyIHRoYW4gaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuXG5cblNvLCBJIHRob3VnaHQgYWJvdXQgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIEl0J3Mgc3RhdGljLCBzbyBpdCAqbWlnaHQqIGJlIGlubGluZWQuIEkgbmVlZCB0byBiZSBjYXJlZnVsLiBMZXQncyBzdGFydCB3aXRoIGEgbGVzcyByaXNreSBhcHByb2FjaC5cblxuSSBzdGFydGVkIGxpc3RpbmcgcG9zc2libGUgZnVuY3Rpb25zOiBJIHRob3VnaHQgb2YgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAsIGJ1dCBpdCBpcyBhbiBpbnRlcm5hbCBLVk0gZnVuY3Rpb24sIHNvIHRoYXQgd29uJ3Qgd29yay4gSG93ZXZlciwgYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLCBhbmQgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCBsb29rIHByb21pc2luZy4gVGhleSBhcmUgbm9uLXN0YXRpYyBhbmQgc2VlbSBsaWtlIHRoZXkgZG8gdGhlIHJpZ2h0IHRoaW5nLlxuXG5UaGVuIEkgY2hlY2tlZCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGAuIFRoYXQncyBjYWxsZWQgZnJvbSBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBga3ZtX3NldF9tZW1vcnlfcmVnaW9uYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gdGhlIHN0YXRpYyBga3ZtX3ZtX2lvY3RsX3NldF9tZW1vcnlfcmVnaW9uYC4gSSBjYW4gdXNlIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIHNpbmNlIHRoYXQgaXMgYSBub24tc3RhdGljIEFQSS4gSSdtIHN0YXJ0aW5nIHRvIGdldCBhIGdvb2QgcGljdHVyZSBvZiB0aGUgY2FsbCBzdGFjayBub3cuXG5cbkFsc28sIEkgY2hlY2tlZCBvdXQgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGAuIFRoaXMgaXMgY2FsbGVkIGZyb20gYGt2bV9mcmVlX21lbXNsb3RgIGFuZCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBmcm9tIGBrdm1fc2V0X21lbXNsb3RgIGFuZCBga3ZtX2Rlc3Ryb3lfdm1gLiBJIHNob3VsZCBwcm9iYWJseSBpbnZlc3RpZ2F0ZSBga3ZtX2Rlc3Ryb3lfdm1gIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NjAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MDguMjkwODU3MjM1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTgxMzczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZGVzdHJveV92bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9OTY2PXN0YXRpYyB1bW9kZV90IGt2bV9zdGF0c19kZWJ1Z2ZzX21vZGUoY29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjICpkZXNjKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy05NzgtXFxudmlydC9rdm0va3ZtX21haW4uYzo5Nzk6c3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhzdHJ1Y3Qga3ZtICprdm0pXFxudmlydC9rdm0va3ZtX21haW4uYy05ODAte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz05OTc9c3RhdGljIGludCBrdm1fY3JlYXRlX3ZtX2RlYnVnZnMoc3RydWN0IGt2bSAqa3ZtLCBjb25zdCBjaGFyICpmZG5hbWUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwNjQtb3V0X2VycjpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEwNjU6XFx0a3ZtX2Rlc3Ryb3lfdm1fZGVidWdmcyhrdm0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA2Ni1cXHRyZXR1cm4gcmV0O1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xMDczPXZvaWQgX193ZWFrIGt2bV9hcmNoX3ByZV9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTA3OS0gKiBiZSBzZXR1cCBhbHJlYWR5LCBzbyB3ZSBjYW4gY3JlYXRlIGFyY2gtc3BlY2lmaWMgZGVidWdmcyBlbnRyaWVzIHVuZGVyIGl0LlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTA4MDogKiBDbGVhbnVwIHNob3VsZCBiZSBhdXRvbWF0aWMgZG9uZSBpbiBrdm1fZGVzdHJveV92bV9kZWJ1Z2ZzKCkgcmVjdXJzaXZlbHksIHNvXFxudmlydC9rdm0va3ZtX21haW4uYy0xMDgxLSAqIGEgcGVyLWFyY2ggZGVzdHJveSBpbnRlcmZhY2UgaXMgbm90IG5lZWRlZC5cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTIzMz1zdGF0aWMgdm9pZCBrdm1fZGVzdHJveV9kZXZpY2VzKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEyNTQ6c3RhdGljIHZvaWQga3ZtX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTI1NS17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEyNjAtXFx0a3ZtX3VldmVudF9ub3RpZnlfY2hhbmdlKEtWTV9FVkVOVF9ERVNUUk9ZX1ZNLCBrdm0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTI2MTpcXHRrdm1fZGVzdHJveV92bV9kZWJ1Z2ZzKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xMjYyLVxcdG11dGV4X2xvY2soXFx1MDAyNmt2bV9sb2NrKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTMyOD12b2lkIGt2bV9wdXRfa3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTMzMC1cXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZrdm0tXFx1MDAzZXVzZXJzX2NvdW50KSlcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEzMzE6XFx0XFx0a3ZtX2Rlc3Ryb3lfdm0oa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEzMzItfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz02MDk0PXN0YXRpYyBpbnQga3ZtX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjEwMi1cXHQgKiBUaGUgZGVidWdmcyBmaWxlcyBhcmUgYSByZWZlcmVuY2UgdG8gdGhlIGt2bSBzdHJ1Y3Qgd2hpY2hcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjYxMDM6ICAgICAgICAqIGlzIHN0aWxsIHZhbGlkIHdoZW4ga3ZtX2Rlc3Ryb3lfdm0gaXMgY2FsbGVkLiAga3ZtX2dldF9rdm1fc2FmZVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNjEwNC0gICAgICAgICogYXZvaWRzIHRoZSByYWNlIGJldHdlZW4gb3BlbiBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGRlYnVnZnMgZGlyZWN0b3J5LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODowOC4zMzY2NzY1NTNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyMTIwMzYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvYmxlbTpcblxuKipGb2N1c2luZyBpbiBvbiBLVk0gQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBLVk0gcmVzb3VyY2VzIGFyZSBjbGVhbmVkIHVwLiBga3ZtX2Rlc3Ryb3lfdm1gIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBsaW1pdHMgaXRzIHZpc2liaWxpdHkuIFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBrdm1fcHV0X2t2bWAgaXMgKm5vbiotc3RhdGljLiBUaGF0IG1ha2VzIGl0IGEgYmV0dGVyIGNhbmRpZGF0ZSBmb3IgYSBtb3JlIGdsb2JhbCBzeW1ib2wg4oCTIGl0J3MgcHJvYmFibHkgZXhwb3J0ZWQgYW5kIHVzZWQgbW9yZSBicm9hZGx5IGFjcm9zcyB0aGUgS1ZNIGNvZGViYXNlLiBUaGVyZWZvcmUsIGBrdm1fcHV0X2t2bWAgaXMgYSBnb29kIGZvY3VzIHN5bWJvbCBmb3IgZmlndXJpbmcgb3V0IHdoYXQncyBnb2luZyBvbi4gSSdsbCBzdGFydCB0aGVyZS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBjaGVjayBob3cgdGhlIGludGVybmFsIG1lbW9yeSBzbG90cyBhcmUgaGFuZGxlZC4gTGV0J3Mgc2VlIHdoYXQgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgZG9lcy4gVGhhdCBtaWdodCBwcm92aWRlIHNvbWUgdXNlZnVsIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MTIuMzU3ODgzMjY5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NDA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTE5OTQ9c3RhdGljIGludCBrdm1fc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTI2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjEyNzppbnQga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIxMjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3Qga3ZtX3VzZXJzcGFjZV9tZW1vcnlfcmVnaW9uMiAqbWVtKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM3LX1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxMzg6RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0yMTM5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoxMi40MDUzNDE0ODhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5NDI4OTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEtWTSBNZW1vcnkgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGlzLCBzdXJwcmlzaW5nbHksIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGludHVpdGlvbiBzYXlzIHRoaXMgbWVhbnMgaXQncyBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlLCB3aGljaCBiZWdzIHRoZSBxdWVzdGlvbiBvZiB3aHkgaXQncyBub3QgYmVpbmcgbGV2ZXJhZ2VkIG1vcmUgd2l0aGluIHRoZSBleGlzdGluZyBhcmNoaXRlY3R1cmUuIFxuXG5Ob3csIEknbSB0aGlua2luZyBJIHNob3VsZCBwcm9iYWJseSBkaXZlIGludG8gdGhlIGNvdW50ZXJwYXJ0LCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4gVGhlIHBhaXJpbmcgb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGxpa2VseSB0byBwcm92aWRlIGltcG9ydGFudCBjb250ZXh0LiBEb2VzIHRoZSB1c2UsIG9yIG5vbi11c2UsIG9mIHRoZSBgaW50ZXJuYWxfbWVtc2xvdGAgZnVuY3Rpb24gaGF2ZSByYW1pZmljYXRpb25zIG9uIGhvdyB0aGUgbWVtb3J5IHNsb3RzIGFyZSB1bHRpbWF0ZWx5IGZyZWVkPyBJIHdhbnQgdG8gbG9vayBmb3IgY2x1ZXMgYWJvdXQgb3duZXJzaGlwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyB0aGF0IG1pZ2h0IGFyaXNlIGZyb20gaW1wcm9wZXIgdXNlIG9yIGludGVncmF0aW9uIG9mIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ1MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjE2LjM5OTYzNDUyNloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MjI5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZnJlZV9tZW1zbG90XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz05MzU9c3RhdGljIHZvaWQga3ZtX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0MS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjk0MjpcXHRrdm1fYXJjaF9mcmVlX21lbXNsb3Qoa3ZtLCBzbG90KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTk0My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MTYuNDQ3MjYzOTk0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODQ2MDM2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgaXMgZ29pbmcgdG8gYmUgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhIGd1ZXN0J3MgbWVtb3J5IHJlZ2lvbiwgYmVmb3JlIEtWTSBoYW5kcyBpdCBvZmYgdG8gdGhlIE1NVS4gSSdtIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IHdoYXQgYXJjaGl0ZWN0dXJlIHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXMgdGhpcyB4ODYsIEFSTSwgUklTQy1WLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gd2lsbCBiZSByYWRpY2FsbHkgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSdzIG1lbW9yeSBtYW5hZ2VtZW50IGhhcmR3YXJlLlxuXG5NeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IHdoYXQncyB0aGUgcHVycG9zZSBvZiB0aGlzIHBhcnRpY3VsYXIgcmVnaW9uPyBJcyB0aGlzIGEgc3RhbmRhcmQgUkFNIHJlZ2lvbiwgYW4gSS9PIHJlZ2lvbiwgc29tZXRoaW5nIGZvciBNTUlPLCBvciBwZXJoYXBzIGEgc3BlY2lhbCBtZW1vcnkgdHlwZT8gVGhlIGFuc3dlcnMgd2lsbCBkaWN0YXRlIHdoaWNoIGFyY2hpdGVjdHVyYWwgbWVtb3J5IG1hcCBzZXR0aW5ncyBhcmUgYXBwbGllZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZsYWdzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwsIHdoaWNoIHdpbGwgZ2l2ZSBtZSBoaW50cyBhYm91dCB0aGUgcmVxdWlyZWQgbWVtb3J5IGF0dHJpYnV0ZXM6IHJlYWQvd3JpdGUvZXhlY3V0ZSBwZXJtaXNzaW9ucywgY2FjaGluZyBzZXR0aW5ncyAoZS5nLiwgd3JpdGUtYmFjaywgd3JpdGUtdGhyb3VnaCwgdW5jYWNoZWQpLCBhbmQgcG90ZW50aWFsbHkgd2hldGhlciB0aGlzIGlzIGEgc3BlY2lhbCBtZW1vcnkgcmVnaW9uIGZvciBkZXZpY2VzIG9yIHBlcmlwaGVyYWxzLlxuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHdoYXQgbG9ja2luZywgaWYgYW55LCBpcyB1c2VkIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBNZW1vcnkgcmVnaW9uIHNldHVwIGlzIGEgY3JpdGljYWwgc2VjdGlvbi4gUmFjZSBjb25kaXRpb25zIGhlcmUgd291bGQgYmUgY2F0YXN0cm9waGljLCBzbyBJIGV4cGVjdCBzb21lIGZvcm0gb2YgcHJvdGVjdGlvbiwgbGlrZWx5IGEgc3BpbmxvY2sgb3IgbXV0ZXgsIG1heWJlIGV2ZW4gYSByZWFkLWNvcHktdXBkYXRlIHNjaGVtZSBpZiBtdWx0aXBsZSB2Q1BVcyBuZWVkIGNvbmN1cnJlbnQgYWNjZXNzLlxuXG5JJ2xsIGJlIGxvb2tpbmcgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBwYWdlIHRhYmxlcy4gRG9lcyBpdCBkaXJlY3RseSBtb2RpZnkgdGhlbSwgb3IgZG9lcyBpdCBjYWxsIGludG8gb3RoZXIgS1ZNIGhlbHBlcnM/IFVuZGVyc3RhbmRpbmcgdGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5LiBBcmUgd2UgZGVhbGluZyB3aXRoIDItbGV2ZWwsIDMtbGV2ZWwsIG9yIDQtbGV2ZWwgcGFnZSB0YWJsZXM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggbmVzdGVkIHBhZ2luZz8gQXJlIHRoZXJlIGFueSBhZGRyZXNzIHNwYWNlIGlkZW50aWZpZXIgKEFTSUQpIGNvbnNpZGVyYXRpb25zP1xuXG5GaW5hbGx5LCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgaW1wb3J0YW50LiBXaGF0IGNhbiBnbyB3cm9uZyBkdXJpbmcgbWVtb3J5IHJlZ2lvbiBwcmVwYXJhdGlvbj8gSW52YWxpZCBwYXJhbWV0ZXJzLCBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLCBvciBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBhcmUgYWxsIHBvc3NpYmxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcG90ZW50aWFsIGVycm9ycyBhcmUgZGV0ZWN0ZWQgYW5kIGhhbmRsZWQgdG8gZW5zdXJlIHRoZSBWTSByZW1haW5zIGluIGEgY29uc2lzdGVudCBzdGF0ZSBhbmQgZG9lc24ndCBjcmFzaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4NDQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyMS4wMzE4NzExMDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTA4ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MTY1OD1zdGF0aWMgaW50IGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNjg2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTY4NzpcXHRyID0ga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKGt2bSwgb2xkLCBuZXcsIGNoYW5nZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xNjg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyMS4wODAzODY0MDNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1ODc5NDMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBhdCB0aGUgYXJjaGl0ZWN0dXJlIGxldmVsLiBXaGF0IHNwZWNpZmljIHRhc2tzIGRvZXMgaXQgaGFuZGxlIHdpdGhpbiB0aGUgS1ZNIG1lbW9yeSBtYW5hZ2VtZW50IHBpcGVsaW5lPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgaXRzIHJvbGUgaW4gdGhlIGNvbW1pdCBwaGFzZSBvZiBtZW1vcnkgcmVnaW9ucywgYnV0IEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciBpdCdzIHJlc3BvbnNpYmxlIGZvciB0aGluZ3MgbGlrZSBUTEIgZmx1c2hlcywgY2FjaGUgaW52YWxpZGF0aW9uLCBvciBldmVuIHBvdGVudGlhbGx5IGRlYWxpbmcgd2l0aCBoYXJkd2FyZS1zcGVjaWZpYyBwYWdlIHRhYmxlIG1hbmlwdWxhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBndWVzdCdzIGFyY2hpdGVjdHVyZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgY29udGV4dCBhbmQgYW55IHJlbGV2YW50IGFyY2hpdGVjdHVyZSBtYW51YWxzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGl0IGFsbCBmaXRzIHRvZ2V0aGVyLiBUaGUgZ29hbCBpcyB0byBkZXZlbG9wIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgcG9zc2libGUgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUwMSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjI0LjQzOTE4Mzg0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc1Mjg0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTE2OTY9c3RhdGljIHZvaWQga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTcxNy1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE3MTg6XFx0a3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oa3ZtLCBvbGQsIG5ldywgY2hhbmdlKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE3MTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjI0LjQ4NjcxNzkzN1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzIxMzgxOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb24gYW5kIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGtleSBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBMZXQncyBzZWUsIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBndWlkYW5jZSwgSSdtIHRoaW5raW5nOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YC4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgYGt2bV9wdXRfa3ZtYCwgYnV0IHRoYXQncyBhIGJpdCB0b28gZ2VuZXJpYywgaXNuJ3QgaXQ/XG5cblRoZW4gSSB0aG91Z2h0IGFib3V0IGBrdm1fdm1faW9jdGxgLCBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byB0aGUgVk0gZnVuY3Rpb25hbGl0eS4gQnV0LCBoYW5nIG9uLi4uIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhbnRzIHVzIHRvIGF2b2lkIHRob3NlIFwiZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMuXCIgYGt2bV92bV9pb2N0bGAgaXMgbW9yZSBvZiBhbiBpb2N0bCBoYW5kbGVyIGFueXdheSwgbm90IHJlYWxseSBhIGhvdC1wYXRoIGZ1bmN0aW9uIGFzIHN1Y2guIFNvLCBJJ2xsIHN0aWNrIHdpdGggdGhlIG9yaWdpbmFsIHNldC4gVGhleSBhcHBlYXIgdG8gYmUgbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMsIHdoaWNoLCBieSBpbXBsaWNhdGlvbiwgc2VlbSBmYXIgbW9yZSBhcHByb3ByaWF0ZS5cblxuTm93LCBsZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgY29ycmVjdCBjb25maWcgZGVwZW5kZW5jaWVzLiBJJ20gcHJldHR5IHN1cmUgd2UgbmVlZCBgQ09ORklHX0tWTWAgZW5hYmxlZCwgYW5kLCBqdXN0IHRvIGJlIHN1cmUsIEknbGwgZ28gYWhlYWQgYW5kIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjg3NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODoyOS44MDgxMDI0MTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzYxODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgzLVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5Mzpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNy1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6MjkuODUzODY5NzA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjE1MTk3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24uIFRoZSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBgS1ZNYCBpcyB0aGUgY29yZSwgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBpdGVtIHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuT2theSwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWcgb3B0aW9ucy4gQWgsIHllcywgdGhlcmUncyBgS1ZNX1g4NmAuIEl0J3MgbGlrZWx5IGFsc28gcmVxdWlyZWQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGFuIHg4NiBhcmNoaXRlY3R1cmUuIEdvb2QgdG8ga25vdy4gQnV0IGFnYWluLCBgS1ZNYCBpdHNlbGYgc3RpbGwgYXBwZWFycyB0byBiZSB0aGUgbW9zdCBmdW5kYW1lbnRhbCBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5UaW1lIHRvIGRpdmUgZGVlcGVyLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgdmlydC9rdm0vS2NvbmZpZ2AgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LiBUaGF0IHNob3VsZCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cgYWJvdXQgaG93IHRoaXMgaXMgc3RydWN0dXJlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLiBMZXQncyBzZWUgd2hhdCB0aGF0IGZpbGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ3MDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODozMy45NzUzOTI1NloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNzc4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL0tjb25maWctMy1cXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cXG52aXJ0L2t2bS9LY29uZmlnLTUtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNDItXFxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy00NS1cXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcXG52aXJ0L2t2bS9LY29uZmlnLTQ3LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxcbnZpcnQva3ZtL0tjb25maWc6NTA6Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXFxudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZz01OT1jb25maWcgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02MS1cXG52aXJ0L2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fVkZJT1xcbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NjU9Y29uZmlnIEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbi0tXFxudmlydC9rdm0vS2NvbmZpZy02Ny1cXG52aXJ0L2t2bS9LY29uZmlnOjY4OmNvbmZpZyBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy03MC1cXG52aXJ0L2t2bS9LY29uZmlnOjcxOmNvbmZpZyBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXFxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzMtXFxudmlydC9rdm0vS2NvbmZpZzo3NDpjb25maWcgS1ZNX0NPTVBBVFxcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9OTE9Y29uZmlnIEhBVkVfS1ZNX1BNX05PVElGSUVSXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxcbnZpcnQva3ZtL0tjb25maWc6OTQ6Y29uZmlnIEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctOTYtXFxudmlydC9rdm0vS2NvbmZpZzo5Nzpjb25maWcgS1ZNX0VMSURFX1RMQl9GTFVTSF9JRl9ZT1VOR1xcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxcbnZpcnQva3ZtL0tjb25maWc6MTAwOmNvbmZpZyBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMzpjb25maWcgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctMTA1LVxcbnZpcnQva3ZtL0tjb25maWc6MTA2OmNvbmZpZyBLVk1fR1VFU1RfTUVNRkRcXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODozNC4wMjE2ODAwNjlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA0NDA1NDgxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gTWVtb3J5IFJlZ2lvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gbWVtb3J5IHJlZ2lvbiBtYW5hZ2VtZW50IHdpdGhpbiBLVk0uIFRoZSBjb2RlIEknbSBmb2N1c2luZyBvbiBpcyBwcmltYXJpbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgdGVsbHMgbWUganVzdCBmb2N1c2luZyBvbiBgS1ZNYCBpcyBlbm91Z2ggZm9yIHRoZSBzZWFyY2guXG5cbkxldCdzIHNlZSB3aGF0IHN5bWJvbHMgYXJlIG9mIGludGVyZXN0IGhlcmU6IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYCwgYW5kIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiAgV2FpdCwgd2Fzbid0IGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIGludGVybmFsPyBSaWdodCwgaXQncyBub3QgZXhwb3NlZCBkaXJlY3RseSB0byB1c2Vyc3BhY2UuIFNvIHRoYXQgbWVhbnMgaXQgbWlnaHQgYmUgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIG90aGVyIGlvY3Rscy5cblxuTGV0J3MgcXVpY2tseSBjaGVjayBga3ZtX3ZtX2lvY3RsYC4gIFRoYXQncyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgaW9jdGxzLiBCdXQgdGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgaXQgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uISBJdCBpcyBub3QgYSBnb29kIGZvY3VzIGZ1bmN0aW9uLlxuXG5HaXZlbiB0aGF0LCBJIHRoaW5rIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YCwgYW5kIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAgYXJlIGdvb2QgZm9jYWwgcG9pbnRzLCBhbG9uZyB3aXRoIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLlxuXG5Ib2xkIG9uLi4uIEknbSByZW1pbmRlZCBga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgYGt2bV9zZXRfbWVtb3J5X3JlZ2lvbmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBXYWl0LCBhcmUgdGhvc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGV5IGFyZS4gU28gYWN0dWFsbHkgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgY2FsbGVkIGJ5IGBrdm1fc2V0X21lbW9yeV9yZWdpb25gIGFuZCBub3QgYnkgYGt2bV92bV9pb2N0bF9zZXRfbWVtb3J5X3JlZ2lvbmAuIFNvIEkgaGF2ZSB0byBmaW5kIHRoZSBjYWxsZXJzIG9mIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3NTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NDAuMDY1NzM5MDA4WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTkxOTIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTMzNzE9dm9pZCBfX3VzZXIgKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3Qga3ZtICprdm0sIGludCBpZCwgZ3BhX3QgZ3BhLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDEyLVxcdFxcdG0ubWVtb3J5X3NpemUgPSBzaXplO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQxMzpcXHRcXHRyID0ga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90KGt2bSwgXFx1MDAyNm0pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQxNC1cXHRcXHRpZiAociBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjQwLjExMTY2NjcxN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjU2MzE1MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBLVk0gTWVtb3J5IE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgbWVtb3J5IHJlZ2lvbiBzZXR1cCBpbiBLVk0uIEl0IGxvb2tzIGxpa2UgYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgZnJvbSBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLiBUaGF0IG1ha2VzIHNlbnNlLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgbmV4dCBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBlbnRyeSBwb2ludHMgYXJlIHRoZXJlIHRvIGNvbmZpZ3VyZSBtZW1vcnk/IEknbSBzcGVjaWZpY2FsbHkgY3VyaW91cyBhYm91dCBob3cgYGt2bV92bV9pb2N0bGAgbWlnaHQgaW50ZXJhY3QgaGVyZS4gSXQncyBhIGZ1bmRhbWVudGFsIGlvY3RsIGhhbmRsZXIsIHNvIGl0J3MgbGlrZWx5IGludm9sdmVkIHNvbWVob3cuIExldCdzIGRpZyBpbnRvIGBrdm1fdm1faW9jdGxgJ3MgZGVmaW5pdGlvbiB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIGNhbGxpbmcgb3IgY29vcmRpbmF0aW5nIHdpdGggdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zLiBJIHNob3VsZCBmaW5kIGl0cyBkZWZpbml0aW9uIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYXMgdGhlIGNlbnRyYWwgS1ZNIG1vZHVsZS4gTGV0J3Mgc2VlIHdoYXQncyBnb2luZyBvbiBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4NzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODo0Ny43Njc5ODUyNzFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzE0ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV92bV9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9MTQxNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX3VubG9ja19hbGxfdmNwdXMpO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0xNDE4LSAqIEFsbG9jYXRpb24gc2l6ZSBpcyB0d2ljZSBhcyBsYXJnZSBhcyB0aGUgYWN0dWFsIGRpcnR5IGJpdG1hcCBzaXplLlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTQxOTogKiBTZWUga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coKSB3aHkgdGhpcyBpcyBuZWVkZWQuXFxudmlydC9rdm0va3ZtX21haW4uYy0xNDIwLSAqL1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0yMTM4PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2V0X2ludGVybmFsX21lbXNsb3QpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjEzOS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIxNDA6c3RhdGljIGludCBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjE0MS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24yICptZW0pXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTIyMjE9c3RhdGljIGludCBrdm1fZ2V0X2RpcnR5X2xvZ19wcm90ZWN0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjI5My0vKipcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjIyOTQ6ICoga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2cgLSBnZXQgYW5kIGNsZWFyIHRoZSBsb2cgb2YgZGlydHkgcGFnZXMgaW4gYSBzbG90XFxudmlydC9rdm0va3ZtX21haW4uYy0yMjk1LSAqIEBrdm06IGt2bSBpbnN0YW5jZVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0yMzExLSAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6MjMxMjpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9nZXRfZGlydHlfbG9nKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTIzMTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bV9kaXJ0eV9sb2cgKmxvZylcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MjMzMT1zdGF0aWMgaW50IGt2bV9jbGVhcl9kaXJ0eV9sb2dfcHJvdGVjdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTI0MDYtXFxudmlydC9rdm0va3ZtX21haW4uYzoyNDA3OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NsZWFyX2RpcnR5X2xvZyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yNDA4LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBrdm1fY2xlYXJfZGlydHlfbG9nICpsb2cpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTI1Mzc9c3RhdGljIGludCBrdm1fdm1fc2V0X21lbV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSwgZ2ZuX3Qgc3RhcnQsIGdmbl90IGVuZCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMjU5OC19XFxudmlydC9rdm0va3ZtX21haW4uYzoyNTk5OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX3NldF9tZW1fYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0va3ZtX21haW4uYy0yNjAwLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fbWVtb3J5X2F0dHJpYnV0ZXMgKmF0dHJzKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0zOTYwPXZvaWQga3ZtX3ZjcHVfb25fc3BpbihzdHJ1Y3Qga3ZtX3ZjcHUgKm1lLCBib29sIHlpZWxkX3RvX2tlcm5lbF9tb2RlKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy0zOTcwLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6Mzk3MTpcXHQvKiBQYWlycyB3aXRoIHRoZSBzbXBfd21iKCkgaW4ga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkuICovXFxudmlydC9rdm0va3ZtX21haW4uYy0zOTcyLVxcdHNtcF9ybWIoKTtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NDEzMT1zdGF0aWMgdm9pZCBrdm1fY3JlYXRlX3ZjcHVfZGVidWdmcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTEtICovXFxudmlydC9rdm0va3ZtX21haW4uYzo0MTUyOnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQxNTMte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz00Mzc5PXN0YXRpYyBpbnQga3ZtX3dhaXRfZm9yX3ZjcHVfb25saW5lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDM5MS1cXHQgKiBBY3F1aXJlIGFuZCByZWxlYXNlIHRoZSB2Q1BVJ3MgbXV0ZXggdG8gd2FpdCBmb3IgdkNQVSBjcmVhdGlvbiB0b1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NDM5MjpcXHQgKiBjb21wbGV0ZSAoa3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KCkgaG9sZHMgdGhlIG11dGV4IHVudGlsIHRoZSB2Q1BVXFxudmlydC9rdm0va3ZtX21haW4uYy00MzkzLVxcdCAqIGlzIGZ1bGx5IG9ubGluZSkuXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTQ4MDU9c3RhdGljIGludCBrdm1faW9jdGxfY3JlYXRlX2RldmljZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ4NjMtXFxudmlydC9rdm0va3ZtX21haW4uYzo0ODY0OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKHN0cnVjdCBrdm0gKmt2bSwgbG9uZyBhcmcpXFxudmlydC9rdm0va3ZtX21haW4uYy00ODY1LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDkzNy1cXHR9XFxudmlydC9rdm0va3ZtX21haW4uYzo0OTM4OlxcdHJldHVybiBrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uKGt2bSwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTQ5MzktfVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk0MC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ5NDE6c3RhdGljIGludCBrdm1fdm1faW9jdGxfZW5hYmxlX2RpcnR5X2xvZ19yaW5nKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHNpemUpXFxudmlydC9rdm0va3ZtX21haW4uYy00OTQyLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk3OC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjQ5Nzk6c3RhdGljIGludCBrdm1fdm1faW9jdGxfcmVzZXRfZGlydHlfcGFnZXMoc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNDk4MC17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUwMDMtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MDA0OmludCBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAwNS1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBrdm1fZW5hYmxlX2NhcCAqY2FwKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01MDIzPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fYXJlX2FsbF9tZW1zbG90c19lbXB0eSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MDI0LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTAyNTpzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoc3RydWN0IGt2bSAqa3ZtLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTAyNi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qga3ZtX2VuYWJsZV9jYXAgKmNhcClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2MC1cXHRjYXNlIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjE6XFx0XFx0aWYgKCFrdm1fdm1faW9jdGxfY2hlY2tfZXh0ZW5zaW9uX2dlbmVyaWMoa3ZtLCBjYXAtXFx1MDAzZWNhcCkpXFxudmlydC9rdm0va3ZtX21haW4uYy01MDYyLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2My1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUwNjQ6XFx0XFx0cmV0dXJuIGt2bV92bV9pb2N0bF9lbmFibGVfZGlydHlfbG9nX3Jpbmcoa3ZtLCBjYXAtXFx1MDAzZWFyZ3NbMF0pO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA2NS1cXHRjYXNlIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfV0lUSF9CSVRNQVA6IHtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA4OC1cXHRkZWZhdWx0OlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTA4OTpcXHRcXHRyZXR1cm4ga3ZtX3ZtX2lvY3RsX2VuYWJsZV9jYXAoa3ZtLCBjYXApO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTA5MC1cXHR9XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMga3ZtX3ZtX3N0YXRzX2ZvcHMgPSB7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxMTctXFxudmlydC9rdm0va3ZtX21haW4uYzo1MTE4OnN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2dldF9zdGF0c19mZChzdHJ1Y3Qga3ZtICprdm0pXFxudmlydC9rdm0va3ZtX21haW4uYy01MTE5LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTE0MT1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MTQ3LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTE0ODpzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxudmlydC9rdm0va3ZtX21haW4uYy01MTQ5LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNTgtXFx0Y2FzZSBLVk1fQ1JFQVRFX1ZDUFU6XFxudmlydC9rdm0va3ZtX21haW4uYzo1MTU5OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoa3ZtLCBhcmcpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2MC1cXHRcXHRicmVhaztcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTE2Ni1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUxNjc6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwX2dlbmVyaWMoa3ZtLCBcXHUwMDI2Y2FwKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUxNjgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDEtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MjAyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb24oa3ZtLCBcXHUwMDI2bWVtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMDMtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMTAtXFx0XFx0XFx0Z290byBvdXQ7XFxudmlydC9rdm0va3ZtX21haW4uYzo1MjExOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X2RpcnR5X2xvZyhrdm0sIFxcdTAwMjZsb2cpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIxMi1cXHRcXHRicmVhaztcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTIyMC1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyMjE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcXHUwMDI2bG9nKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMjItXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyMzEtXFx0XFx0XFx0Z290byBvdXQ7XFxudmlydC9rdm0va3ZtX21haW4uYzo1MjMyOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcXHUwMDI2em9uZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MjMzLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MjQwLVxcdFxcdFxcdGdvdG8gb3V0O1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI0MTpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX3VucmVnaXN0ZXJfY29hbGVzY2VkX21taW8oa3ZtLCBcXHUwMDI2em9uZSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MjQyLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01MjgyLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI4MzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2lycV9saW5lKGt2bSwgXFx1MDAyNmlycV9ldmVudCxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyODQtXFx0XFx0XFx0XFx0XFx0aW9jdGwgPT0gS1ZNX0lSUV9MSU5FX1NUQVRVUyk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzYtXFxudmlydC9rdm0va3ZtX21haW4uYzo1MzM3OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfc2V0X21lbV9hdHRyaWJ1dGVzKGt2bSwgXFx1MDAyNmF0dHJzKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzMzgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNTktXFx0Y2FzZSBLVk1fQ0hFQ0tfRVhURU5TSU9OOlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTM2MDpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKGt2bSwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUzNjEtXFx0XFx0YnJlYWs7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzYyLVxcdGNhc2UgS1ZNX1JFU0VUX0RJUlRZX1JJTkdTOlxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTM2MzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX3Jlc2V0X2RpcnR5X3BhZ2VzKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzY0LVxcdFxcdGJyZWFrO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTM2NS1cXHRjYXNlIEtWTV9HRVRfU1RBVFNfRkQ6XFxudmlydC9rdm0va3ZtX21haW4uYzo1MzY2OlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfZ2V0X3N0YXRzX2ZkKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01MzY3LVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NDEzPXN0YXRpYyBsb25nIGt2bV92bV9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NDAtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NDQxOlxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXFx1MDAyNmxvZyk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NDQyLVxcdFxcdGJyZWFrO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NDU2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTQ1NzpcXHRcXHRyID0ga3ZtX3ZtX2lvY3RsX2dldF9kaXJ0eV9sb2coa3ZtLCBcXHUwMDI2bG9nKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NTgtXFx0XFx0YnJlYWs7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjAtXFx0ZGVmYXVsdDpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0NjE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bChmaWxwLCBpb2N0bCwgYXJnKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU0NjItXFx0fVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NDY3PXN0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGt2bV92bV9mb3BzID0ge1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ2OC1cXHQucmVsZWFzZSAgICAgICAgPSBrdm1fdm1fcmVsZWFzZSxcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU0Njk6XFx0LnVubG9ja2VkX2lvY3RsID0ga3ZtX3ZtX2lvY3RsLFxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTQ3MC1cXHQubGxzZWVrXFx0XFx0PSBub29wX2xsc2VlayxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTUyMz1zdGF0aWMgbG9uZyBrdm1fZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NTM3LVxcdGNhc2UgS1ZNX0NIRUNLX0VYVEVOU0lPTjpcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU1Mzg6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb25fZ2VuZXJpYyhOVUxMLCBhcmcpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTUzOS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NDcuODE0NzA2MjhaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU4NzA0OTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIHRocm91Z2ggdGhpcyBLVk0gY29kZSwgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZW50cnkgcG9pbnRzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIklzIGBrdm1fdm1faW9jdGxgIHN0YXRpYz9cIiBCZWNhdXNlIGlmIGl0ICppcyogc3RhdGljLCB0aGVuIGl0J3MgcHJvYmFibHkgbm90IHRoZSBiZXN0IHN5bWJvbCB0byBmb2N1cyBvbiB3aGVuIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIG92ZXJhbGwgZmxvdy4gQWhhISBJdCAqaXMqIGRlY2xhcmVkIGFzIGBzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpYC4gVGhhdCdzIHRoYXQuIFNvIGl0J3Mgc3RhdGljLCBidXQgdGhlbiBpdCdzIGFzc2lnbmVkIHRvIGAudW5sb2NrZWRfaW9jdGwgPSBrdm1fdm1faW9jdGxgLiBSaWdodCwgdGhhdCBtYWtlcyBpdCBhbiBlbnRyeSBwb2ludC4gSXQncyBhIGJpdCBvZiBhIHRyaWNrLCBzaW5jZSBpdCBpcyBzdGF0aWMsIEkgbWlnaHQgd2FudCB0byBmaW5kIG90aGVyIGZ1bmN0aW9ucyB3aGljaCBhcmUgbm90IHN0YXRpYy5cblxuU28sIHNpbmNlIGBrdm1fdm1faW9jdGxgIGlzIHN0YXRpYywgSSBuZWVkIHRvIGxvb2sgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBMZXQncyBzZWUuLi4gd2hhdCBhYm91dCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYD8gVGhhdCBvbmUgbG9va3Mgbm9uLXN0YXRpYy4gR29vZC4gQW5kIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgPyBOb24tc3RhdGljIGFnYWluLiBQZXJmZWN0LiBBbmQgdGhlIGZvbGxvd2luZyBhcmUgYWxzbyBub24tc3RhdGljLCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFuZCBgX194ODZfc2V0X21lbW9yeV9yZWdpb25gLiBOb3cgbGV0J3MgZGl2ZSBpbnRvIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDMzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjUyLjQwMTc1OTA5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQzNDk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jPTI5MDE9aW50IGt2bV9hbGxvY19hcGljX2FjY2Vzc19wYWdlKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MTAtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6MjkxMTpcXHRodmEgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIEFQSUNfQUNDRVNTX1BBR0VfUFJJVkFURV9NRU1TTE9ULFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MTItXFx0XFx0XFx0XFx0ICAgICAgQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSwgUEFHRV9TSVpFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTI5MjI9dm9pZCBrdm1faW5oaWJpdF9hcGljX2FjY2Vzc19wYWdlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzMtXFx0aWYgKGt2bS1cXHUwMDNlYXJjaC5hcGljX2FjY2Vzc19tZW1zbG90X2VuYWJsZWQpIHtcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoyOTM0OlxcdFxcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsIDAsIDApO1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTI5MzUtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9NDAxMD1zdGF0aWMgaW50IGluaXRfcm1vZGVfaWRlbnRpdHlfbWFwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNDAyNS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjQwMjY6XFx0dWFkZHIgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy00MDI3LVxcdFxcdFxcdFxcdFxcdElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jPTUyNTQ9aW50IHZteF9zZXRfdHNzX2FkZHIoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgYWRkcilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtNTI2MS1cXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbmFyY2gveDg2L2t2bS92bXgvdm14LmM6NTI2MjpcXHRyZXQgPSBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIGFkZHIsXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy01MjYzLVxcdFxcdFxcdFxcdCAgICAgIFBBR0VfU0laRSAqIDMpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzMjc2PWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzQ5LS8qKlxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzM1MDogKiBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbjogU2V0dXAgS1ZNIGludGVybmFsIG1lbW9yeSBzbG90XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMzUxLSAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzAtICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzMzcxOnZvaWQgX191c2VyICogX194ODZfc2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLCBpbnQgaWQsIGdwYV90IGdwYSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMzNzItXFx0XFx0XFx0XFx0ICAgICAgdTMyIHNpemUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0MjItfVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQyMzpFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoX194ODZfc2V0X21lbW9yeV9yZWdpb24pO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQyNC1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0xMzQ0MT12b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDQ5LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDUwOlxcdFxcdF9feDg2X3NldF9tZW1vcnlfcmVnaW9uKGt2bSwgQVBJQ19BQ0NFU1NfUEFHRV9QUklWQVRFX01FTVNMT1QsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDUxLVxcdFxcdFxcdFxcdFxcdDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ1MjpcXHRcXHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIElERU5USVRZX1BBR0VUQUJMRV9QUklWQVRFX01FTVNMT1QsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNDUzLVxcdFxcdFxcdFxcdFxcdDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzoxMzQ1NDpcXHRcXHRfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbihrdm0sIFRTU19QUklWQVRFX01FTVNMT1QsIDAsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYy0xMzQ1NS1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM4OjUyLjQ0OTIwMDM2OVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwNTI3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBtZW1vcnkgcmVnaW9ucyBhcmUgaGFuZGxlZCB3aXRoaW4gdGhlIEtWTSBzeXN0ZW0sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBtaWdodCBiZSBhIGtleSBmdW5jdGlvbiwgc2luY2UgaXQncyBleHBvcnRlZC4gSSBpbml0aWFsbHkgY29uc2lkZXJlZCBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gIGFzIHBvdGVudGlhbCBmb2N1cyBwb2ludHMsIGFsb25nIHdpdGggdGhlIGFmb3JlbWVudGlvbmVkIGBfX3g4Nl9zZXRfbWVtb3J5X3JlZ2lvbmAuXG5cbkJ1dCB0aGVuIEkgcmVhbGl6ZWQgYF9feDg2X3NldF9tZW1vcnlfcmVnaW9uYCBpcyBzcGVjaWZpYyB0byAqaW50ZXJuYWwqIG1lbW9yeSBzbG90cy4gSG1tLCB0aGF0J3Mgbm90IHdoYXQgSSBuZWVkIHRvIGZvY3VzIG9uLiBXaGF0IGFib3V0IHRoZSB1c2VyIG1lbW9yeSByZWdpb25zPyBUaG9zZSBhcmUgc2V0IHVzaW5nIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gLiBTaG9vdCwgdGhhdCdzIHN0YXRpYywgc28gaXQncyBvZmYgdGhlIHRhYmxlIGZvciBteSBwdXJwb3Nlcy4gSSB0aG91Z2h0IG1heWJlIEkgY291bGQgdXNlIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgIHNpbmNlIGl0IGlzIGV4cG9ydGVkLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQncyBhbHNvIGp1c3QgZm9yIGludGVybmFsIG1lbXNsb3RzLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2suIGBrdm1fdm1faW9jdGxfc2V0X21lbW9yeV9yZWdpb25gIGNhbGxzIGBrdm1fc2V0X21lbW9yeV9yZWdpb25gLCB3aGljaCBpcyBhbHNvIHN0YXRpYy4gSSBuZWVkIGEgKm5vbi1zdGF0aWMqIGZ1bmN0aW9uIGFsb25nIHRoYXQgZXhlY3V0aW9uIHBhdGguIEFoYSEgSGVyZSB3ZSBnby4uLiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCBpcyBjYWxsZWQgZm9yICphbGwqIG1lbW9yeSByZWdpb25zLCBib3RoIGludGVybmFsIGFuZCB1c2VyLiBUaGF0J3MgZXhhY3RseSB3aGF0IEkgbmVlZC4gSXTigJlzIHBlcmZlY3QhXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayB0aGF0IGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGlzIGluZGVlZCBleHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4NTIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzg6NTguMTU5NzI5NTI4WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQyOTk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xMzU4OT12b2lkIGt2bV9hcmNoX21lbXNsb3RzX3VwZGF0ZWQoc3RydWN0IGt2bSAqa3ZtLCB1NjQgZ2VuKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNjA0LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxMzYwNTppbnQga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uKHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM2MDYtXFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqb2xkLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozODo1OC4yMDcxNjU4OTZaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc4MDU3NDgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgS1ZNIE1lbW9yeSBNYW5hZ2VtZW50IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIG9uIEtWTSBtZW1vcnkgbWFuYWdlbWVudC4gVGhlIGtleSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgc2hpZnQgZnJvbSBgX192Y2FsbG9jYC9gdmZyZWVgIHRvIGBrdmNhbGxvY2AvYGt2ZnJlZWAuIFRoZSBjb2RlIGlzbid0IGV4cG9ydGluZyB0aGVzZSBmdW5jdGlvbnMsIGJ1dCB0aGV5J3JlIG5vbi1zdGF0aWMsIHNvIHRoZXknbGwgaGF2ZSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAgYW5kIGBrdm1fYXJjaF9jb21taXRfbWVtb3J5X3JlZ2lvbmAuIEkganVzdCBjaGVja2VkIGFuZCB5ZXMsIGBrdm1fYWxsb2NfbWVtc2xvdF9tZXRhZGF0YWAgaXMgaW5kZWVkIHN0YXRpYywgc28gaXQncyBub3QgYSBwcmltYXJ5IGZvY3VzLlxuXG5UaGVyZWZvcmUsIG15IGF0dGVudGlvbiBpcyBvbiB0aGVzZSBzeW1ib2xzOiBga3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uYCwgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAsIGFuZCBga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkncmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYWZ0ZXIgdGhpcyBjaGFuZ2UuIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyDigJMgYEtWTWAgc2VlbXMgdG8gYmUgdGhlIHByaW1hcnkgb25lIGFmZmVjdGVkLlxuXG5UaGUgcmVhc29uaW5nIGJlaGluZCB0aGUgcGF0Y2ggaXMgY2xlYXI6IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBtZW1vcnkgYWxsb2NhdGlvbi4gSXQgc3dpdGNoZXMgZnJvbSBhIG1vcmUgZ2VuZXJpYyBhbGxvY2F0aW9uIGFwcHJvYWNoIHRvIG9uZSBzcGVjaWZpYyB0byB0aGUga2VybmVsLiBUaGlzIHJhaXNlcyB0aGUgcG9zc2liaWxpdHkgb2YgaW50cm9kdWNpbmcgbWVtb3J5IGxlYWtzLCBkYXRhIGNvcnJ1cHRpb24sIG9yIGNoYW5nZXMgaW4gaG93IGFsbG9jYXRpb25zIGJlaGF2ZSwgbGlrZSB0aGUgdm1hbGxvYyBmYWxsYmFjay4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCdzIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMgbGlrZSBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLCBzbyBpdCdzIGRpcmVjdGx5IGltcGFjdGluZyB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIEtWTS4gVGhhdCBzY3JlYW1zIGZvciBmdXp6aW5nIHRvIGNhdGNoIGVkZ2UgY2FzZXMuXG5cbk5vdywgYSBzbWFsbCBkZXRhaWwgSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQ6IGlzIGBrdmNhbGxvY2AgYSBtYWNybyBvciBhIGZ1bmN0aW9uPyBPa2F5LCBhIHF1aWNrIGNoZWNrIHJldmVhbHMgaXQncyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gYGluY2x1ZGUvbGludXgvc2xhYi5oYC4gSXQgYWN0dWFsbHkgY2FsbHMgYGt2bWFsbG9jX2FycmF5YC4gQmVjYXVzZSBpdCBpcyBzdGF0aWMgaW5saW5lLCBpdCB3b24ndCBiZSBhIHN5bWJvbCBpdHNlbGYuIEJ1dCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCBhcmUgc3RhdGljIChga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGluZyB0aG9zZSwgYW5kIHRodXMgaW5kaXJlY3RseSBpbnZvbHZlZCwgYXJlIGBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gIGFuZCBga3ZtX2FyY2hfZnJlZV9tZW1zbG90YC4gVGltZSB0byByZS1leGFtaW5lIGBrdm1fYXJjaF9mcmVlX21lbXNsb3RgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzczMCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOTowNC45ODc3NDM0OTVaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Mjg2MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTEzNDc0PXN0YXRpYyB2b2lkIG1lbXNsb3Rfcm1hcF9mcmVlKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNDg0OnZvaWQga3ZtX2FyY2hfZnJlZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdClcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTM0ODUte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTEzNzY1PXZvaWQga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb24oc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg1LVxcdGlmIChjaGFuZ2UgPT0gS1ZNX01SX01PVkUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzNzg2OlxcdFxcdGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChrdm0sIG9sZCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzNzg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMTQ6Mzk6MDUuMDM0MDM2MzU0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNjA3MjU2NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtWTSBNZW1vcnkgTWFuYWdlbWVudCBDaGFuZ2VzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBLVk0gY29kZSBhbmQgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbWVtb3J5IGFsbG9jYXRpb24gY2hhbmdlcy4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYGt2bV9hcmNoX2ZyZWVfbWVtc2xvdGAgaXMsIGluIGZhY3QsIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBzdGFydGluZyBwb2ludC4gTm93LCBsZXQncyB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBnZXQgYSBzZW5zZSBvZiB0aGUgc2NvcGUuXG5cbkkgc3RhcnRlZCBieSBsb29raW5nIGF0IGNhbGxlcnMgb2YgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgLiBUaGF0IGZ1bmN0aW9uJ3MgY2FsbGVkIGJ5IHRoZSBzdGF0aWMgYGt2bV9wcmVwYXJlX21lbW9yeV9yZWdpb25gLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IHRoZSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAuICBga3ZtX3NldF9tZW1zbG90YCBpcyBjYWxsZWQgYnkgdGhlIHN0YXRpYyBga3ZtX3NldF9tZW1vcnlfcmVnaW9uYCwgYnV0IHRoYXQgaXMgYWxzbyBjYWxsZWQgYnkgYW4gZXhwb3J0ZWQgZnVuY3Rpb24sIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiBUaGlzIG1lYW5zIHRoZSBsYXR0ZXIgaXMgb3VyIHBvaW50IG9mIGZvY3VzIGZvciB0aGlzIHBhdGguXG5cblRoZW4gSSBjaGVja2VkIG91dCBga3ZtX2Rlc3Ryb3lfZGlydHlfYml0bWFwYCBjYWxsZXJzLiBUaGF0IGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9mcmVlX21lbXNsb3RgLCBga3ZtX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmAsIGFuZCBga3ZtX2NvbW1pdF9tZW1vcnlfcmVnaW9uYC4gYGt2bV9mcmVlX21lbXNsb3RgIGlzIGNhbGxlZCBieSBzdGF0aWMgYGt2bV9zZXRfbWVtc2xvdGAgYW5kIGBrdm1fZGVzdHJveV92bWAuIGBrdm1fZGVzdHJveV92bWAgaXMgdGhlbiBjYWxsZWQgYnkgYGt2bV9wdXRfa3ZtYCwgd2hpY2ggaXMgKm5vbiotc3RhdGljLiBTbywgYGt2bV9wdXRfa3ZtYCBpcyBhIGdvb2QgZm9jdXMgc3ltYm9sLlxuXG5MZXQncyBsaXN0IHRoZSBzeW1ib2xzIGZvciBmb2N1cywgd2hpY2ggYXJlOlxuYGt2bV9hcmNoX3ByZXBhcmVfbWVtb3J5X3JlZ2lvbmBcbmBrdm1fYXJjaF9mcmVlX21lbXNsb3RgXG5ga3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25gXG5ga3ZtX3NldF9pbnRlcm5hbF9tZW1zbG90YFxuYGt2bV9wdXRfa3ZtYFxuXG5XYWl0LCBga3ZtX3B1dF9rdm1gIGlzIHZlcnkgZ2VuZXJpYywgaXQncyBjYWxsZWQgaW4gbWFueSBwbGFjZXMuXG5cbklzIHRoZXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgYGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcGA/IE5vLCBsZXQncyBrZWVwIGBrdm1fc2V0X2ludGVybmFsX21lbXNsb3RgLiAgU28sIHRoYXQgc2VlbXMgc29saWQuXG5cbkknbSBzZXR0bGluZyBvbjpcbmBrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25gXG5ga3ZtX2FyY2hfZnJlZV9tZW1zbG90YFxuYGt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uYFxuYGt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdGBcblxuVGhpcyBsb29rcyBnb29kLCBzbyBsZXQncyB3cml0ZSB1cCB0aGUgcmF0aW9uYWxlLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgYHZmcmVlYCB0byBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBpbiB0aGUgbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gVGhpcyBtZWFucyBhIHNoaWZ0IGluIGFsbG9jYXRpb24gYmVoYXZpb3IgdG8gcHJlZmVycmluZyBrbWFsbG9jICh3aXRoIHZtYWxsb2MgZmFsbGJhY2spLiAgVGhpcyBjb3VsZCBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgdGhlcmUgYXJlIGJ1Z3MuIFRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIHRocm91Z2ggYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYCBhbmQgb3RoZXIgS1ZNIGlvY3Rscy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gcmVjb21tZW5kIGZ1enppbmcgdG8gZW5zdXJlIHRoZSBuZXcgYWxsb2NhdGlvbiBsb2dpYyBoYW5kbGVzIGVkZ2UgY2FzZXMgYW5kIGxhcmdlIGFsbG9jYXRpb25zIHByb3Blcmx5LiBUaGUgYEtWTWAgY29uZmlnIGlzLCBvZiBjb3Vyc2UsIGEgcHJlLXJlcXVpc2l0ZS5cblxuTm93IEknbGwgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTQsIk91dHB1dFRva2VucyI6MjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM5OjE3LjY0MTI5NjczOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMDQzNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9wcmVwYXJlX21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9hcmNoX2ZyZWVfbWVtc2xvdFwiLFxuICAgIFwia3ZtX2FyY2hfY29tbWl0X21lbW9yeV9yZWdpb25cIixcbiAgICBcImt2bV9zZXRfaW50ZXJuYWxfbWVtc2xvdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGB2ZnJlZWAgd2l0aCBga3ZmcmVlYCBhbmQgYF9fdmNhbGxvY2Agd2l0aCBga3ZjYWxsb2NgIGluIEtWTSBtZW1vcnkgc2xvdCBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIHBhdGhzIChlLmcuLCBga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGFgLCBga3ZtX2FsbG9jX2RpcnR5X2JpdG1hcGApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgdGhhdCBhbHRlcnMgdGhlIGFsbG9jYXRpb24gYmVoYXZpb3IgKHByZWZlcnJpbmcga21hbGxvYyBhbmQgZmFsbGluZyBiYWNrIHRvIHZtYWxsb2MpIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgbWVtb3J5IGxlYWtzIG9yIGNvcnJ1cHRpb24gaWYgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgc3VjaCBhcyBgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT05gLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IGFsbG9jYXRpb24gbG9naWMgaGFuZGxlcyBlZGdlIGNhc2VzIGFuZCBsYXJnZSBhbGxvY2F0aW9ucyBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfcHJlcGFyZV9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fYXJjaF9mcmVlX21lbXNsb3RcIixcbiAgICBcImt2bV9hcmNoX2NvbW1pdF9tZW1vcnlfcmVnaW9uXCIsXG4gICAgXCJrdm1fc2V0X2ludGVybmFsX21lbXNsb3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdmZyZWVgIHdpdGggYGt2ZnJlZWAgYW5kIGBfX3ZjYWxsb2NgIHdpdGggYGt2Y2FsbG9jYCBpbiBLVk0gbWVtb3J5IHNsb3QgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBwYXRocyAoZS5nLiwgYGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhYCwgYGt2bV9hbGxvY19kaXJ0eV9iaXRtYXBgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG1lbW9yeSBtYW5hZ2VtZW50IHRoYXQgYWx0ZXJzIHRoZSBhbGxvY2F0aW9uIGJlaGF2aW9yIChwcmVmZXJyaW5nIGttYWxsb2MgYW5kIGZhbGxpbmcgYmFjayB0byB2bWFsbG9jKSBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSBsZWFrcyBvciBjb3JydXB0aW9uIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIHN1Y2ggYXMgYEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OYC4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBhbGxvY2F0aW9uIGxvZ2ljIGhhbmRsZXMgZWRnZSBjYXNlcyBhbmQgbGFyZ2UgYWxsb2NhdGlvbnMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToxNy43MjQzNTExMTZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTQzNTI2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToxNy43MjUwNTYxMjZaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzUxMzY0MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBhbmQgZnJlZWluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnksIGVuc3VyaW5nIHRoYXQgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmdWxseSBpbml0aWFsaXplZC4gU2luY2Ugbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgaW50cm9kdWNlZCBvciBleHBvc2VkIGJ5IHRoZXNlIGNoYW5nZXMsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzIChzdWNoIGFzIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgdXNlLWFmdGVyLWZyZWUpIHJlbGF0ZWQgdG8gdGhlc2UgYWxsb2NhdGlvbnMgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY0OWNlZmJiNDUyNTMyMWVhMjRiNjE1OWU3ZjBlNTQ1MGNjNDE5ODRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAxNDozNzoyNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggYWZjYWMxMDQyOTQ3YS4uNzc1NjdhYTIwZDgzOCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTM0ODgsNyArMTM0ODgsNyBAQCB2b2lkIGt2bV9hcmNoX2ZyZWVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QpXG4gXHRtZW1zbG90X3JtYXBfZnJlZShzbG90KTtcbiBcbiBcdGZvciAoaSA9IDE7IGkgXHUwMDNjIEtWTV9OUl9QQUdFX1NJWkVTOyArK2kpIHtcbi1cdFx0dmZyZWUoc2xvdC1cdTAwM2VhcmNoLmxwYWdlX2luZm9baSAtIDFdKTtcbitcdFx0a3ZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4gXHRcdHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSA9IE5VTEw7XG4gXHR9XG4gXG5AQCAtMTM1NDQsNyArMTM1NDQsNyBAQCBzdGF0aWMgaW50IGt2bV9hbGxvY19tZW1zbG90X21ldGFkYXRhKHN0cnVjdCBrdm0gKmt2bSxcbiBcbiBcdFx0bHBhZ2VzID0gX19rdm1fbW11X3Nsb3RfbHBhZ2VzKHNsb3QsIG5wYWdlcywgbGV2ZWwpO1xuIFxuLVx0XHRsaW5mbyA9IF9fdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuK1x0XHRsaW5mbyA9IGt2Y2FsbG9jKGxwYWdlcywgc2l6ZW9mKCpsaW5mbyksIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRcdGlmICghbGluZm8pXG4gXHRcdFx0Z290byBvdXRfZnJlZTtcbiBcbkBAIC0xMzU4MCw3ICsxMzU4MCw3IEBAIHN0YXRpYyBpbnQga3ZtX2FsbG9jX21lbXNsb3RfbWV0YWRhdGEoc3RydWN0IGt2bSAqa3ZtLFxuIFx0bWVtc2xvdF9ybWFwX2ZyZWUoc2xvdCk7XG4gXG4gXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBLVk1fTlJfUEFHRV9TSVpFUzsgKytpKSB7XG4tXHRcdHZmcmVlKHNsb3QtXHUwMDNlYXJjaC5scGFnZV9pbmZvW2kgLSAxXSk7XG4rXHRcdGt2ZnJlZShzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0pO1xuIFx0XHRzbG90LVx1MDAzZWFyY2gubHBhZ2VfaW5mb1tpIC0gMV0gPSBOVUxMO1xuIFx0fVxuIFx0cmV0dXJuIC1FTk9NRU07XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTAuLjUyYWYxZWJkZDE0YzIgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXG5AQCAtOTI3LDcgKzkyNyw3IEBAIHN0YXRpYyB2b2lkIGt2bV9kZXN0cm95X2RpcnR5X2JpdG1hcChzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90KVxuIFx0aWYgKCFtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcClcbiBcdFx0cmV0dXJuO1xuIFxuLVx0dmZyZWUobWVtc2xvdC1cdTAwM2VkaXJ0eV9iaXRtYXApO1xuK1x0a3ZmcmVlKG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKTtcbiBcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0gTlVMTDtcbiB9XG4gXG5AQCAtMTQyMiw3ICsxNDIyLDcgQEAgc3RhdGljIGludCBrdm1fYWxsb2NfZGlydHlfYml0bWFwKHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBkaXJ0eV9ieXRlcyA9IGt2bV9kaXJ0eV9iaXRtYXBfYnl0ZXMobWVtc2xvdCk7XG4gXG4tXHRtZW1zbG90LVx1MDAzZWRpcnR5X2JpdG1hcCA9IF9fdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbitcdG1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwID0ga3ZjYWxsb2MoMiwgZGlydHlfYnl0ZXMsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIW1lbXNsb3QtXHUwMDNlZGlydHlfYml0bWFwKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDE0OjM5OjE3LjcyNTA1NzU1NloiLCJTZXEiOjQ3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTEzNjE4NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIE5lZWRzIEFzc2Vzc21lbnQgZm9yIEtWTSBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgc3dhcDogYF9fdmNhbGxvY2AgdG8gYGt2Y2FsbG9jYCBhbmQgYHZmcmVlYCB0byBga3ZmcmVlYCBpbiBhIGNvdXBsZSBvZiBLVk0gZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgc2hvdWxkIGJlIHByZXR0eSBiZW5pZ24gZnJvbSBhIEtNU0FOIHBlcnNwZWN0aXZlLiBgX192Y2FsbG9jYCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBhbGxvY2F0ZXMgbWVtb3J5IHdpdGggYHZtYWxsb2NgIGFuZCBpbXBvcnRhbnRseSwgKnplcm9lcyogaXQuIFRoZSByZXBsYWNlbWVudCwgYGt2Y2FsbG9jYCwgaW50cm9kdWNlcyBhIGZhbGxiYWNrIHRvIGBrbWFsbG9jYCAodmlhIGBrdm1hbGxvY19hcnJheWAgd2l0aCBgX19HRlBfWkVST2ApLCB3aGljaCBjb3VsZCBiZSBhbiBvcHRpbWl6YXRpb24gZm9yIHNtYWxsZXIgYWxsb2NhdGlvbnMuIFRoZSBjcml0aWNhbCB0aGluZyBoZXJlIGlzIHRoYXQgKmt2Y2FsbG9jKiAqYWxzbyogemVyby1pbml0aWFsaXplcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhpcyBpcyB0aGUga2V5LlxuXG5TaW5jZSB0aGUgbWVtb3J5IGlzIGV4cGxpY2l0bHkgemVyb2VkIGluICpib3RoKiB0aGUgb2xkIGFuZCB0aGUgbmV3IHZlcnNpb25zLCB3ZSdyZSBub3QgaW50cm9kdWNpbmcgYW55IHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBkYXRhLCB3aGljaCBpcyB3aGF0IEtNU0FOIHdvdWxkIGJlIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCBpbiB0aGlzIGNvbnRleHQuIEkgY29uc2lkZXJlZCB0aGF0IGBfX3ZjYWxsb2NgIG1pZ2h0IGJlIGEgY3VzdG9tIGZ1bmN0aW9uLCBidXQgSSBjaGVja2VkIHRoZSBrZXJuZWwgY29kZSBhbmQgY29uZmlybWVkIGt2Y2FsbG9jIHplcm8taW5pdHMgdGhlIG1lbW9yeS5cblxuU28sIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhhdCBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEdvaW5nIHRvIGRvdWJsZSBjaGVjayBrdmNhbGxvYy4gWXVwLCBga3ZjYWxsb2Mobiwgc2l6ZSwgZmxhZ3MpYCBpcyBqdXN0IGEgd3JhcHBlciwgZXF1aXZhbGVudCB0byBga3ZtYWxsb2NfYXJyYXkobiwgc2l6ZSwgZmxhZ3MgfCBfX0dGUF9aRVJPKWAuIEFic29sdXRlbHkgY29ycmVjdCwgaXQgemVyby1pbml0aWFsaXplcy4gVGhlIG9sZCBjb2RlIHVzZWQgYF9fdmNhbGxvYyhscGFnZXMsIHNpemVvZigqbGluZm8pLCBHRlBfS0VSTkVMX0FDQ09VTlQpYCBhbmQgYF9fdmNhbGxvYygyLCBkaXJ0eV9ieXRlcywgR0ZQX0tFUk5FTF9BQ0NPVU5UKWAuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzLCB3aGljaCBhcmUgc3RpbGwgcG9zc2libGUsIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgSSdtIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fdmNhbGxvY2AgYW5kIGB2ZnJlZWAgd2l0aCBga3ZjYWxsb2NgIGFuZCBga3ZmcmVlYCBmb3IgYWxsb2NhdGluZyBLVk0gbWVtb3J5IHNsb3QgbWV0YWRhdGEgYW5kIGRpcnR5IGJpdG1hcHMuIGBrdmNhbGxvY2AgYWxsb2NhdGVzIHplcm9lZCBtZW1vcnkgKGp1c3QgbGlrZSBgX192Y2FsbG9jYCBkaWQpLCBzbyB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHVzZWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NCwiT3V0cHV0VG9rZW5zIjoxNTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQxNDozOToyNS4yMzg2Nzk3MDRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGBfX3ZjYWxsb2NgIGFuZCBgdmZyZWVgIHdpdGggYGt2Y2FsbG9jYCBhbmQgYGt2ZnJlZWAgZm9yIGFsbG9jYXRpbmcgYW5kIGZyZWVpbmcgS1ZNIG1lbW9yeSBzbG90IG1ldGFkYXRhIGFuZCBkaXJ0eSBiaXRtYXBzLiBga3ZjYWxsb2NgIGFsbG9jYXRlcyB6ZXJvZWQgbWVtb3J5LCBlbnN1cmluZyB0aGF0IHRoZSBhbGxvY2F0ZWQgYnVmZmVycyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQuIFNpbmNlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludHJvZHVjZWQgb3IgZXhwb3NlZCBieSB0aGVzZSBjaGFuZ2VzLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyAoc3VjaCBhcyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIHVzZS1hZnRlci1mcmVlKSByZWxhdGVkIHRvIHRoZXNlIGFsbG9jYXRpb25zIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgX192Y2FsbG9jYCBhbmQgYHZmcmVlYCB3aXRoIGBrdmNhbGxvY2AgYW5kIGBrdmZyZWVgIGZvciBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIEtWTSBtZW1vcnkgc2xvdCBtZXRhZGF0YSBhbmQgZGlydHkgYml0bWFwcy4gYGt2Y2FsbG9jYCBhbGxvY2F0ZXMgemVyb2VkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgYWxsb2NhdGVkIGJ1ZmZlcnMgYXJlIGZ1bGx5IGluaXRpYWxpemVkLiBTaW5jZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQgYnkgdGhlc2UgY2hhbmdlcywgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgKHN1Y2ggYXMgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciB1c2UtYWZ0ZXItZnJlZSkgcmVsYXRlZCB0byB0aGVzZSBhbGxvY2F0aW9ucyB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[1] Phase: Succeeded StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 14:39:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 14:39:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2] Phase: Succeeded StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 14:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 14:39:35 +0000 UTC FinishedAt: 2026-08-15 14:39:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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-workflowchrb7/series-workflowchrb7-convert-artifact-2694574199/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 14:39:46 +0000 UTC FinishedAt: 2026-08-15 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 14:39:46 +0000 UTC FinishedAt: 2026-08-15 14:56:36 +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:*7070dc74-3cb6-4dea-b65e-5e83c7ffaa33,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-workflowchrb7/series-workflowchrb7-convert-artifact-2694574199/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": "3fed8e9e-20eb-4e4d-99f0-96f8b591ba96", "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-workflowchrb7/series-workflowchrb7-build-action-3695280845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 14:39:46 +0000 UTC FinishedAt: 2026-08-15 14:56:26 +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:*7070dc74-3cb6-4dea-b65e-5e83c7ffaa33,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-workflowchrb7/series-workflowchrb7-convert-artifact-2694574199/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": "3fed8e9e-20eb-4e4d-99f0-96f8b591ba96", "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-workflowchrb7/series-workflowchrb7-build-action-3695280845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 14:56:36 +0000 UTC FinishedAt: 2026-08-15 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 14:56:36 +0000 UTC FinishedAt: 2026-08-15 14:56:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 14:56:36 +0000 UTC FinishedAt: 2026-08-15 14:56:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 14:56:36 +0000 UTC FinishedAt: 2026-08-15 14:56:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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-workflowchrb7/series-workflowchrb7-convert-artifact-780997798/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 14:56:47 +0000 UTC FinishedAt: 2026-08-15 14:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 14:56:47 +0000 UTC FinishedAt: 2026-08-15 14:58:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3fed8e9e-20eb-4e4d-99f0-96f8b591ba96,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-workflowchrb7/series-workflowchrb7-build-action-3695280845/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-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 14:58:24 +0000 UTC FinishedAt: 2026-08-15 14:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 14:58:24 +0000 UTC FinishedAt: 2026-08-15 14:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 14:58:24 +0000 UTC FinishedAt: 2026-08-15 15:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 14:58:24 +0000 UTC FinishedAt: 2026-08-15 15:15:18 +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:*7070dc74-3cb6-4dea-b65e-5e83c7ffaa33,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-workflowchrb7/series-workflowchrb7-convert-artifact-780997798/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": "49a86175-038c-4df0-98b7-67bff35e9165", "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-workflowchrb7/series-workflowchrb7-build-action-1599877738/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 14:58:24 +0000 UTC FinishedAt: 2026-08-15 15:15:08 +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:*7070dc74-3cb6-4dea-b65e-5e83c7ffaa33,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-workflowchrb7/series-workflowchrb7-convert-artifact-780997798/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": "49a86175-038c-4df0-98b7-67bff35e9165", "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-workflowchrb7/series-workflowchrb7-build-action-1599877738/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 15:15:18 +0000 UTC FinishedAt: 2026-08-15 15:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 15:15:18 +0000 UTC FinishedAt: 2026-08-15 15:15:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 15:15:18 +0000 UTC FinishedAt: 2026-08-15 15:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 15:15:18 +0000 UTC FinishedAt: 2026-08-15 15:17:15 +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:*49a86175-038c-4df0-98b7-67bff35e9165,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-workflowchrb7/series-workflowchrb7-build-action-1599877738/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-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"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:*3fed8e9e-20eb-4e4d-99f0-96f8b591ba96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49a86175-038c-4df0-98b7-67bff35e9165,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-workflowchrb7/series-workflowchrb7-build-action-3695280845/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-workflowchrb7/series-workflowchrb7-build-action-1599877738/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 15:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 15:17:30 +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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"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-workflowchrb7/series-workflowchrb7-convert-artifact-2933041899/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 15:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 15:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 15:17:25 +0000 UTC FinishedAt: 2026-08-15 15:17:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 15:17:35 +0000 UTC FinishedAt: 2026-08-15 18:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchrb7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/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_prepare_memory_region","kvm_arch_free_memslot","kvm_arch_commit_memory_region","kvm_set_internal_memslot"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"baad156b-3602-4c79-9249-316a96d2c0b0","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 15:17:35 +0000 UTC FinishedAt: 2026-08-15 18:19:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3fed8e9e-20eb-4e4d-99f0-96f8b591ba96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*49a86175-038c-4df0-98b7-67bff35e9165,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-workflowchrb7/series-workflowchrb7-build-action-3695280845/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-workflowchrb7/series-workflowchrb7-build-action-1599877738/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-workflowchrb7/series-workflowchrb7-convert-artifact-2933041899/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,}