Name: series-workflowrbg5q Phase: Succeeded StartedAt: 2026-07-25 18:26:56 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[0] Phase: Succeeded StartedAt: 2026-07-25 18:26:56 +0000 UTC FinishedAt: 2026-07-25 19:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 18:26:56 +0000 UTC FinishedAt: 2026-07-25 19:14:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "09d99a4f-8302-404f-a938-e35a95f99649" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_unmap_all_adapters", "kvm_s390_destroy_adapters" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTFhM2JlMzQ5NTQyNzk5ODNmZWUzMzE5N2M3ZDY2ODEwNDI3MmViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTk6MTI6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxuaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XG5AQCAtMTEyLDkgJiM0MzsxMTIsMjAgQEAgR3JvdXBzOlxuICAgICAgIG1hc2sgb3IgdW5tYXNrIHRoZSBhZGFwdGVyLCBhcyBzcGVjaWZpZWQgaW4gbWFza1xuIFxuICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUFxuLSAgICAgIFRoaXMgaXMgbm93IGEgbm8tb3AuIFRoZSBtYXBwaW5nIGlzIHB1cmVseSBkb25lIGJ5IHRoZSBpcnEgcm91dGUuXG4mIzQzOyAgICAgIE1hcCBhbiBhZGFwdGVyIGluZGljYXRvciBvciBzdW1tYXJ5IHBhZ2UgZm9yIGxvbmctdGVybSBwaW5uaW5nIHNvIHRoYXRcbiYjNDM7ICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm1cbiYjNDM7ICAgICAgcGlubmluZyBpcyBub3QgcG9zc2libGUgKGUuZy4gZmlsZS1iYWNrZWQgbWVtb3J5KSwgdGhlIHBhZ2UgaXMgdmVyaWZpZWRcbiYjNDM7ICAgICAgdmlhIGEgc2hvcnQtdGVybSBwaW4gYW5kIHRoZSBpb2N0bCByZXR1cm5zIHN1Y2Nlc3M7IGludGVycnVwdCBpbmplY3Rpb25cbiYjNDM7ICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoXG4mIzQzOyAgICAgIGludGVycnVwdC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXMgYSBuby1vcCBhbmQgdGhlIGlvY3RsXG4mIzQzOyAgICAgIHJldHVybnMgc3VjY2Vzcy5cbiYjNDM7XG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfVU5NQVBcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxuJiM0MzsgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZVxuJiM0MzsgICAgICB0aGUgbG9uZy10ZXJtIHBpbi4gSWYgdGhlIHBhZ2Ugd2FzIG5vdCBsb25nLXRlcm0gcGlubmVkIChlLmcuIGZpbGUtYmFja2VkXG4mIzQzOyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcbiYjNDM7ICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXNcbiYjNDM7ICAgICAgYSBuby1vcCBhbmQgdGhlIGlvY3RsIHJldHVybnMgc3VjY2Vzcy5cbiBcbiAgIEtWTV9ERVZfRkxJQ19BSVNNXG4gICAgIG1vZGlmeSB0aGUgYWRhcHRlci1pbnRlcnJ1cHRpb24tc3VwcHJlc3Npb24gbW9kZSBmb3IgYSBnaXZlbiBpc2MgaWYgdGhlXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggZWFhMzRjNWJkM2MxMTAuLmMxNzJmOWIyMTJkMThlIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtNDc2LDYgJiM0Mzs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8ge1xuIFx0X191NjQgZ3Vlc3RfYWRkcjtcbiBcdF9fdTY0IGFkZHI7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRydWUgaWYgdGhlIHBhZ2UgaXMgbG9uZy10ZXJtIHBpbm5lZC4gRmFsc2UgaWYgbG9uZy10ZXJtIHBpbm5pbmdcbiYjNDM7XHQgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LlxuJiM0MztcdCAqL1xuJiM0MztcdGJvb2wgcGlubmVkO1xuIH07XG4gXG4gc3RydWN0IHMzOTBfaW9fYWRhcHRlciB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbmluZGV4IDllM2U2YjBkNzJhZDYxLi43NTE0ZDllMjQwM2MxYiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0yNTIwLDggJiM0MzsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRtYXAtXHUwMDNlYWRkciA9IGhvc3RfYWRkcjtcbiBcdG1hcC1cdTAwM2VwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCBGT0xMX0xPTkdURVJNKTtcbiBcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbi1cdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogTG9uZy10ZXJtIHBpbm5pbmcgbWF5IGZhaWwgZm9yIG1lbW9yeSB0eXBlcyBzdWNoIGFzIGZpbGUtYmFja2VkXG4mIzQzO1x0XHQgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZVxuJiM0MztcdFx0ICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwaW5fbWFwX3BhZ2Uoa3ZtLCBob3N0X2FkZHIsIDApO1xuJiM0MztcdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGFnZSA9IE5VTEw7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGlubmVkID0gZmFsc2U7XG4mIzQzO1x0XHQvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqL1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGlubmVkID0gdHJ1ZTtcbiBcdH1cbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrLCBmbGFncyk7XG4gXHRpZiAoYWRhcHRlci1cdTAwM2Vucl9tYXBzIFx1MDAzYyBNQVhfUzM5MF9BREFQVEVSX01BUFMpIHtcbkBAIC0yNTMyLDcgJiM0MzsyNTQ2LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbi1cdGlmIChyZXQpXG4mIzQzO1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgbWFwLVx1MDAzZXBhZ2UpXG4gXHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4gb3V0OlxuIFx0aWYgKHJldClcbkBAIC0yNTQ2LDYgJiM0MzsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuIFx0c3RydWN0IHMzOTBfbWFwX2luZm8gKm1hcCwgKnRtcCwgKm1hcF90b19mcmVlO1xuIFx0c3RydWN0IHBhZ2UgKm1hcF9wYWdlX3RvX3B1dCA9IE5VTEw7XG4gXHR1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7XG4mIzQzO1x0Ym9vbCBtYXBfcGlubmVkID0gZmFsc2U7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGZvdW5kID0gMCwgaWR4O1xuIFxuQEAgLTI1NjAsNiAmIzQzOzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bWFwLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1hcF9wYWdlX3RvX3B1dCA9IG1hcC1cdTAwM2VwYWdlO1xuIFx0XHRcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXHUwMDNlZ3Vlc3RfYWRkcjtcbiYjNDM7XHRcdFx0bWFwX3Bpbm5lZCA9IG1hcC1cdTAwM2VwaW5uZWQ7XG4gXHRcdFx0bWFwX3RvX2ZyZWUgPSBtYXA7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbkBAIC0yNTY4LDExICYjNDM7MjU4NCwxOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXG4gXHRpZiAoZm91bmQpIHtcbiBcdFx0a2ZyZWUobWFwX3RvX2ZyZWUpO1xuLVx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4tXHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xuLVx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcF9wYWdlX3RvX3B1dCk7XG4tXHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4tXHRcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xuJiM0MztcdFx0aWYgKG1hcF9waW5uZWQpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5XG4mIzQzO1x0XHRcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxuJiM0MztcdFx0XHQgKiBNQVAvVU5NQVAgc3ltbWV0cnkuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4mIzQzO1x0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xuJiM0MztcdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcF9wYWdlX3RvX3B1dCk7XG4mIzQzO1x0XHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4mIzQzO1x0XHRcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIGZvdW5kID8gMCA6IC1FTk9FTlQ7XG5AQCAtMjU5OCwxMSAmIzQzOzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuIFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFwLCB0bXAsIFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRsaXN0X2RlbChcdTAwMjZtYXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbi1cdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdGlmIChtYXAtXHUwMDNlcGlubmVkKSB7XG4mIzQzO1x0XHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuJiM0MztcdFx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbiYjNDM7XHRcdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbiYjNDM7XHRcdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuJiM0MztcdFx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRrZnJlZShtYXApO1xuIFx0XHR9XG4gXHR9XG5AQCAtMjkyOSw4ICYjNDM7Mjk1NCwxMSBAQCBzdGF0aWMgc3RydWN0IHMzOTBfbWFwX2luZm8gKmdldF9tYXBfaW5mbyhzdHJ1Y3QgczM5MF9pb19hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkobWFwLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW1hcHMsIGxpc3QpIHtcbi1cdFx0aWYgKG1hcC1cdTAwM2VhZGRyID09IGFkZHIpXG4mIzQzO1x0XHRpZiAobWFwLVx1MDAzZWFkZHIgPT0gYWRkcikge1xuJiM0MztcdFx0XHRpZiAoIW1hcC1cdTAwM2VwaW5uZWQpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdFx0cmV0dXJuIG1hcDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdHJldHVybiBOVUxMO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1MWEzYmUzNDk1NDI3OTk4M2ZlZTMzMTk3YzdkNjY4MTA0MjcyZWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxOToxMjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QKaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdApAQCAtMTEyLDkgJiM0MzsxMTIsMjAgQEAgR3JvdXBzOgogICAgICAgbWFzayBvciB1bm1hc2sgdGhlIGFkYXB0ZXIsIGFzIHNwZWNpZmllZCBpbiBtYXNrCiAKICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUAotICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS4KJiM0MzsgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0CiYjNDM7ICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm0KJiM0MzsgICAgICBwaW5uaW5nIGlzIG5vdCBwb3NzaWJsZSAoZS5nLiBmaWxlLWJhY2tlZCBtZW1vcnkpLCB0aGUgcGFnZSBpcyB2ZXJpZmllZAomIzQzOyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uCiYjNDM7ICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoCiYjNDM7ICAgICAgaW50ZXJydXB0LiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpcyBhIG5vLW9wIGFuZCB0aGUgaW9jdGwKJiM0MzsgICAgICByZXR1cm5zIHN1Y2Nlc3MuCiYjNDM7CiAgICAgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUAotICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS4KJiM0MzsgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZQomIzQzOyAgICAgIHRoZSBsb25nLXRlcm0gcGluLiBJZiB0aGUgcGFnZSB3YXMgbm90IGxvbmctdGVybSBwaW5uZWQgKGUuZy4gZmlsZS1iYWNrZWQKJiM0MzsgICAgICBtZW1vcnkpLCB0aGUgbWFwIGVudHJ5IGlzIHJlbW92ZWQgYW5kIHN1Y2Nlc3MgaXMgcmV0dXJuZWQ7IGlmIG5vIHByaW9yCiYjNDM7ICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXMKJiM0MzsgICAgICBhIG5vLW9wIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzLgogCiAgIEtWTV9ERVZfRkxJQ19BSVNNCiAgICAgbW9kaWZ5IHRoZSBhZGFwdGVyLWludGVycnVwdGlvbi1zdXBwcmVzc2lvbiBtb2RlIGZvciBhIGdpdmVuIGlzYyBpZiB0aGUKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggZWFhMzRjNWJkM2MxMTAuLmMxNzJmOWIyMTJkMThlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtNDc2LDYgJiM0Mzs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8gewogCV9fdTY0IGd1ZXN0X2FkZHI7CiAJX191NjQgYWRkcjsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJLyoKJiM0MzsJICogVHJ1ZSBpZiB0aGUgcGFnZSBpcyBsb25nLXRlcm0gcGlubmVkLiBGYWxzZSBpZiBsb25nLXRlcm0gcGlubmluZwomIzQzOwkgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LgomIzQzOwkgKi8KJiM0MzsJYm9vbCBwaW5uZWQ7CiB9OwogCiBzdHJ1Y3QgczM5MF9pb19hZGFwdGVyIHsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCmluZGV4IDllM2U2YjBkNzJhZDYxLi43NTE0ZDllMjQwM2MxYiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCkBAIC0yNTIwLDggJiM0MzsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpCiAJbWFwLSZndDthZGRyID0gaG9zdF9hZGRyOwogCW1hcC0mZ3Q7cGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgRk9MTF9MT05HVEVSTSk7CiAJaWYgKCFtYXAtJmd0O3BhZ2UpIHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7CiYjNDM7CQkvKgomIzQzOwkJICogTG9uZy10ZXJtIHBpbm5pbmcgbWF5IGZhaWwgZm9yIG1lbW9yeSB0eXBlcyBzdWNoIGFzIGZpbGUtYmFja2VkCiYjNDM7CQkgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZQomIzQzOwkJICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi4KJiM0MzsJCSAqLwomIzQzOwkJbWFwLSZndDtwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCAwKTsKJiM0MzsJCWlmICghbWFwLSZndDtwYWdlKSB7CiYjNDM7CQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwomIzQzOwkJbWFwLSZndDtwYWdlID0gTlVMTDsKJiM0MzsJCW1hcC0mZ3Q7cGlubmVkID0gZmFsc2U7CiYjNDM7CQkvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqLwomIzQzOwl9IGVsc2UgewomIzQzOwkJbWFwLSZndDtwaW5uZWQgPSB0cnVlOwogCX0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2FkYXB0ZXItJmd0O21hcHNfbG9jaywgZmxhZ3MpOwogCWlmIChhZGFwdGVyLSZndDtucl9tYXBzICZsdDsgTUFYX1MzOTBfQURBUFRFUl9NQVBTKSB7CkBAIC0yNTMyLDcgJiM0MzsyNTQ2LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcikKIAkJcmV0ID0gLUVJTlZBTDsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2FkYXB0ZXItJmd0O21hcHNfbG9jaywgZmxhZ3MpOwotCWlmIChyZXQpCiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyBtYXAtJmd0O3BhZ2UpCiAJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwogb3V0OgogCWlmIChyZXQpCkBAIC0yNTQ2LDYgJiM0MzsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKQogCXN0cnVjdCBzMzkwX21hcF9pbmZvICptYXAsICp0bXAsICptYXBfdG9fZnJlZTsKIAlzdHJ1Y3QgcGFnZSAqbWFwX3BhZ2VfdG9fcHV0ID0gTlVMTDsKIAl1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7CiYjNDM7CWJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGZvdW5kID0gMCwgaWR4OwogCkBAIC0yNTYwLDYgJiM0MzsyNTc1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKQogCQkJbGlzdF9kZWwoJmFtcDttYXAtJmd0O2xpc3QpOwogCQkJbWFwX3BhZ2VfdG9fcHV0ID0gbWFwLSZndDtwYWdlOwogCQkJbWFwX2FkZHJfdG9fbWFyayA9IG1hcC0mZ3Q7Z3Vlc3RfYWRkcjsKJiM0MzsJCQltYXBfcGlubmVkID0gbWFwLSZndDtwaW5uZWQ7CiAJCQltYXBfdG9fZnJlZSA9IG1hcDsKIAkJCWJyZWFrOwogCQl9CkBAIC0yNTY4LDExICYjNDM7MjU4NCwxOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpCiAKIAlpZiAoZm91bmQpIHsKIAkJa2ZyZWUobWFwX3RvX2ZyZWUpOwotCQlpZHggPSBzcmN1X3JlYWRfbG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSk7Ci0JCW1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgJmd0OyZndDsgUEFHRV9TSElGVCk7Ci0JCXNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTsKLQkJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgaWR4KTsKLQkJdW5waW5fdXNlcl9wYWdlKG1hcF9wYWdlX3RvX3B1dCk7CiYjNDM7CQlpZiAobWFwX3Bpbm5lZCkgewomIzQzOwkJCS8qCiYjNDM7CQkJICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5CiYjNDM7CQkJICogYW5kIHJlbGVhc2VkLiBGYWxsYmFjayBlbnRyaWVzIGV4aXN0IG9ubHkgZm9yCiYjNDM7CQkJICogTUFQL1VOTUFQIHN5bW1ldHJ5LgomIzQzOwkJCSAqLwomIzQzOwkJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7a3ZtLSZndDtzcmN1KTsKJiM0MzsJCQltYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXBfYWRkcl90b19tYXJrICZndDsmZ3Q7IFBBR0VfU0hJRlQpOwomIzQzOwkJCXNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTsKJiM0MzsJCQlzcmN1X3JlYWRfdW5sb2NrKCZhbXA7a3ZtLSZndDtzcmN1LCBpZHgpOwomIzQzOwkJCXVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpOwomIzQzOwkJfQogCX0KIAogCXJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UOwpAQCAtMjU5OCwxMSAmIzQzOzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKQogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYXAsIHRtcCwgJmFtcDtsb2NhbF9saXN0LCBsaXN0KSB7CiAJCQlsaXN0X2RlbCgmYW1wO21hcC0mZ3Q7bGlzdCk7Ci0JCQlpZHggPSBzcmN1X3JlYWRfbG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSk7Ci0JCQltYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtJmd0O2d1ZXN0X2FkZHIgJmd0OyZndDsgUEFHRV9TSElGVCk7Ci0JCQlzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC0mZ3Q7cGFnZSk7Ci0JCQlzcmN1X3JlYWRfdW5sb2NrKCZhbXA7a3ZtLSZndDtzcmN1LCBpZHgpOwotCQkJdW5waW5fdXNlcl9wYWdlKG1hcC0mZ3Q7cGFnZSk7CiYjNDM7CQkJaWYgKG1hcC0mZ3Q7cGlubmVkKSB7CiYjNDM7CQkJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7a3ZtLSZndDtzcmN1KTsKJiM0MzsJCQkJbWFya19wYWdlX2RpcnR5KGt2bSwgbWFwLSZndDtndWVzdF9hZGRyICZndDsmZ3Q7IFBBR0VfU0hJRlQpOwomIzQzOwkJCQlzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC0mZ3Q7cGFnZSk7CiYjNDM7CQkJCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiYjNDM7CQkJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwomIzQzOwkJCX0KIAkJCWtmcmVlKG1hcCk7CiAJCX0KIAl9CkBAIC0yOTI5LDggJiM0MzsyOTU0LDExIEBAIHN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCXJldHVybiBOVUxMOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZhbXA7YWRhcHRlci0mZ3Q7bWFwcywgbGlzdCkgewotCQlpZiAobWFwLSZndDthZGRyID09IGFkZHIpCiYjNDM7CQlpZiAobWFwLSZndDthZGRyID09IGFkZHIpIHsKJiM0MzsJCQlpZiAoIW1hcC0mZ3Q7cGlubmVkKQomIzQzOwkJCQlyZXR1cm4gTlVMTDsKIAkJCXJldHVybiBtYXA7CiYjNDM7CQl9CiAJfQogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBzMzkwIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCB0YXJnZXRpbmcgS1ZNIG9uIHMzOTAuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBhZGFwdGVyIG1hcHBpbmcgYW5kIHVubWFwcGluZyBmdW5jdGlvbnM6IGBrdm1fczM5MF9hZGFwdGVyX21hcGAsIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCwgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AsIGFuZCBgZ2V0X21hcF9pbmZvYC4gVGhlIGFkZGl0aW9uIG9mIGEgYHBpbm5lZGAgYm9vbGVhbiB0byB0aGUgYHMzOTBfbWFwX2luZm9gIHN0cnVjdCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZS4gVGhpcyBoYXMgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBLVk0gc3Vic3lzdGVtIGZvciBzMzkwOyBpdCBpbmRpY2F0ZXMgc29tZSBjaGFuZ2UgaW4gcmVzb3VyY2UgcGlubmluZy4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIGNoZWNrIHJlYWNoYWJpbGl0eS4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSBjYWxsZWQ/IEFyZSB0aGV5IHJlbGV2YW50IHRvIHRoZSBzeXN0ZW0/IEkgcXVpY2tseSByZWNhbGwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHRpZWQgdG8gdGhlIGBLVk1fUzM5MF9JT19BREFQVEVSX01BUGAgYW5kIGBLVk1fUzM5MF9JT19BREFQVEVSX1VOTUFQYCBpb2N0bHMuIEFoLCBidXQgd2FpdCwgdGhlIGV4aXN0aW5nIGRvY3VtZW50YXRpb24uLi4gaXQmIzM5O3MgYSBuby1vcCwgcmlnaHQ/IFRoZSBtYXBwaW5nIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgYnkgdGhlIElSUSByb3V0ZS4KClRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIHBhdGNoICpjaGFuZ2VzKiB0aGUgZG9jdW1lbnRhdGlvbiEgU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byByZXN0b3JlIGZ1bmN0aW9uYWxpdHkgdG8gYEtWTV9TMzkwX0lPX0FEQVBURVJfTUFQYC4gVGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBuby1vcCwgYnV0IHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzYXlzIGl0IHdpbGwgJiMzOTttYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0IGludGVycnVwdCBpbmplY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBpbiBhdG9taWMgY29udGV4dC4mIzM5OyBTbyB0aGUgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyByZWluc3RhdGVkIG9yIG1vZGlmaWVkIGluIGEgc2lnbmlmaWNhbnQgd2F5LgoKSSYjMzk7bSBub3cgZ29pbmcgdG8gZGlnIGludG8gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgIHRvIHRyYWNlIGhvdyBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGlzIGFjdHVhbGx5IGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgd2h5IHRoZSBvbGQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBicm91Z2h0IGJhY2ssIGVzcGVjaWFsbHkgc2luY2UgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGluZGljYXRlZCBpdCB3YXMgYSBuby1vcC4gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhlIGNhbGwgY2hhaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfYWRhcHRlcl9tYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDc2PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcGluX21hcF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdTY0IHVhZGRyLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ5NTpzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2NDg9c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY3Ni1cdFx0XHRkZXYtXHUwMDNla3ZtLVx1MDAzZXN0YXQuaW9fMzkwX2FkYXB0ZXJfbWFwJiM0MzsmIzQzOztcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY3NzpcdFx0XHRyZXQgPSBrdm1fczM5MF9hZGFwdGVyX21hcChkZXYtXHUwMDNla3ZtLCByZXEuaWQsIHJlcS5hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY3OC1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9zMzkwIEFkYXB0ZXIgTWFwcGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGdldHRpbmcgYXQgc29tZSBjb3JlIEtWTS9zMzkwIGFkYXB0ZXIgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdG91Y2hpbmcgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBgcGlubmVkYCBib29sZWFuIGluIGBzdHJ1Y3QgczM5MF9tYXBfaW5mb2AgaXMgdGhlIGtleS4gVGhleSYjMzk7cmUgZXhwbGljaXRseSB0cmFja2luZyBsb25nLXRlcm0gcGFnZSBwaW5uaW5nLCB3aGljaCBpcyBnb29kLiBUaGUgZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBmYWlscyBpcyBpbnRlcmVzdGluZy4gSWYgdGhhdCB3b3JrcywgdGhleSYjMzk7cmUgc2V0dGluZyBgcGlubmVkID0gZmFsc2VgIGFuZCBgcGFnZSA9IE5VTExgIGluIHRoZSBtYXAgZW50cnkuIFRoaXMgd2hvbGUgdGhpbmcgY2VudGVycyBvbiBmaWxlLWJhY2tlZCBtZW1vcnksIHNvIHRoZXkmIzM5O3JlIHdvcmtpbmcgYXJvdW5kIHBvdGVudGlhbCBsb25nLXRlcm0gcGlubmluZyBpc3N1ZXMuCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIGhvdyBhZGFwdGVycyBhcmUgbWFwcGVkIGFuZCB1bm1hcHBlZC4gVGhpcyBtZWFucyBpdCBoYXMgdG8gYmUgZnV6emVkIHRob3JvdWdobHkuIFRoZSBwb3RlbnRpYWwgZm9yIHJlZ3Jlc3Npb25zIGlzIHRoZXJlLCBidXQgbW9yZSBpbXBvcnRhbnRseSwgaXMgaXQgc2VjdXJlPyBJIG5lZWQgdG8gdGVzdCB0aGF0LgoKTGV0JiMzOTtzIHNlZeKApiBmb3IgY29uZmlnIG9wdGlvbnMsIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgS1ZNLCBzbyBgS1ZNYCAoYW5kIHRoZSBzMzkwLXNwZWNpZmljIGFzcGVjdHMpIGFyZSB0aGUga2V5IGNvbmZpZyBvcHRpb25zIHRvIG5vdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIG9uIHMzOTAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtWTSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBXaGVyZSB3b3VsZCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IE5hdHVyYWxseSwgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZpbGUuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIHJpZ2h0PyBJZiBpdCYjMzk7cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGl0JiMzOTtsbCBsaWtlbHkgYmUgdW5kZXIgYGFyY2gvczM5MC9gLiBBbmQgc2luY2Ugd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGBLVk1gIGNvbXBvbmVudHMsIGl0IGZlZWxzIGxpa2UgaXQgd291bGQgYmUgaW4gYSByZWxhdGVkIEtjb25maWcgZmlsZSBvciB3aXRoaW4gYSBkZWRpY2F0ZWQgS1ZNIHN1YnRyZWUuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgS1ZNJiMzOTtzIGJlaGF2aW9yIG9uIHRoaXMgcGxhdGZvcm0uIFRoaXMgaXMgbXkgYmFzZWxpbmUuIEZyb20gdGhlcmUsIEkgY2FuIGFsd2F5cyBleHBsb3JlIGZ1cnRoZXIgb3IgY3Jvc3MtcmVmZXJlbmNlIG90aGVyIHJlbGF0ZWQgZmlsZXMgaWYgbmVlZGVkLCBidXQgdGhpcyBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgODpcdFx0ZGVmX2Jvb2wgeVxuICAgOTpcdFx0cHJvbXB0IFwmIzM0O0tWTVwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxuICAxMjpcdFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cbiAgMTY6XHRcbiAgMTc6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBLVk1cbiAgMjA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDIxOlx0XHRwcm9tcHQgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyMzpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxuICAyNDpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXG4gIDI1Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyODpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbiAgMzA6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAzMTpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMyOlx0XHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xuICAzMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXG4gIDM2Olx0XHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xuICAzNzpcdFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxuICA0MDpcdFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBLVk1cbiAgNTA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTk5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqS1ZNIG9uIFMvMzkwIEFkYXB0ZXIgTWFwcGluZyAtIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgS1ZNLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgUy8zOTAgYXJjaGl0ZWN0dXJlLCBnaXZlbiB0aGUgYWRhcHRlciBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgbWFwcGluZyBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMgYXJlOgoKKiAgIGBrdm1fczM5MF9hZGFwdGVyX21hcGA6IFRoaXMgaXMgY3J1Y2lhbC4gSXQmIzM5O3MgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIG1hcHBpbmcgYW4gYWRhcHRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyZ3VtZW50cywgaXRzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIFMvMzkwIGhhcmR3YXJlLiBXaGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGZvciB0aGUgbWFwcGluZz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgdGFibGUgbG9va3VwLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IHdpdGggY2FjaGluZz8gSXMgdGhlIGZ1bmN0aW9uIGF0b21pYz8KKiAgIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYDogT2J2aW91c2x5LCB0aGUgaW52ZXJzZSBvZiBtYXBwaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5tYXBwaW5nIHByb2Nlc3MuIERvZXMgaXQgaW52b2x2ZSBpbnZhbGlkYXRpbmcgY2FjaGVzLCBzZW5kaW5nIElQSXMsIG9yIGFueXRoaW5nIGVsc2UgdG8gZW5zdXJlIGNvbnNpc3RlbmN5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmcgdG8gYXZvaWQgcHJlbWF0dXJlIHVubWFwcGluZz8KKiAgIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgOiBUaGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzcy4gSG93IGRvZXMgaXQgaGFuZGxlIHRoZSByZW1vdmFsIG9mIGFsbCBhZGFwdGVycz8gSXMgaXQgZWZmaWNpZW50LCBvciBpcyBpdCBhIGJydXRlLWZvcmNlIGFwcHJvYWNoPyBEb2VzIGl0IG5lZWQgYW55IGxvY2tzIHRvIG1ha2Ugc3VyZSBubyBhZGFwdGVycyBhcmUgYWNjZXNzZWQgZHVyaW5nIGEgYnVsayByZW1vdmFsPwoqICAgYGdldF9tYXBfaW5mb2A6IE5vdywgSSByZW1lbWJlciB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyB1c2VkIHRvIHJldHJpZXZlIHRoZSBtYXBwaW5nIGluZm9ybWF0aW9uLiBXYWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IE9rYXksIGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlIGNvbXBpbGVyIGlubGluZXMgdGhlIGZ1bmN0aW9uLiBJZiBpdCYjMzk7cyBpbmxpbmVkIGl0IGlzIGEgdmVyeSBnb29kIHNpdHVhdGlvbiBhbmQgcmVkdWNlcyBvdmVyaGVhZC4gSWYgbm90IGlubGluZWQsIEkgbmVlZCB0byBjaGVjayBob3cgZnJlcXVlbnRseSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGJlY2F1c2UgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBJIG5lZWQgdG8ga25vdyB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tYXBfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTM2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9pbmRfYml0KF9fdTY0IGFkZHIsIHVuc2lnbmVkIGxvbmcgYml0X25yLCBib29sIHN3YXApXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTQ3LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyOTQ4OnN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5NDktXHRcdFx0XHRcdCAgdTY0IGFkZHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTY2PXN0YXRpYyBpbnQgYWRhcHRlcl9pbmRpY2F0b3JzX3NldChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTc5LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk4MDpcdGluZF9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZWluZF9hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk4MS1cdGlmICghaW5kX2luZm8pIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDItXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZhZGFwdGVyLVx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDAzOlx0c3VtbWFyeV9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZXN1bW1hcnlfYWRkcik7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDQtXHRpZiAoIXN1bW1hcnlfaW5mbykge1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzAyOT1zdGF0aWMgaW50IGFkYXB0ZXJfaW5kaWNhdG9yc19zZXRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDM5LVx0c3Bpbl9sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA0MDpcdGluZF9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZWluZF9hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA0MS1cdGlmICghaW5kX2luZm8pIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNDgtXHRcdHNldF9iaXQoYml0LCBtYXApO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDQ5Olx0c3VtbWFyeV9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZXN1bW1hcnlfYWRkcik7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNTAtXHRpZiAoIXN1bW1hcnlfaW5mbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTk2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTdGF0aWMgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBmZXcgZnVuY3Rpb24gY2FsbHMgdGhhdCBoYXZlIGNhdWdodCBteSBleWUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgZ2V0X21hcF9pbmZvYCwgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCBhcmUgYWxsIHBvdGVudGlhbGx5IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgbG9jYWxpemVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIGltcGx5aW5nIHRoZXkmIzM5O3JlIG5vdCBpbnRlbmRlZCB0byBiZSBleHBvc2VkIGdsb2JhbGx5LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBkZWNsYXJhdGlvbnMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBzaWduaWZpY2FudGx5IGFsdGVyIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGFuZCB0aGUgcG90ZW50aWFsIGZvciBtb2RpZmljYXRpb24uIFN0YXRpYyBmdW5jdGlvbnMgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGxpbmtpbmcsIHNjb3BlLCBhbmQgcG90ZW50aWFsIHJlLXVzZSBpbiBvdGhlciBjb250ZXh0cywgc28gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQmIzM5O3MgdGhlIGNhc2UuIFRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDc2PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcGluX21hcF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdTY0IHVhZGRyLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ5NTpzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY0MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBDYWxsZXJzKioKCk9rYXksIHNvIEkmIzM5O20gb2JzZXJ2aW5nIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGV5JiMzOTtyZSBzdGF0aWMuIFRoYXQmIzM5O3MgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoZW0uIE15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxpbmcgdGhlc2Ugc3RhdGljIG9uZXMuIEl0JiMzOTtzIGEgY2xhc3NpYyBhbmFseXNpcyBwYXR0ZXJuLgoKQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCBgbW9kaWZ5X2lvX2FkYXB0ZXJgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBib3RoIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYC4gVGhhdCBwcm92aWRlcyBhIHNvbGlkIGxpbmsgdG8gaW52ZXN0aWdhdGUuIFRoaXMgZ2l2ZXMgdXMgYSB1c2VmdWwgcGl2b3QgcG9pbnQgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZGlmeV9pb19hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2MzY9dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NDctXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2NDg6c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjQ5LVx0XHRcdCAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI4MzQ9c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yODY4LVx0Y2FzZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRlk6XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI4Njk6XHRcdHIgPSBtb2RpZnlfaW9fYWRhcHRlcihkZXYsIGF0dHIpO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yODcwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgZmxpY19zZXRfYXR0cmAqKgoKT2theSwgc28gYGZsaWNfc2V0X2F0dHJgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24gaGVyZS4gVGhlIGNvZGUgdGVsbHMgbWUgaXQgY2FsbHMgYG1vZGlmeV9pb19hZGFwdGVyYCwgYW5kIHRoYXQmIzM5O3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24gcG9pbnQgdG8gZXhwbG9yZS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBgbW9kaWZ5X2lvX2FkYXB0ZXJgLCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBlbnN1cmUgSSYjMzk7dmUgZ290IHRoZSBjb250ZXh0IG9mIGBmbGljX3NldF9hdHRyYCBmdWxseSBncmFzcGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICp3aHkqIHdlJiMzOTtyZSBzZXR0aW5nIGF0dHJpYnV0ZXMgaW4gdGhlIGZpcnN0IHBsYWNlLCB3aGF0IHBhcmFtZXRlcnMgaXQgYWNjZXB0cywgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGlzLiBMZXQgbWUgcXVpY2tseSBhbmFseXplIHRoZSBjb2RlIGZvciB0aGF0LiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgc28gZ2V0dGluZyB0aGF0IGNvbnRleHQgaXMgaW1wb3J0YW50LiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIGEgcHJlcmVxdWlzaXRlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmxpY19zZXRfYXR0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yODE0PXN0YXRpYyBpbnQgZmxpY19haXNfbW9kZV9zZXRfYWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzMtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI4MzQ6c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjkyNz1zdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2ZsaWNfb3BzID0ge1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOS1cdC5nZXRfYXR0ciA9IGZsaWNfZ2V0X2F0dHIsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5MzA6XHQuc2V0X2F0dHIgPSBmbGljX3NldF9hdHRyLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTMxLVx0Lmhhc19hdHRyID0gZmxpY19oYXNfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcxNwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUG90ZW50aWFsIFN0YXRpYyBGdW5jdGlvbiBBc3NpZ25tZW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGZsaWNfc2V0X2F0dHJgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBIb3dldmVyLCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBga3ZtX2ZsaWNfb3BzLnNldF9hdHRyYC4gVGhpcyBpbXBsaWVzIHRoYXQgaXQmIzM5O3MgYWN0aW5nIGFzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYSBicm9hZGVyIGludGVyZmFjZSwgcHJvYmFibHkgZm9yIGEgcGFydGljdWxhciBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzdGF0aWMgZGVjbGFyYXRpb24gaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0cnVseSBsb2NhbCB0byB0aGUgZmlsZSwgb3IgaXMgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYmVpbmcgJiMzNDtleHBvcnRlZCYjMzQ7IHZpYSB0aGUgYXNzaWdubWVudCBpbiBga3ZtX2ZsaWNfb3BzYD8gSWYgdGhlIGxhdHRlciwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBpcyBsaWtlbHkgaGlkaW5nIGluZm9ybWF0aW9uIGFuZCBjb3VsZCBiZSByZW1vdmVkLgoKQW5kIHRoZW4sIEnigJltIGFsc28gdHVybmluZyBteSBhdHRlbnRpb24gdG8gYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIEkgbmVlZCB0byBjb21wYXJlIGFuZCBjb250cmFzdC4gSXMgdGhpcyBvbmUgYWxzbyBzdGF0aWM/IE9yIGlzIGl0IGEgZ2xvYmFsIGZ1bmN0aW9uIGJlaW5nIHVzZWQgaW4gYSBzaW1pbGFyIHdheSwgb3IgdXNlZCBpbiBhIHdheSB0aGF0IGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50PyBJcyBpdCBwYXJ0IG9mIHRoZSBzYW1lIGludGVyZmFjZSwgb3IgYW5vdGhlcj8gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIHVzZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIHdpbGwgaWxsdW1pbmF0ZSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMsIG1haW50YWluYWJpbGl0eSBpc3N1ZXMsIG9yIGV2ZW4gcG9zc2libGUgYnVncyB0aGF0IGNvdWxkIGFyaXNlIGZyb20gbWlzdXNlIG9mIHNjb3BlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIGluc3RhbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI1NTc9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwMy1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjYwNDp2b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MDUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYzNj12b2lkIGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzOS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY0MDpcdGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhrdm0pO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM4MQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIEFkYXB0ZXIgRGVzdHJ1Y3Rpb24gaW4gS1ZNL3MzOTB4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGFkYXB0ZXJzIGFyZSB1bm1hcHBlZCBpbiB0aGUgczM5MHggS1ZNIGltcGxlbWVudGF0aW9uLCBhbmQgdGhlIGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIEkgdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgYWN0dWFsIHVubWFwcGluZyBvZiB0aGUgYWRhcHRlcnMsIGJ1dCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyAqd2hlbiogaXQgZ2V0cyBjYWxsZWQuIFRoZSBjb2RlIHRlbGxzIG1lIGl0JiMzOTtzIGNhbGxlZCBieSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGFkYXB0ZXIgdGVhcmRvd24sIGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB3aGF0IGhhcHBlbnMgd2l0aGluIHRoZSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGxlYWRpbmcgdXAgdG8gdGhhdCBjYWxsIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNjA0PXZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MzY6dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM0Mjg9dm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1MS1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM0NTI6XHRrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKGt2bSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1My1cdGt2bV9zMzkwX2NsZWFyX2Zsb2F0X2lycXMoa3ZtKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NTQ2PWludCBwc3dfZXh0aW50X2Rpc2FibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ3OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTU0OC1pbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNL3MzOTAgQVBJIEVudHJ5cG9pbnRzIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGVudHJ5IHBvaW50cyB3aXRoaW4gdGhlIEtWTS9zMzkwIGNvZGUgdGhhdCBTeXprYWxsZXIgY291bGQgdGFyZ2V0IGZvciBmdXp6aW5nIGFuZCB0ZXN0aW5nLiBGaXJzdCwgSSBub3RpY2VkIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBpcyBub24tc3RhdGljLCBpbW1lZGlhdGVseSBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgYnJvYWRlciBBUEkgYWNjZXNzaWJpbGl0eS4gVGhhdCBsZWQgbWUgdG8gY29uc2lkZXIgd2hldGhlciB0aGVyZSB3ZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgYXJlYS4gU2Nhbm5pbmcgcXVpY2tseSwgSSBmb3VuZCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLCB3aGljaCBzZWVtZWQgcHJvbWlzaW5nLiBJIG1hZGUgYSBtZW50YWwgbm90ZSBvZiBga3ZtX2ZsaWNfb3BzYCBhcyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCwgYnV0IGl0JiMzOTtzIGEgc3RydWN0LCBzbyB0aGF0IGRpZG4mIzM5O3QgcGFuIG91dC4KCkkgdGhlbiBzdGFydGVkIGludmVzdGlnYXRpbmcgdGhlIEZMSUMgYWRhcHRlciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYGZsaWNfc2V0X2F0dHJgLCBgZmxpY19nZXRfYXR0cmAsIGFuZCBgZmxpY19oYXNfYXR0cmAuIFRoZXNlIGFyZSBhbGwgc3RhdGljLCB3aGljaCByYWlzZWQgYSBmbGFnLiBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBkaXJlY3RseSB0YXJnZXQgdGhlc2UgaXMgbGltaXRlZCBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkLiBJIHJldmlzaXRlZCB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgYWdhaW4sIGtlZXBpbmcgaW4gbWluZCB0aGF0IHRob3NlIGFyZSBub24tc3RhdGljLgoKVGhlbiBjYW1lIHRoZSBrZXkgY29ubmVjdGlvbjogYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRllgIGlvY3RsIG9uIHRoZSBGTElDIGRldmljZS4gQWhhISBUaGUgaW9jdGwgaGFuZGxlciwgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAsIGNhbGxzIHRoZSBkZXZpY2UmIzM5O3MgYHNldF9hdHRyYCBvcGVyYXRpb24uIFNvLCBlaXRoZXIgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAgKGdlbmVyaWMpIG9yIGBmbGljX3NldF9hdHRyYCAoc3RhdGljKSBpcyBhbiBlbnRyeSBwb2ludC4gU2luY2UgYGZsaWNfc2V0X2F0dHJgIGlzIHN0YXRpYywgbXkgY29uY2VybiBpcyB3aGV0aGVyIGl0JiMzOTtzIGlubGluZWQuIElmIGl0ICppcyogaW5saW5lZCwgU3l6a2FsbGVyIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGZpbmQgaXQgZGlyZWN0bHksIGFsdGhvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQgc2hvdWxkIHByZXZlbnQgdGhhdC4gQnV0IFN5emthbGxlciBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyBJIHNob3VsZCBsb29rIGZvciB0aGF0LgoKVGhlIGlkZWFsIHNvbHV0aW9uIGlzIHRvIGZpbmQgYSBub24tc3RhdGljIGVudHJ5IHBvaW50IGRpcmVjdGx5IHJlbGF0ZWQgdG8gYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgdGhlIGNvcmUgZnVuY3Rpb24gaW4gdGhlIHBhdGNoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gcHJvdmlkaW5nIGEgdmFsaWQsIHN5emthbGxlci1mcmllbmRseSBlbnRyeSBwb2ludCBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIExvb2tpbmcgYmFjayBvdmVyIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AsIG15IGN1cnJlbnQgZ29hbCBpcyB0byBzZWUgaWYgSSBjYW4gZmluZCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBjb3JlIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGZvciBtb3JlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9mbGljX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5MjA9c3RhdGljIHZvaWQgZmxpY19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTI2LS8qIHMzOTAgZmxvYXRpbmcgaXJxIGNvbnRyb2xsZXIgKGZsaWMpICovXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5Mjc6c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOC1cdC5uYW1lID0gXCYjMzQ7a3ZtLWZsaWNcJiMzNDssXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTE0LVx0LyogUmVnaXN0ZXIgZmxvYXRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUxNTpcdHJjID0ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXHUwMDI2a3ZtX2ZsaWNfb3BzLCBLVk1fREVWX1RZUEVfRkxJQyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTE2LVx0aWYgKHJjKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTU0OD1pbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjU0OTpleHRlcm4gc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcztcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NTAtaW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2ODYKCQkJCQkJCW91dHB1dDogNzQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS1ZNL3MzOTAgQWRhcHRlciBNYW5hZ2VtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgQVBJIGVudHJ5IHBvaW50cyBmb3IgbWFuYWdpbmcgYWRhcHRlcnMgd2l0aGluIHRoZSBLVk0vczM5MCBhcmNoaXRlY3R1cmUuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgZGlyZWN0bHkgaGFuZGxlIHRoZSB1bm1hcHBpbmcgb3IgZGVzdHJ1Y3Rpb24gb2YgdGhlc2UgYWRhcHRlcnMuIElkZWFsbHksIEkmIzM5O20gbG9va2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFzIHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgZXhwb3NlZCBhbmQgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZS4KCklmIGEgZGlyZWN0LCBkZWRpY2F0ZWQgZnVuY3Rpb24gZG9lc24mIzM5O3QgbGVhcCBvdXQsIEkmIzM5O2xsIGZhbGwgYmFjayB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaG9zZSBzb3VuZCBsaWtlIHRoZXkgY291bGQgYmUgdXNlZnVsIGFzIGZhbGxiYWNrIG9wdGlvbnMuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgYWRhcHRlcl9pbmRpY2F0b3JzX3NldGA/IEl0IGxvb2tzIHByb21pc2luZywgYnV0IHRoZSBmYWN0IHRoYXQgaXQmIzM5O3Mgc3RhdGljIGlzIGEgc2V0YmFjay4gVGhhdCB3b3VsZCBtYWtlIGl0IGludGVybmFsIHRvIHRoZSBtb2R1bGUsIHNvIG5vIGRpY2UuCgpPa2F5LCBwbGFuIEIuIEkmIzM5O2xsIHRob3JvdWdobHkgZXhhbWluZSBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCB0aGlzIGZpbGUsIGdpdmVuIGl0cyBuYW1lLCBpcyBhIHByaW1lIGxvY2F0aW9uIGZvciBhZGFwdGVyLXJlbGF0ZWQgZnVuY3Rpb25zLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoZXJlIHRoYXQgZml0IHRoZSBiaWxsLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBtb3ZlIGZvcndhcmQsIHNvIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxccyYjNDM7XFwqKlthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9ODQ9c3RhdGljIHZvaWQgc2NhX2NsZWFyX2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTk1LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzo5NjppbnQgcHN3X2V4dGludF9kaXNhYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTExMTQ9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19kZWxpdmVyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTExODQtLyogQ2hlY2sgd2hldGhlciBhbiBleHRlcm5hbCBjYWxsIGlzIHBlbmRpbmcgKGRlbGl2ZXJhYmxlIG9yIG5vdCkgKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE4NTppbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTExODYte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE5NTppbnQga3ZtX3MzOTBfdmNwdV9oYXNfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGV4Y2x1ZGVfc3RvcClcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5Ni17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjEzLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjE0OmludCBrdm1fY3B1X2hhc19wZW5kaW5nX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxNS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0xMjE5PXN0YXRpYyB1NjQgX19jYWxjdWxhdGVfc2x0aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTEyNTAtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjEyNTE6aW50IGt2bV9zMzkwX2hhbmRsZV93YWl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI1Mi17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjk3LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjk4OnZvaWQga3ZtX3MzOTBfdmNwdV93YWtldXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjk5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEzMTA9ZW51bSBocnRpbWVyX3Jlc3RhcnQga3ZtX3MzOTBfaWRsZV93YWtldXAoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTMyNy1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTMyODp2b2lkIGt2bV9zMzkwX2NsZWFyX2xvY2FsX2lycXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMzI5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTE5NDk9c3RhdGljIGludCBfX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTE5NzktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjE5ODA6aW50IGt2bV9zMzkwX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTE5ODEtXHRcdCAgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LCBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDIyLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDIzOmludCBrdm1fczM5MF9yZWluamVjdF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDI0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjgtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIwMjk6aW50IHMzOTBpbnRfdG9fczM5MGlycShzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDMwLVx0XHQgICAgICAgc3RydWN0IGt2bV9zMzkwX2lycSAqaXJxKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3MS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA3MjppbnQga3ZtX3MzOTBfaXNfc3RvcF9pcnFfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwNzMte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3OC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA3OTppbnQga3ZtX3MzOTBfaXNfcmVzdGFydF9pcnFfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODAte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA4NS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA4Njp2b2lkIGt2bV9zMzkwX2NsZWFyX3N0b3BfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA4Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMDk2PXN0YXRpYyBpbnQgZG9faW5qZWN0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3MzOTBfaXJxICppcnEpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMTQwLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMTQxOmludCBrdm1fczM5MF9pbmplY3RfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE0Mi17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMTY0PXN0YXRpYyB2b2lkIGludGlfdG9faXJxKHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNzktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIxODA6dm9pZCBrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE4MS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDE3PXN0YXRpYyBpbnQgcmVnaXN0ZXJfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ2My1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ2NDppbnQga3ZtX3MzOTBfbWFza19hZGFwdGVyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBib29sIG1hc2tlZClcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ2NS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNTU3PXN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl91bm1hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MDMtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MDQ6dm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjA1LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MzY6dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMDcyPXN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA5OC0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA5OTp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTM5LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTQwOmludCBrdm1fc2V0X3JvdXRpbmdfZW50cnkoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTQxLVx0XHRcdCAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgxLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTgyOmludCBrdm1fc2V0X21zaShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgzLVx0XHRpbnQgaXJxX3NvdXJjZV9pZCwgaW50IGxldmVsLCBib29sIGxpbmVfc3RhdHVzKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4Ny1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzE4ODppbnQga3ZtX3MzOTBfc2V0X2lycV9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgX191c2VyICppcnFzdGF0ZSwgaW50IGxlbilcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4OS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMjI4PXN0YXRpYyB2b2lkIHN0b3JlX2xvY2FsX2lycShzdHJ1Y3Qga3ZtX3MzOTBfbG9jYWxfaW50ZXJydXB0ICpsaSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNjktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMyNzA6aW50IGt2bV9zMzkwX2dldF9pcnFfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBfX3U4IF9fdXNlciAqYnVmLCBpbnQgbGVuKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMjcxLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMzNzA9c3RhdGljIHZvaWQgcHJvY2Vzc19naWJfYWxlcnRfbGlzdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQxNC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQxNTp2b2lkIGt2bV9zMzkwX2dpc2FfY2xlYXIoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDE2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0MjQtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0MjU6dm9pZCBrdm1fczM5MF9naXNhX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NDAtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NDE6dm9pZCBrdm1fczM5MF9naXNhX2VuYWJsZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NDIte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2My1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQ2NDp2b2lkIGt2bV9zMzkwX2dpc2FfZGVzdHJveShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NjUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ4MS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQ4Mjp2b2lkIGt2bV9zMzkwX2dpc2FfZGlzYWJsZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODMte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzUxNi0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzUxNzppbnQga3ZtX3MzOTBfZ2lzY19yZWdpc3RlcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBnaXNjKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTE4LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM1MzY9RVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3MzOTBfZ2lzY19yZWdpc3Rlcik7XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTU1LSAqL1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNTU2OmludCBrdm1fczM5MF9naXNjX3VucmVnaXN0ZXIoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZ2lzYylcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzU1Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjY1PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2NjgtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Njk6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjcwLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM2ODQ9aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzc0MS0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mzc0MjppbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzc0My1cdFx0XHQgICAgICBzdHJ1Y3Qga3ZtICprdm0sIGludCBpcnFfc291cmNlX2lkLCBpbnQgbGV2ZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzc5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIHMzOTB4IEtWTSBBZGFwdGVyIE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCwgd2hpY2ggYXJlIGNhbGxlZCB3aXRoaW4gdGhlIGBtb2RpZnlfaW9fYWRhcHRlcmAgZnVuY3Rpb24uIFRoYXQsIGluIHR1cm4sIGlzIHRyaWdnZXJlZCBieSBgZmxpY19zZXRfYXR0cmAsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGBrdm1fZmxpY19vcHNgIHN0cnVjdHVyZS4gVGhpcyBpcyBhbGwgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGlvY3RsIG9uIHRoZSBGTElDIGRldmljZSwgd2hpY2ggaXRzZWxmIGlzIGNyZWF0ZWQgdmlhIGBLVk1fQ1JFQVRFX0RFVklDRWAgdXNpbmcgYEtWTV9ERVZfVFlQRV9GTElDYC4KClRoZSBrZXkgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2VzIGFuZCB3aGF0IGVsc2UgaXMgZGlyZWN0bHkgcmVsYXRlZC4gTG9va2luZyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBmdW5jdGlvbnMsIHRoZXJlIGFyZSBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBXaGlsZSBga3ZtX3MzOTBfZ2lzYV9pbml0YCBvciBga3ZtX3MzOTBfZ2lzYV9kZXN0cm95YCBjb3VsZCBiZSBhZGRlZCBmb3IgY29udGV4dCwgSSBjYW4gc2VlIHRoYXQgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLgoKQWgsIHllcywgY29uZmlybWluZyBteSBzdXNwaWNpb24g4oCTIHRoZSBkaWZmIHNob3dzIGNoYW5nZXMgdG8gYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIFRoZSBhZGRlZCBjb25kaXRpb25hbCBjaGVjayBmb3IgYG1hcC0mZ3Q7cGlubmVkYCB3aXRoaW4gdGhlIGxvb3AgaXMgdGhlIGtleSBwb2ludC4gU28sIHRoZSBvcmlnaW5hbCBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCBmdW5jdGlvbnMsIHdpdGggYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgIGNhbGxpbmcgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIFRoZXNlIGFyZSB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoaXMgY29kZSByZXNpZGVzIGluIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCwgYW5kIGNsZWFybHkgZGVwZW5kcyBvbiBgS1ZNYC4gQW55dGhpbmcgZWxzZSwgdGhvdWdoPyBMZXQmIzM5O3MgdmVyaWZ5Li4uIG5vcGUsIGxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxOTMKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCBjZW50ZXJzIGFyb3VuZCBgS1ZNYCwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkZpcnN0LCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgY29uZmlybWluZyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdywgdGhlIGtleSBmb2N1cyBzZWVtcyB0byBiZSB0aGVzZSBzeW1ib2xzOiBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaGVzZSBzdWdnZXN0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBLVk0mIzM5O3MgYWRhcHRlciBtYW5hZ2VtZW50LiBUaGUgY2hhbmdlcyBzcGVjaWZpY2FsbHkgYWZmZWN0IHRoZSBGTElDIOKAkyB0aGUgRmxvYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIg4oCTIHdpdGhpbiBLVk0gb24gUzM5MC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBtZW1vcnkgcGlubmluZyBhbmQgaG93IGludGVycnVwdHMgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0LgoKVGhlIG1vZGlmaWNhdGlvbiBpbnRyb2R1Y2VzIGEgZmFsbGJhY2sgbWVjaGFuaXNtLiBJZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAobGlrZWx5IGR1ZSB0bywgc2F5LCBmaWxlLWJhY2tlZCBtZW1vcnkpLCBpdCBhdHRlbXB0cyBzaG9ydC10ZXJtIHBpbm5pbmcuIFRoaXMgaGFzIG9idmlvdXMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZWRnZSBjYXNlcyB0aGF0IGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGV4cGxpY2l0bHkgbGlzdCBgS1ZNYCwgZnVydGhlciBzb2xpZGlmeWluZyB0aGF0IHRoaXMgaXMgdGhlIGFyZWEgdG8gZm9jdXMgb24uCgpTbywgaW4gZXNzZW5jZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzMzkwIHN1YnN5c3RlbSByZWxhdGVkIHRvIG1lbW9yeSBwaW5uaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEl04oCZcyBhIGNsYXNzaWMgY2FzZSB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IGRlYWxpbmcgd2l0aCBtZW1vcnkgYW5kIGludGVycnVwdHMsIGNhbiBvcGVuIHVwIGEgdHJlYXN1cmUgdHJvdmUgb2YgdnVsbmVyYWJpbGl0aWVzIHRoYXQgZnV6emluZyBjb3VsZCB1bmVhcnRoLiBUaGlzIGRlZmluaXRlbHkgZGVzZXJ2ZXMgcmlnb3JvdXMgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjozOC4zOTgyNDU5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTI3ODMwMjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNcIixcbiAgICBcImt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHMzOTAgRkxJQyAoRmxvYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIpIGFkYXB0ZXIgbWFwcGluZyBsb2dpYyB0byBmYWxsYmFjayB0byBzaG9ydC10ZXJtIHBpbm5pbmcgaWYgbG9uZy10ZXJtIHBpbm5pbmcgZmFpbHMgKGUuZy4sIGZvciBmaWxlLWJhY2tlZCBtZW1vcnkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIG1lbW9yeSBwaW5uaW5nIGFuZCBpbnRlcnJ1cHQgaW5qZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjozOC4zOTgyNTM3ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDI0NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1MWEzYmUzNDk1NDI3OTk4M2ZlZTMzMTk3YzdkNjY4MTA0MjcyZWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTk6MTI6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxcbmluZGV4IGI3ODRmODAxNjc0ODM2Li45ODNjODU4YjQ0NGEwNCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XFxuQEAgLTExMiw5ICsxMTIsMjAgQEAgR3JvdXBzOlxcbiAgICAgICBtYXNrIG9yIHVubWFzayB0aGUgYWRhcHRlciwgYXMgc3BlY2lmaWVkIGluIG1hc2tcXG4gXFxuICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUFxcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxcbisgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0XFxuKyAgICAgIGludGVycnVwdCBpbmplY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBpbiBhdG9taWMgY29udGV4dC4gSWYgbG9uZy10ZXJtXFxuKyAgICAgIHBpbm5pbmcgaXMgbm90IHBvc3NpYmxlIChlLmcuIGZpbGUtYmFja2VkIG1lbW9yeSksIHRoZSBwYWdlIGlzIHZlcmlmaWVkXFxuKyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uXFxuKyAgICAgIHdpbGwgdXNlIHRoZSBub24tYXRvbWljIGlycWZkIHBhdGggd2l0aCBzaG9ydC10ZXJtIHBpbm5pbmcgb24gZWFjaFxcbisgICAgICBpbnRlcnJ1cHQuIEluIFNlY3VyZSBFeGVjdXRpb24gbW9kZSB0aGlzIGlzIGEgbm8tb3AgYW5kIHRoZSBpb2N0bFxcbisgICAgICByZXR1cm5zIHN1Y2Nlc3MuXFxuK1xcbiAgICAgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUFxcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxcbisgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZVxcbisgICAgICB0aGUgbG9uZy10ZXJtIHBpbi4gSWYgdGhlIHBhZ2Ugd2FzIG5vdCBsb25nLXRlcm0gcGlubmVkIChlLmcuIGZpbGUtYmFja2VkXFxuKyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcXG4rICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXNcXG4rICAgICAgYSBuby1vcCBhbmQgdGhlIGlvY3RsIHJldHVybnMgc3VjY2Vzcy5cXG4gXFxuICAgS1ZNX0RFVl9GTElDX0FJU01cXG4gICAgIG1vZGlmeSB0aGUgYWRhcHRlci1pbnRlcnJ1cHRpb24tc3VwcHJlc3Npb24gbW9kZSBmb3IgYSBnaXZlbiBpc2MgaWYgdGhlXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCBlYWEzNGM1YmQzYzExMC4uYzE3MmY5YjIxMmQxOGUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC00NzYsNiArNDc2LDExIEBAIHN0cnVjdCBzMzkwX21hcF9pbmZvIHtcXG4gXFx0X191NjQgZ3Vlc3RfYWRkcjtcXG4gXFx0X191NjQgYWRkcjtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdC8qXFxuK1xcdCAqIFRydWUgaWYgdGhlIHBhZ2UgaXMgbG9uZy10ZXJtIHBpbm5lZC4gRmFsc2UgaWYgbG9uZy10ZXJtIHBpbm5pbmdcXG4rXFx0ICogZmFpbGVkIGFuZCB0aGlzIGVudHJ5IGV4aXN0cyBvbmx5IHRvIHByZXNlcnZlIE1BUC9VTk1BUCBzeW1tZXRyeS5cXG4rXFx0ICovXFxuK1xcdGJvb2wgcGlubmVkO1xcbiB9O1xcbiBcXG4gc3RydWN0IHMzOTBfaW9fYWRhcHRlciB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXFxuaW5kZXggOWUzZTZiMGQ3MmFkNjEuLjc1MTRkOWUyNDAzYzFiIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXFxuQEAgLTI1MjAsOCArMjUyMCwyMiBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRtYXAtXFx1MDAzZWFkZHIgPSBob3N0X2FkZHI7XFxuIFxcdG1hcC1cXHUwMDNlcGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgRk9MTF9MT05HVEVSTSk7XFxuIFxcdGlmICghbWFwLVxcdTAwM2VwYWdlKSB7XFxuLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBMb25nLXRlcm0gcGlubmluZyBtYXkgZmFpbCBmb3IgbWVtb3J5IHR5cGVzIHN1Y2ggYXMgZmlsZS1iYWNrZWRcXG4rXFx0XFx0ICogbWVtb3J5LiBWZXJpZnkgdGhhdCBzaG9ydC10ZXJtIHBpbm5pbmcgc3VjY2VlZHMgc28gdGhhdCB0aGVcXG4rXFx0XFx0ICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG1hcC1cXHUwMDNlcGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgMCk7XFxuK1xcdFxcdGlmICghbWFwLVxcdTAwM2VwYWdlKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcdFxcdHVucGluX3VzZXJfcGFnZShtYXAtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBhZ2UgPSBOVUxMO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBpbm5lZCA9IGZhbHNlO1xcbitcXHRcXHQvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqL1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRtYXAtXFx1MDAzZXBpbm5lZCA9IHRydWU7XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbiBcXHRpZiAoYWRhcHRlci1cXHUwMDNlbnJfbWFwcyBcXHUwMDNjIE1BWF9TMzkwX0FEQVBURVJfTUFQUykge1xcbkBAIC0yNTMyLDcgKzI1NDYsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbi1cXHRpZiAocmV0KVxcbitcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IG1hcC1cXHUwMDNlcGFnZSlcXG4gXFx0XFx0dW5waW5fdXNlcl9wYWdlKG1hcC1cXHUwMDNlcGFnZSk7XFxuIG91dDpcXG4gXFx0aWYgKHJldClcXG5AQCAtMjU0Niw2ICsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqbWFwLCAqdG1wLCAqbWFwX3RvX2ZyZWU7XFxuIFxcdHN0cnVjdCBwYWdlICptYXBfcGFnZV90b19wdXQgPSBOVUxMO1xcbiBcXHR1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7XFxuK1xcdGJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgZm91bmQgPSAwLCBpZHg7XFxuIFxcbkBAIC0yNTYwLDYgKzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuIFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZtYXAtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRcXHRtYXBfcGFnZV90b19wdXQgPSBtYXAtXFx1MDAzZXBhZ2U7XFxuIFxcdFxcdFxcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXFx1MDAzZWd1ZXN0X2FkZHI7XFxuK1xcdFxcdFxcdG1hcF9waW5uZWQgPSBtYXAtXFx1MDAzZXBpbm5lZDtcXG4gXFx0XFx0XFx0bWFwX3RvX2ZyZWUgPSBtYXA7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuQEAgLTI1NjgsMTEgKzI1ODQsMTggQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXG4gXFx0aWYgKGZvdW5kKSB7XFxuIFxcdFxcdGtmcmVlKG1hcF90b19mcmVlKTtcXG4tXFx0XFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc3JjdSk7XFxuLVxcdFxcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuLVxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTtcXG4tXFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbi1cXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwX3BhZ2VfdG9fcHV0KTtcXG4rXFx0XFx0aWYgKG1hcF9waW5uZWQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5XFxuK1xcdFxcdFxcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxcbitcXHRcXHRcXHQgKiBNQVAvVU5NQVAgc3ltbWV0cnkuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZHggPSBzcmN1X3JlYWRfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1KTtcXG4rXFx0XFx0XFx0bWFya19wYWdlX2RpcnR5KGt2bSwgbWFwX2FkZHJfdG9fbWFyayBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG4rXFx0XFx0XFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xcbitcXHRcXHRcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuK1xcdFxcdFxcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UO1xcbkBAIC0yNTk4LDExICsyNjIxLDEzIEBAIHZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYXAsIHRtcCwgXFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbi1cXHRcXHRcXHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtXFx1MDAzZWd1ZXN0X2FkZHIgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuLVxcdFxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVxcdTAwM2VwYWdlKTtcXG4tXFx0XFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbi1cXHRcXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0aWYgKG1hcC1cXHUwMDNlcGlubmVkKSB7XFxuK1xcdFxcdFxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbitcXHRcXHRcXHRcXHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtXFx1MDAzZWd1ZXN0X2FkZHIgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuK1xcdFxcdFxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbitcXHRcXHRcXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRrZnJlZShtYXApO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5AQCAtMjkyOSw4ICsyOTU0LDExIEBAIHN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYXBzLCBsaXN0KSB7XFxuLVxcdFxcdGlmIChtYXAtXFx1MDAzZWFkZHIgPT0gYWRkcilcXG4rXFx0XFx0aWYgKG1hcC1cXHUwMDNlYWRkciA9PSBhZGRyKSB7XFxuK1xcdFxcdFxcdGlmICghbWFwLVxcdTAwM2VwaW5uZWQpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHRcXHRyZXR1cm4gbWFwO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTI6MzkuMTI5NDc0MTgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1NDcwNjM5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzXCIsXG4gICAgXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTUxYTNiZTM0OTU0Mjc5OTgzZmVlMzMxOTdjN2Q2NjgxMDQyNzJlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE5OjEyOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxuaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XG5AQCAtMTEyLDkgKzExMiwyMCBAQCBHcm91cHM6XG4gICAgICAgbWFzayBvciB1bm1hc2sgdGhlIGFkYXB0ZXIsIGFzIHNwZWNpZmllZCBpbiBtYXNrXG4gXG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfTUFQXG4tICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS5cbisgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0XG4rICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm1cbisgICAgICBwaW5uaW5nIGlzIG5vdCBwb3NzaWJsZSAoZS5nLiBmaWxlLWJhY2tlZCBtZW1vcnkpLCB0aGUgcGFnZSBpcyB2ZXJpZmllZFxuKyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uXG4rICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoXG4rICAgICAgaW50ZXJydXB0LiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpcyBhIG5vLW9wIGFuZCB0aGUgaW9jdGxcbisgICAgICByZXR1cm5zIHN1Y2Nlc3MuXG4rXG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfVU5NQVBcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxuKyAgICAgIFVubWFwIGEgcHJldmlvdXNseSBtYXBwZWQgYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGFuZCByZWxlYXNlXG4rICAgICAgdGhlIGxvbmctdGVybSBwaW4uIElmIHRoZSBwYWdlIHdhcyBub3QgbG9uZy10ZXJtIHBpbm5lZCAoZS5nLiBmaWxlLWJhY2tlZFxuKyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcbisgICAgICBtYXAgZW50cnkgZXhpc3RzLCAtRU5PRU5UIGlzIHJldHVybmVkLiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpc1xuKyAgICAgIGEgbm8tb3AgYW5kIHRoZSBpb2N0bCByZXR1cm5zIHN1Y2Nlc3MuXG4gXG4gICBLVk1fREVWX0ZMSUNfQUlTTVxuICAgICBtb2RpZnkgdGhlIGFkYXB0ZXItaW50ZXJydXB0aW9uLXN1cHByZXNzaW9uIG1vZGUgZm9yIGEgZ2l2ZW4gaXNjIGlmIHRoZVxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGVhYTM0YzViZDNjMTEwLi5jMTcyZjliMjEyZDE4ZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTQ3Niw2ICs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8ge1xuIFx0X191NjQgZ3Vlc3RfYWRkcjtcbiBcdF9fdTY0IGFkZHI7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdC8qXG4rXHQgKiBUcnVlIGlmIHRoZSBwYWdlIGlzIGxvbmctdGVybSBwaW5uZWQuIEZhbHNlIGlmIGxvbmctdGVybSBwaW5uaW5nXG4rXHQgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LlxuK1x0ICovXG4rXHRib29sIHBpbm5lZDtcbiB9O1xuIFxuIHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIge1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG5pbmRleCA5ZTNlNmIwZDcyYWQ2MS4uNzUxNGQ5ZTI0MDNjMWIgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG5AQCAtMjUyMCw4ICsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRtYXAtXHUwMDNlYWRkciA9IGhvc3RfYWRkcjtcbiBcdG1hcC1cdTAwM2VwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCBGT0xMX0xPTkdURVJNKTtcbiBcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbi1cdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4rXHRcdC8qXG4rXHRcdCAqIExvbmctdGVybSBwaW5uaW5nIG1heSBmYWlsIGZvciBtZW1vcnkgdHlwZXMgc3VjaCBhcyBmaWxlLWJhY2tlZFxuK1x0XHQgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZVxuK1x0XHQgKiBub24tYXRvbWljIGlycWZkIHBhdGggY2FuIGhhbmRsZSBpbnRlcnJ1cHQgaW5qZWN0aW9uLlxuK1x0XHQgKi9cbitcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwaW5fbWFwX3BhZ2Uoa3ZtLCBob3N0X2FkZHIsIDApO1xuK1x0XHRpZiAoIW1hcC1cdTAwM2VwYWdlKSB7XG4rXHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHR1bnBpbl91c2VyX3BhZ2UobWFwLVx1MDAzZXBhZ2UpO1xuK1x0XHRtYXAtXHUwMDNlcGFnZSA9IE5VTEw7XG4rXHRcdG1hcC1cdTAwM2VwaW5uZWQgPSBmYWxzZTtcbitcdFx0LyogQWRkIGFuIGVudHJ5IHRvIHByZXNlcnZlIE1BUC9VTk1BUCBzeW1tZXRyeS4gKi9cbitcdH0gZWxzZSB7XG4rXHRcdG1hcC1cdTAwM2VwaW5uZWQgPSB0cnVlO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbiBcdGlmIChhZGFwdGVyLVx1MDAzZW5yX21hcHMgXHUwMDNjIE1BWF9TMzkwX0FEQVBURVJfTUFQUykge1xuQEAgLTI1MzIsNyArMjU0Niw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHR9XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrLCBmbGFncyk7XG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgbWFwLVx1MDAzZXBhZ2UpXG4gXHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4gb3V0OlxuIFx0aWYgKHJldClcbkBAIC0yNTQ2LDYgKzI1NjAsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqbWFwLCAqdG1wLCAqbWFwX3RvX2ZyZWU7XG4gXHRzdHJ1Y3QgcGFnZSAqbWFwX3BhZ2VfdG9fcHV0ID0gTlVMTDtcbiBcdHU2NCBtYXBfYWRkcl90b19tYXJrID0gMDtcbitcdGJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBmb3VuZCA9IDAsIGlkeDtcbiBcbkBAIC0yNTYwLDYgKzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bWFwLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1hcF9wYWdlX3RvX3B1dCA9IG1hcC1cdTAwM2VwYWdlO1xuIFx0XHRcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXHUwMDNlZ3Vlc3RfYWRkcjtcbitcdFx0XHRtYXBfcGlubmVkID0gbWFwLVx1MDAzZXBpbm5lZDtcbiBcdFx0XHRtYXBfdG9fZnJlZSA9IG1hcDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTI1NjgsMTEgKzI1ODQsMTggQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuIFxuIFx0aWYgKGZvdW5kKSB7XG4gXHRcdGtmcmVlKG1hcF90b19mcmVlKTtcbi1cdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXBfYWRkcl90b19tYXJrIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xuLVx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHR1bnBpbl91c2VyX3BhZ2UobWFwX3BhZ2VfdG9fcHV0KTtcbitcdFx0aWYgKG1hcF9waW5uZWQpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIE9ubHkgbG9uZy10ZXJtIHBpbm5lZCBwYWdlcyBuZWVkIHRvIGJlIG1hcmtlZCBkaXJ0eVxuK1x0XHRcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxuK1x0XHRcdCAqIE1BUC9VTk1BUCBzeW1tZXRyeS5cbitcdFx0XHQgKi9cbitcdFx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4rXHRcdFx0bWFya19wYWdlX2RpcnR5KGt2bSwgbWFwX2FkZHJfdG9fbWFyayBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG4rXHRcdFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xuK1x0XHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4rXHRcdFx0dW5waW5fdXNlcl9wYWdlKG1hcF9wYWdlX3RvX3B1dCk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UO1xuQEAgLTI1OTgsMTEgKzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuIFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFwLCB0bXAsIFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRsaXN0X2RlbChcdTAwMjZtYXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbi1cdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4rXHRcdFx0aWYgKG1hcC1cdTAwM2VwaW5uZWQpIHtcbitcdFx0XHRcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1KTtcbitcdFx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbitcdFx0XHRcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVx1MDAzZXBhZ2UpO1xuK1x0XHRcdFx0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSwgaWR4KTtcbitcdFx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4rXHRcdFx0fVxuIFx0XHRcdGtmcmVlKG1hcCk7XG4gXHRcdH1cbiBcdH1cbkBAIC0yOTI5LDggKzI5NTQsMTEgQEAgc3RhdGljIHN0cnVjdCBzMzkwX21hcF9pbmZvICpnZXRfbWFwX2luZm8oc3RydWN0IHMzOTBfaW9fYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzLCBsaXN0KSB7XG4tXHRcdGlmIChtYXAtXHUwMDNlYWRkciA9PSBhZGRyKVxuK1x0XHRpZiAobWFwLVx1MDAzZWFkZHIgPT0gYWRkcikge1xuK1x0XHRcdGlmICghbWFwLVx1MDAzZXBpbm5lZClcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdHJldHVybiBtYXA7XG4rXHRcdH1cbiBcdH1cbiBcdHJldHVybiBOVUxMO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEyOjM5LjEyOTQ3NjgwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDk4Nzg1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIHMzOTAgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCB0YXJnZXRpbmcgS1ZNIG9uIHMzOTAuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGFkYXB0ZXIgbWFwcGluZyBhbmQgdW5tYXBwaW5nIGZ1bmN0aW9uczogYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgYWRkaXRpb24gb2YgYSBgcGlubmVkYCBib29sZWFuIHRvIHRoZSBgczM5MF9tYXBfaW5mb2Agc3RydWN0IGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLiBUaGlzIGhhcyBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0gZm9yIHMzOTA7IGl0IGluZGljYXRlcyBzb21lIGNoYW5nZSBpbiByZXNvdXJjZSBwaW5uaW5nLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byBjaGVjayByZWFjaGFiaWxpdHkuIEFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgY2FsbGVkPyBBcmUgdGhleSByZWxldmFudCB0byB0aGUgc3lzdGVtPyBJIHF1aWNrbHkgcmVjYWxsIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aWVkIHRvIHRoZSBgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVBgIGFuZCBgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUGAgaW9jdGxzLiBBaCwgYnV0IHdhaXQsIHRoZSBleGlzdGluZyBkb2N1bWVudGF0aW9uLi4uIGl0J3MgYSBuby1vcCwgcmlnaHQ/IFRoZSBtYXBwaW5nIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgYnkgdGhlIElSUSByb3V0ZS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggKmNoYW5nZXMqIHRoZSBkb2N1bWVudGF0aW9uISBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIHJlc3RvcmUgZnVuY3Rpb25hbGl0eSB0byBgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVBgLiBUaGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCBpdCBpcyBhIG5vLW9wLCBidXQgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNheXMgaXQgd2lsbCAnbWFwIGFuIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBmb3IgbG9uZy10ZXJtIHBpbm5pbmcgc28gdGhhdCBpbnRlcnJ1cHQgaW5qZWN0aW9uIGNhbiBiZSBwZXJmb3JtZWQgaW4gYXRvbWljIGNvbnRleHQuJyBTbyB0aGUgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyByZWluc3RhdGVkIG9yIG1vZGlmaWVkIGluIGEgc2lnbmlmaWNhbnQgd2F5LlxuXG5JJ20gbm93IGdvaW5nIHRvIGRpZyBpbnRvIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCB0byB0cmFjZSBob3cgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoeSB0aGUgb2xkIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgYnJvdWdodCBiYWNrLCBlc3BlY2lhbGx5IHNpbmNlIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBpbmRpY2F0ZWQgaXQgd2FzIGEgbm8tb3AuIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIGNhbGwgY2hhaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjo0NS44MzkzNTgyNjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1Nzc1OTc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9hZGFwdGVyX21hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI0NzY9c3RhdGljIHN0cnVjdCBwYWdlICpwaW5fbWFwX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1NjQgdWFkZHIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0OTQtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNDk1OnN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjY0OD1zdGF0aWMgaW50IG1vZGlmeV9pb19hZGFwdGVyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NzYtXFx0XFx0XFx0ZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZXN0YXQuaW9fMzkwX2FkYXB0ZXJfbWFwKys7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjc3OlxcdFxcdFxcdHJldCA9IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKGRldi1cXHUwMDNla3ZtLCByZXEuaWQsIHJlcS5hZGRyKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NzgtXFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTI6NTAuNzk3MTIyMzg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwMjgzNzE2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNL3MzOTAgQWRhcHRlciBNYXBwaW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBnZXR0aW5nIGF0IHNvbWUgY29yZSBLVk0vczM5MCBhZGFwdGVyIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdG91Y2hpbmcgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBgcGlubmVkYCBib29sZWFuIGluIGBzdHJ1Y3QgczM5MF9tYXBfaW5mb2AgaXMgdGhlIGtleS4gVGhleSdyZSBleHBsaWNpdGx5IHRyYWNraW5nIGxvbmctdGVybSBwYWdlIHBpbm5pbmcsIHdoaWNoIGlzIGdvb2QuIFRoZSBmYWxsYmFjayB0byBzaG9ydC10ZXJtIHBpbm5pbmcgaWYgbG9uZy10ZXJtIGZhaWxzIGlzIGludGVyZXN0aW5nLiBJZiB0aGF0IHdvcmtzLCB0aGV5J3JlIHNldHRpbmcgYHBpbm5lZCA9IGZhbHNlYCBhbmQgYHBhZ2UgPSBOVUxMYCBpbiB0aGUgbWFwIGVudHJ5LiBUaGlzIHdob2xlIHRoaW5nIGNlbnRlcnMgb24gZmlsZS1iYWNrZWQgbWVtb3J5LCBzbyB0aGV5J3JlIHdvcmtpbmcgYXJvdW5kIHBvdGVudGlhbCBsb25nLXRlcm0gcGlubmluZyBpc3N1ZXMuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpbXBhY3RpbmcgaG93IGFkYXB0ZXJzIGFyZSBtYXBwZWQgYW5kIHVubWFwcGVkLiBUaGlzIG1lYW5zIGl0IGhhcyB0byBiZSBmdXp6ZWQgdGhvcm91Z2hseS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgaXMgdGhlcmUsIGJ1dCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCBzZWN1cmU/IEkgbmVlZCB0byB0ZXN0IHRoYXQuXG5cbkxldCdzIHNlZeKApiBmb3IgY29uZmlnIG9wdGlvbnMsIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBLVk0sIHNvIGBLVk1gIChhbmQgdGhlIHMzOTAtc3BlY2lmaWMgYXNwZWN0cykgYXJlIHRoZSBrZXkgY29uZmlnIG9wdGlvbnMgdG8gbm90ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNC44MjU0OTY4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyOTA5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVxcdGRlZl90cmlzdGF0ZSB5XFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ3OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cXHRib29sIFxcXCJVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNC45Mjc3OTgwMTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU5NjgwNzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIG9uIHMzOTAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTmF0dXJhbGx5LCB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZmlsZS4gVGhhdCdzIGEgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlLCByaWdodD8gSWYgaXQncyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGl0J2xsIGxpa2VseSBiZSB1bmRlciBgYXJjaC9zMzkwL2AuIEFuZCBzaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgYEtWTWAgY29tcG9uZW50cywgaXQgZmVlbHMgbGlrZSBpdCB3b3VsZCBiZSBpbiBhIHJlbGF0ZWQgS2NvbmZpZyBmaWxlIG9yIHdpdGhpbiBhIGRlZGljYXRlZCBLVk0gc3VidHJlZS4gU28sIGxldCdzIHN0YXJ0IHdpdGggYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgS1ZNJ3MgYmVoYXZpb3Igb24gdGhpcyBwbGF0Zm9ybS4gVGhpcyBpcyBteSBiYXNlbGluZS4gRnJvbSB0aGVyZSwgSSBjYW4gYWx3YXlzIGV4cGxvcmUgZnVydGhlciBvciBjcm9zcy1yZWZlcmVuY2Ugb3RoZXIgcmVsYXRlZCBmaWxlcyBpZiBuZWVkZWQsIGJ1dCB0aGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNy43ODc0ODA4NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNjpcXHRcXG4gICA3OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA4OlxcdFxcdGRlZl9ib29sIHlcXG4gICA5OlxcdFxcdHByb21wdCBcXFwiS1ZNXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxcbiAgMTI6XFx0XFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kIGRpc2FibGVkLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgS1ZNXFxuICAyMDpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiAgMjE6XFx0XFx0cHJvbXB0IFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxcbiAgMjQ6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXFxuICAyNTpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xcbiAgMjg6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbiAgMjk6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fVkZJT1xcbiAgMzE6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMjpcXHRcXHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbiAgMzM6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXFxuICAzNjpcXHRcXHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xcbiAgMzc6XFx0XFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXFxuICA0MDpcXHRcXHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuICA0ODpcXHRcXHRib29sIFxcXCJVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1cXG4gIDUwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MDcuNzg3NTcxMTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzMDE5Nzc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqS1ZNIG9uIFMvMzkwIEFkYXB0ZXIgTWFwcGluZyAtIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBLVk0uIFRoYXQncyB0aGUgYmFzZWxpbmUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZSwgZ2l2ZW4gdGhlIGFkYXB0ZXIgZm9jdXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbWVtb3J5IG1hcHBpbmcgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGFyZTpcblxuKiAgIGBrdm1fczM5MF9hZGFwdGVyX21hcGA6IFRoaXMgaXMgY3J1Y2lhbC4gSXQncyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgbWFwcGluZyBhbiBhZGFwdGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYXJndW1lbnRzLCBpdHMgaW1wbGVtZW50YXRpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgUy8zOTAgaGFyZHdhcmUuIFdoYXQga2luZCBvZiBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgZm9yIHRoZSBtYXBwaW5nPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0YWJsZSBsb29rdXAsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBjYWNoaW5nPyBJcyB0aGUgZnVuY3Rpb24gYXRvbWljP1xuKiAgIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYDogT2J2aW91c2x5LCB0aGUgaW52ZXJzZSBvZiBtYXBwaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5tYXBwaW5nIHByb2Nlc3MuIERvZXMgaXQgaW52b2x2ZSBpbnZhbGlkYXRpbmcgY2FjaGVzLCBzZW5kaW5nIElQSXMsIG9yIGFueXRoaW5nIGVsc2UgdG8gZW5zdXJlIGNvbnNpc3RlbmN5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmcgdG8gYXZvaWQgcHJlbWF0dXJlIHVubWFwcGluZz9cbiogICBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYDogVGhpcyBpcyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBjbGVhbnVwIHByb2Nlc3MuIEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgcmVtb3ZhbCBvZiBhbGwgYWRhcHRlcnM/IElzIGl0IGVmZmljaWVudCwgb3IgaXMgaXQgYSBicnV0ZS1mb3JjZSBhcHByb2FjaD8gRG9lcyBpdCBuZWVkIGFueSBsb2NrcyB0byBtYWtlIHN1cmUgbm8gYWRhcHRlcnMgYXJlIGFjY2Vzc2VkIGR1cmluZyBhIGJ1bGsgcmVtb3ZhbD9cbiogICBgZ2V0X21hcF9pbmZvYDogTm93LCBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uIEl0J3MgdXNlZCB0byByZXRyaWV2ZSB0aGUgbWFwcGluZyBpbmZvcm1hdGlvbi4gV2FpdCBhIHNlY29uZCwgaXNuJ3QgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IE9rYXksIGxldCdzIHZlcmlmeSBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyB0aGUgZnVuY3Rpb24uIElmIGl0J3MgaW5saW5lZCBpdCBpcyBhIHZlcnkgZ29vZCBzaXR1YXRpb24gYW5kIHJlZHVjZXMgb3ZlcmhlYWQuIElmIG5vdCBpbmxpbmVkLCBJIG5lZWQgdG8gY2hlY2sgaG93IGZyZXF1ZW50bHkgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWNhdXNlIGl0J3MgZ29pbmcgdG8gYmUgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBJIG5lZWQgdG8ga25vdyB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjEyLjMxNzc3MTg5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMjEyNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdldF9tYXBfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjkzNj1zdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfaW5kX2JpdChfX3U2NCBhZGRyLCB1bnNpZ25lZCBsb25nIGJpdF9uciwgYm9vbCBzd2FwKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTQ3LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk0ODpzdGF0aWMgc3RydWN0IHMzOTBfbWFwX2luZm8gKmdldF9tYXBfaW5mbyhzdHJ1Y3QgczM5MF9pb19hZGFwdGVyICphZGFwdGVyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk0OS1cXHRcXHRcXHRcXHRcXHQgIHU2NCBhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTY2PXN0YXRpYyBpbnQgYWRhcHRlcl9pbmRpY2F0b3JzX3NldChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5NzktXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk4MDpcXHRpbmRfaW5mbyA9IGdldF9tYXBfaW5mbyhhZGFwdGVyLCBhZGFwdGVyX2ludC1cXHUwMDNlaW5kX2FkZHIpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk4MS1cXHRpZiAoIWluZF9pbmZvKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDItXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzAwMzpcXHRzdW1tYXJ5X2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZXN1bW1hcnlfYWRkcik7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDA0LVxcdGlmICghc3VtbWFyeV9pbmZvKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMwMjk9c3RhdGljIGludCBhZGFwdGVyX2luZGljYXRvcnNfc2V0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDM5LVxcdHNwaW5fbG9jayhcXHUwMDI2YWRhcHRlci1cXHUwMDNlbWFwc19sb2NrKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMwNDA6XFx0aW5kX2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZWluZF9hZGRyKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNDEtXFx0aWYgKCFpbmRfaW5mbykge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDQ4LVxcdFxcdHNldF9iaXQoYml0LCBtYXApO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA0OTpcXHRzdW1tYXJ5X2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZXN1bW1hcnlfYWRkcik7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDUwLVxcdGlmICghc3VtbWFyeV9pbmZvKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjEyLjQzODk5MTkyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0ODQ4OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIFN0YXRpYyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIGdvdCBhIGZldyBmdW5jdGlvbiBjYWxscyB0aGF0IGhhdmUgY2F1Z2h0IG15IGV5ZS4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgYGdldF9tYXBfaW5mb2AsIGBrdm1fczM5MF9hZGFwdGVyX21hcGAsIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAgYXJlIGFsbCBwb3RlbnRpYWxseSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCBpbXBseWluZyB0aGV5J3JlIG5vdCBpbnRlbmRlZCB0byBiZSBleHBvc2VkIGdsb2JhbGx5LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBkZWNsYXJhdGlvbnMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBzaWduaWZpY2FudGx5IGFsdGVyIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBzdHJ1Y3R1cmUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbi4gU3RhdGljIGZ1bmN0aW9ucyBoYXZlIGltcGxpY2F0aW9ucyBmb3IgbGlua2luZywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgcmUtdXNlIGluIG90aGVyIGNvbnRleHRzLCBzbyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgdGhlIGNhc2UuIFRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjE1Ljk1Mzg0NDgwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NDEwMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI0NzY9c3RhdGljIHN0cnVjdCBwYWdlICpwaW5fbWFwX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1NjQgdWFkZHIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0OTQtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNDk1OnN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTYuMDY5MjYwMTkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzg3NzE5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbnMgYW5kIENhbGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gb2JzZXJ2aW5nIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoZXkncmUgc3RhdGljLiBUaGF0J3MgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgKnVzaW5nKiB0aGVtLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsaW5nIHRoZXNlIHN0YXRpYyBvbmVzLiBJdCdzIGEgY2xhc3NpYyBhbmFseXNpcyBwYXR0ZXJuLlxuXG5BIHF1aWNrIHNjYW4gcmV2ZWFscyB0aGF0IGBtb2RpZnlfaW9fYWRhcHRlcmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24gaGVyZS4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgYm90aCBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAuIFRoYXQgcHJvdmlkZXMgYSBzb2xpZCBsaW5rIHRvIGludmVzdGlnYXRlLiBUaGlzIGdpdmVzIHVzIGEgdXNlZnVsIHBpdm90IHBvaW50IGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjQxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTkuMjQ4MDM2ODQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxMzIwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kaWZ5X2lvX2FkYXB0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2MzY9dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY0Ny1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2NDg6c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY0OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI4MzQ9c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4NjgtXFx0Y2FzZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRlk6XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyODY5OlxcdFxcdHIgPSBtb2RpZnlfaW9fYWRhcHRlcihkZXYsIGF0dHIpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjg3MC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTkuMzg4MTc2Njc5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTYxMzYwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBmbGljX3NldF9hdHRyYCoqXG5cbk9rYXksIHNvIGBmbGljX3NldF9hdHRyYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBtb2RpZnlfaW9fYWRhcHRlcmAsIGFuZCB0aGF0J3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24gcG9pbnQgdG8gZXhwbG9yZS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBgbW9kaWZ5X2lvX2FkYXB0ZXJgLCBsZXQncyBzdGVwIGJhY2sgYW5kIGVuc3VyZSBJJ3ZlIGdvdCB0aGUgY29udGV4dCBvZiBgZmxpY19zZXRfYXR0cmAgZnVsbHkgZ3Jhc3BlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiAqd2h5KiB3ZSdyZSBzZXR0aW5nIGF0dHJpYnV0ZXMgaW4gdGhlIGZpcnN0IHBsYWNlLCB3aGF0IHBhcmFtZXRlcnMgaXQgYWNjZXB0cywgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGlzLiBMZXQgbWUgcXVpY2tseSBhbmFseXplIHRoZSBjb2RlIGZvciB0aGF0LiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgc28gZ2V0dGluZyB0aGF0IGNvbnRleHQgaXMgaW1wb3J0YW50LiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIGEgcHJlcmVxdWlzaXRlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjIyLjU0NDMxNjkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzAwNTA3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxpY19zZXRfYXR0clwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjgxND1zdGF0aWMgaW50IGZsaWNfYWlzX21vZGVfc2V0X2FsbChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzMtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyODM0OnN0YXRpYyBpbnQgZmxpY19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjgzNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5Mjc9c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOS1cXHQuZ2V0X2F0dHIgPSBmbGljX2dldF9hdHRyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjkzMDpcXHQuc2V0X2F0dHIgPSBmbGljX3NldF9hdHRyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkzMS1cXHQuaGFzX2F0dHIgPSBmbGljX2hhc19hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzoyMi42NzQzNzIxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5OTczNzczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3RhdGljIEZ1bmN0aW9uIEFzc2lnbm1lbnRzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZsaWNfc2V0X2F0dHJgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEhvd2V2ZXIsIGl0J3MgYmVpbmcgYXNzaWduZWQgdG8gYGt2bV9mbGljX29wcy5zZXRfYXR0cmAuIFRoaXMgaW1wbGllcyB0aGF0IGl0J3MgYWN0aW5nIGFzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYSBicm9hZGVyIGludGVyZmFjZSwgcHJvYmFibHkgZm9yIGEgcGFydGljdWxhciBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzdGF0aWMgZGVjbGFyYXRpb24gaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0cnVseSBsb2NhbCB0byB0aGUgZmlsZSwgb3IgaXMgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYmVpbmcgXCJleHBvcnRlZFwiIHZpYSB0aGUgYXNzaWdubWVudCBpbiBga3ZtX2ZsaWNfb3BzYD8gSWYgdGhlIGxhdHRlciwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBpcyBsaWtlbHkgaGlkaW5nIGluZm9ybWF0aW9uIGFuZCBjb3VsZCBiZSByZW1vdmVkLlxuXG5BbmQgdGhlbiwgSeKAmW0gYWxzbyB0dXJuaW5nIG15IGF0dGVudGlvbiB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYC4gSSBuZWVkIHRvIGNvbXBhcmUgYW5kIGNvbnRyYXN0LiBJcyB0aGlzIG9uZSBhbHNvIHN0YXRpYz8gT3IgaXMgaXQgYSBnbG9iYWwgZnVuY3Rpb24gYmVpbmcgdXNlZCBpbiBhIHNpbWlsYXIgd2F5LCBvciB1c2VkIGluIGEgd2F5IHRoYXQgaXMgc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQ/IElzIGl0IHBhcnQgb2YgdGhlIHNhbWUgaW50ZXJmYWNlLCBvciBhbm90aGVyPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSBhcmUgdXNlZCB3aXRoaW4gdGhlIEtWTSBmcmFtZXdvcmsgd2lsbCBpbGx1bWluYXRlIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcywgbWFpbnRhaW5hYmlsaXR5IGlzc3Vlcywgb3IgZXZlbiBwb3NzaWJsZSBidWdzIHRoYXQgY291bGQgYXJpc2UgZnJvbSBtaXN1c2Ugb2Ygc2NvcGUuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBhbGwgaW5zdGFuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzE3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MjYuNTc0MTEyMzc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjYyMzA0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI1NTc9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjAzLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjYwNDp2b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjA1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYzNj12b2lkIGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM5LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY0MDpcXHRrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoa3ZtKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjI2LjY3MDc0MjAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1NjI2ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipUcmFjaW5nIEFkYXB0ZXIgRGVzdHJ1Y3Rpb24gaW4gS1ZNL3MzOTB4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBhZGFwdGVycyBhcmUgdW5tYXBwZWQgaW4gdGhlIHMzOTB4IEtWTSBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZSBpbml0aWFsIHBvaW50IG9mIGludGVyZXN0IGlzIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgLiBJIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCB1bm1hcHBpbmcgb2YgdGhlIGFkYXB0ZXJzLCBidXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgKndoZW4qIGl0IGdldHMgY2FsbGVkLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGNhbGxlZCBieSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGFkYXB0ZXIgdGVhcmRvd24sIGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB3aGF0IGhhcHBlbnMgd2l0aGluIHRoZSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgbGVhZGluZyB1cCB0byB0aGF0IGNhbGwgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM4MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjI5Ljg5NjM3MTkyM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MzAzMzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYwND12b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjM2OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zNDI4PXZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1MS1cXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMik7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM0NTI6XFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNDUzLVxcdGt2bV9zMzkwX2NsZWFyX2Zsb2F0X2lycXMoa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD01NDY9aW50IHBzd19leHRpbnRfZGlzYWJsZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ3OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NDgtaW50IGt2bV9zMzkwX2V4dF9jYWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MzIuNTc5NDExNjA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ0NzYzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTS9zMzkwIEFQSSBFbnRyeXBvaW50cyBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIHdhcyBvbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgS1ZNL3MzOTAgY29kZSB0aGF0IFN5emthbGxlciBjb3VsZCB0YXJnZXQgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuIEZpcnN0LCBJIG5vdGljZWQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGlzIG5vbi1zdGF0aWMsIGltbWVkaWF0ZWx5IG1ha2luZyBtZSB0aGluayBhYm91dCBicm9hZGVyIEFQSSBhY2Nlc3NpYmlsaXR5LiBUaGF0IGxlZCBtZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlIHdlcmUgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLiBTY2FubmluZyBxdWlja2x5LCBJIGZvdW5kIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AsIHdoaWNoIHNlZW1lZCBwcm9taXNpbmcuIEkgbWFkZSBhIG1lbnRhbCBub3RlIG9mIGBrdm1fZmxpY19vcHNgIGFzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LCBidXQgaXQncyBhIHN0cnVjdCwgc28gdGhhdCBkaWRuJ3QgcGFuIG91dC5cblxuSSB0aGVuIHN0YXJ0ZWQgaW52ZXN0aWdhdGluZyB0aGUgRkxJQyBhZGFwdGVyIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBgZmxpY19zZXRfYXR0cmAsIGBmbGljX2dldF9hdHRyYCwgYW5kIGBmbGljX2hhc19hdHRyYC4gVGhlc2UgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIHJhaXNlZCBhIGZsYWcuIFN5emthbGxlcidzIGFiaWxpdHkgdG8gZGlyZWN0bHkgdGFyZ2V0IHRoZXNlIGlzIGxpbWl0ZWQgaWYgdGhleSdyZSBpbmxpbmVkLiBJIHJldmlzaXRlZCB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgYWdhaW4sIGtlZXBpbmcgaW4gbWluZCB0aGF0IHRob3NlIGFyZSBub24tc3RhdGljLlxuXG5UaGVuIGNhbWUgdGhlIGtleSBjb25uZWN0aW9uOiBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGlzIHRyaWdnZXJlZCBieSB0aGUgYEtWTV9ERVZfRkxJQ19BREFQVEVSX01PRElGWWAgaW9jdGwgb24gdGhlIEZMSUMgZGV2aWNlLiBBaGEhIFRoZSBpb2N0bCBoYW5kbGVyLCBga3ZtX2RldmljZV9pb2N0bF9hdHRyYCwgY2FsbHMgdGhlIGRldmljZSdzIGBzZXRfYXR0cmAgb3BlcmF0aW9uLiBTbywgZWl0aGVyIGBrdm1fZGV2aWNlX2lvY3RsX2F0dHJgIChnZW5lcmljKSBvciBgZmxpY19zZXRfYXR0cmAgKHN0YXRpYykgaXMgYW4gZW50cnkgcG9pbnQuIFNpbmNlIGBmbGljX3NldF9hdHRyYCBpcyBzdGF0aWMsIG15IGNvbmNlcm4gaXMgd2hldGhlciBpdCdzIGlubGluZWQuIElmIGl0ICppcyogaW5saW5lZCwgU3l6a2FsbGVyIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGZpbmQgaXQgZGlyZWN0bHksIGFsdGhvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQgc2hvdWxkIHByZXZlbnQgdGhhdC4gQnV0IFN5emthbGxlciBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyBJIHNob3VsZCBsb29rIGZvciB0aGF0LlxuXG5UaGUgaWRlYWwgc29sdXRpb24gaXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgZGlyZWN0bHkgcmVsYXRlZCB0byBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgLCB0aGUgY29yZSBmdW5jdGlvbiBpbiB0aGUgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBwcm92aWRpbmcgYSB2YWxpZCwgc3l6a2FsbGVyLWZyaWVuZGx5IGVudHJ5IHBvaW50IGZvciB0ZXN0aW5nIGFuZCBjb3ZlcmFnZS4gTG9va2luZyBiYWNrIG92ZXIgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgbXkgY3VycmVudCBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiBmaW5kIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgZm9yIG1vcmUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6NDEuMzUzODkxNzE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI4NjMzMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9mbGljX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5MjA9c3RhdGljIHZvaWQgZmxpY19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICpkZXYpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5MjYtLyogczM5MCBmbG9hdGluZyBpcnEgY29udHJvbGxlciAoZmxpYykgKi9cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5Mjc6c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5MjgtXFx0Lm5hbWUgPSBcXFwia3ZtLWZsaWNcXFwiLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MTQtXFx0LyogUmVnaXN0ZXIgZmxvYXRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MTU6XFx0cmMgPSBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX2ZsaWNfb3BzLCBLVk1fREVWX1RZUEVfRkxJQyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUxNi1cXHRpZiAocmMpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD01NDg9aW50IGt2bV9zMzkwX2V4dF9jYWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ5OmV4dGVybiBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2ZsaWNfb3BzO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NTAtaW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6NDMuNjgyNTMwNzE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTg0NzIyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS1ZNL3MzOTAgQWRhcHRlciBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgZm9yIG1hbmFnaW5nIGFkYXB0ZXJzIHdpdGhpbiB0aGUgS1ZNL3MzOTAgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9ucyB0aGF0IGRpcmVjdGx5IGhhbmRsZSB0aGUgdW5tYXBwaW5nIG9yIGRlc3RydWN0aW9uIG9mIHRoZXNlIGFkYXB0ZXJzLiBJZGVhbGx5LCBJJ20gbG9va2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFzIHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgZXhwb3NlZCBhbmQgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZS5cblxuSWYgYSBkaXJlY3QsIGRlZGljYXRlZCBmdW5jdGlvbiBkb2Vzbid0IGxlYXAgb3V0LCBJJ2xsIGZhbGwgYmFjayB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaG9zZSBzb3VuZCBsaWtlIHRoZXkgY291bGQgYmUgdXNlZnVsIGFzIGZhbGxiYWNrIG9wdGlvbnMuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiB3aGF0IGFib3V0IGBhZGFwdGVyX2luZGljYXRvcnNfc2V0YD8gSXQgbG9va3MgcHJvbWlzaW5nLCBidXQgdGhlIGZhY3QgdGhhdCBpdCdzIHN0YXRpYyBpcyBhIHNldGJhY2suIFRoYXQgd291bGQgbWFrZSBpdCBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBzbyBubyBkaWNlLlxuXG5Pa2F5LCBwbGFuIEIuIEknbGwgdGhvcm91Z2hseSBleGFtaW5lIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYC4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IHRoaXMgZmlsZSwgZ2l2ZW4gaXRzIG5hbWUsIGlzIGEgcHJpbWUgbG9jYXRpb24gZm9yIGFkYXB0ZXItcmVsYXRlZCBmdW5jdGlvbnMsIGFuZCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGVyZSB0aGF0IGZpdCB0aGUgYmlsbC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY4NiwiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo0OC4zNDEwMDU5NTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjAwNDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzK1xcXFwqKlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9ODQ9c3RhdGljIHZvaWQgc2NhX2NsZWFyX2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtOTUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzo5NjppbnQgcHN3X2V4dGludF9kaXNhYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy05Ny17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTExMTQ9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19kZWxpdmVyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE4NC0vKiBDaGVjayB3aGV0aGVyIGFuIGV4dGVybmFsIGNhbGwgaXMgcGVuZGluZyAoZGVsaXZlcmFibGUgb3Igbm90KSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE4NTppbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMTg2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5NC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjExOTU6aW50IGt2bV9zMzkwX3ZjcHVfaGFzX2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBleGNsdWRlX3N0b3ApXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMTk2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxMy1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjEyMTQ6aW50IGt2bV9jcHVfaGFzX3BlbmRpbmdfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEyMTk9c3RhdGljIHU2NCBfX2NhbGN1bGF0ZV9zbHRpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjUwLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTI1MTppbnQga3ZtX3MzOTBfaGFuZGxlX3dhaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI1Mi17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTEyOTctXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjk4OnZvaWQga3ZtX3MzOTBfdmNwdV93YWtldXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI5OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEzMTA9ZW51bSBocnRpbWVyX3Jlc3RhcnQga3ZtX3MzOTBfaWRsZV93YWtldXAoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMzI3LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTMyODp2b2lkIGt2bV9zMzkwX2NsZWFyX2xvY2FsX2lycXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTMyOS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTE5NDk9c3RhdGljIGludCBfX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTk3OS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjE5ODA6aW50IGt2bV9zMzkwX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xOTgxLVxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LCBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjItXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDIzOmludCBrdm1fczM5MF9yZWluamVjdF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjAyNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjgtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDI5OmludCBzMzkwaW50X3RvX3MzOTBpcnEoc3RydWN0IGt2bV9zMzkwX2ludGVycnVwdCAqczM5MGludCxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMzAtXFx0XFx0ICAgICAgIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3MS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIwNzI6aW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3My17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwNzgtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDc5OmludCBrdm1fczM5MF9pc19yZXN0YXJ0X2lycV9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODAte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDg1LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA4Njp2b2lkIGt2bV9zMzkwX2NsZWFyX3N0b3BfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMDk2PXN0YXRpYyBpbnQgZG9faW5qZWN0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3MzOTBfaXJxICppcnEpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNDAtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMTQxOmludCBrdm1fczM5MF9pbmplY3RfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNDIte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMTY0PXN0YXRpYyB2b2lkIGludGlfdG9faXJxKHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE3OS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIxODA6dm9pZCBrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxODEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDE3PXN0YXRpYyBpbnQgcmVnaXN0ZXJfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDYzLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ2NDppbnQga3ZtX3MzOTBfbWFza19hZGFwdGVyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBib29sIG1hc2tlZClcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0NjUte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNTU3PXN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl91bm1hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwMy1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MDQ6dm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjM2OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzA3Mj1zdGF0aWMgaW50IHNldF9hZGFwdGVyX2ludChzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA5OC0gKi9cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMwOTk6dm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMzktXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTQwOmludCBrdm1fc2V0X3JvdXRpbmdfZW50cnkoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE0MS1cXHRcXHRcXHQgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgxLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzE4MjppbnQga3ZtX3NldF9tc2koc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxODMtXFx0XFx0aW50IGlycV9zb3VyY2VfaWQsIGludCBsZXZlbCwgYm9vbCBsaW5lX3N0YXR1cylcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4Ny1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMxODg6aW50IGt2bV9zMzkwX3NldF9pcnFfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkIF9fdXNlciAqaXJxc3RhdGUsIGludCBsZW4pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTg5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzIyOD1zdGF0aWMgdm9pZCBzdG9yZV9sb2NhbF9pcnEoc3RydWN0IGt2bV9zMzkwX2xvY2FsX2ludGVycnVwdCAqbGksXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNjktXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMjcwOmludCBrdm1fczM5MF9nZXRfaXJxX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgX191OCBfX3VzZXIgKmJ1ZiwgaW50IGxlbilcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMzcwPXN0YXRpYyB2b2lkIHByb2Nlc3NfZ2liX2FsZXJ0X2xpc3Qodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQxNC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0MTU6dm9pZCBrdm1fczM5MF9naXNhX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0MTYte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI0LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQyNTp2b2lkIGt2bV9zMzkwX2dpc2FfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ0MC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NDE6dm9pZCBrdm1fczM5MF9naXNhX2VuYWJsZShzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDQyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2My1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NjQ6dm9pZCBrdm1fczM5MF9naXNhX2Rlc3Ryb3koc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2NS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODEtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNDgyOnZvaWQga3ZtX3MzOTBfZ2lzYV9kaXNhYmxlKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODMte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTE2LSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzUxNzppbnQga3ZtX3MzOTBfZ2lzY19yZWdpc3RlcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBnaXNjKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzUxOC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM1MzY9RVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3MzOTBfZ2lzY19yZWdpc3Rlcik7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM1NTUtICovXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNTU2OmludCBrdm1fczM5MF9naXNjX3VucmVnaXN0ZXIoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZ2lzYylcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM1NTcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjY1PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzY2OC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Njk6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzY3MC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM2ODQ9aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNzQxLSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mzc0MjppbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM3NDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bSAqa3ZtLCBpbnQgaXJxX3NvdXJjZV9pZCwgaW50IGxldmVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo0OC41OTMwMTU1NjlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODk1ODc1OTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIHMzOTB4IEtWTSBBZGFwdGVyIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSBwYXRjaCBtb2RpZmllcyBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAsIHdoaWNoIGFyZSBjYWxsZWQgd2l0aGluIHRoZSBgbW9kaWZ5X2lvX2FkYXB0ZXJgIGZ1bmN0aW9uLiBUaGF0LCBpbiB0dXJuLCBpcyB0cmlnZ2VyZWQgYnkgYGZsaWNfc2V0X2F0dHJgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBga3ZtX2ZsaWNfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgaXMgYWxsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGBLVk1fU0VUX0RFVklDRV9BVFRSYCBpb2N0bCBvbiB0aGUgRkxJQyBkZXZpY2UsIHdoaWNoIGl0c2VsZiBpcyBjcmVhdGVkIHZpYSBgS1ZNX0NSRUFURV9ERVZJQ0VgIHVzaW5nIGBLVk1fREVWX1RZUEVfRkxJQ2AuXG5cblRoZSBrZXkgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2VzIGFuZCB3aGF0IGVsc2UgaXMgZGlyZWN0bHkgcmVsYXRlZC4gTG9va2luZyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBmdW5jdGlvbnMsIHRoZXJlIGFyZSBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBXaGlsZSBga3ZtX3MzOTBfZ2lzYV9pbml0YCBvciBga3ZtX3MzOTBfZ2lzYV9kZXN0cm95YCBjb3VsZCBiZSBhZGRlZCBmb3IgY29udGV4dCwgSSBjYW4gc2VlIHRoYXQgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlxuXG5BaCwgeWVzLCBjb25maXJtaW5nIG15IHN1c3BpY2lvbiDigJMgdGhlIGRpZmYgc2hvd3MgY2hhbmdlcyB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYC4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrIGZvciBgbWFwLVx1MDAzZXBpbm5lZGAgd2l0aGluIHRoZSBsb29wIGlzIHRoZSBrZXkgcG9pbnQuIFNvLCB0aGUgb3JpZ2luYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb25zLCB3aXRoIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCBjYWxsaW5nIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgLiBUaGVzZSBhcmUgdGhlIGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBjb2RlIHJlc2lkZXMgaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBhbmQgY2xlYXJseSBkZXBlbmRzIG9uIGBLVk1gLiBBbnl0aGluZyBlbHNlLCB0aG91Z2g/IExldCdzIHZlcmlmeS4uLiBub3BlLCBsb29rcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc3OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo1Ny41NTE3Nzg2ODVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODg0NzE2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjU3Ljk2MDYzMjAwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTY5NDIzNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQgY2VudGVycyBhcm91bmQgYEtWTWAsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgd29ydGggZnV6emluZy4gQmFzZWQgb24gd2hhdCBJJ20gc2VlaW5nLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyB5ZXMuIExldCdzIGJyZWFrIGl0IGRvd24uXG5cbkZpcnN0LCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgY29uZmlybWluZyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdywgdGhlIGtleSBmb2N1cyBzZWVtcyB0byBiZSB0aGVzZSBzeW1ib2xzOiBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaGVzZSBzdWdnZXN0IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgUzM5MCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIEtWTSdzIGFkYXB0ZXIgbWFuYWdlbWVudC4gVGhlIGNoYW5nZXMgc3BlY2lmaWNhbGx5IGFmZmVjdCB0aGUgRkxJQyDigJMgdGhlIEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyIOKAkyB3aXRoaW4gS1ZNIG9uIFMzOTAuIFRoaXMgbWVhbnMgd2UncmUgbG9va2luZyBhdCBtZW1vcnkgcGlubmluZyBhbmQgaG93IGludGVycnVwdHMgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0LlxuXG5UaGUgbW9kaWZpY2F0aW9uIGludHJvZHVjZXMgYSBmYWxsYmFjayBtZWNoYW5pc20uIElmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChsaWtlbHkgZHVlIHRvLCBzYXksIGZpbGUtYmFja2VkIG1lbW9yeSksIGl0IGF0dGVtcHRzIHNob3J0LXRlcm0gcGlubmluZy4gVGhpcyBoYXMgb2J2aW91cyBpbXBsaWNhdGlvbnMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlZGdlIGNhc2VzIHRoYXQgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZSBgRW5hYmxlQ29uZmlnc2AgZXhwbGljaXRseSBsaXN0IGBLVk1gLCBmdXJ0aGVyIHNvbGlkaWZ5aW5nIHRoYXQgdGhpcyBpcyB0aGUgYXJlYSB0byBmb2N1cyBvbi5cblxuU28sIGluIGVzc2VuY2UsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gczM5MCBzdWJzeXN0ZW0gcmVsYXRlZCB0byBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJdOKAmXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgYSBzdWJ0bGUgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSBkZWFsaW5nIHdpdGggbWVtb3J5IGFuZCBpbnRlcnJ1cHRzLCBjYW4gb3BlbiB1cCBhIHRyZWFzdXJlIHRyb3ZlIG9mIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGZ1enppbmcgY291bGQgdW5lYXJ0aC4gVGhpcyBkZWZpbml0ZWx5IGRlc2VydmVzIHJpZ29yb3VzIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTkzLCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxNDowMy41MzAwNTg0MzZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0NzY3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc1wiLFxuICAgIFwia3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzXCIsXG4gICAgXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrbg5q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 18:26:56 +0000 UTC FinishedAt: 2026-07-25 19:14:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "e61e6fd4f139f2342a6bc86da602df7456ef87f6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "09d99a4f-8302-404f-a938-e35a95f99649" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_unmap_all_adapters", "kvm_s390_destroy_adapters" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTFhM2JlMzQ5NTQyNzk5ODNmZWUzMzE5N2M3ZDY2ODEwNDI3MmViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTk6MTI6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxuaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XG5AQCAtMTEyLDkgJiM0MzsxMTIsMjAgQEAgR3JvdXBzOlxuICAgICAgIG1hc2sgb3IgdW5tYXNrIHRoZSBhZGFwdGVyLCBhcyBzcGVjaWZpZWQgaW4gbWFza1xuIFxuICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUFxuLSAgICAgIFRoaXMgaXMgbm93IGEgbm8tb3AuIFRoZSBtYXBwaW5nIGlzIHB1cmVseSBkb25lIGJ5IHRoZSBpcnEgcm91dGUuXG4mIzQzOyAgICAgIE1hcCBhbiBhZGFwdGVyIGluZGljYXRvciBvciBzdW1tYXJ5IHBhZ2UgZm9yIGxvbmctdGVybSBwaW5uaW5nIHNvIHRoYXRcbiYjNDM7ICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm1cbiYjNDM7ICAgICAgcGlubmluZyBpcyBub3QgcG9zc2libGUgKGUuZy4gZmlsZS1iYWNrZWQgbWVtb3J5KSwgdGhlIHBhZ2UgaXMgdmVyaWZpZWRcbiYjNDM7ICAgICAgdmlhIGEgc2hvcnQtdGVybSBwaW4gYW5kIHRoZSBpb2N0bCByZXR1cm5zIHN1Y2Nlc3M7IGludGVycnVwdCBpbmplY3Rpb25cbiYjNDM7ICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoXG4mIzQzOyAgICAgIGludGVycnVwdC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXMgYSBuby1vcCBhbmQgdGhlIGlvY3RsXG4mIzQzOyAgICAgIHJldHVybnMgc3VjY2Vzcy5cbiYjNDM7XG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfVU5NQVBcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxuJiM0MzsgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZVxuJiM0MzsgICAgICB0aGUgbG9uZy10ZXJtIHBpbi4gSWYgdGhlIHBhZ2Ugd2FzIG5vdCBsb25nLXRlcm0gcGlubmVkIChlLmcuIGZpbGUtYmFja2VkXG4mIzQzOyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcbiYjNDM7ICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXNcbiYjNDM7ICAgICAgYSBuby1vcCBhbmQgdGhlIGlvY3RsIHJldHVybnMgc3VjY2Vzcy5cbiBcbiAgIEtWTV9ERVZfRkxJQ19BSVNNXG4gICAgIG1vZGlmeSB0aGUgYWRhcHRlci1pbnRlcnJ1cHRpb24tc3VwcHJlc3Npb24gbW9kZSBmb3IgYSBnaXZlbiBpc2MgaWYgdGhlXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggZWFhMzRjNWJkM2MxMTAuLmMxNzJmOWIyMTJkMThlIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtNDc2LDYgJiM0Mzs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8ge1xuIFx0X191NjQgZ3Vlc3RfYWRkcjtcbiBcdF9fdTY0IGFkZHI7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRydWUgaWYgdGhlIHBhZ2UgaXMgbG9uZy10ZXJtIHBpbm5lZC4gRmFsc2UgaWYgbG9uZy10ZXJtIHBpbm5pbmdcbiYjNDM7XHQgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LlxuJiM0MztcdCAqL1xuJiM0MztcdGJvb2wgcGlubmVkO1xuIH07XG4gXG4gc3RydWN0IHMzOTBfaW9fYWRhcHRlciB7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbmluZGV4IDllM2U2YjBkNzJhZDYxLi43NTE0ZDllMjQwM2MxYiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcbkBAIC0yNTIwLDggJiM0MzsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRtYXAtXHUwMDNlYWRkciA9IGhvc3RfYWRkcjtcbiBcdG1hcC1cdTAwM2VwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCBGT0xMX0xPTkdURVJNKTtcbiBcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbi1cdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogTG9uZy10ZXJtIHBpbm5pbmcgbWF5IGZhaWwgZm9yIG1lbW9yeSB0eXBlcyBzdWNoIGFzIGZpbGUtYmFja2VkXG4mIzQzO1x0XHQgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZVxuJiM0MztcdFx0ICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwaW5fbWFwX3BhZ2Uoa3ZtLCBob3N0X2FkZHIsIDApO1xuJiM0MztcdFx0aWYgKCFtYXAtXHUwMDNlcGFnZSkge1xuJiM0MztcdFx0XHRyZXQgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGFnZSA9IE5VTEw7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGlubmVkID0gZmFsc2U7XG4mIzQzO1x0XHQvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqL1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRtYXAtXHUwMDNlcGlubmVkID0gdHJ1ZTtcbiBcdH1cbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrLCBmbGFncyk7XG4gXHRpZiAoYWRhcHRlci1cdTAwM2Vucl9tYXBzIFx1MDAzYyBNQVhfUzM5MF9BREFQVEVSX01BUFMpIHtcbkBAIC0yNTMyLDcgJiM0MzsyNTQ2LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbi1cdGlmIChyZXQpXG4mIzQzO1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgbWFwLVx1MDAzZXBhZ2UpXG4gXHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4gb3V0OlxuIFx0aWYgKHJldClcbkBAIC0yNTQ2LDYgJiM0MzsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuIFx0c3RydWN0IHMzOTBfbWFwX2luZm8gKm1hcCwgKnRtcCwgKm1hcF90b19mcmVlO1xuIFx0c3RydWN0IHBhZ2UgKm1hcF9wYWdlX3RvX3B1dCA9IE5VTEw7XG4gXHR1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7XG4mIzQzO1x0Ym9vbCBtYXBfcGlubmVkID0gZmFsc2U7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGZvdW5kID0gMCwgaWR4O1xuIFxuQEAgLTI1NjAsNiAmIzQzOzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bWFwLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1hcF9wYWdlX3RvX3B1dCA9IG1hcC1cdTAwM2VwYWdlO1xuIFx0XHRcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXHUwMDNlZ3Vlc3RfYWRkcjtcbiYjNDM7XHRcdFx0bWFwX3Bpbm5lZCA9IG1hcC1cdTAwM2VwaW5uZWQ7XG4gXHRcdFx0bWFwX3RvX2ZyZWUgPSBtYXA7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbkBAIC0yNTY4LDExICYjNDM7MjU4NCwxOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXG4gXHRpZiAoZm91bmQpIHtcbiBcdFx0a2ZyZWUobWFwX3RvX2ZyZWUpO1xuLVx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4tXHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xuLVx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcF9wYWdlX3RvX3B1dCk7XG4tXHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4tXHRcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xuJiM0MztcdFx0aWYgKG1hcF9waW5uZWQpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5XG4mIzQzO1x0XHRcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxuJiM0MztcdFx0XHQgKiBNQVAvVU5NQVAgc3ltbWV0cnkuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4mIzQzO1x0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpO1xuJiM0MztcdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcF9wYWdlX3RvX3B1dCk7XG4mIzQzO1x0XHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4mIzQzO1x0XHRcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIGZvdW5kID8gMCA6IC1FTk9FTlQ7XG5AQCAtMjU5OCwxMSAmIzQzOzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuIFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFwLCB0bXAsIFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRsaXN0X2RlbChcdTAwMjZtYXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbi1cdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdGlmIChtYXAtXHUwMDNlcGlubmVkKSB7XG4mIzQzO1x0XHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuJiM0MztcdFx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbiYjNDM7XHRcdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbiYjNDM7XHRcdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuJiM0MztcdFx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRrZnJlZShtYXApO1xuIFx0XHR9XG4gXHR9XG5AQCAtMjkyOSw4ICYjNDM7Mjk1NCwxMSBAQCBzdGF0aWMgc3RydWN0IHMzOTBfbWFwX2luZm8gKmdldF9tYXBfaW5mbyhzdHJ1Y3QgczM5MF9pb19hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkobWFwLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW1hcHMsIGxpc3QpIHtcbi1cdFx0aWYgKG1hcC1cdTAwM2VhZGRyID09IGFkZHIpXG4mIzQzO1x0XHRpZiAobWFwLVx1MDAzZWFkZHIgPT0gYWRkcikge1xuJiM0MztcdFx0XHRpZiAoIW1hcC1cdTAwM2VwaW5uZWQpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIE5VTEw7XG4gXHRcdFx0cmV0dXJuIG1hcDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdHJldHVybiBOVUxMO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1MWEzYmUzNDk1NDI3OTk4M2ZlZTMzMTk3YzdkNjY4MTA0MjcyZWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxOToxMjozNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0IGIvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QKaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdApAQCAtMTEyLDkgJiM0MzsxMTIsMjAgQEAgR3JvdXBzOgogICAgICAgbWFzayBvciB1bm1hc2sgdGhlIGFkYXB0ZXIsIGFzIHNwZWNpZmllZCBpbiBtYXNrCiAKICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUAotICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS4KJiM0MzsgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0CiYjNDM7ICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm0KJiM0MzsgICAgICBwaW5uaW5nIGlzIG5vdCBwb3NzaWJsZSAoZS5nLiBmaWxlLWJhY2tlZCBtZW1vcnkpLCB0aGUgcGFnZSBpcyB2ZXJpZmllZAomIzQzOyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uCiYjNDM7ICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoCiYjNDM7ICAgICAgaW50ZXJydXB0LiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpcyBhIG5vLW9wIGFuZCB0aGUgaW9jdGwKJiM0MzsgICAgICByZXR1cm5zIHN1Y2Nlc3MuCiYjNDM7CiAgICAgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUAotICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS4KJiM0MzsgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZQomIzQzOyAgICAgIHRoZSBsb25nLXRlcm0gcGluLiBJZiB0aGUgcGFnZSB3YXMgbm90IGxvbmctdGVybSBwaW5uZWQgKGUuZy4gZmlsZS1iYWNrZWQKJiM0MzsgICAgICBtZW1vcnkpLCB0aGUgbWFwIGVudHJ5IGlzIHJlbW92ZWQgYW5kIHN1Y2Nlc3MgaXMgcmV0dXJuZWQ7IGlmIG5vIHByaW9yCiYjNDM7ICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXMKJiM0MzsgICAgICBhIG5vLW9wIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzLgogCiAgIEtWTV9ERVZfRkxJQ19BSVNNCiAgICAgbW9kaWZ5IHRoZSBhZGFwdGVyLWludGVycnVwdGlvbi1zdXBwcmVzc2lvbiBtb2RlIGZvciBhIGdpdmVuIGlzYyBpZiB0aGUKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggZWFhMzRjNWJkM2MxMTAuLmMxNzJmOWIyMTJkMThlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtNDc2LDYgJiM0Mzs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8gewogCV9fdTY0IGd1ZXN0X2FkZHI7CiAJX191NjQgYWRkcjsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKJiM0MzsJLyoKJiM0MzsJICogVHJ1ZSBpZiB0aGUgcGFnZSBpcyBsb25nLXRlcm0gcGlubmVkLiBGYWxzZSBpZiBsb25nLXRlcm0gcGlubmluZwomIzQzOwkgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LgomIzQzOwkgKi8KJiM0MzsJYm9vbCBwaW5uZWQ7CiB9OwogCiBzdHJ1Y3QgczM5MF9pb19hZGFwdGVyIHsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCmluZGV4IDllM2U2YjBkNzJhZDYxLi43NTE0ZDllMjQwM2MxYiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jCkBAIC0yNTIwLDggJiM0MzsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpCiAJbWFwLSZndDthZGRyID0gaG9zdF9hZGRyOwogCW1hcC0mZ3Q7cGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgRk9MTF9MT05HVEVSTSk7CiAJaWYgKCFtYXAtJmd0O3BhZ2UpIHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBvdXQ7CiYjNDM7CQkvKgomIzQzOwkJICogTG9uZy10ZXJtIHBpbm5pbmcgbWF5IGZhaWwgZm9yIG1lbW9yeSB0eXBlcyBzdWNoIGFzIGZpbGUtYmFja2VkCiYjNDM7CQkgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZQomIzQzOwkJICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi4KJiM0MzsJCSAqLwomIzQzOwkJbWFwLSZndDtwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCAwKTsKJiM0MzsJCWlmICghbWFwLSZndDtwYWdlKSB7CiYjNDM7CQkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwomIzQzOwkJbWFwLSZndDtwYWdlID0gTlVMTDsKJiM0MzsJCW1hcC0mZ3Q7cGlubmVkID0gZmFsc2U7CiYjNDM7CQkvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqLwomIzQzOwl9IGVsc2UgewomIzQzOwkJbWFwLSZndDtwaW5uZWQgPSB0cnVlOwogCX0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2FkYXB0ZXItJmd0O21hcHNfbG9jaywgZmxhZ3MpOwogCWlmIChhZGFwdGVyLSZndDtucl9tYXBzICZsdDsgTUFYX1MzOTBfQURBUFRFUl9NQVBTKSB7CkBAIC0yNTMyLDcgJiM0MzsyNTQ2LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcikKIAkJcmV0ID0gLUVJTlZBTDsKIAl9CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2FkYXB0ZXItJmd0O21hcHNfbG9jaywgZmxhZ3MpOwotCWlmIChyZXQpCiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyBtYXAtJmd0O3BhZ2UpCiAJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwogb3V0OgogCWlmIChyZXQpCkBAIC0yNTQ2LDYgJiM0MzsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKQogCXN0cnVjdCBzMzkwX21hcF9pbmZvICptYXAsICp0bXAsICptYXBfdG9fZnJlZTsKIAlzdHJ1Y3QgcGFnZSAqbWFwX3BhZ2VfdG9fcHV0ID0gTlVMTDsKIAl1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7CiYjNDM7CWJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGZvdW5kID0gMCwgaWR4OwogCkBAIC0yNTYwLDYgJiM0MzsyNTc1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKQogCQkJbGlzdF9kZWwoJmFtcDttYXAtJmd0O2xpc3QpOwogCQkJbWFwX3BhZ2VfdG9fcHV0ID0gbWFwLSZndDtwYWdlOwogCQkJbWFwX2FkZHJfdG9fbWFyayA9IG1hcC0mZ3Q7Z3Vlc3RfYWRkcjsKJiM0MzsJCQltYXBfcGlubmVkID0gbWFwLSZndDtwaW5uZWQ7CiAJCQltYXBfdG9fZnJlZSA9IG1hcDsKIAkJCWJyZWFrOwogCQl9CkBAIC0yNTY4LDExICYjNDM7MjU4NCwxOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpCiAKIAlpZiAoZm91bmQpIHsKIAkJa2ZyZWUobWFwX3RvX2ZyZWUpOwotCQlpZHggPSBzcmN1X3JlYWRfbG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSk7Ci0JCW1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgJmd0OyZndDsgUEFHRV9TSElGVCk7Ci0JCXNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTsKLQkJc3JjdV9yZWFkX3VubG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSwgaWR4KTsKLQkJdW5waW5fdXNlcl9wYWdlKG1hcF9wYWdlX3RvX3B1dCk7CiYjNDM7CQlpZiAobWFwX3Bpbm5lZCkgewomIzQzOwkJCS8qCiYjNDM7CQkJICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5CiYjNDM7CQkJICogYW5kIHJlbGVhc2VkLiBGYWxsYmFjayBlbnRyaWVzIGV4aXN0IG9ubHkgZm9yCiYjNDM7CQkJICogTUFQL1VOTUFQIHN5bW1ldHJ5LgomIzQzOwkJCSAqLwomIzQzOwkJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7a3ZtLSZndDtzcmN1KTsKJiM0MzsJCQltYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXBfYWRkcl90b19tYXJrICZndDsmZ3Q7IFBBR0VfU0hJRlQpOwomIzQzOwkJCXNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTsKJiM0MzsJCQlzcmN1X3JlYWRfdW5sb2NrKCZhbXA7a3ZtLSZndDtzcmN1LCBpZHgpOwomIzQzOwkJCXVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpOwomIzQzOwkJfQogCX0KIAogCXJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UOwpAQCAtMjU5OCwxMSAmIzQzOzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKQogCiAJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYXAsIHRtcCwgJmFtcDtsb2NhbF9saXN0LCBsaXN0KSB7CiAJCQlsaXN0X2RlbCgmYW1wO21hcC0mZ3Q7bGlzdCk7Ci0JCQlpZHggPSBzcmN1X3JlYWRfbG9jaygmYW1wO2t2bS0mZ3Q7c3JjdSk7Ci0JCQltYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtJmd0O2d1ZXN0X2FkZHIgJmd0OyZndDsgUEFHRV9TSElGVCk7Ci0JCQlzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC0mZ3Q7cGFnZSk7Ci0JCQlzcmN1X3JlYWRfdW5sb2NrKCZhbXA7a3ZtLSZndDtzcmN1LCBpZHgpOwotCQkJdW5waW5fdXNlcl9wYWdlKG1hcC0mZ3Q7cGFnZSk7CiYjNDM7CQkJaWYgKG1hcC0mZ3Q7cGlubmVkKSB7CiYjNDM7CQkJCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZhbXA7a3ZtLSZndDtzcmN1KTsKJiM0MzsJCQkJbWFya19wYWdlX2RpcnR5KGt2bSwgbWFwLSZndDtndWVzdF9hZGRyICZndDsmZ3Q7IFBBR0VfU0hJRlQpOwomIzQzOwkJCQlzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC0mZ3Q7cGFnZSk7CiYjNDM7CQkJCXNyY3VfcmVhZF91bmxvY2soJmFtcDtrdm0tJmd0O3NyY3UsIGlkeCk7CiYjNDM7CQkJCXVucGluX3VzZXJfcGFnZShtYXAtJmd0O3BhZ2UpOwomIzQzOwkJCX0KIAkJCWtmcmVlKG1hcCk7CiAJCX0KIAl9CkBAIC0yOTI5LDggJiM0MzsyOTU0LDExIEBAIHN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCXJldHVybiBOVUxMOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsICZhbXA7YWRhcHRlci0mZ3Q7bWFwcywgbGlzdCkgewotCQlpZiAobWFwLSZndDthZGRyID09IGFkZHIpCiYjNDM7CQlpZiAobWFwLSZndDthZGRyID09IGFkZHIpIHsKJiM0MzsJCQlpZiAoIW1hcC0mZ3Q7cGlubmVkKQomIzQzOwkJCQlyZXR1cm4gTlVMTDsKIAkJCXJldHVybiBtYXA7CiYjNDM7CQl9CiAJfQogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBzMzkwIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCB0YXJnZXRpbmcgS1ZNIG9uIHMzOTAuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBhZGFwdGVyIG1hcHBpbmcgYW5kIHVubWFwcGluZyBmdW5jdGlvbnM6IGBrdm1fczM5MF9hZGFwdGVyX21hcGAsIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCwgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AsIGFuZCBgZ2V0X21hcF9pbmZvYC4gVGhlIGFkZGl0aW9uIG9mIGEgYHBpbm5lZGAgYm9vbGVhbiB0byB0aGUgYHMzOTBfbWFwX2luZm9gIHN0cnVjdCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZS4gVGhpcyBoYXMgZnVuY3Rpb25hbCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBLVk0gc3Vic3lzdGVtIGZvciBzMzkwOyBpdCBpbmRpY2F0ZXMgc29tZSBjaGFuZ2UgaW4gcmVzb3VyY2UgcGlubmluZy4KCk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIGNoZWNrIHJlYWNoYWJpbGl0eS4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSBjYWxsZWQ/IEFyZSB0aGV5IHJlbGV2YW50IHRvIHRoZSBzeXN0ZW0/IEkgcXVpY2tseSByZWNhbGwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHRpZWQgdG8gdGhlIGBLVk1fUzM5MF9JT19BREFQVEVSX01BUGAgYW5kIGBLVk1fUzM5MF9JT19BREFQVEVSX1VOTUFQYCBpb2N0bHMuIEFoLCBidXQgd2FpdCwgdGhlIGV4aXN0aW5nIGRvY3VtZW50YXRpb24uLi4gaXQmIzM5O3MgYSBuby1vcCwgcmlnaHQ/IFRoZSBtYXBwaW5nIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgYnkgdGhlIElSUSByb3V0ZS4KClRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gVGhlIHBhdGNoICpjaGFuZ2VzKiB0aGUgZG9jdW1lbnRhdGlvbiEgU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byByZXN0b3JlIGZ1bmN0aW9uYWxpdHkgdG8gYEtWTV9TMzkwX0lPX0FEQVBURVJfTUFQYC4gVGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBuby1vcCwgYnV0IHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzYXlzIGl0IHdpbGwgJiMzOTttYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0IGludGVycnVwdCBpbmplY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBpbiBhdG9taWMgY29udGV4dC4mIzM5OyBTbyB0aGUgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyByZWluc3RhdGVkIG9yIG1vZGlmaWVkIGluIGEgc2lnbmlmaWNhbnQgd2F5LgoKSSYjMzk7bSBub3cgZ29pbmcgdG8gZGlnIGludG8gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgIHRvIHRyYWNlIGhvdyBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGlzIGFjdHVhbGx5IGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgd2h5IHRoZSBvbGQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBicm91Z2h0IGJhY2ssIGVzcGVjaWFsbHkgc2luY2UgdGhlIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGluZGljYXRlZCBpdCB3YXMgYSBuby1vcC4gSXQmIzM5O3MgdGltZSB0byBmb2xsb3cgdGhlIGNhbGwgY2hhaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfYWRhcHRlcl9tYXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDc2PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcGluX21hcF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdTY0IHVhZGRyLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ5NTpzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2NDg9c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY3Ni1cdFx0XHRkZXYtXHUwMDNla3ZtLVx1MDAzZXN0YXQuaW9fMzkwX2FkYXB0ZXJfbWFwJiM0MzsmIzQzOztcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY3NzpcdFx0XHRyZXQgPSBrdm1fczM5MF9hZGFwdGVyX21hcChkZXYtXHUwMDNla3ZtLCByZXEuaWQsIHJlcS5hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY3OC1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9zMzkwIEFkYXB0ZXIgTWFwcGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGdldHRpbmcgYXQgc29tZSBjb3JlIEtWTS9zMzkwIGFkYXB0ZXIgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdG91Y2hpbmcgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBgcGlubmVkYCBib29sZWFuIGluIGBzdHJ1Y3QgczM5MF9tYXBfaW5mb2AgaXMgdGhlIGtleS4gVGhleSYjMzk7cmUgZXhwbGljaXRseSB0cmFja2luZyBsb25nLXRlcm0gcGFnZSBwaW5uaW5nLCB3aGljaCBpcyBnb29kLiBUaGUgZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBmYWlscyBpcyBpbnRlcmVzdGluZy4gSWYgdGhhdCB3b3JrcywgdGhleSYjMzk7cmUgc2V0dGluZyBgcGlubmVkID0gZmFsc2VgIGFuZCBgcGFnZSA9IE5VTExgIGluIHRoZSBtYXAgZW50cnkuIFRoaXMgd2hvbGUgdGhpbmcgY2VudGVycyBvbiBmaWxlLWJhY2tlZCBtZW1vcnksIHNvIHRoZXkmIzM5O3JlIHdvcmtpbmcgYXJvdW5kIHBvdGVudGlhbCBsb25nLXRlcm0gcGlubmluZyBpc3N1ZXMuCgpUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIGhvdyBhZGFwdGVycyBhcmUgbWFwcGVkIGFuZCB1bm1hcHBlZC4gVGhpcyBtZWFucyBpdCBoYXMgdG8gYmUgZnV6emVkIHRob3JvdWdobHkuIFRoZSBwb3RlbnRpYWwgZm9yIHJlZ3Jlc3Npb25zIGlzIHRoZXJlLCBidXQgbW9yZSBpbXBvcnRhbnRseSwgaXMgaXQgc2VjdXJlPyBJIG5lZWQgdG8gdGVzdCB0aGF0LgoKTGV0JiMzOTtzIHNlZeKApiBmb3IgY29uZmlnIG9wdGlvbnMsIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBzMzkwIGFyY2hpdGVjdHVyZSBhbmQgS1ZNLCBzbyBgS1ZNYCAoYW5kIHRoZSBzMzkwLXNwZWNpZmljIGFzcGVjdHMpIGFyZSB0aGUga2V5IGNvbmZpZyBvcHRpb25zIHRvIG5vdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIG9uIHMzOTAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEtWTSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBmb3IgdGhlIHMzOTAgYXJjaGl0ZWN0dXJlIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBXaGVyZSB3b3VsZCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IE5hdHVyYWxseSwgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgaXMgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZpbGUuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UsIHJpZ2h0PyBJZiBpdCYjMzk7cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGl0JiMzOTtsbCBsaWtlbHkgYmUgdW5kZXIgYGFyY2gvczM5MC9gLiBBbmQgc2luY2Ugd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGBLVk1gIGNvbXBvbmVudHMsIGl0IGZlZWxzIGxpa2UgaXQgd291bGQgYmUgaW4gYSByZWxhdGVkIEtjb25maWcgZmlsZSBvciB3aXRoaW4gYSBkZWRpY2F0ZWQgS1ZNIHN1YnRyZWUuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgYXJjaC9zMzkwL2t2bS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgS1ZNJiMzOTtzIGJlaGF2aW9yIG9uIHRoaXMgcGxhdGZvcm0uIFRoaXMgaXMgbXkgYmFzZWxpbmUuIEZyb20gdGhlcmUsIEkgY2FuIGFsd2F5cyBleHBsb3JlIGZ1cnRoZXIgb3IgY3Jvc3MtcmVmZXJlbmNlIG90aGVyIHJlbGF0ZWQgZmlsZXMgaWYgbmVlZGVkLCBidXQgdGhpcyBpcyB0aGUgbG9naWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA2Olx0XG4gICA3Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgODpcdFx0ZGVmX2Jvb2wgeVxuICAgOTpcdFx0cHJvbXB0IFwmIzM0O0tWTVwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxuICAxMjpcdFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZCBkaXNhYmxlZC5cbiAgMTY6XHRcbiAgMTc6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBLVk1cbiAgMjA6XHRcdGRlZl90cmlzdGF0ZSB5XG4gIDIxOlx0XHRwcm9tcHQgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxuICAyMzpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxuICAyNDpcdFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXG4gIDI1Olx0XHRzZWxlY3QgS1ZNX0NPTU1PTlxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyODpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xuICAyOTpcdFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcbiAgMzA6XHRcdHNlbGVjdCBLVk1fVkZJT1xuICAzMTpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMyOlx0XHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xuICAzMzpcdFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbiAgMzQ6XHRcdGhlbHBcbiAgMzU6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXG4gIDM2Olx0XHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xuICAzNzpcdFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cbiAgMzg6XHRcbiAgMzk6XHRcdCAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgdGhyb3VnaFxuICA0MDpcdFx0ICBhIGNoYXJhY3RlciBkZXZpY2Ugbm9kZSBuYW1lZCAvZGV2L2t2bS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQzOlx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cbiAgNDQ6XHRcbiAgNDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbiAgNDg6XHRcdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBLVk1cbiAgNTA6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTk5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqS1ZNIG9uIFMvMzkwIEFkYXB0ZXIgTWFwcGluZyAtIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgS1ZNLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgUy8zOTAgYXJjaGl0ZWN0dXJlLCBnaXZlbiB0aGUgYWRhcHRlciBmb2N1cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgbWFwcGluZyBpcyBoYW5kbGVkLiBNeSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMgYXJlOgoKKiAgIGBrdm1fczM5MF9hZGFwdGVyX21hcGA6IFRoaXMgaXMgY3J1Y2lhbC4gSXQmIzM5O3MgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIG1hcHBpbmcgYW4gYWRhcHRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGFyZ3VtZW50cywgaXRzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIFMvMzkwIGhhcmR3YXJlLiBXaGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGZvciB0aGUgbWFwcGluZz8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgdGFibGUgbG9va3VwLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4IHdpdGggY2FjaGluZz8gSXMgdGhlIGZ1bmN0aW9uIGF0b21pYz8KKiAgIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYDogT2J2aW91c2x5LCB0aGUgaW52ZXJzZSBvZiBtYXBwaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5tYXBwaW5nIHByb2Nlc3MuIERvZXMgaXQgaW52b2x2ZSBpbnZhbGlkYXRpbmcgY2FjaGVzLCBzZW5kaW5nIElQSXMsIG9yIGFueXRoaW5nIGVsc2UgdG8gZW5zdXJlIGNvbnNpc3RlbmN5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmcgdG8gYXZvaWQgcHJlbWF0dXJlIHVubWFwcGluZz8KKiAgIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgOiBUaGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzcy4gSG93IGRvZXMgaXQgaGFuZGxlIHRoZSByZW1vdmFsIG9mIGFsbCBhZGFwdGVycz8gSXMgaXQgZWZmaWNpZW50LCBvciBpcyBpdCBhIGJydXRlLWZvcmNlIGFwcHJvYWNoPyBEb2VzIGl0IG5lZWQgYW55IGxvY2tzIHRvIG1ha2Ugc3VyZSBubyBhZGFwdGVycyBhcmUgYWNjZXNzZWQgZHVyaW5nIGEgYnVsayByZW1vdmFsPwoqICAgYGdldF9tYXBfaW5mb2A6IE5vdywgSSByZW1lbWJlciB0aGlzIGZ1bmN0aW9uLiBJdCYjMzk7cyB1c2VkIHRvIHJldHJpZXZlIHRoZSBtYXBwaW5nIGluZm9ybWF0aW9uLiBXYWl0IGEgc2Vjb25kLCBpc24mIzM5O3QgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IE9rYXksIGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlIGNvbXBpbGVyIGlubGluZXMgdGhlIGZ1bmN0aW9uLiBJZiBpdCYjMzk7cyBpbmxpbmVkIGl0IGlzIGEgdmVyeSBnb29kIHNpdHVhdGlvbiBhbmQgcmVkdWNlcyBvdmVyaGVhZC4gSWYgbm90IGlubGluZWQsIEkgbmVlZCB0byBjaGVjayBob3cgZnJlcXVlbnRseSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGJlY2F1c2UgaXQmIzM5O3MgZ29pbmcgdG8gYmUgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBJIG5lZWQgdG8ga25vdyB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dldF9tYXBfaW5mbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTM2PXN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9pbmRfYml0KF9fdTY0IGFkZHIsIHVuc2lnbmVkIGxvbmcgYml0X25yLCBib29sIHN3YXApXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTQ3LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyOTQ4OnN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5NDktXHRcdFx0XHRcdCAgdTY0IGFkZHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTY2PXN0YXRpYyBpbnQgYWRhcHRlcl9pbmRpY2F0b3JzX3NldChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTc5LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk4MDpcdGluZF9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZWluZF9hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk4MS1cdGlmICghaW5kX2luZm8pIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDItXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZhZGFwdGVyLVx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDAzOlx0c3VtbWFyeV9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZXN1bW1hcnlfYWRkcik7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDQtXHRpZiAoIXN1bW1hcnlfaW5mbykge1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzAyOT1zdGF0aWMgaW50IGFkYXB0ZXJfaW5kaWNhdG9yc19zZXRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDM5LVx0c3Bpbl9sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA0MDpcdGluZF9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZWluZF9hZGRyKTtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA0MS1cdGlmICghaW5kX2luZm8pIHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNDgtXHRcdHNldF9iaXQoYml0LCBtYXApO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMDQ5Olx0c3VtbWFyeV9pbmZvID0gZ2V0X21hcF9pbmZvKGFkYXB0ZXIsIGFkYXB0ZXJfaW50LVx1MDAzZXN1bW1hcnlfYWRkcik7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNTAtXHRpZiAoIXN1bW1hcnlfaW5mbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTk2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTdGF0aWMgRnVuY3Rpb25zKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBmZXcgZnVuY3Rpb24gY2FsbHMgdGhhdCBoYXZlIGNhdWdodCBteSBleWUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgZ2V0X21hcF9pbmZvYCwgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCBhcmUgYWxsIHBvdGVudGlhbGx5IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMgbWlnaHQgYmUgbG9jYWxpemVkIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIGltcGx5aW5nIHRoZXkmIzM5O3JlIG5vdCBpbnRlbmRlZCB0byBiZSBleHBvc2VkIGdsb2JhbGx5LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBkZWNsYXJhdGlvbnMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBzaWduaWZpY2FudGx5IGFsdGVyIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGFuZCB0aGUgcG90ZW50aWFsIGZvciBtb2RpZmljYXRpb24uIFN0YXRpYyBmdW5jdGlvbnMgaGF2ZSBpbXBsaWNhdGlvbnMgZm9yIGxpbmtpbmcsIHNjb3BlLCBhbmQgcG90ZW50aWFsIHJlLXVzZSBpbiBvdGhlciBjb250ZXh0cywgc28gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQmIzM5O3MgdGhlIGNhc2UuIFRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDc2PXN0YXRpYyBzdHJ1Y3QgcGFnZSAqcGluX21hcF9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdTY0IHVhZGRyLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ5NTpzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY0MQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTdGF0aWMgRnVuY3Rpb25zIGFuZCBDYWxsZXJzKioKCk9rYXksIHNvIEkmIzM5O20gb2JzZXJ2aW5nIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGV5JiMzOTtyZSBzdGF0aWMuIFRoYXQmIzM5O3MgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoZW0uIE15IG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxpbmcgdGhlc2Ugc3RhdGljIG9uZXMuIEl0JiMzOTtzIGEgY2xhc3NpYyBhbmFseXNpcyBwYXR0ZXJuLgoKQSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCBgbW9kaWZ5X2lvX2FkYXB0ZXJgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBib3RoIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYC4gVGhhdCBwcm92aWRlcyBhIHNvbGlkIGxpbmsgdG8gaW52ZXN0aWdhdGUuIFRoaXMgZ2l2ZXMgdXMgYSB1c2VmdWwgcGl2b3QgcG9pbnQgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZGlmeV9pb19hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2MzY9dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NDctXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2NDg6c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjQ5LVx0XHRcdCAgICAgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI4MzQ9c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yODY4LVx0Y2FzZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRlk6XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI4Njk6XHRcdHIgPSBtb2RpZnlfaW9fYWRhcHRlcihkZXYsIGF0dHIpO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yODcwLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgZmxpY19zZXRfYXR0cmAqKgoKT2theSwgc28gYGZsaWNfc2V0X2F0dHJgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24gaGVyZS4gVGhlIGNvZGUgdGVsbHMgbWUgaXQgY2FsbHMgYG1vZGlmeV9pb19hZGFwdGVyYCwgYW5kIHRoYXQmIzM5O3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24gcG9pbnQgdG8gZXhwbG9yZS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBgbW9kaWZ5X2lvX2FkYXB0ZXJgLCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBlbnN1cmUgSSYjMzk7dmUgZ290IHRoZSBjb250ZXh0IG9mIGBmbGljX3NldF9hdHRyYCBmdWxseSBncmFzcGVkLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICp3aHkqIHdlJiMzOTtyZSBzZXR0aW5nIGF0dHJpYnV0ZXMgaW4gdGhlIGZpcnN0IHBsYWNlLCB3aGF0IHBhcmFtZXRlcnMgaXQgYWNjZXB0cywgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGlzLiBMZXQgbWUgcXVpY2tseSBhbmFseXplIHRoZSBjb2RlIGZvciB0aGF0LiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgc28gZ2V0dGluZyB0aGF0IGNvbnRleHQgaXMgaW1wb3J0YW50LiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIGEgcHJlcmVxdWlzaXRlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmxpY19zZXRfYXR0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yODE0PXN0YXRpYyBpbnQgZmxpY19haXNfbW9kZV9zZXRfYWxsKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9kZXZpY2VfYXR0ciAqYXR0cilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzMtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI4MzQ6c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjkyNz1zdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2ZsaWNfb3BzID0ge1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOS1cdC5nZXRfYXR0ciA9IGZsaWNfZ2V0X2F0dHIsXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5MzA6XHQuc2V0X2F0dHIgPSBmbGljX3NldF9hdHRyLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTMxLVx0Lmhhc19hdHRyID0gZmxpY19oYXNfYXR0cixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTcxNwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUG90ZW50aWFsIFN0YXRpYyBGdW5jdGlvbiBBc3NpZ25tZW50cyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGZsaWNfc2V0X2F0dHJgIGZ1bmN0aW9uLiBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBIb3dldmVyLCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBga3ZtX2ZsaWNfb3BzLnNldF9hdHRyYC4gVGhpcyBpbXBsaWVzIHRoYXQgaXQmIzM5O3MgYWN0aW5nIGFzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYSBicm9hZGVyIGludGVyZmFjZSwgcHJvYmFibHkgZm9yIGEgcGFydGljdWxhciBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzdGF0aWMgZGVjbGFyYXRpb24gaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0cnVseSBsb2NhbCB0byB0aGUgZmlsZSwgb3IgaXMgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYmVpbmcgJiMzNDtleHBvcnRlZCYjMzQ7IHZpYSB0aGUgYXNzaWdubWVudCBpbiBga3ZtX2ZsaWNfb3BzYD8gSWYgdGhlIGxhdHRlciwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBpcyBsaWtlbHkgaGlkaW5nIGluZm9ybWF0aW9uIGFuZCBjb3VsZCBiZSByZW1vdmVkLgoKQW5kIHRoZW4sIEnigJltIGFsc28gdHVybmluZyBteSBhdHRlbnRpb24gdG8gYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIEkgbmVlZCB0byBjb21wYXJlIGFuZCBjb250cmFzdC4gSXMgdGhpcyBvbmUgYWxzbyBzdGF0aWM/IE9yIGlzIGl0IGEgZ2xvYmFsIGZ1bmN0aW9uIGJlaW5nIHVzZWQgaW4gYSBzaW1pbGFyIHdheSwgb3IgdXNlZCBpbiBhIHdheSB0aGF0IGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50PyBJcyBpdCBwYXJ0IG9mIHRoZSBzYW1lIGludGVyZmFjZSwgb3IgYW5vdGhlcj8gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkgYXJlIHVzZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIHdpbGwgaWxsdW1pbmF0ZSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMsIG1haW50YWluYWJpbGl0eSBpc3N1ZXMsIG9yIGV2ZW4gcG9zc2libGUgYnVncyB0aGF0IGNvdWxkIGFyaXNlIGZyb20gbWlzdXNlIG9mIHNjb3BlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIGluc3RhbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI1NTc9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwMy1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjYwNDp2b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MDUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYzNj12b2lkIGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzOS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY0MDpcdGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhrdm0pO1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM4MQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipUcmFjaW5nIEFkYXB0ZXIgRGVzdHJ1Y3Rpb24gaW4gS1ZNL3MzOTB4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGFkYXB0ZXJzIGFyZSB1bm1hcHBlZCBpbiB0aGUgczM5MHggS1ZNIGltcGxlbWVudGF0aW9uLCBhbmQgdGhlIGluaXRpYWwgcG9pbnQgb2YgaW50ZXJlc3QgaXMgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIEkgdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgYWN0dWFsIHVubWFwcGluZyBvZiB0aGUgYWRhcHRlcnMsIGJ1dCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyAqd2hlbiogaXQgZ2V0cyBjYWxsZWQuIFRoZSBjb2RlIHRlbGxzIG1lIGl0JiMzOTtzIGNhbGxlZCBieSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGFkYXB0ZXIgdGVhcmRvd24sIGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB3aGF0IGhhcHBlbnMgd2l0aGluIHRoZSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGxlYWRpbmcgdXAgdG8gdGhhdCBjYWxsIHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNjA0PXZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MzY6dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTM0Mjg9dm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1MS1cdGZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylrdm0tXHUwMDNlYXJjaC5zaWVfcGFnZTIpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM0NTI6XHRrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKGt2bSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1My1cdGt2bV9zMzkwX2NsZWFyX2Zsb2F0X2lycXMoa3ZtKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NTQ2PWludCBwc3dfZXh0aW50X2Rpc2FibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ3OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTU0OC1pbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTExMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNL3MzOTAgQVBJIEVudHJ5cG9pbnRzIGZvciBTeXprYWxsZXIgQ292ZXJhZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyB3YXMgb24gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGVudHJ5IHBvaW50cyB3aXRoaW4gdGhlIEtWTS9zMzkwIGNvZGUgdGhhdCBTeXprYWxsZXIgY291bGQgdGFyZ2V0IGZvciBmdXp6aW5nIGFuZCB0ZXN0aW5nLiBGaXJzdCwgSSBub3RpY2VkIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBpcyBub24tc3RhdGljLCBpbW1lZGlhdGVseSBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgYnJvYWRlciBBUEkgYWNjZXNzaWJpbGl0eS4gVGhhdCBsZWQgbWUgdG8gY29uc2lkZXIgd2hldGhlciB0aGVyZSB3ZXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgYXJlYS4gU2Nhbm5pbmcgcXVpY2tseSwgSSBmb3VuZCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLCB3aGljaCBzZWVtZWQgcHJvbWlzaW5nLiBJIG1hZGUgYSBtZW50YWwgbm90ZSBvZiBga3ZtX2ZsaWNfb3BzYCBhcyBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCwgYnV0IGl0JiMzOTtzIGEgc3RydWN0LCBzbyB0aGF0IGRpZG4mIzM5O3QgcGFuIG91dC4KCkkgdGhlbiBzdGFydGVkIGludmVzdGlnYXRpbmcgdGhlIEZMSUMgYWRhcHRlciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgYGZsaWNfc2V0X2F0dHJgLCBgZmxpY19nZXRfYXR0cmAsIGFuZCBgZmxpY19oYXNfYXR0cmAuIFRoZXNlIGFyZSBhbGwgc3RhdGljLCB3aGljaCByYWlzZWQgYSBmbGFnLiBTeXprYWxsZXImIzM5O3MgYWJpbGl0eSB0byBkaXJlY3RseSB0YXJnZXQgdGhlc2UgaXMgbGltaXRlZCBpZiB0aGV5JiMzOTtyZSBpbmxpbmVkLiBJIHJldmlzaXRlZCB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgYWdhaW4sIGtlZXBpbmcgaW4gbWluZCB0aGF0IHRob3NlIGFyZSBub24tc3RhdGljLgoKVGhlbiBjYW1lIHRoZSBrZXkgY29ubmVjdGlvbjogYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRllgIGlvY3RsIG9uIHRoZSBGTElDIGRldmljZS4gQWhhISBUaGUgaW9jdGwgaGFuZGxlciwgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAsIGNhbGxzIHRoZSBkZXZpY2UmIzM5O3MgYHNldF9hdHRyYCBvcGVyYXRpb24uIFNvLCBlaXRoZXIgYGt2bV9kZXZpY2VfaW9jdGxfYXR0cmAgKGdlbmVyaWMpIG9yIGBmbGljX3NldF9hdHRyYCAoc3RhdGljKSBpcyBhbiBlbnRyeSBwb2ludC4gU2luY2UgYGZsaWNfc2V0X2F0dHJgIGlzIHN0YXRpYywgbXkgY29uY2VybiBpcyB3aGV0aGVyIGl0JiMzOTtzIGlubGluZWQuIElmIGl0ICppcyogaW5saW5lZCwgU3l6a2FsbGVyIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGZpbmQgaXQgZGlyZWN0bHksIGFsdGhvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQgc2hvdWxkIHByZXZlbnQgdGhhdC4gQnV0IFN5emthbGxlciBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyBJIHNob3VsZCBsb29rIGZvciB0aGF0LgoKVGhlIGlkZWFsIHNvbHV0aW9uIGlzIHRvIGZpbmQgYSBub24tc3RhdGljIGVudHJ5IHBvaW50IGRpcmVjdGx5IHJlbGF0ZWQgdG8gYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgdGhlIGNvcmUgZnVuY3Rpb24gaW4gdGhlIHBhdGNoLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gcHJvdmlkaW5nIGEgdmFsaWQsIHN5emthbGxlci1mcmllbmRseSBlbnRyeSBwb2ludCBmb3IgdGVzdGluZyBhbmQgY292ZXJhZ2UuIExvb2tpbmcgYmFjayBvdmVyIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AsIG15IGN1cnJlbnQgZ29hbCBpcyB0byBzZWUgaWYgSSBjYW4gZmluZCBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBjb3JlIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGZvciBtb3JlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9mbGljX29wcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5MjA9c3RhdGljIHZvaWQgZmxpY19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICpkZXYpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTI2LS8qIHMzOTAgZmxvYXRpbmcgaXJxIGNvbnRyb2xsZXIgKGZsaWMpICovXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5Mjc6c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOC1cdC5uYW1lID0gXCYjMzQ7a3ZtLWZsaWNcJiMzNDssXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTE0LVx0LyogUmVnaXN0ZXIgZmxvYXRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUxNTpcdHJjID0ga3ZtX3JlZ2lzdGVyX2RldmljZV9vcHMoXHUwMDI2a3ZtX2ZsaWNfb3BzLCBLVk1fREVWX1RZUEVfRkxJQyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTE2LVx0aWYgKHJjKSB7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTU0OD1pbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjU0OTpleHRlcm4gc3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcztcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NTAtaW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2ODYKCQkJCQkJCW91dHB1dDogNzQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS1ZNL3MzOTAgQWRhcHRlciBNYW5hZ2VtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXkgQVBJIGVudHJ5IHBvaW50cyBmb3IgbWFuYWdpbmcgYWRhcHRlcnMgd2l0aGluIHRoZSBLVk0vczM5MCBhcmNoaXRlY3R1cmUuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgZnVuY3Rpb25zIHRoYXQgZGlyZWN0bHkgaGFuZGxlIHRoZSB1bm1hcHBpbmcgb3IgZGVzdHJ1Y3Rpb24gb2YgdGhlc2UgYWRhcHRlcnMuIElkZWFsbHksIEkmIzM5O20gbG9va2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFzIHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgZXhwb3NlZCBhbmQgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZS4KCklmIGEgZGlyZWN0LCBkZWRpY2F0ZWQgZnVuY3Rpb24gZG9lc24mIzM5O3QgbGVhcCBvdXQsIEkmIzM5O2xsIGZhbGwgYmFjayB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaG9zZSBzb3VuZCBsaWtlIHRoZXkgY291bGQgYmUgdXNlZnVsIGFzIGZhbGxiYWNrIG9wdGlvbnMuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gd2hhdCBhYm91dCBgYWRhcHRlcl9pbmRpY2F0b3JzX3NldGA/IEl0IGxvb2tzIHByb21pc2luZywgYnV0IHRoZSBmYWN0IHRoYXQgaXQmIzM5O3Mgc3RhdGljIGlzIGEgc2V0YmFjay4gVGhhdCB3b3VsZCBtYWtlIGl0IGludGVybmFsIHRvIHRoZSBtb2R1bGUsIHNvIG5vIGRpY2UuCgpPa2F5LCBwbGFuIEIuIEkmIzM5O2xsIHRob3JvdWdobHkgZXhhbWluZSBgYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY2AuIEkgaGF2ZSBhIGZlZWxpbmcgdGhhdCB0aGlzIGZpbGUsIGdpdmVuIGl0cyBuYW1lLCBpcyBhIHByaW1lIGxvY2F0aW9uIGZvciBhZGFwdGVyLXJlbGF0ZWQgZnVuY3Rpb25zLCBhbmQgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRoZXJlIHRoYXQgZml0IHRoZSBiaWxsLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgSSBtb3ZlIGZvcndhcmQsIHNvIEkmIzM5O20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxOToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxccyYjNDM7XFwqKlthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9ODQ9c3RhdGljIHZvaWQgc2NhX2NsZWFyX2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTk1LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzo5NjppbnQgcHN3X2V4dGludF9kaXNhYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTExMTQ9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19kZWxpdmVyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTExODQtLyogQ2hlY2sgd2hldGhlciBhbiBleHRlcm5hbCBjYWxsIGlzIHBlbmRpbmcgKGRlbGl2ZXJhYmxlIG9yIG5vdCkgKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE4NTppbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTExODYte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5NC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE5NTppbnQga3ZtX3MzOTBfdmNwdV9oYXNfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGV4Y2x1ZGVfc3RvcClcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5Ni17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjEzLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjE0OmludCBrdm1fY3B1X2hhc19wZW5kaW5nX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxNS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0xMjE5PXN0YXRpYyB1NjQgX19jYWxjdWxhdGVfc2x0aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTEyNTAtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjEyNTE6aW50IGt2bV9zMzkwX2hhbmRsZV93YWl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI1Mi17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjk3LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjk4OnZvaWQga3ZtX3MzOTBfdmNwdV93YWtldXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjk5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEzMTA9ZW51bSBocnRpbWVyX3Jlc3RhcnQga3ZtX3MzOTBfaWRsZV93YWtldXAoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTMyNy1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTMyODp2b2lkIGt2bV9zMzkwX2NsZWFyX2xvY2FsX2lycXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMzI5LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTE5NDk9c3RhdGljIGludCBfX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTE5NzktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjE5ODA6aW50IGt2bV9zMzkwX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTE5ODEtXHRcdCAgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LCBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDIyLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDIzOmludCBrdm1fczM5MF9yZWluamVjdF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDI0LVx0XHRcdCAgICAgIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjgtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIwMjk6aW50IHMzOTBpbnRfdG9fczM5MGlycShzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDMwLVx0XHQgICAgICAgc3RydWN0IGt2bV9zMzkwX2lycSAqaXJxKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3MS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA3MjppbnQga3ZtX3MzOTBfaXNfc3RvcF9pcnFfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwNzMte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3OC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA3OTppbnQga3ZtX3MzOTBfaXNfcmVzdGFydF9pcnFfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODAte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA4NS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA4Njp2b2lkIGt2bV9zMzkwX2NsZWFyX3N0b3BfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA4Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMDk2PXN0YXRpYyBpbnQgZG9faW5qZWN0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3MzOTBfaXJxICppcnEpXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMTQwLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMTQxOmludCBrdm1fczM5MF9pbmplY3RfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE0Mi17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMTY0PXN0YXRpYyB2b2lkIGludGlfdG9faXJxKHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNzktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIxODA6dm9pZCBrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE4MS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDE3PXN0YXRpYyBpbnQgcmVnaXN0ZXJfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ2My1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ2NDppbnQga3ZtX3MzOTBfbWFza19hZGFwdGVyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBib29sIG1hc2tlZClcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjQ2NS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNTU3PXN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl91bm1hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MDMtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MDQ6dm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjA1LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MzY6dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYzNy17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMDcyPXN0YXRpYyBpbnQgc2V0X2FkYXB0ZXJfaW50KHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA5OC0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA5OTp2b2lkIGt2bV9zMzkwX3JlaW5qZWN0X21hY2hpbmVfY2hlY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTAwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTM5LVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTQwOmludCBrdm1fc2V0X3JvdXRpbmdfZW50cnkoc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTQxLVx0XHRcdCAgc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgxLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTgyOmludCBrdm1fc2V0X21zaShzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSwgc3RydWN0IGt2bSAqa3ZtLFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgzLVx0XHRpbnQgaXJxX3NvdXJjZV9pZCwgaW50IGxldmVsLCBib29sIGxpbmVfc3RhdHVzKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4Ny1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzE4ODppbnQga3ZtX3MzOTBfc2V0X2lycV9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgX191c2VyICppcnFzdGF0ZSwgaW50IGxlbilcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4OS17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMjI4PXN0YXRpYyB2b2lkIHN0b3JlX2xvY2FsX2lycShzdHJ1Y3Qga3ZtX3MzOTBfbG9jYWxfaW50ZXJydXB0ICpsaSxcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNjktXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMyNzA6aW50IGt2bV9zMzkwX2dldF9pcnFfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBfX3U4IF9fdXNlciAqYnVmLCBpbnQgbGVuKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMjcxLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMzNzA9c3RhdGljIHZvaWQgcHJvY2Vzc19naWJfYWxlcnRfbGlzdCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQxNC1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQxNTp2b2lkIGt2bV9zMzkwX2dpc2FfY2xlYXIoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDE2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0MjQtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0MjU6dm9pZCBrdm1fczM5MF9naXNhX2luaXQoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NDAtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NDE6dm9pZCBrdm1fczM5MF9naXNhX2VuYWJsZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NDIte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2My1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQ2NDp2b2lkIGt2bV9zMzkwX2dpc2FfZGVzdHJveShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0NjUte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ4MS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQ4Mjp2b2lkIGt2bV9zMzkwX2dpc2FfZGlzYWJsZShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODMte1xuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzUxNi0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzUxNzppbnQga3ZtX3MzOTBfZ2lzY19yZWdpc3RlcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBnaXNjKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTE4LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM1MzY9RVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3MzOTBfZ2lzY19yZWdpc3Rlcik7XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTU1LSAqL1xuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNTU2OmludCBrdm1fczM5MF9naXNjX3VucmVnaXN0ZXIoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZ2lzYylcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzU1Ny17XG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjY1PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2NjgtXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Njk6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjcwLXtcbi0tXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM2ODQ9aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxuLS1cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzc0MS0gKi9cbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mzc0MjppbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzc0My1cdFx0XHQgICAgICBzdHJ1Y3Qga3ZtICprdm0sIGludCBpcnFfc291cmNlX2lkLCBpbnQgbGV2ZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzc5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNzM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIHMzOTB4IEtWTSBBZGFwdGVyIE1hbmFnZW1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgYWZmZWN0ZWQgYnkgdGhpcyBwYXRjaC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgYW5kIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYCwgd2hpY2ggYXJlIGNhbGxlZCB3aXRoaW4gdGhlIGBtb2RpZnlfaW9fYWRhcHRlcmAgZnVuY3Rpb24uIFRoYXQsIGluIHR1cm4sIGlzIHRyaWdnZXJlZCBieSBgZmxpY19zZXRfYXR0cmAsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGBrdm1fZmxpY19vcHNgIHN0cnVjdHVyZS4gVGhpcyBpcyBhbGwgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYEtWTV9TRVRfREVWSUNFX0FUVFJgIGlvY3RsIG9uIHRoZSBGTElDIGRldmljZSwgd2hpY2ggaXRzZWxmIGlzIGNyZWF0ZWQgdmlhIGBLVk1fQ1JFQVRFX0RFVklDRWAgdXNpbmcgYEtWTV9ERVZfVFlQRV9GTElDYC4KClRoZSBrZXkgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2VzIGFuZCB3aGF0IGVsc2UgaXMgZGlyZWN0bHkgcmVsYXRlZC4gTG9va2luZyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBmdW5jdGlvbnMsIHRoZXJlIGFyZSBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBXaGlsZSBga3ZtX3MzOTBfZ2lzYV9pbml0YCBvciBga3ZtX3MzOTBfZ2lzYV9kZXN0cm95YCBjb3VsZCBiZSBhZGRlZCBmb3IgY29udGV4dCwgSSBjYW4gc2VlIHRoYXQgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLgoKQWgsIHllcywgY29uZmlybWluZyBteSBzdXNwaWNpb24g4oCTIHRoZSBkaWZmIHNob3dzIGNoYW5nZXMgdG8gYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIFRoZSBhZGRlZCBjb25kaXRpb25hbCBjaGVjayBmb3IgYG1hcC0mZ3Q7cGlubmVkYCB3aXRoaW4gdGhlIGxvb3AgaXMgdGhlIGtleSBwb2ludC4gU28sIHRoZSBvcmlnaW5hbCBmb2N1cyBuZWVkcyB0byBiZSBvbiB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCBmdW5jdGlvbnMsIHdpdGggYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgIGNhbGxpbmcgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AuIFRoZXNlIGFyZSB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoaXMgY29kZSByZXNpZGVzIGluIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCwgYW5kIGNsZWFybHkgZGVwZW5kcyBvbiBgS1ZNYC4gQW55dGhpbmcgZWxzZSwgdGhvdWdoPyBMZXQmIzM5O3MgdmVyaWZ5Li4uIG5vcGUsIGxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE5OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6MTk6Y29uZmlnIEtWTVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVx0ZGVmX3RyaXN0YXRlIHlcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDgtXHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxOTMKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gbG9va2luZyBhdCBjZW50ZXJzIGFyb3VuZCBgS1ZNYCwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgeWVzLiBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4KCkZpcnN0LCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgY29uZmlybWluZyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdywgdGhlIGtleSBmb2N1cyBzZWVtcyB0byBiZSB0aGVzZSBzeW1ib2xzOiBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaGVzZSBzdWdnZXN0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIFMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBLVk0mIzM5O3MgYWRhcHRlciBtYW5hZ2VtZW50LiBUaGUgY2hhbmdlcyBzcGVjaWZpY2FsbHkgYWZmZWN0IHRoZSBGTElDIOKAkyB0aGUgRmxvYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIg4oCTIHdpdGhpbiBLVk0gb24gUzM5MC4gVGhpcyBtZWFucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBtZW1vcnkgcGlubmluZyBhbmQgaG93IGludGVycnVwdHMgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0LgoKVGhlIG1vZGlmaWNhdGlvbiBpbnRyb2R1Y2VzIGEgZmFsbGJhY2sgbWVjaGFuaXNtLiBJZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAobGlrZWx5IGR1ZSB0bywgc2F5LCBmaWxlLWJhY2tlZCBtZW1vcnkpLCBpdCBhdHRlbXB0cyBzaG9ydC10ZXJtIHBpbm5pbmcuIFRoaXMgaGFzIG9idmlvdXMgaW1wbGljYXRpb25zIGZvciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgZWRnZSBjYXNlcyB0aGF0IGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGV4cGxpY2l0bHkgbGlzdCBgS1ZNYCwgZnVydGhlciBzb2xpZGlmeWluZyB0aGF0IHRoaXMgaXMgdGhlIGFyZWEgdG8gZm9jdXMgb24uCgpTbywgaW4gZXNzZW5jZSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzMzkwIHN1YnN5c3RlbSByZWxhdGVkIHRvIG1lbW9yeSBwaW5uaW5nIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcuIEl04oCZcyBhIGNsYXNzaWMgY2FzZSB3aGVyZSBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzLCBlc3BlY2lhbGx5IGRlYWxpbmcgd2l0aCBtZW1vcnkgYW5kIGludGVycnVwdHMsIGNhbiBvcGVuIHVwIGEgdHJlYXN1cmUgdHJvdmUgb2YgdnVsbmVyYWJpbGl0aWVzIHRoYXQgZnV6emluZyBjb3VsZCB1bmVhcnRoLiBUaGlzIGRlZmluaXRlbHkgZGVzZXJ2ZXMgcmlnb3JvdXMgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTk6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjozOC4zOTgyNDU5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTI3ODMwMjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNcIixcbiAgICBcImt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHMzOTAgRkxJQyAoRmxvYXRpbmcgSW50ZXJydXB0IENvbnRyb2xsZXIpIGFkYXB0ZXIgbWFwcGluZyBsb2dpYyB0byBmYWxsYmFjayB0byBzaG9ydC10ZXJtIHBpbm5pbmcgaWYgbG9uZy10ZXJtIHBpbm5pbmcgZmFpbHMgKGUuZy4sIGZvciBmaWxlLWJhY2tlZCBtZW1vcnkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIG1lbW9yeSBwaW5uaW5nIGFuZCBpbnRlcnJ1cHQgaW5qZWN0aW9uLCB3aGljaCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjozOC4zOTgyNTM3ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDI0NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1MWEzYmUzNDk1NDI3OTk4M2ZlZTMzMTk3YzdkNjY4MTA0MjcyZWJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTk6MTI6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxcbmluZGV4IGI3ODRmODAxNjc0ODM2Li45ODNjODU4YjQ0NGEwNCAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XFxuQEAgLTExMiw5ICsxMTIsMjAgQEAgR3JvdXBzOlxcbiAgICAgICBtYXNrIG9yIHVubWFzayB0aGUgYWRhcHRlciwgYXMgc3BlY2lmaWVkIGluIG1hc2tcXG4gXFxuICAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUFxcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxcbisgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0XFxuKyAgICAgIGludGVycnVwdCBpbmplY3Rpb24gY2FuIGJlIHBlcmZvcm1lZCBpbiBhdG9taWMgY29udGV4dC4gSWYgbG9uZy10ZXJtXFxuKyAgICAgIHBpbm5pbmcgaXMgbm90IHBvc3NpYmxlIChlLmcuIGZpbGUtYmFja2VkIG1lbW9yeSksIHRoZSBwYWdlIGlzIHZlcmlmaWVkXFxuKyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uXFxuKyAgICAgIHdpbGwgdXNlIHRoZSBub24tYXRvbWljIGlycWZkIHBhdGggd2l0aCBzaG9ydC10ZXJtIHBpbm5pbmcgb24gZWFjaFxcbisgICAgICBpbnRlcnJ1cHQuIEluIFNlY3VyZSBFeGVjdXRpb24gbW9kZSB0aGlzIGlzIGEgbm8tb3AgYW5kIHRoZSBpb2N0bFxcbisgICAgICByZXR1cm5zIHN1Y2Nlc3MuXFxuK1xcbiAgICAgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUFxcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxcbisgICAgICBVbm1hcCBhIHByZXZpb3VzbHkgbWFwcGVkIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBhbmQgcmVsZWFzZVxcbisgICAgICB0aGUgbG9uZy10ZXJtIHBpbi4gSWYgdGhlIHBhZ2Ugd2FzIG5vdCBsb25nLXRlcm0gcGlubmVkIChlLmcuIGZpbGUtYmFja2VkXFxuKyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcXG4rICAgICAgbWFwIGVudHJ5IGV4aXN0cywgLUVOT0VOVCBpcyByZXR1cm5lZC4gSW4gU2VjdXJlIEV4ZWN1dGlvbiBtb2RlIHRoaXMgaXNcXG4rICAgICAgYSBuby1vcCBhbmQgdGhlIGlvY3RsIHJldHVybnMgc3VjY2Vzcy5cXG4gXFxuICAgS1ZNX0RFVl9GTElDX0FJU01cXG4gICAgIG1vZGlmeSB0aGUgYWRhcHRlci1pbnRlcnJ1cHRpb24tc3VwcHJlc3Npb24gbW9kZSBmb3IgYSBnaXZlbiBpc2MgaWYgdGhlXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG5pbmRleCBlYWEzNGM1YmQzYzExMC4uYzE3MmY5YjIxMmQxOGUgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC00NzYsNiArNDc2LDExIEBAIHN0cnVjdCBzMzkwX21hcF9pbmZvIHtcXG4gXFx0X191NjQgZ3Vlc3RfYWRkcjtcXG4gXFx0X191NjQgYWRkcjtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuK1xcdC8qXFxuK1xcdCAqIFRydWUgaWYgdGhlIHBhZ2UgaXMgbG9uZy10ZXJtIHBpbm5lZC4gRmFsc2UgaWYgbG9uZy10ZXJtIHBpbm5pbmdcXG4rXFx0ICogZmFpbGVkIGFuZCB0aGlzIGVudHJ5IGV4aXN0cyBvbmx5IHRvIHByZXNlcnZlIE1BUC9VTk1BUCBzeW1tZXRyeS5cXG4rXFx0ICovXFxuK1xcdGJvb2wgcGlubmVkO1xcbiB9O1xcbiBcXG4gc3RydWN0IHMzOTBfaW9fYWRhcHRlciB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXFxuaW5kZXggOWUzZTZiMGQ3MmFkNjEuLjc1MTRkOWUyNDAzYzFiIDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXFxuQEAgLTI1MjAsOCArMjUyMCwyMiBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRtYXAtXFx1MDAzZWFkZHIgPSBob3N0X2FkZHI7XFxuIFxcdG1hcC1cXHUwMDNlcGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgRk9MTF9MT05HVEVSTSk7XFxuIFxcdGlmICghbWFwLVxcdTAwM2VwYWdlKSB7XFxuLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBMb25nLXRlcm0gcGlubmluZyBtYXkgZmFpbCBmb3IgbWVtb3J5IHR5cGVzIHN1Y2ggYXMgZmlsZS1iYWNrZWRcXG4rXFx0XFx0ICogbWVtb3J5LiBWZXJpZnkgdGhhdCBzaG9ydC10ZXJtIHBpbm5pbmcgc3VjY2VlZHMgc28gdGhhdCB0aGVcXG4rXFx0XFx0ICogbm9uLWF0b21pYyBpcnFmZCBwYXRoIGNhbiBoYW5kbGUgaW50ZXJydXB0IGluamVjdGlvbi5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdG1hcC1cXHUwMDNlcGFnZSA9IHBpbl9tYXBfcGFnZShrdm0sIGhvc3RfYWRkciwgMCk7XFxuK1xcdFxcdGlmICghbWFwLVxcdTAwM2VwYWdlKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcdFxcdHVucGluX3VzZXJfcGFnZShtYXAtXFx1MDAzZXBhZ2UpO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBhZ2UgPSBOVUxMO1xcbitcXHRcXHRtYXAtXFx1MDAzZXBpbm5lZCA9IGZhbHNlO1xcbitcXHRcXHQvKiBBZGQgYW4gZW50cnkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LiAqL1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRtYXAtXFx1MDAzZXBpbm5lZCA9IHRydWU7XFxuIFxcdH1cXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbiBcXHRpZiAoYWRhcHRlci1cXHUwMDNlbnJfbWFwcyBcXHUwMDNjIE1BWF9TMzkwX0FEQVBURVJfTUFQUykge1xcbkBAIC0yNTMyLDcgKzI1NDYsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbi1cXHRpZiAocmV0KVxcbitcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IG1hcC1cXHUwMDNlcGFnZSlcXG4gXFx0XFx0dW5waW5fdXNlcl9wYWdlKG1hcC1cXHUwMDNlcGFnZSk7XFxuIG91dDpcXG4gXFx0aWYgKHJldClcXG5AQCAtMjU0Niw2ICsyNTYwLDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXHRzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqbWFwLCAqdG1wLCAqbWFwX3RvX2ZyZWU7XFxuIFxcdHN0cnVjdCBwYWdlICptYXBfcGFnZV90b19wdXQgPSBOVUxMO1xcbiBcXHR1NjQgbWFwX2FkZHJfdG9fbWFyayA9IDA7XFxuK1xcdGJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgZm91bmQgPSAwLCBpZHg7XFxuIFxcbkBAIC0yNTYwLDYgKzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuIFxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZtYXAtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRcXHRtYXBfcGFnZV90b19wdXQgPSBtYXAtXFx1MDAzZXBhZ2U7XFxuIFxcdFxcdFxcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXFx1MDAzZWd1ZXN0X2FkZHI7XFxuK1xcdFxcdFxcdG1hcF9waW5uZWQgPSBtYXAtXFx1MDAzZXBpbm5lZDtcXG4gXFx0XFx0XFx0bWFwX3RvX2ZyZWUgPSBtYXA7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuQEAgLTI1NjgsMTEgKzI1ODQsMTggQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbiBcXG4gXFx0aWYgKGZvdW5kKSB7XFxuIFxcdFxcdGtmcmVlKG1hcF90b19mcmVlKTtcXG4tXFx0XFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc3JjdSk7XFxuLVxcdFxcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcF9hZGRyX3RvX21hcmsgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuLVxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwX3BhZ2VfdG9fcHV0KTtcXG4tXFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbi1cXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwX3BhZ2VfdG9fcHV0KTtcXG4rXFx0XFx0aWYgKG1hcF9waW5uZWQpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogT25seSBsb25nLXRlcm0gcGlubmVkIHBhZ2VzIG5lZWQgdG8gYmUgbWFya2VkIGRpcnR5XFxuK1xcdFxcdFxcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxcbitcXHRcXHRcXHQgKiBNQVAvVU5NQVAgc3ltbWV0cnkuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZHggPSBzcmN1X3JlYWRfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1KTtcXG4rXFx0XFx0XFx0bWFya19wYWdlX2RpcnR5KGt2bSwgbWFwX2FkZHJfdG9fbWFyayBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKTtcXG4rXFx0XFx0XFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xcbitcXHRcXHRcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuK1xcdFxcdFxcdHVucGluX3VzZXJfcGFnZShtYXBfcGFnZV90b19wdXQpO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UO1xcbkBAIC0yNTk4LDExICsyNjIxLDEzIEBAIHZvaWQga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcXG4gXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtYXAsIHRtcCwgXFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcXG4gXFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm1hcC1cXHUwMDNlbGlzdCk7XFxuLVxcdFxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbi1cXHRcXHRcXHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtXFx1MDAzZWd1ZXN0X2FkZHIgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuLVxcdFxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVxcdTAwM2VwYWdlKTtcXG4tXFx0XFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbi1cXHRcXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0aWYgKG1hcC1cXHUwMDNlcGlubmVkKSB7XFxuK1xcdFxcdFxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbitcXHRcXHRcXHRcXHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXAtXFx1MDAzZWd1ZXN0X2FkZHIgXFx1MDAzZVxcdTAwM2UgUEFHRV9TSElGVCk7XFxuK1xcdFxcdFxcdFxcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0XFx0c3JjdV9yZWFkX3VubG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VzcmN1LCBpZHgpO1xcbitcXHRcXHRcXHRcXHR1bnBpbl91c2VyX3BhZ2UobWFwLVxcdTAwM2VwYWdlKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRrZnJlZShtYXApO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG5AQCAtMjkyOSw4ICsyOTU0LDExIEBAIHN0YXRpYyBzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqZ2V0X21hcF9pbmZvKHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShtYXAsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VtYXBzLCBsaXN0KSB7XFxuLVxcdFxcdGlmIChtYXAtXFx1MDAzZWFkZHIgPT0gYWRkcilcXG4rXFx0XFx0aWYgKG1hcC1cXHUwMDNlYWRkciA9PSBhZGRyKSB7XFxuK1xcdFxcdFxcdGlmICghbWFwLVxcdTAwM2VwaW5uZWQpXFxuK1xcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHRcXHRyZXR1cm4gbWFwO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTI6MzkuMTI5NDc0MTgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1NDcwNjM5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzXCIsXG4gICAgXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTUxYTNiZTM0OTU0Mjc5OTgzZmVlMzMxOTdjN2Q2NjgxMDQyNzJlYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE5OjEyOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvczM5MF9mbGljLnJzdFxuaW5kZXggYjc4NGY4MDE2NzQ4MzYuLjk4M2M4NThiNDQ0YTA0IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9kZXZpY2VzL3MzOTBfZmxpYy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0vZGV2aWNlcy9zMzkwX2ZsaWMucnN0XG5AQCAtMTEyLDkgKzExMiwyMCBAQCBHcm91cHM6XG4gICAgICAgbWFzayBvciB1bm1hc2sgdGhlIGFkYXB0ZXIsIGFzIHNwZWNpZmllZCBpbiBtYXNrXG4gXG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfTUFQXG4tICAgICAgVGhpcyBpcyBub3cgYSBuby1vcC4gVGhlIG1hcHBpbmcgaXMgcHVyZWx5IGRvbmUgYnkgdGhlIGlycSByb3V0ZS5cbisgICAgICBNYXAgYW4gYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGZvciBsb25nLXRlcm0gcGlubmluZyBzbyB0aGF0XG4rICAgICAgaW50ZXJydXB0IGluamVjdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGluIGF0b21pYyBjb250ZXh0LiBJZiBsb25nLXRlcm1cbisgICAgICBwaW5uaW5nIGlzIG5vdCBwb3NzaWJsZSAoZS5nLiBmaWxlLWJhY2tlZCBtZW1vcnkpLCB0aGUgcGFnZSBpcyB2ZXJpZmllZFxuKyAgICAgIHZpYSBhIHNob3J0LXRlcm0gcGluIGFuZCB0aGUgaW9jdGwgcmV0dXJucyBzdWNjZXNzOyBpbnRlcnJ1cHQgaW5qZWN0aW9uXG4rICAgICAgd2lsbCB1c2UgdGhlIG5vbi1hdG9taWMgaXJxZmQgcGF0aCB3aXRoIHNob3J0LXRlcm0gcGlubmluZyBvbiBlYWNoXG4rICAgICAgaW50ZXJydXB0LiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpcyBhIG5vLW9wIGFuZCB0aGUgaW9jdGxcbisgICAgICByZXR1cm5zIHN1Y2Nlc3MuXG4rXG4gICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfVU5NQVBcbi0gICAgICBUaGlzIGlzIG5vdyBhIG5vLW9wLiBUaGUgbWFwcGluZyBpcyBwdXJlbHkgZG9uZSBieSB0aGUgaXJxIHJvdXRlLlxuKyAgICAgIFVubWFwIGEgcHJldmlvdXNseSBtYXBwZWQgYWRhcHRlciBpbmRpY2F0b3Igb3Igc3VtbWFyeSBwYWdlIGFuZCByZWxlYXNlXG4rICAgICAgdGhlIGxvbmctdGVybSBwaW4uIElmIHRoZSBwYWdlIHdhcyBub3QgbG9uZy10ZXJtIHBpbm5lZCAoZS5nLiBmaWxlLWJhY2tlZFxuKyAgICAgIG1lbW9yeSksIHRoZSBtYXAgZW50cnkgaXMgcmVtb3ZlZCBhbmQgc3VjY2VzcyBpcyByZXR1cm5lZDsgaWYgbm8gcHJpb3JcbisgICAgICBtYXAgZW50cnkgZXhpc3RzLCAtRU5PRU5UIGlzIHJldHVybmVkLiBJbiBTZWN1cmUgRXhlY3V0aW9uIG1vZGUgdGhpcyBpc1xuKyAgICAgIGEgbm8tb3AgYW5kIHRoZSBpb2N0bCByZXR1cm5zIHN1Y2Nlc3MuXG4gXG4gICBLVk1fREVWX0ZMSUNfQUlTTVxuICAgICBtb2RpZnkgdGhlIGFkYXB0ZXItaW50ZXJydXB0aW9uLXN1cHByZXNzaW9uIG1vZGUgZm9yIGEgZ2l2ZW4gaXNjIGlmIHRoZVxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGVhYTM0YzViZDNjMTEwLi5jMTcyZjliMjEyZDE4ZSAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTQ3Niw2ICs0NzYsMTEgQEAgc3RydWN0IHMzOTBfbWFwX2luZm8ge1xuIFx0X191NjQgZ3Vlc3RfYWRkcjtcbiBcdF9fdTY0IGFkZHI7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbitcdC8qXG4rXHQgKiBUcnVlIGlmIHRoZSBwYWdlIGlzIGxvbmctdGVybSBwaW5uZWQuIEZhbHNlIGlmIGxvbmctdGVybSBwaW5uaW5nXG4rXHQgKiBmYWlsZWQgYW5kIHRoaXMgZW50cnkgZXhpc3RzIG9ubHkgdG8gcHJlc2VydmUgTUFQL1VOTUFQIHN5bW1ldHJ5LlxuK1x0ICovXG4rXHRib29sIHBpbm5lZDtcbiB9O1xuIFxuIHN0cnVjdCBzMzkwX2lvX2FkYXB0ZXIge1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG5pbmRleCA5ZTNlNmIwZDcyYWQ2MS4uNzUxNGQ5ZTI0MDNjMWIgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXG5AQCAtMjUyMCw4ICsyNTIwLDIyIEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRtYXAtXHUwMDNlYWRkciA9IGhvc3RfYWRkcjtcbiBcdG1hcC1cdTAwM2VwYWdlID0gcGluX21hcF9wYWdlKGt2bSwgaG9zdF9hZGRyLCBGT0xMX0xPTkdURVJNKTtcbiBcdGlmICghbWFwLVx1MDAzZXBhZ2UpIHtcbi1cdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0Z290byBvdXQ7XG4rXHRcdC8qXG4rXHRcdCAqIExvbmctdGVybSBwaW5uaW5nIG1heSBmYWlsIGZvciBtZW1vcnkgdHlwZXMgc3VjaCBhcyBmaWxlLWJhY2tlZFxuK1x0XHQgKiBtZW1vcnkuIFZlcmlmeSB0aGF0IHNob3J0LXRlcm0gcGlubmluZyBzdWNjZWVkcyBzbyB0aGF0IHRoZVxuK1x0XHQgKiBub24tYXRvbWljIGlycWZkIHBhdGggY2FuIGhhbmRsZSBpbnRlcnJ1cHQgaW5qZWN0aW9uLlxuK1x0XHQgKi9cbitcdFx0bWFwLVx1MDAzZXBhZ2UgPSBwaW5fbWFwX3BhZ2Uoa3ZtLCBob3N0X2FkZHIsIDApO1xuK1x0XHRpZiAoIW1hcC1cdTAwM2VwYWdlKSB7XG4rXHRcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHR1bnBpbl91c2VyX3BhZ2UobWFwLVx1MDAzZXBhZ2UpO1xuK1x0XHRtYXAtXHUwMDNlcGFnZSA9IE5VTEw7XG4rXHRcdG1hcC1cdTAwM2VwaW5uZWQgPSBmYWxzZTtcbitcdFx0LyogQWRkIGFuIGVudHJ5IHRvIHByZXNlcnZlIE1BUC9VTk1BUCBzeW1tZXRyeS4gKi9cbitcdH0gZWxzZSB7XG4rXHRcdG1hcC1cdTAwM2VwaW5uZWQgPSB0cnVlO1xuIFx0fVxuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzX2xvY2ssIGZsYWdzKTtcbiBcdGlmIChhZGFwdGVyLVx1MDAzZW5yX21hcHMgXHUwMDNjIE1BWF9TMzkwX0FEQVBURVJfTUFQUykge1xuQEAgLTI1MzIsNyArMjU0Niw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHR9XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbWFwc19sb2NrLCBmbGFncyk7XG4tXHRpZiAocmV0KVxuK1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgbWFwLVx1MDAzZXBhZ2UpXG4gXHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4gb3V0OlxuIFx0aWYgKHJldClcbkBAIC0yNTQ2LDYgKzI1NjAsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRzdHJ1Y3QgczM5MF9tYXBfaW5mbyAqbWFwLCAqdG1wLCAqbWFwX3RvX2ZyZWU7XG4gXHRzdHJ1Y3QgcGFnZSAqbWFwX3BhZ2VfdG9fcHV0ID0gTlVMTDtcbiBcdHU2NCBtYXBfYWRkcl90b19tYXJrID0gMDtcbitcdGJvb2wgbWFwX3Bpbm5lZCA9IGZhbHNlO1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdGludCBmb3VuZCA9IDAsIGlkeDtcbiBcbkBAIC0yNTYwLDYgKzI1NzUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXG4gXHRcdFx0bGlzdF9kZWwoXHUwMDI2bWFwLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1hcF9wYWdlX3RvX3B1dCA9IG1hcC1cdTAwM2VwYWdlO1xuIFx0XHRcdG1hcF9hZGRyX3RvX21hcmsgPSBtYXAtXHUwMDNlZ3Vlc3RfYWRkcjtcbitcdFx0XHRtYXBfcGlubmVkID0gbWFwLVx1MDAzZXBpbm5lZDtcbiBcdFx0XHRtYXBfdG9fZnJlZSA9IG1hcDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuQEAgLTI1NjgsMTEgKzI1ODQsMTggQEAgc3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxuIFxuIFx0aWYgKGZvdW5kKSB7XG4gXHRcdGtmcmVlKG1hcF90b19mcmVlKTtcbi1cdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRtYXJrX3BhZ2VfZGlydHkoa3ZtLCBtYXBfYWRkcl90b19tYXJrIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xuLVx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHR1bnBpbl91c2VyX3BhZ2UobWFwX3BhZ2VfdG9fcHV0KTtcbitcdFx0aWYgKG1hcF9waW5uZWQpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIE9ubHkgbG9uZy10ZXJtIHBpbm5lZCBwYWdlcyBuZWVkIHRvIGJlIG1hcmtlZCBkaXJ0eVxuK1x0XHRcdCAqIGFuZCByZWxlYXNlZC4gRmFsbGJhY2sgZW50cmllcyBleGlzdCBvbmx5IGZvclxuK1x0XHRcdCAqIE1BUC9VTk1BUCBzeW1tZXRyeS5cbitcdFx0XHQgKi9cbitcdFx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG4rXHRcdFx0bWFya19wYWdlX2RpcnR5KGt2bSwgbWFwX2FkZHJfdG9fbWFyayBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG4rXHRcdFx0c2V0X3BhZ2VfZGlydHlfbG9jayhtYXBfcGFnZV90b19wdXQpO1xuK1x0XHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4rXHRcdFx0dW5waW5fdXNlcl9wYWdlKG1hcF9wYWdlX3RvX3B1dCk7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiBmb3VuZCA/IDAgOiAtRU5PRU5UO1xuQEAgLTI1OTgsMTEgKzI2MjEsMTMgQEAgdm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxuIFxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobWFwLCB0bXAsIFx1MDAyNmxvY2FsX2xpc3QsIGxpc3QpIHtcbiBcdFx0XHRsaXN0X2RlbChcdTAwMjZtYXAtXHUwMDNlbGlzdCk7XG4tXHRcdFx0aWR4ID0gc3JjdV9yZWFkX2xvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UpO1xuLVx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbi1cdFx0XHRzZXRfcGFnZV9kaXJ0eV9sb2NrKG1hcC1cdTAwM2VwYWdlKTtcbi1cdFx0XHRzcmN1X3JlYWRfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1LCBpZHgpO1xuLVx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4rXHRcdFx0aWYgKG1hcC1cdTAwM2VwaW5uZWQpIHtcbitcdFx0XHRcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VzcmN1KTtcbitcdFx0XHRcdG1hcmtfcGFnZV9kaXJ0eShrdm0sIG1hcC1cdTAwM2VndWVzdF9hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKTtcbitcdFx0XHRcdHNldF9wYWdlX2RpcnR5X2xvY2sobWFwLVx1MDAzZXBhZ2UpO1xuK1x0XHRcdFx0c3JjdV9yZWFkX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSwgaWR4KTtcbitcdFx0XHRcdHVucGluX3VzZXJfcGFnZShtYXAtXHUwMDNlcGFnZSk7XG4rXHRcdFx0fVxuIFx0XHRcdGtmcmVlKG1hcCk7XG4gXHRcdH1cbiBcdH1cbkBAIC0yOTI5LDggKzI5NTQsMTEgQEAgc3RhdGljIHN0cnVjdCBzMzkwX21hcF9pbmZvICpnZXRfbWFwX2luZm8oc3RydWN0IHMzOTBfaW9fYWRhcHRlciAqYWRhcHRlcixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG1hcCwgXHUwMDI2YWRhcHRlci1cdTAwM2VtYXBzLCBsaXN0KSB7XG4tXHRcdGlmIChtYXAtXHUwMDNlYWRkciA9PSBhZGRyKVxuK1x0XHRpZiAobWFwLVx1MDAzZWFkZHIgPT0gYWRkcikge1xuK1x0XHRcdGlmICghbWFwLVx1MDAzZXBpbm5lZClcbitcdFx0XHRcdHJldHVybiBOVUxMO1xuIFx0XHRcdHJldHVybiBtYXA7XG4rXHRcdH1cbiBcdH1cbiBcdHJldHVybiBOVUxMO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEyOjM5LjEyOTQ3NjgwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDk4Nzg1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIHMzOTAgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCB0YXJnZXRpbmcgS1ZNIG9uIHMzOTAuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGFkYXB0ZXIgbWFwcGluZyBhbmQgdW5tYXBwaW5nIGZ1bmN0aW9uczogYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgYWRkaXRpb24gb2YgYSBgcGlubmVkYCBib29sZWFuIHRvIHRoZSBgczM5MF9tYXBfaW5mb2Agc3RydWN0IGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllLiBUaGlzIGhhcyBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIEtWTSBzdWJzeXN0ZW0gZm9yIHMzOTA7IGl0IGluZGljYXRlcyBzb21lIGNoYW5nZSBpbiByZXNvdXJjZSBwaW5uaW5nLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byBjaGVjayByZWFjaGFiaWxpdHkuIEFyZSB0aGVzZSBmdW5jdGlvbnMgYWN0dWFsbHkgY2FsbGVkPyBBcmUgdGhleSByZWxldmFudCB0byB0aGUgc3lzdGVtPyBJIHF1aWNrbHkgcmVjYWxsIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSB0aWVkIHRvIHRoZSBgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVBgIGFuZCBgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUGAgaW9jdGxzLiBBaCwgYnV0IHdhaXQsIHRoZSBleGlzdGluZyBkb2N1bWVudGF0aW9uLi4uIGl0J3MgYSBuby1vcCwgcmlnaHQ/IFRoZSBtYXBwaW5nIGlzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgYnkgdGhlIElSUSByb3V0ZS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggKmNoYW5nZXMqIHRoZSBkb2N1bWVudGF0aW9uISBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIHJlc3RvcmUgZnVuY3Rpb25hbGl0eSB0byBgS1ZNX1MzOTBfSU9fQURBUFRFUl9NQVBgLiBUaGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCBpdCBpcyBhIG5vLW9wLCBidXQgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNheXMgaXQgd2lsbCAnbWFwIGFuIGFkYXB0ZXIgaW5kaWNhdG9yIG9yIHN1bW1hcnkgcGFnZSBmb3IgbG9uZy10ZXJtIHBpbm5pbmcgc28gdGhhdCBpbnRlcnJ1cHQgaW5qZWN0aW9uIGNhbiBiZSBwZXJmb3JtZWQgaW4gYXRvbWljIGNvbnRleHQuJyBTbyB0aGUgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyByZWluc3RhdGVkIG9yIG1vZGlmaWVkIGluIGEgc2lnbmlmaWNhbnQgd2F5LlxuXG5JJ20gbm93IGdvaW5nIHRvIGRpZyBpbnRvIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYCB0byB0cmFjZSBob3cgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoeSB0aGUgb2xkIGZ1bmN0aW9uYWxpdHkgaXMgYmVpbmcgYnJvdWdodCBiYWNrLCBlc3BlY2lhbGx5IHNpbmNlIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBpbmRpY2F0ZWQgaXQgd2FzIGEgbm8tb3AuIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIGNhbGwgY2hhaW4gYW5kIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDcsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMjo0NS44MzkzNTgyNjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1Nzc1OTc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9hZGFwdGVyX21hcFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI0NzY9c3RhdGljIHN0cnVjdCBwYWdlICpwaW5fbWFwX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1NjQgdWFkZHIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0OTQtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNDk1OnN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjY0OD1zdGF0aWMgaW50IG1vZGlmeV9pb19hZGFwdGVyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NzYtXFx0XFx0XFx0ZGV2LVxcdTAwM2Vrdm0tXFx1MDAzZXN0YXQuaW9fMzkwX2FkYXB0ZXJfbWFwKys7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjc3OlxcdFxcdFxcdHJldCA9IGt2bV9zMzkwX2FkYXB0ZXJfbWFwKGRldi1cXHUwMDNla3ZtLCByZXEuaWQsIHJlcS5hZGRyKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NzgtXFx0XFx0fSBlbHNlIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTI6NTAuNzk3MTIyMzg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwMjgzNzE2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1ZNL3MzOTAgQWRhcHRlciBNYXBwaW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBnZXR0aW5nIGF0IHNvbWUgY29yZSBLVk0vczM5MCBhZGFwdGVyIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgdG91Y2hpbmcgYGt2bV9zMzkwX2FkYXB0ZXJfbWFwYCwgYGt2bV9zMzkwX2FkYXB0ZXJfdW5tYXBgLCBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCwgYW5kIGBnZXRfbWFwX2luZm9gLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBgcGlubmVkYCBib29sZWFuIGluIGBzdHJ1Y3QgczM5MF9tYXBfaW5mb2AgaXMgdGhlIGtleS4gVGhleSdyZSBleHBsaWNpdGx5IHRyYWNraW5nIGxvbmctdGVybSBwYWdlIHBpbm5pbmcsIHdoaWNoIGlzIGdvb2QuIFRoZSBmYWxsYmFjayB0byBzaG9ydC10ZXJtIHBpbm5pbmcgaWYgbG9uZy10ZXJtIGZhaWxzIGlzIGludGVyZXN0aW5nLiBJZiB0aGF0IHdvcmtzLCB0aGV5J3JlIHNldHRpbmcgYHBpbm5lZCA9IGZhbHNlYCBhbmQgYHBhZ2UgPSBOVUxMYCBpbiB0aGUgbWFwIGVudHJ5LiBUaGlzIHdob2xlIHRoaW5nIGNlbnRlcnMgb24gZmlsZS1iYWNrZWQgbWVtb3J5LCBzbyB0aGV5J3JlIHdvcmtpbmcgYXJvdW5kIHBvdGVudGlhbCBsb25nLXRlcm0gcGlubmluZyBpc3N1ZXMuXG5cblRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBpbXBhY3RpbmcgaG93IGFkYXB0ZXJzIGFyZSBtYXBwZWQgYW5kIHVubWFwcGVkLiBUaGlzIG1lYW5zIGl0IGhhcyB0byBiZSBmdXp6ZWQgdGhvcm91Z2hseS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgaXMgdGhlcmUsIGJ1dCBtb3JlIGltcG9ydGFudGx5LCBpcyBpdCBzZWN1cmU/IEkgbmVlZCB0byB0ZXN0IHRoYXQuXG5cbkxldCdzIHNlZeKApiBmb3IgY29uZmlnIG9wdGlvbnMsIHRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHMzOTAgYXJjaGl0ZWN0dXJlIGFuZCBLVk0sIHNvIGBLVk1gIChhbmQgdGhlIHMzOTAtc3BlY2lmaWMgYXNwZWN0cykgYXJlIHRoZSBrZXkgY29uZmlnIG9wdGlvbnMgdG8gbm90ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNC44MjU0OTY4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDIyOTA5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnPTE3PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTIwLVxcdGRlZl90cmlzdGF0ZSB5XFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctNDYtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ3OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cXHRib29sIFxcXCJVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNC45Mjc3OTgwMTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU5NjgwNzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIG9uIHMzOTAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciB0aGUgczM5MCBhcmNoaXRlY3R1cmUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTmF0dXJhbGx5LCB0aGUgZmlyc3QgcGxhY2UgdG8gbG9vayBpcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZmlsZS4gVGhhdCdzIGEgcHJldHR5IHN0YW5kYXJkIHByYWN0aWNlLCByaWdodD8gSWYgaXQncyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGl0J2xsIGxpa2VseSBiZSB1bmRlciBgYXJjaC9zMzkwL2AuIEFuZCBzaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgYEtWTWAgY29tcG9uZW50cywgaXQgZmVlbHMgbGlrZSBpdCB3b3VsZCBiZSBpbiBhIHJlbGF0ZWQgS2NvbmZpZyBmaWxlIG9yIHdpdGhpbiBhIGRlZGljYXRlZCBLVk0gc3VidHJlZS4gU28sIGxldCdzIHN0YXJ0IHdpdGggYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBzZXR0aW5ncyB0aGF0IGNvbnRyb2wgS1ZNJ3MgYmVoYXZpb3Igb24gdGhpcyBwbGF0Zm9ybS4gVGhpcyBpcyBteSBiYXNlbGluZS4gRnJvbSB0aGVyZSwgSSBjYW4gYWx3YXlzIGV4cGxvcmUgZnVydGhlciBvciBjcm9zcy1yZWZlcmVuY2Ugb3RoZXIgcmVsYXRlZCBmaWxlcyBpZiBuZWVkZWQsIGJ1dCB0aGlzIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzowNy43ODc0ODA4NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEtWTSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNjpcXHRcXG4gICA3OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA4OlxcdFxcdGRlZl9ib29sIHlcXG4gICA5OlxcdFxcdHByb21wdCBcXFwiS1ZNXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1biBvdGhlclxcbiAgMTI6XFx0XFx0ICBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kIGRpc2FibGVkLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgS1ZNXFxuICAyMDpcXHRcXHRkZWZfdHJpc3RhdGUgeVxcbiAgMjE6XFx0XFx0cHJvbXB0IFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fQ1BVX1JFTEFYX0lOVEVSQ0VQVFxcbiAgMjM6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRlxcbiAgMjQ6XFx0XFx0c2VsZWN0IEtWTV9BU1lOQ19QRl9TWU5DXFxuICAyNTpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI3OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xcbiAgMjg6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lOVkFMSURfV0FLRVVQU1xcbiAgMjk6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX05PX1BPTExcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fVkZJT1xcbiAgMzE6XFx0XFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuICAzMjpcXHRcXHRzZWxlY3QgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbiAgMzM6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHBhcmF2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcyB1c2luZyB0aGUgU0lFXFxuICAzNjpcXHRcXHQgIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdHkgb24gdGhlIG1haW5mcmFtZS4gVGhpcyBzaG91bGQgd29ya1xcbiAgMzc6XFx0XFx0ICBvbiBhbnkgNjRiaXQgbWFjaGluZS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0ICBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyB0aHJvdWdoXFxuICA0MDpcXHRcXHQgIGEgY2hhcmFjdGVyIGRldmljZSBub2RlIG5hbWVkIC9kZXYva3ZtLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNDM6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXFxuICA0NDpcXHRcXG4gIDQ1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuICA0ODpcXHRcXHRib29sIFxcXCJVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1cXG4gIDUwOlxcdFxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MDcuNzg3NTcxMTQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUzMDE5Nzc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqS1ZNIG9uIFMvMzkwIEFkYXB0ZXIgTWFwcGluZyAtIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBLVk0uIFRoYXQncyB0aGUgYmFzZWxpbmUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIFMvMzkwIGFyY2hpdGVjdHVyZSwgZ2l2ZW4gdGhlIGFkYXB0ZXIgZm9jdXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbWVtb3J5IG1hcHBpbmcgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGFyZTpcblxuKiAgIGBrdm1fczM5MF9hZGFwdGVyX21hcGA6IFRoaXMgaXMgY3J1Y2lhbC4gSXQncyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgbWFwcGluZyBhbiBhZGFwdGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYXJndW1lbnRzLCBpdHMgaW1wbGVtZW50YXRpb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgUy8zOTAgaGFyZHdhcmUuIFdoYXQga2luZCBvZiBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgZm9yIHRoZSBtYXBwaW5nPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSB0YWJsZSBsb29rdXAsIG9yIHNvbWV0aGluZyBtb3JlIGNvbXBsZXggd2l0aCBjYWNoaW5nPyBJcyB0aGUgZnVuY3Rpb24gYXRvbWljP1xuKiAgIGBrdm1fczM5MF9hZGFwdGVyX3VubWFwYDogT2J2aW91c2x5LCB0aGUgaW52ZXJzZSBvZiBtYXBwaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5tYXBwaW5nIHByb2Nlc3MuIERvZXMgaXQgaW52b2x2ZSBpbnZhbGlkYXRpbmcgY2FjaGVzLCBzZW5kaW5nIElQSXMsIG9yIGFueXRoaW5nIGVsc2UgdG8gZW5zdXJlIGNvbnNpc3RlbmN5PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IElzIHRoZXJlIHNvbWUgZm9ybSBvZiByZWZlcmVuY2UgY291bnRpbmcgdG8gYXZvaWQgcHJlbWF0dXJlIHVubWFwcGluZz9cbiogICBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYDogVGhpcyBpcyB0aGUgZnVuY3Rpb24gZm9yIHRoZSBjbGVhbnVwIHByb2Nlc3MuIEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgcmVtb3ZhbCBvZiBhbGwgYWRhcHRlcnM/IElzIGl0IGVmZmljaWVudCwgb3IgaXMgaXQgYSBicnV0ZS1mb3JjZSBhcHByb2FjaD8gRG9lcyBpdCBuZWVkIGFueSBsb2NrcyB0byBtYWtlIHN1cmUgbm8gYWRhcHRlcnMgYXJlIGFjY2Vzc2VkIGR1cmluZyBhIGJ1bGsgcmVtb3ZhbD9cbiogICBgZ2V0X21hcF9pbmZvYDogTm93LCBJIHJlbWVtYmVyIHRoaXMgZnVuY3Rpb24uIEl0J3MgdXNlZCB0byByZXRyaWV2ZSB0aGUgbWFwcGluZyBpbmZvcm1hdGlvbi4gV2FpdCBhIHNlY29uZCwgaXNuJ3QgdGhhdCBmdW5jdGlvbiBzdGF0aWM/IE9rYXksIGxldCdzIHZlcmlmeSBpZiB0aGUgY29tcGlsZXIgaW5saW5lcyB0aGUgZnVuY3Rpb24uIElmIGl0J3MgaW5saW5lZCBpdCBpcyBhIHZlcnkgZ29vZCBzaXR1YXRpb24gYW5kIHJlZHVjZXMgb3ZlcmhlYWQuIElmIG5vdCBpbmxpbmVkLCBJIG5lZWQgdG8gY2hlY2sgaG93IGZyZXF1ZW50bHkgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWNhdXNlIGl0J3MgZ29pbmcgdG8gYmUgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLiBJIG5lZWQgdG8ga25vdyB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjEyLjMxNzc3MTg5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMjEyNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdldF9tYXBfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjkzNj1zdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfaW5kX2JpdChfX3U2NCBhZGRyLCB1bnNpZ25lZCBsb25nIGJpdF9uciwgYm9vbCBzd2FwKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yOTQ3LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk0ODpzdGF0aWMgc3RydWN0IHMzOTBfbWFwX2luZm8gKmdldF9tYXBfaW5mbyhzdHJ1Y3QgczM5MF9pb19hZGFwdGVyICphZGFwdGVyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk0OS1cXHRcXHRcXHRcXHRcXHQgIHU2NCBhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yOTY2PXN0YXRpYyBpbnQgYWRhcHRlcl9pbmRpY2F0b3JzX3NldChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5NzktXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mjk4MDpcXHRpbmRfaW5mbyA9IGdldF9tYXBfaW5mbyhhZGFwdGVyLCBhZGFwdGVyX2ludC1cXHUwMDNlaW5kX2FkZHIpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjk4MS1cXHRpZiAoIWluZF9pbmZvKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwMDItXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW1hcHNfbG9jaywgZmxhZ3MpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzAwMzpcXHRzdW1tYXJ5X2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZXN1bW1hcnlfYWRkcik7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDA0LVxcdGlmICghc3VtbWFyeV9pbmZvKSB7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTMwMjk9c3RhdGljIGludCBhZGFwdGVyX2luZGljYXRvcnNfc2V0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDM5LVxcdHNwaW5fbG9jayhcXHUwMDI2YWRhcHRlci1cXHUwMDNlbWFwc19sb2NrKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMwNDA6XFx0aW5kX2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZWluZF9hZGRyKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMwNDEtXFx0aWYgKCFpbmRfaW5mbykge1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDQ4LVxcdFxcdHNldF9iaXQoYml0LCBtYXApO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzA0OTpcXHRzdW1tYXJ5X2luZm8gPSBnZXRfbWFwX2luZm8oYWRhcHRlciwgYWRhcHRlcl9pbnQtXFx1MDAzZXN1bW1hcnlfYWRkcik7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMDUwLVxcdGlmICghc3VtbWFyeV9pbmZvKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjEyLjQzODk5MTkyMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE0ODQ4OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIFN0YXRpYyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBJJ3ZlIGdvdCBhIGZldyBmdW5jdGlvbiBjYWxscyB0aGF0IGhhdmUgY2F1Z2h0IG15IGV5ZS4gU3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoYXQgYGdldF9tYXBfaW5mb2AsIGBrdm1fczM5MF9hZGFwdGVyX21hcGAsIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAgYXJlIGFsbCBwb3RlbnRpYWxseSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIG1pZ2h0IGJlIGxvY2FsaXplZCB0byB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCBpbXBseWluZyB0aGV5J3JlIG5vdCBpbnRlbmRlZCB0byBiZSBleHBvc2VkIGdsb2JhbGx5LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBkZWNsYXJhdGlvbnMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBJdCB3b3VsZCBzaWduaWZpY2FudGx5IGFsdGVyIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUncyBzdHJ1Y3R1cmUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbi4gU3RhdGljIGZ1bmN0aW9ucyBoYXZlIGltcGxpY2F0aW9ucyBmb3IgbGlua2luZywgc2NvcGUsIGFuZCBwb3RlbnRpYWwgcmUtdXNlIGluIG90aGVyIGNvbnRleHRzLCBzbyBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0J3MgdGhlIGNhc2UuIFRpbWUgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE5NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjE1Ljk1Mzg0NDgwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1NDEwMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI0NzY9c3RhdGljIHN0cnVjdCBwYWdlICpwaW5fbWFwX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1NjQgdWFkZHIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0OTQtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNDk1OnN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl9tYXAoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgaWQsIF9fdTY0IGFkZHIpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDk2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTYuMDY5MjYwMTkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzg3NzE5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbnMgYW5kIENhbGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gb2JzZXJ2aW5nIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHRoZXkncmUgc3RhdGljLiBUaGF0J3MgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3csIGxldCdzIGRpZyBhIGJpdCBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgKnVzaW5nKiB0aGVtLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsaW5nIHRoZXNlIHN0YXRpYyBvbmVzLiBJdCdzIGEgY2xhc3NpYyBhbmFseXNpcyBwYXR0ZXJuLlxuXG5BIHF1aWNrIHNjYW4gcmV2ZWFscyB0aGF0IGBtb2RpZnlfaW9fYWRhcHRlcmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24gaGVyZS4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgYm90aCBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAuIFRoYXQgcHJvdmlkZXMgYSBzb2xpZCBsaW5rIHRvIGludmVzdGlnYXRlLiBUaGlzIGdpdmVzIHVzIGEgdXNlZnVsIHBpdm90IHBvaW50IGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjQxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTkuMjQ4MDM2ODQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxMzIwOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kaWZ5X2lvX2FkYXB0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI2MzY9dm9pZCBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY0Ny1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2NDg6c3RhdGljIGludCBtb2RpZnlfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjY0OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI4MzQ9c3RhdGljIGludCBmbGljX3NldF9hdHRyKHN0cnVjdCBrdm1fZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4NjgtXFx0Y2FzZSBLVk1fREVWX0ZMSUNfQURBUFRFUl9NT0RJRlk6XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyODY5OlxcdFxcdHIgPSBtb2RpZnlfaW9fYWRhcHRlcihkZXYsIGF0dHIpO1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjg3MC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MTkuMzg4MTc2Njc5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTYxMzYwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBmbGljX3NldF9hdHRyYCoqXG5cbk9rYXksIHNvIGBmbGljX3NldF9hdHRyYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uIGhlcmUuIFRoZSBjb2RlIHRlbGxzIG1lIGl0IGNhbGxzIGBtb2RpZnlfaW9fYWRhcHRlcmAsIGFuZCB0aGF0J3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24gcG9pbnQgdG8gZXhwbG9yZS4gQmVmb3JlIEkgZ28gdG9vIGRlZXAgaW50byBgbW9kaWZ5X2lvX2FkYXB0ZXJgLCBsZXQncyBzdGVwIGJhY2sgYW5kIGVuc3VyZSBJJ3ZlIGdvdCB0aGUgY29udGV4dCBvZiBgZmxpY19zZXRfYXR0cmAgZnVsbHkgZ3Jhc3BlZC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiAqd2h5KiB3ZSdyZSBzZXR0aW5nIGF0dHJpYnV0ZXMgaW4gdGhlIGZpcnN0IHBsYWNlLCB3aGF0IHBhcmFtZXRlcnMgaXQgYWNjZXB0cywgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGlzLiBMZXQgbWUgcXVpY2tseSBhbmFseXplIHRoZSBjb2RlIGZvciB0aGF0LiBUaGlzIGZ1bmN0aW9uIGlzIHBpdm90YWwgc28gZ2V0dGluZyB0aGF0IGNvbnRleHQgaXMgaW1wb3J0YW50LiBVbmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGlzIGEgcHJlcmVxdWlzaXRlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjIyLjU0NDMxNjkyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzAwNTA3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmxpY19zZXRfYXR0clwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjgxND1zdGF0aWMgaW50IGZsaWNfYWlzX21vZGVfc2V0X2FsbChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZGV2aWNlX2F0dHIgKmF0dHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI4MzMtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyODM0OnN0YXRpYyBpbnQgZmxpY19zZXRfYXR0cihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LCBzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyICphdHRyKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjgzNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5Mjc9c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkyOS1cXHQuZ2V0X2F0dHIgPSBmbGljX2dldF9hdHRyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjkzMDpcXHQuc2V0X2F0dHIgPSBmbGljX3NldF9hdHRyLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjkzMS1cXHQuaGFzX2F0dHIgPSBmbGljX2hhc19hdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzoyMi42NzQzNzIxODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5OTczNzczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3RhdGljIEZ1bmN0aW9uIEFzc2lnbm1lbnRzKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGZsaWNfc2V0X2F0dHJgIGZ1bmN0aW9uLiBJIHNlZSBpdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIEhvd2V2ZXIsIGl0J3MgYmVpbmcgYXNzaWduZWQgdG8gYGt2bV9mbGljX29wcy5zZXRfYXR0cmAuIFRoaXMgaW1wbGllcyB0aGF0IGl0J3MgYWN0aW5nIGFzIGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgYSBicm9hZGVyIGludGVyZmFjZSwgcHJvYmFibHkgZm9yIGEgcGFydGljdWxhciBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIGZlYXR1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzdGF0aWMgZGVjbGFyYXRpb24gaW4gdGhpcyBjb250ZXh0LiBJcyBpdCB0cnVseSBsb2NhbCB0byB0aGUgZmlsZSwgb3IgaXMgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYmVpbmcgXCJleHBvcnRlZFwiIHZpYSB0aGUgYXNzaWdubWVudCBpbiBga3ZtX2ZsaWNfb3BzYD8gSWYgdGhlIGxhdHRlciwgdGhlbiB0aGUgc3RhdGljIHF1YWxpZmllciBpcyBsaWtlbHkgaGlkaW5nIGluZm9ybWF0aW9uIGFuZCBjb3VsZCBiZSByZW1vdmVkLlxuXG5BbmQgdGhlbiwgSeKAmW0gYWxzbyB0dXJuaW5nIG15IGF0dGVudGlvbiB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYC4gSSBuZWVkIHRvIGNvbXBhcmUgYW5kIGNvbnRyYXN0LiBJcyB0aGlzIG9uZSBhbHNvIHN0YXRpYz8gT3IgaXMgaXQgYSBnbG9iYWwgZnVuY3Rpb24gYmVpbmcgdXNlZCBpbiBhIHNpbWlsYXIgd2F5LCBvciB1c2VkIGluIGEgd2F5IHRoYXQgaXMgc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQ/IElzIGl0IHBhcnQgb2YgdGhlIHNhbWUgaW50ZXJmYWNlLCBvciBhbm90aGVyPyBVbmRlcnN0YW5kaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSBhcmUgdXNlZCB3aXRoaW4gdGhlIEtWTSBmcmFtZXdvcmsgd2lsbCBpbGx1bWluYXRlIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcywgbWFpbnRhaW5hYmlsaXR5IGlzc3Vlcywgb3IgZXZlbiBwb3NzaWJsZSBidWdzIHRoYXQgY291bGQgYXJpc2UgZnJvbSBtaXN1c2Ugb2Ygc2NvcGUuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBhbGwgaW5zdGFuY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzE3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MjYuNTc0MTEyMzc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjYyMzA0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI1NTc9c3RhdGljIGludCBrdm1fczM5MF9hZGFwdGVyX3VubWFwKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBfX3U2NCBhZGRyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjAzLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjYwNDp2b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjA1LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYzNj12b2lkIGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM5LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjY0MDpcXHRrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoa3ZtKTtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2NDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjI2LjY3MDc0MjAwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI1NjI2ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipUcmFjaW5nIEFkYXB0ZXIgRGVzdHJ1Y3Rpb24gaW4gS1ZNL3MzOTB4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBhZGFwdGVycyBhcmUgdW5tYXBwZWQgaW4gdGhlIHMzOTB4IEtWTSBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZSBpbml0aWFsIHBvaW50IG9mIGludGVyZXN0IGlzIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgLiBJIHVuZGVyc3RhbmQgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCB1bm1hcHBpbmcgb2YgdGhlIGFkYXB0ZXJzLCBidXQgdGhlIGNydWNpYWwgcXVlc3Rpb24gaXMgKndoZW4qIGl0IGdldHMgY2FsbGVkLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGNhbGxlZCBieSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24sIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGFkYXB0ZXIgdGVhcmRvd24sIGlzIHRvIHRob3JvdWdobHkgZXhhbWluZSB3aGF0IGhhcHBlbnMgd2l0aGluIHRoZSBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgbGVhZGluZyB1cCB0byB0aGF0IGNhbGwgdG8gZ2V0IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBMZXQncyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM4MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjI5Ljg5NjM3MTkyM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MzAzMzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MjYwND12b2lkIGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjM2OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zNDI4PXZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzQ1MS1cXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVxcdTAwM2VhcmNoLnNpZV9wYWdlMik7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjM0NTI6XFx0a3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhrdm0pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zNDUzLVxcdGt2bV9zMzkwX2NsZWFyX2Zsb2F0X2lycXMoa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD01NDY9aW50IHBzd19leHRpbnRfZGlzYWJsZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ3OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NDgtaW50IGt2bV9zMzkwX2V4dF9jYWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6MzIuNTc5NDExNjA0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NzQ0NzYzMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtWTS9zMzkwIEFQSSBFbnRyeXBvaW50cyBmb3IgU3l6a2FsbGVyIENvdmVyYWdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIHdhcyBvbiBpZGVudGlmeWluZyBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIHdpdGhpbiB0aGUgS1ZNL3MzOTAgY29kZSB0aGF0IFN5emthbGxlciBjb3VsZCB0YXJnZXQgZm9yIGZ1enppbmcgYW5kIHRlc3RpbmcuIEZpcnN0LCBJIG5vdGljZWQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGlzIG5vbi1zdGF0aWMsIGltbWVkaWF0ZWx5IG1ha2luZyBtZSB0aGluayBhYm91dCBicm9hZGVyIEFQSSBhY2Nlc3NpYmlsaXR5LiBUaGF0IGxlZCBtZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlIHdlcmUgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLiBTY2FubmluZyBxdWlja2x5LCBJIGZvdW5kIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AsIHdoaWNoIHNlZW1lZCBwcm9taXNpbmcuIEkgbWFkZSBhIG1lbnRhbCBub3RlIG9mIGBrdm1fZmxpY19vcHNgIGFzIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50LCBidXQgaXQncyBhIHN0cnVjdCwgc28gdGhhdCBkaWRuJ3QgcGFuIG91dC5cblxuSSB0aGVuIHN0YXJ0ZWQgaW52ZXN0aWdhdGluZyB0aGUgRkxJQyBhZGFwdGVyIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBgZmxpY19zZXRfYXR0cmAsIGBmbGljX2dldF9hdHRyYCwgYW5kIGBmbGljX2hhc19hdHRyYC4gVGhlc2UgYXJlIGFsbCBzdGF0aWMsIHdoaWNoIHJhaXNlZCBhIGZsYWcuIFN5emthbGxlcidzIGFiaWxpdHkgdG8gZGlyZWN0bHkgdGFyZ2V0IHRoZXNlIGlzIGxpbWl0ZWQgaWYgdGhleSdyZSBpbmxpbmVkLiBJIHJldmlzaXRlZCB0aGUgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgYWdhaW4sIGtlZXBpbmcgaW4gbWluZCB0aGF0IHRob3NlIGFyZSBub24tc3RhdGljLlxuXG5UaGVuIGNhbWUgdGhlIGtleSBjb25uZWN0aW9uOiBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGlzIHRyaWdnZXJlZCBieSB0aGUgYEtWTV9ERVZfRkxJQ19BREFQVEVSX01PRElGWWAgaW9jdGwgb24gdGhlIEZMSUMgZGV2aWNlLiBBaGEhIFRoZSBpb2N0bCBoYW5kbGVyLCBga3ZtX2RldmljZV9pb2N0bF9hdHRyYCwgY2FsbHMgdGhlIGRldmljZSdzIGBzZXRfYXR0cmAgb3BlcmF0aW9uLiBTbywgZWl0aGVyIGBrdm1fZGV2aWNlX2lvY3RsX2F0dHJgIChnZW5lcmljKSBvciBgZmxpY19zZXRfYXR0cmAgKHN0YXRpYykgaXMgYW4gZW50cnkgcG9pbnQuIFNpbmNlIGBmbGljX3NldF9hdHRyYCBpcyBzdGF0aWMsIG15IGNvbmNlcm4gaXMgd2hldGhlciBpdCdzIGlubGluZWQuIElmIGl0ICppcyogaW5saW5lZCwgU3l6a2FsbGVyIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGZpbmQgaXQgZGlyZWN0bHksIGFsdGhvdWdoIHRoZSBmdW5jdGlvbiBwb2ludGVyIGFzc2lnbm1lbnQgc2hvdWxkIHByZXZlbnQgdGhhdC4gQnV0IFN5emthbGxlciBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBzbyBJIHNob3VsZCBsb29rIGZvciB0aGF0LlxuXG5UaGUgaWRlYWwgc29sdXRpb24gaXMgdG8gZmluZCBhIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQgZGlyZWN0bHkgcmVsYXRlZCB0byBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgLCB0aGUgY29yZSBmdW5jdGlvbiBpbiB0aGUgcGF0Y2guIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBwcm92aWRpbmcgYSB2YWxpZCwgc3l6a2FsbGVyLWZyaWVuZGx5IGVudHJ5IHBvaW50IGZvciB0ZXN0aW5nIGFuZCBjb3ZlcmFnZS4gTG9va2luZyBiYWNrIG92ZXIgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgYW5kIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCwgbXkgY3VycmVudCBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiBmaW5kIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGBrdm1fczM5MF9hZGFwdGVyX21hcGAgZm9yIG1vcmUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExMTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6NDEuMzUzODkxNzE2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI4NjMzMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9mbGljX29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTI5MjA9c3RhdGljIHZvaWQgZmxpY19kZXN0cm95KHN0cnVjdCBrdm1fZGV2aWNlICpkZXYpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5MjYtLyogczM5MCBmbG9hdGluZyBpcnEgY29udHJvbGxlciAoZmxpYykgKi9cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI5Mjc6c3RydWN0IGt2bV9kZXZpY2Vfb3BzIGt2bV9mbGljX29wcyA9IHtcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI5MjgtXFx0Lm5hbWUgPSBcXFwia3ZtLWZsaWNcXFwiLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTQ5Nj1zdGF0aWMgaW50IF9faW5pdCBfX2t2bV9zMzkwX2luaXQodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MTQtXFx0LyogUmVnaXN0ZXIgZmxvYXRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW50ZXJmYWNlLiAqL1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MTU6XFx0cmMgPSBrdm1fcmVnaXN0ZXJfZGV2aWNlX29wcyhcXHUwMDI2a3ZtX2ZsaWNfb3BzLCBLVk1fREVWX1RZUEVfRkxJQyk7XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUxNi1cXHRpZiAocmMpIHtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaD01NDg9aW50IGt2bV9zMzkwX2V4dF9jYWxsX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NTQ5OmV4dGVybiBzdHJ1Y3Qga3ZtX2RldmljZV9vcHMga3ZtX2ZsaWNfb3BzO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC01NTAtaW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTk6MTM6NDMuNjgyNTMwNzE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NTg0NzIyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gS1ZNL3MzOTAgQWRhcHRlciBNYW5hZ2VtZW50KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IEFQSSBlbnRyeSBwb2ludHMgZm9yIG1hbmFnaW5nIGFkYXB0ZXJzIHdpdGhpbiB0aGUgS1ZNL3MzOTAgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGZ1bmN0aW9ucyB0aGF0IGRpcmVjdGx5IGhhbmRsZSB0aGUgdW5tYXBwaW5nIG9yIGRlc3RydWN0aW9uIG9mIHRoZXNlIGFkYXB0ZXJzLiBJZGVhbGx5LCBJJ20gbG9va2luZyBmb3Igbm9uLXN0YXRpYyBmdW5jdGlvbnMsIGFzIHRob3NlIGFyZSB0aGUgb25lcyB0aGF0IGFyZSBsaWtlbHkgZXhwb3NlZCBhbmQgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZS5cblxuSWYgYSBkaXJlY3QsIGRlZGljYXRlZCBmdW5jdGlvbiBkb2Vzbid0IGxlYXAgb3V0LCBJJ2xsIGZhbGwgYmFjayB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaG9zZSBzb3VuZCBsaWtlIHRoZXkgY291bGQgYmUgdXNlZnVsIGFzIGZhbGxiYWNrIG9wdGlvbnMuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiB3aGF0IGFib3V0IGBhZGFwdGVyX2luZGljYXRvcnNfc2V0YD8gSXQgbG9va3MgcHJvbWlzaW5nLCBidXQgdGhlIGZhY3QgdGhhdCBpdCdzIHN0YXRpYyBpcyBhIHNldGJhY2suIFRoYXQgd291bGQgbWFrZSBpdCBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLCBzbyBubyBkaWNlLlxuXG5Pa2F5LCBwbGFuIEIuIEknbGwgdGhvcm91Z2hseSBleGFtaW5lIGBhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jYC4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IHRoaXMgZmlsZSwgZ2l2ZW4gaXRzIG5hbWUsIGlzIGEgcHJpbWUgbG9jYXRpb24gZm9yIGFkYXB0ZXItcmVsYXRlZCBmdW5jdGlvbnMsIGFuZCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGVyZSB0aGF0IGZpdCB0aGUgYmlsbC4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIEkgbW92ZSBmb3J3YXJkLCBzbyBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY4NiwiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo0OC4zNDEwMDU5NTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjAwNDYzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzK1xcXFwqKlthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9ODQ9c3RhdGljIHZvaWQgc2NhX2NsZWFyX2V4dF9jYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtOTUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzo5NjppbnQgcHN3X2V4dGludF9kaXNhYmxlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy05Ny17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTExMTQ9c3RhdGljIGludCBfX211c3RfY2hlY2sgX19kZWxpdmVyX2lvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE4NC0vKiBDaGVjayB3aGV0aGVyIGFuIGV4dGVybmFsIGNhbGwgaXMgcGVuZGluZyAoZGVsaXZlcmFibGUgb3Igbm90KSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTE4NTppbnQga3ZtX3MzOTBfZXh0X2NhbGxfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMTg2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTE5NC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjExOTU6aW50IGt2bV9zMzkwX3ZjcHVfaGFzX2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBleGNsdWRlX3N0b3ApXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMTk2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxMy1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjEyMTQ6aW50IGt2bV9jcHVfaGFzX3BlbmRpbmdfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTIxNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEyMTk9c3RhdGljIHU2NCBfX2NhbGN1bGF0ZV9zbHRpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMjUwLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTI1MTppbnQga3ZtX3MzOTBfaGFuZGxlX3dhaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI1Mi17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTEyOTctXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoxMjk4OnZvaWQga3ZtX3MzOTBfdmNwdV93YWtldXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTI5OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTEzMTA9ZW51bSBocnRpbWVyX3Jlc3RhcnQga3ZtX3MzOTBfaWRsZV93YWtldXAoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xMzI3LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MTMyODp2b2lkIGt2bV9zMzkwX2NsZWFyX2xvY2FsX2lycXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTMyOS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTE5NDk9c3RhdGljIGludCBfX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMTk3OS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjE5ODA6aW50IGt2bV9zMzkwX2luamVjdF92bShzdHJ1Y3Qga3ZtICprdm0sXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0xOTgxLVxcdFxcdCAgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0ICpzMzkwaW50LCBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjItXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDIzOmludCBrdm1fczM5MF9yZWluamVjdF9pb19pbnQoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjAyNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0X2luZm8gKmludGkpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMjgtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDI5OmludCBzMzkwaW50X3RvX3MzOTBpcnEoc3RydWN0IGt2bV9zMzkwX2ludGVycnVwdCAqczM5MGludCxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwMzAtXFx0XFx0ICAgICAgIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3MS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIwNzI6aW50IGt2bV9zMzkwX2lzX3N0b3BfaXJxX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjA3My17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwNzgtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMDc5OmludCBrdm1fczM5MF9pc19yZXN0YXJ0X2lycV9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODAte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yMDg1LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjA4Njp2b2lkIGt2bV9zMzkwX2NsZWFyX3N0b3BfaXJxKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIwODcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMDk2PXN0YXRpYyBpbnQgZG9faW5qZWN0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3MzOTBfaXJxICppcnEpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNDAtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyMTQxOmludCBrdm1fczM5MF9pbmplY3RfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fczM5MF9pcnEgKmlycSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxNDIte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yMTY0PXN0YXRpYyB2b2lkIGludGlfdG9faXJxKHN0cnVjdCBrdm1fczM5MF9pbnRlcnJ1cHRfaW5mbyAqaW50aSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjE3OS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjIxODA6dm9pZCBrdm1fczM5MF9jbGVhcl9mbG9hdF9pcnFzKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTIxODEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNDE3PXN0YXRpYyBpbnQgcmVnaXN0ZXJfaW9fYWRhcHRlcihzdHJ1Y3Qga3ZtX2RldmljZSAqZGV2LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNDYzLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MjQ2NDppbnQga3ZtX3MzOTBfbWFza19hZGFwdGVyKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50IGlkLCBib29sIG1hc2tlZClcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI0NjUte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0yNTU3PXN0YXRpYyBpbnQga3ZtX3MzOTBfYWRhcHRlcl91bm1hcChzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBpZCwgX191NjQgYWRkcilcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwMy1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjI2MDQ6dm9pZCBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnMoc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMjYwNS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTI2MzUtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzoyNjM2OnZvaWQga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVycyhzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0yNjM3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzA3Mj1zdGF0aWMgaW50IHNldF9hZGFwdGVyX2ludChzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzA5OC0gKi9cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMwOTk6dm9pZCBrdm1fczM5MF9yZWluamVjdF9tYWNoaW5lX2NoZWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMDAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWNja192b2xhdGlsZV9pbmZvICptY2NrX2luZm8pXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxMzktXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMTQwOmludCBrdm1fc2V0X3JvdXRpbmdfZW50cnkoc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE0MS1cXHRcXHRcXHQgIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5ICplLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTgxLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzE4MjppbnQga3ZtX3NldF9tc2koc3RydWN0IGt2bV9rZXJuZWxfaXJxX3JvdXRpbmdfZW50cnkgKmUsIHN0cnVjdCBrdm0gKmt2bSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMxODMtXFx0XFx0aW50IGlycV9zb3VyY2VfaWQsIGludCBsZXZlbCwgYm9vbCBsaW5lX3N0YXR1cylcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzE4Ny1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjMxODg6aW50IGt2bV9zMzkwX3NldF9pcnFfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkIF9fdXNlciAqaXJxc3RhdGUsIGludCBsZW4pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zMTg5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM9MzIyOD1zdGF0aWMgdm9pZCBzdG9yZV9sb2NhbF9pcnEoc3RydWN0IGt2bV9zMzkwX2xvY2FsX2ludGVycnVwdCAqbGksXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNjktXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozMjcwOmludCBrdm1fczM5MF9nZXRfaXJxX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgX191OCBfX3VzZXIgKmJ1ZiwgaW50IGxlbilcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTMyNzEte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zMzcwPXN0YXRpYyB2b2lkIHByb2Nlc3NfZ2liX2FsZXJ0X2xpc3Qodm9pZClcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQxNC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0MTU6dm9pZCBrdm1fczM5MF9naXNhX2NsZWFyKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0MTYte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI0LVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzQyNTp2b2lkIGt2bV9zMzkwX2dpc2FfaW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDI2LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ0MC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NDE6dm9pZCBrdm1fczM5MF9naXNhX2VuYWJsZShzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNDQyLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2My1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM0NjQ6dm9pZCBrdm1fczM5MF9naXNhX2Rlc3Ryb3koc3RydWN0IGt2bSAqa3ZtKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzQ2NS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODEtXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNDgyOnZvaWQga3ZtX3MzOTBfZ2lzYV9kaXNhYmxlKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM0ODMte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNTE2LSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzUxNzppbnQga3ZtX3MzOTBfZ2lzY19yZWdpc3RlcihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBnaXNjKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzUxOC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM1MzY9RVhQT1JUX1NZTUJPTF9HUEwoa3ZtX3MzOTBfZ2lzY19yZWdpc3Rlcik7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM1NTUtICovXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYzozNTU2OmludCBrdm1fczM5MF9naXNjX3VucmVnaXN0ZXIoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZ2lzYylcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM1NTcte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjY1PXN0YXRpYyBzdHJ1Y3QgYWlycV9zdHJ1Y3QgZ2liX2FsZXJ0X2lycSA9IHtcXG4tLVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzY2OC1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Njk6dm9pZCBrdm1fczM5MF9naWJfZGVzdHJveSh2b2lkKVxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmMtMzY3MC17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jPTM2ODQ9aW50IF9faW5pdCBrdm1fczM5MF9naWJfaW5pdCh1OCBuaXNjKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNzQxLSAqL1xcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6Mzc0MjppbnQga3ZtX2FyY2hfc2V0X2lycV9pbmF0b21pYyhzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeSAqZSxcXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM3NDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGt2bSAqa3ZtLCBpbnQgaXJxX3NvdXJjZV9pZCwgaW50IGxldmVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo0OC41OTMwMTU1NjlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODk1ODc1OTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIHMzOTB4IEtWTSBBZGFwdGVyIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvcmUgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIFRoZSBwYXRjaCBtb2RpZmllcyBga3ZtX3MzOTBfYWRhcHRlcl9tYXBgIGFuZCBga3ZtX3MzOTBfYWRhcHRlcl91bm1hcGAsIHdoaWNoIGFyZSBjYWxsZWQgd2l0aGluIHRoZSBgbW9kaWZ5X2lvX2FkYXB0ZXJgIGZ1bmN0aW9uLiBUaGF0LCBpbiB0dXJuLCBpcyB0cmlnZ2VyZWQgYnkgYGZsaWNfc2V0X2F0dHJgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBga3ZtX2ZsaWNfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgaXMgYWxsIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGBLVk1fU0VUX0RFVklDRV9BVFRSYCBpb2N0bCBvbiB0aGUgRkxJQyBkZXZpY2UsIHdoaWNoIGl0c2VsZiBpcyBjcmVhdGVkIHZpYSBgS1ZNX0NSRUFURV9ERVZJQ0VgIHVzaW5nIGBLVk1fREVWX1RZUEVfRkxJQ2AuXG5cblRoZSBrZXkgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2VzIGFuZCB3aGF0IGVsc2UgaXMgZGlyZWN0bHkgcmVsYXRlZC4gTG9va2luZyBiZXlvbmQgdGhlIGltbWVkaWF0ZSBmdW5jdGlvbnMsIHRoZXJlIGFyZSBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBXaGlsZSBga3ZtX3MzOTBfZ2lzYV9pbml0YCBvciBga3ZtX3MzOTBfZ2lzYV9kZXN0cm95YCBjb3VsZCBiZSBhZGRlZCBmb3IgY29udGV4dCwgSSBjYW4gc2VlIHRoYXQgYGt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc2AgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlxuXG5BaCwgeWVzLCBjb25maXJtaW5nIG15IHN1c3BpY2lvbiDigJMgdGhlIGRpZmYgc2hvd3MgY2hhbmdlcyB0byBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYC4gVGhlIGFkZGVkIGNvbmRpdGlvbmFsIGNoZWNrIGZvciBgbWFwLVx1MDAzZXBpbm5lZGAgd2l0aGluIHRoZSBsb29wIGlzIHRoZSBrZXkgcG9pbnQuIFNvLCB0aGUgb3JpZ2luYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgIGFuZCBga3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc2AgZnVuY3Rpb25zLCB3aXRoIGBrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzYCBjYWxsaW5nIGBrdm1fczM5MF91bm1hcF9hbGxfYWRhcHRlcnNgLiBUaGVzZSBhcmUgdGhlIGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhpcyBjb2RlIHJlc2lkZXMgaW4gYGFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmNgLCBhbmQgY2xlYXJseSBkZXBlbmRzIG9uIGBLVk1gLiBBbnl0aGluZyBlbHNlLCB0aG91Z2g/IExldCdzIHZlcmlmeS4uLiBub3BlLCBsb29rcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc3OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxMzo1Ny41NTE3Nzg2ODVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODg0NzE2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE5OjEzOjU3Ljk2MDYzMjAwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTY5NDIzNTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIGxvb2tpbmcgYXQgY2VudGVycyBhcm91bmQgYEtWTWAsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0J3Mgd29ydGggZnV6emluZy4gQmFzZWQgb24gd2hhdCBJJ20gc2VlaW5nLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyB5ZXMuIExldCdzIGJyZWFrIGl0IGRvd24uXG5cbkZpcnN0LCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgY29uZmlybWluZyBteSBpbml0aWFsIGFzc2Vzc21lbnQuIE5vdywgdGhlIGtleSBmb2N1cyBzZWVtcyB0byBiZSB0aGVzZSBzeW1ib2xzOiBga3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzYCBhbmQgYGt2bV9zMzkwX2Rlc3Ryb3lfYWRhcHRlcnNgLiBUaGVzZSBzdWdnZXN0IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgUzM5MCBhcmNoaXRlY3R1cmUgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIEtWTSdzIGFkYXB0ZXIgbWFuYWdlbWVudC4gVGhlIGNoYW5nZXMgc3BlY2lmaWNhbGx5IGFmZmVjdCB0aGUgRkxJQyDigJMgdGhlIEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyIOKAkyB3aXRoaW4gS1ZNIG9uIFMzOTAuIFRoaXMgbWVhbnMgd2UncmUgbG9va2luZyBhdCBtZW1vcnkgcGlubmluZyBhbmQgaG93IGludGVycnVwdHMgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0LlxuXG5UaGUgbW9kaWZpY2F0aW9uIGludHJvZHVjZXMgYSBmYWxsYmFjayBtZWNoYW5pc20uIElmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChsaWtlbHkgZHVlIHRvLCBzYXksIGZpbGUtYmFja2VkIG1lbW9yeSksIGl0IGF0dGVtcHRzIHNob3J0LXRlcm0gcGlubmluZy4gVGhpcyBoYXMgb2J2aW91cyBpbXBsaWNhdGlvbnMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBlZGdlIGNhc2VzIHRoYXQgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuIFRoZSBgRW5hYmxlQ29uZmlnc2AgZXhwbGljaXRseSBsaXN0IGBLVk1gLCBmdXJ0aGVyIHNvbGlkaWZ5aW5nIHRoYXQgdGhpcyBpcyB0aGUgYXJlYSB0byBmb2N1cyBvbi5cblxuU28sIGluIGVzc2VuY2UsIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gczM5MCBzdWJzeXN0ZW0gcmVsYXRlZCB0byBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGhhbmRsaW5nLiBJdOKAmXMgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgYSBzdWJ0bGUgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSBkZWFsaW5nIHdpdGggbWVtb3J5IGFuZCBpbnRlcnJ1cHRzLCBjYW4gb3BlbiB1cCBhIHRyZWFzdXJlIHRyb3ZlIG9mIHZ1bG5lcmFiaWxpdGllcyB0aGF0IGZ1enppbmcgY291bGQgdW5lYXJ0aC4gVGhpcyBkZWZpbml0ZWx5IGRlc2VydmVzIHJpZ29yb3VzIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTkzLCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxOToxNDowMy41MzAwNTg0MzZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0NzY3NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3VubWFwX2FsbF9hZGFwdGVyc1wiLFxuICAgIFwia3ZtX3MzOTBfZGVzdHJveV9hZGFwdGVyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gczM5MCBGTElDIChGbG9hdGluZyBJbnRlcnJ1cHQgQ29udHJvbGxlcikgYWRhcHRlciBtYXBwaW5nIGxvZ2ljIHRvIGZhbGxiYWNrIHRvIHNob3J0LXRlcm0gcGlubmluZyBpZiBsb25nLXRlcm0gcGlubmluZyBmYWlscyAoZS5nLiwgZm9yIGZpbGUtYmFja2VkIG1lbW9yeSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgbWVtb3J5IHBpbm5pbmcgYW5kIGludGVycnVwdCBpbmplY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfdW5tYXBfYWxsX2FkYXB0ZXJzXCIsXG4gICAgXCJrdm1fczM5MF9kZXN0cm95X2FkYXB0ZXJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSBzMzkwIEZMSUMgKEZsb2F0aW5nIEludGVycnVwdCBDb250cm9sbGVyKSBhZGFwdGVyIG1hcHBpbmcgbG9naWMgdG8gZmFsbGJhY2sgdG8gc2hvcnQtdGVybSBwaW5uaW5nIGlmIGxvbmctdGVybSBwaW5uaW5nIGZhaWxzIChlLmcuLCBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBtZW1vcnkgcGlubmluZyBhbmQgaW50ZXJydXB0IGluamVjdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrbg5q[1] Phase: Succeeded StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 19:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 19:14:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2] Phase: Succeeded StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 19:14:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 19:14:15 +0000 UTC FinishedAt: 2026-07-25 19:14:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbg5q/series-workflowrbg5q-convert-artifact-535561654/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 19:14:25 +0000 UTC FinishedAt: 2026-07-25 20:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 19:14:25 +0000 UTC FinishedAt: 2026-07-25 20:22:23 +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:*9edb399c-0a6f-4bf4-8053-d41c66277387,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-workflowrbg5q/series-workflowrbg5q-convert-artifact-535561654/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": "cfa58dae-5357-443c-b7eb-ee568289aa35", "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-workflowrbg5q/series-workflowrbg5q-build-action-456993996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 19:14:25 +0000 UTC FinishedAt: 2026-07-25 20:22:13 +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:*9edb399c-0a6f-4bf4-8053-d41c66277387,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-workflowrbg5q/series-workflowrbg5q-convert-artifact-535561654/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": "cfa58dae-5357-443c-b7eb-ee568289aa35", "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-workflowrbg5q/series-workflowrbg5q-build-action-456993996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 20:22:23 +0000 UTC FinishedAt: 2026-07-25 20:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 20:22:23 +0000 UTC FinishedAt: 2026-07-25 20:22:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 20:22:23 +0000 UTC FinishedAt: 2026-07-25 20:22:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 20:22:23 +0000 UTC FinishedAt: 2026-07-25 20:22:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrbg5q/series-workflowrbg5q-convert-artifact-1279409993/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 20:22:33 +0000 UTC FinishedAt: 2026-07-25 20:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 20:22:33 +0000 UTC FinishedAt: 2026-07-25 20:24:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfa58dae-5357-443c-b7eb-ee568289aa35,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-workflowrbg5q/series-workflowrbg5q-build-action-456993996/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-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 20:24:56 +0000 UTC FinishedAt: 2026-07-25 20:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 20:24:56 +0000 UTC FinishedAt: 2026-07-25 20:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 20:24:56 +0000 UTC FinishedAt: 2026-07-25 20:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 20:24:56 +0000 UTC FinishedAt: 2026-07-25 20:58:24 +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:*9edb399c-0a6f-4bf4-8053-d41c66277387,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-workflowrbg5q/series-workflowrbg5q-convert-artifact-1279409993/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": "76569d61-5f7d-458d-a534-e6f538c0925e", "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-workflowrbg5q/series-workflowrbg5q-build-action-3192376869/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 20:24:56 +0000 UTC FinishedAt: 2026-07-25 20:56:47 +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:*9edb399c-0a6f-4bf4-8053-d41c66277387,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-workflowrbg5q/series-workflowrbg5q-convert-artifact-1279409993/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": "76569d61-5f7d-458d-a534-e6f538c0925e", "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-workflowrbg5q/series-workflowrbg5q-build-action-3192376869/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 20:58:24 +0000 UTC FinishedAt: 2026-07-25 20:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 20:58:24 +0000 UTC FinishedAt: 2026-07-25 20:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 20:58:24 +0000 UTC FinishedAt: 2026-07-25 21:01:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 20:58:24 +0000 UTC FinishedAt: 2026-07-25 21:00:25 +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:*76569d61-5f7d-458d-a534-e6f538c0925e,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-workflowrbg5q/series-workflowrbg5q-build-action-3192376869/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-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +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_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"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:*cfa58dae-5357-443c-b7eb-ee568289aa35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76569d61-5f7d-458d-a534-e6f538c0925e,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-workflowrbg5q/series-workflowrbg5q-build-action-456993996/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-workflowrbg5q/series-workflowrbg5q-build-action-3192376869/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:01:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:01:47 +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_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"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-workflowrbg5q/series-workflowrbg5q-convert-artifact-1680293022/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:01:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 21:01:16 +0000 UTC FinishedAt: 2026-07-25 21:01:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 21:01:17 +0000 UTC FinishedAt: 2026-07-25 21:01:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 21:01:56 +0000 UTC FinishedAt: 2026-07-25 21:04:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrbg5q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_unmap_all_adapters","kvm_s390_destroy_adapters"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e61e6fd4f139f2342a6bc86da602df7456ef87f6","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"09d99a4f-8302-404f-a938-e35a95f99649","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 21:01:56 +0000 UTC FinishedAt: 2026-07-25 21:04:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfa58dae-5357-443c-b7eb-ee568289aa35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76569d61-5f7d-458d-a534-e6f538c0925e,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-workflowrbg5q/series-workflowrbg5q-build-action-456993996/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-workflowrbg5q/series-workflowrbg5q-build-action-3192376869/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-workflowrbg5q/series-workflowrbg5q-convert-artifact-1680293022/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,}