Name: series-workflowlzkkx Phase: Succeeded StartedAt: 2026-07-23 11:02:05 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[0] Phase: Succeeded StartedAt: 2026-07-23 11:02:05 +0000 UTC FinishedAt: 2026-07-23 11:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 11:02:05 +0000 UTC FinishedAt: 2026-07-23 11:30:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "810a273919df09b345cdee74869c030aadbaa891", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "810a273919df09b345cdee74869c030aadbaa891", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "30afb987-31b5-4afc-97ae-6c33fa76e641" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "bpf_jit_free", "bpf_jit_binary_pack_finalize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkN2Y2NjIxNzJhOGU0ZWRkOTgzYWQyOTQ5YjU1MzYxNWEwMzE2OGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTE6MzA6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICYjNDM7MjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTMyMzcsNiAmIzQzOzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLmM4Yzg2NjRkY2NhZmE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4mIzQzO1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNjEsNiAmIzQzOzIzNjEsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTMzOSw4ICYjNDM7MzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuJiM0MztcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNDQwZDViOTY1ZTYwNDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMjM3LDYgJiM0MzsyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuJiM0MztcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGRlNzUxNWVhMWJlYWU4Li5kMDE3YmIwMzk3Yjg4YiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzk4OCw3ICYjNDM7Mzk4OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7XG4tXHRcdFx0XHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0XHRnb3RvIG91dF9pbWFnZTtcbiBcdFx0XHR9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNDdmZTA0N2FkMzBiODguLjc3MTk1OTExYTNiMzcxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIzNywxMCAmIzQzOzEyMzcsOSBAQCBpbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcbiBcdGt2ZnJlZShyd19oZWFkZXIpO1xuIFxuLVx0aWYgKElTX0VSUihwdHIpKSB7XG4tXHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHJvX2hlYWRlci1cdTAwM2VzaXplKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB0cikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHB0cik7XG4tXHR9XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEJQRiBKSVQgY29tcGlsZXIgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuIEl0IGNoYW5nZXMgaG93IGByb19oZWFkZXJgIGlzIGZyZWVkIHdoZW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZhaWxzLCBhbmQgYWRkcyBtaXNzaW5nIGBrdmZyZWVgIGNhbGxzIGluIGBicGZfaml0X2ZyZWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkN2Y2NjIxNzJhOGU0ZWRkOTgzYWQyOTQ5YjU1MzYxNWEwMzE2OGY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMTE6MzA6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDRjZGM3ZGZiMDViYTlhLi5lMjAwYjAyMDdmN2FiOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIyNTgsNyAmIzQzOzIyNTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZV9oZHI7CiAJCX0KIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7Ci0JCQkvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTMyMzcsNiAmIzQzOzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpCiAJCSAqLwogCQlpZiAoaml0X2RhdGEpIHsKIAkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtJmd0O3JvX2hlYWRlciwgaml0X2RhdGEtJmd0O2hlYWRlcik7CiYjNDM7CQkJa3ZmcmVlKGppdF9kYXRhLSZndDtjdHgub2Zmc2V0KTsKIAkJCWtmcmVlKGppdF9kYXRhKTsKIAkJfQogCQlwcm9nLSZndDticGZfZnVuYyA9ICh2b2lkICopcHJvZy0mZ3Q7YnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggMjczOGI0ZGIxMTY1MzMuLmM4Yzg2NjRkY2NhZmE4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZTsKIAkJfQogCQlpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHsKLQkJCS8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlOwpAQCAtMjM2MSw2ICYjNDM7MjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTMzOSw4ICYjNDM7MzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAjZW5kaWYKIAogCWlmICghZnAtJmd0O2lzX2Z1bmMgfHwgZXh0cmFfcGFzcykgewotCQlpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKQomIzQzOwkJaWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkgewomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBOVUxMKTsKIAkJCWdvdG8gb3V0X2VycjsKJiM0MzsJCX0KIAl9CiAKIAlmcC0mZ3Q7YnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2NjguLjQ0MGQ1Yjk2NWU2MDQwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtMTU0LDcgJiM0MzsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCiAJaWYgKCFwcm9nLSZndDtpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHsKIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKSkpIHsKLQkJCS8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBOVUxMKTsKIAkJCWppdF9kYXRhLSZndDtyb19oZWFkZXIgPSBOVUxMOwogCQkJaml0X2RhdGEtJmd0O2hlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTIzNyw2ICYjNDM7MjM3LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKQogCQkJa3ZmcmVlKGppdF9kYXRhLSZndDtjdHgub2Zmc2V0KTsKIAkJCWtmcmVlKGppdF9kYXRhKTsKIAkJfQomIzQzOwkJcHJvZy0mZ3Q7YnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctJmd0O2JwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTsKIAkJaGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7CiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZHIsIE5VTEwpOwogCQlXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYocHJvZykpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGRlNzUxNWVhMWJlYWU4Li5kMDE3YmIwMzk3Yjg4YiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwpAQCAtMzk4OCw3ICYjNDM7Mzk4OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQkgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi4KIAkJCSAqLwogCQkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7Ci0JCQkJLyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovCiYjNDM7CQkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpOwogCQkJCWhlYWRlciA9IE5VTEw7CiAJCQkJZ290byBvdXRfaW1hZ2U7CiAJCQl9CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9icGYvY29yZS5jCmluZGV4IDQ3ZmUwNDdhZDMwYjg4Li43NzE5NTkxMWEzYjM3MSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9jb3JlLmMKQEAgLTEyMzcsMTAgJiM0MzsxMjM3LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsCiAKIAlrdmZyZWUocndfaGVhZGVyKTsKIAotCWlmIChJU19FUlIocHRyKSkgewotCQlicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItJmd0O3NpemUpOwomIzQzOwlpZiAoSVNfRVJSKHB0cikpCiAJCXJldHVybiBQVFJfRVJSKHB0cik7Ci0JfQomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMg4oCTIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2LCBhbG9uZyB3aXRoIHRoZSBjb3JlIEJQRiBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodCBvZmYgdGhlIGJhdCwgYXMgaXQgbW9kaWZpZXMgaG93IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIGNvbXBpbGF0aW9uIGZhaWx1cmVzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiAgSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgcm9faGVhZGVyYCBvbiBhIGZhaWx1cmUgd2l0aGluIHRoYXQgZnVuY3Rpb24sIGl0JiMzOTtzIG5vdyBzaGlmdGluZyB0aGUgcmVzcG9uc2liaWxpdHkgdG8gdGhlICpjYWxsZXIqIHRvIGNhbGwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpYCB3aGVuIGEgZmFpbHVyZSBpcyBkZXRlY3RlZCBpbiB0aGUgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc2hpZnQgaW4gcmVzcG9uc2liaWxpdHkgdGhhdCYjMzk7cyB3b3J0aCBub3RpbmcgYW5kIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGF0IGltcGxpY2F0aW9uLgoKQmV5b25kIHRoYXQsIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBmZXcgdHdlYWtzIHRvIHRoZSBgYnBmX2ppdF9mcmVlYCBmdW5jdGlvbiBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcyBhIGBrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpO2AgY2FsbCBmb3IgYXJtNjQgYW5kIGxvb25nYXJjaCBpbiB0aGUgYGJwZl9qaXRfZnJlZWAgYW5kIGZvciByaXNjdiwgYHByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7YCBpcyBhZGRlZC4KClRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgZ2l2ZW4gaXRzIHNjb3BlLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLiBBbnkgc2hpZnQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEpJVCBjb21waWxlciBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6CiogICBgYnBmX2ludF9qaXRfY29tcGlsZWAgKGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlcyBsaXN0ZWQgZWFybGllcikKKiAgIGBicGZfaml0X2ZyZWVgIChhcm02NCwgbG9vbmdhcmNoLCByaXNjdikKKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCAodGhlIGNvcmUgb25lIGluIGBrZXJuZWwvYnBmL2NvcmUuY2ApCgpNeSBmb2N1cyBmb3IgaW5zcGVjdGlvbiBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRob3NlIHRocmVlIHN5bWJvbHMuCgpBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcmUgZW5hYmxlZCwgYXMgdGhlc2UgYXJlIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjaGFuZ2VzIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDkzPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjIwMi1cdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjAzOlx0ICogd2lsbCBydW4uIFRoZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKCkgd2lsbCBkbyB0aGlzIGNvcHkgaW4gdGhlXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjA0LVx0ICogZmluYWwgc3RlcC5cbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjU5LVx0XHR9XG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjYwOlx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIyNjEtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzIyNT12b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIzOC1cdFx0aWYgKGppdF9kYXRhKSB7XG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzozMjM5Olx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzI0MC1cdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTk3PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjY4LVx0ICogaW1hZ2Ugd2lsbCBiZSBsYXRlciBjb3BpZWQgdG8gdGhlIFJYIGltYWdlIGZyb20gd2hlcmUgdGhlIHByb2dyYW0gd2lsbFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjY5Olx0ICogcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZSBmaW5hbFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjcwLVx0ICogc3RlcC5cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyOTktXHRcdH1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjMwMDpcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzMDEtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzUxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjItXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzYzOlx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzY0LVx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTE2NT1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTM0MS1cdGlmICghZnAtXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjM0MjpcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0zNDMtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpO1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDc5PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00OTItXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo0OTM6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2VmaGRyLCBqaXRfZGF0YS1cdTAwM2VoZHIpO1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00OTQtXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWFkZHJzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTEyMC1cdFx0XHQgKiBpbWFnZSB3aWxsIGJlIGxhdGVyIGNvcGllZCB0byB0aGUgUlggaW1hZ2UgZnJvbSB3aGVyZSB0aGUgcHJvZ3JhbVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTIxOlx0XHRcdCAqIHdpbGwgcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTIyLVx0XHRcdCAqIGZpbmFsIHN0ZXAuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTU1LVx0aWYgKCFwcm9nLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTU2Olx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKSkpIHtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Ny1cdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0yMjQ9dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIzNS1cdFx0aWYgKGppdF9kYXRhKSB7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyMzY6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcik7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yMzctXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zODUxPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5ODMtXHRcdFx0LypcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTg0Olx0XHRcdCAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgZmFpbHMgaW4gdHdvIHNjZW5hcmlvczpcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zOTg1LVx0XHRcdCAqICAgMSkgaGVhZGVyIGlzIG5vdCBwb2ludGluZyB0byBwcm9wZXIgbW9kdWxlIG1lbW9yeTtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4OS1cdFx0XHQgKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTkwOlx0XHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5OTEtXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA3MT12b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwODQtXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjQwODU6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2VoZWFkZXIsXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA4Ni1cdFx0XHRcdFx0XHQgICAgIGppdF9kYXRhLVx1MDAzZXJ3X2hlYWRlcik7XG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUxPWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU2LVx0XHRcdCAgYm9vbCB3YXNfY2xhc3NpYyk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTc6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzNTgtXHRcdFx0XHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTExNjg9dm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTExODAtICogUk8gbWVtb3J5IGFkZHJlc3MsIGJ1dCB3cml0ZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSVyBidWZmZXIuIE9uY2UgdGhlXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTgxOiAqIEpJVCBlbmdpbmUgZmluaXNoZXMsIGl0IGNhbGxzIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUsIHdoaWNoIGNvcGllc1xua2VybmVsL2JwZi9jb3JlLmMtMTE4Mi0gKiB0aGUgSklUZWQgcHJvZ3JhbSB0byB0aGUgUk8gbWVtb3J5LlxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTExODU9YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTIzMC0vKiBDb3B5IEpJVGVkIHRleHQgZnJvbSByd19oZWFkZXIgdG8gaXRzIGZpbmFsIGxvY2F0aW9uLCB0aGUgcm9faGVhZGVyLiAqL1xua2VybmVsL2JwZi9jb3JlLmM6MTIzMTppbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbmtlcm5lbC9icGYvY29yZS5jLTEyMzItXHRcdFx0XHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTI0Ny0gKiAgIDEpIHdoZW4gdGhlIHByb2dyYW0gaXMgZnJlZWQgYWZ0ZXI7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMjQ4OiAqICAgMikgd2hlbiB0aGUgSklUIGVuZ2luZSBmYWlscyAoYmVmb3JlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUpLlxua2VybmVsL2JwZi9jb3JlLmMtMTI0OS0gKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjUyLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MgZG9lcyBub3Qgc2V0IGl0LiBUaGVyZWZvcmUsIHJvX2hlYWRlci1cdTAwM2VzaXplXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjUzOiAqIG11c3QgYmUgc2V0IHdpdGggZWl0aGVyIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgKG5vcm1hbCBwYXRoKSBvclxua2VybmVsL2JwZi9jb3JlLmMtMTI1NC0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQlBGIEpJVCBQYXRjaCBSZXZpZXcgLSBJbml0aWFsIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtZXNzaW5nIHdpdGggQlBGIEpJVCBjb2RlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBhbmQgcmFpc2VzIHNvbWUgcXVlc3Rpb25zLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgcmlnaHQgZm91bmRhdGlvbi4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEEgZnVuZGFtZW50YWwgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSB0b3VjaGluZyB0aGUgSklULCBpcyBwb2ludGxlc3MgaWYgdGhlIGZlYXR1cmUgaXRzZWxmIGlzIGRpc2FibGVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBjYW4mIzM5O3Qgd2FzdGUgdGltZSBnb2luZyB0aHJvdWdoIGl0LCBvbmx5IHRvIGZpbmQgdGhlIGZlYXR1cmUgaXNuJiMzOTt0IGV2ZW4gc3VwcG9ydGVkLiBHb3R0YSBnZXQgdGhhdCBiYXNlbGluZSBjb3JyZWN0IGJlZm9yZSBJIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY3MQoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgZW5hYmxpbmcgYEJQRl9KSVRgIGFuZCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGNyaXRpY2FsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBKSVQgY29tcGlsZXI6IGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgY2xlYW51cCByb3V0aW5lcyB3ZSBuZWVkIHRvIHRhcmdldC4KCkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSB0aGUgY2hhbmdlcyB0byBob3cgYHJvX2hlYWRlcmAgaXMgaGFuZGxlZCBkdXJpbmcgZmFpbHVyZXMgaW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhcyB3ZWxsIGFzIHRoZSBuZXdseSBhZGRlZCBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBleGFjdGx5IHRoZSBraW5kIHRoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byB1bmNvdmVyIHZ1bG5lcmFiaWxpdGllcyBpbi4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24gaXRzZWxmLCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBzZXQgc3BlY2lmaWNhbGx5IHRvIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuIFRoaXMgYWxsb3dzIHVzIHRvIGZvY3VzIG91ciBlZmZvcnRzIGRpcmVjdGx5IG9uIHRoZSBjb2RlIHRoYXQgaGFzIGJlZW4gY2hhbmdlZCBhbmQgdG8gZWZmaWNpZW50bHkgZXhlcmNpc2UgdGhlc2UgcGF0aHMuIEZpbmFsbHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agd2lsbCByZW1haW4gc2V0IHRvIGBCUEZfSklUYCwgYW5kIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgcHJpb3IgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDoyMC41NjIyMTMyNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk2MTM5MTkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDExOjMwOjIwLjU2MjIyMDkyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyMTc1MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDdmNjYyMTcyYThlNGVkZDk4M2FkMjk0OWI1NTM2MTVhMDMxNjhmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxMTozMDoxOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMjI1OCw3ICsyMjU4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9oZHI7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuLVxcdFxcdFxcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xcbiBcXHRcXHRcXHRyb19oZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMzIzNyw2ICszMjM3LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuIFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXFx1MDAzZWhlYWRlcik7XFxuK1xcdFxcdFxcdGt2ZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuIFxcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbmluZGV4IDI3MzhiNGRiMTE2NTMzLi5jOGM4NjY0ZGNjYWZhOCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbkBAIC0yMjk4LDcgKzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbi1cXHRcXHRcXHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXZlIGJlZW4gZnJlZWQgKi9cXG4rXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XFxuIFxcdFxcdFxcdHJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGhlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuQEAgLTIzNjEsNiArMjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChqaXRfZGF0YSkge1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbitcXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWN0eC5vZmZzZXQpO1xcbiBcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTMzOSw4ICszMzksMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gI2VuZGlmXFxuIFxcbiBcXHRpZiAoIWZwLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4tXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSlcXG4rXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRmcC1cXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li40NDBkNWI5NjVlNjA0MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGppdF9kYXRhLVxcdTAwM2VoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMjM3LDYgKzIzNyw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4gXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHByb2ctXFx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVxcdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XFxuIFxcdFxcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xcbiBcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcXG4gXFx0XFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggZGU3NTE1ZWExYmVhZTguLmQwMTdiYjAzOTdiODhiIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0zOTg4LDcgKzM5ODgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHQgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi5cXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xcbi1cXHRcXHRcXHRcXHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cXG4rXFx0XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgTlVMTCk7XFxuIFxcdFxcdFxcdFxcdGhlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0X2ltYWdlO1xcbiBcXHRcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCA0N2ZlMDQ3YWQzMGI4OC4uNzcxOTU5MTFhM2IzNzEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC0xMjM3LDEwICsxMjM3LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuIFxcbiBcXHRrdmZyZWUocndfaGVhZGVyKTtcXG4gXFxuLVxcdGlmIChJU19FUlIocHRyKSkge1xcbi1cXHRcXHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXFx1MDAzZXNpemUpO1xcbitcXHRpZiAoSVNfRVJSKHB0cikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHB0cik7XFxuLVxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDoyMS4xNTUwNDI5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMzM2ODU0OTM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdmNjYyMTcyYThlNGVkZDk4M2FkMjk0OWI1NTM2MTVhMDMxNjhmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDExOjMwOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICsyMjU4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRnb3RvIG91dF9mcmVlX2hkcjtcbiBcdFx0fVxuIFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHtcbi1cdFx0XHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuK1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlX2hkcjtcbkBAIC0zMjM3LDYgKzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbitcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4gXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHR9XG4gXHRcdHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNzM4YjRkYjExNjUzMy4uYzhjODY2NGRjY2FmYTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuIFx0XHR9XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqL1xuK1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNjEsNiArMjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDdiMDdiNDM1NzVmMTExLi4wY2ExNGI3ZDBiMGU2NSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMzksOCArMzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuK1x0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKSB7XG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNDQwZDViOTY1ZTYwNDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyArMTU0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdGlmICghcHJvZy1cdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0aml0X2RhdGEtXHUwMDNlcm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2VoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTIzNyw2ICsyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuK1x0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZHIsIE5VTEwpO1xuIFx0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYocHJvZykpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggZGU3NTE1ZWExYmVhZTguLmQwMTdiYjAzOTdiODhiIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zOTg4LDcgKzM5ODgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdCAqIEJvdGggY2FzZXMgYXJlIHNlcmlvdXMgYnVncyBhbmQganVzdGlmeSBXQVJOX09OLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xuLVx0XHRcdFx0LyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXG4rXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0XHRnb3RvIG91dF9pbWFnZTtcbiBcdFx0XHR9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNDdmZTA0N2FkMzBiODguLjc3MTk1OTExYTNiMzcxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbisrKyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIzNywxMCArMTIzNyw5IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuIFxuIFx0a3ZmcmVlKHJ3X2hlYWRlcik7XG4gXG4tXHRpZiAoSVNfRVJSKHB0cikpIHtcbi1cdFx0YnBmX3Byb2dfcGFja19mcmVlKHJvX2hlYWRlciwgcm9faGVhZGVyLVx1MDAzZXNpemUpO1xuK1x0aWYgKElTX0VSUihwdHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwdHIpO1xuLVx0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MjEuMTU1MDQ0MTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIwOTY5ODYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMg4oCTIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2LCBhbG9uZyB3aXRoIHRoZSBjb3JlIEJQRiBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodCBvZmYgdGhlIGJhdCwgYXMgaXQgbW9kaWZpZXMgaG93IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIGNvbXBpbGF0aW9uIGZhaWx1cmVzLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuICBJbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIGByb19oZWFkZXJgIG9uIGEgZmFpbHVyZSB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgaXQncyBub3cgc2hpZnRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHRoZSAqY2FsbGVyKiB0byBjYWxsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKWAgd2hlbiBhIGZhaWx1cmUgaXMgZGV0ZWN0ZWQgaW4gdGhlIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCBmdW5jdGlvbi4gVGhhdCdzIGEgc2hpZnQgaW4gcmVzcG9uc2liaWxpdHkgdGhhdCdzIHdvcnRoIG5vdGluZyBhbmQgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoYXQgaW1wbGljYXRpb24uXG5cbkJleW9uZCB0aGF0LCB0aGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgZmV3IHR3ZWFrcyB0byB0aGUgYGJwZl9qaXRfZnJlZWAgZnVuY3Rpb24gZm9yIHNwZWNpZmljIGFyY2hpdGVjdHVyZXMuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGFkZHMgYSBga3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO2AgY2FsbCBmb3IgYXJtNjQgYW5kIGxvb25nYXJjaCBpbiB0aGUgYGJwZl9qaXRfZnJlZWAgYW5kIGZvciByaXNjdiwgYHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO2AgaXMgYWRkZWQuXG5cblRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgZ2l2ZW4gaXRzIHNjb3BlLCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMuIEFueSBzaGlmdCBpbiBtZW1vcnkgbWFuYWdlbWVudCBvciBlcnJvciBoYW5kbGluZyBpbiB0aGUgSklUIGNvbXBpbGVyIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkOlxuKiAgIGBicGZfaW50X2ppdF9jb21waWxlYCAoYWNyb3NzIHRoZSBhcmNoaXRlY3R1cmVzIGxpc3RlZCBlYXJsaWVyKVxuKiAgIGBicGZfaml0X2ZyZWVgIChhcm02NCwgbG9vbmdhcmNoLCByaXNjdilcbiogICBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgKHRoZSBjb3JlIG9uZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgKVxuXG5NeSBmb2N1cyBmb3IgaW5zcGVjdGlvbiBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRob3NlIHRocmVlIHN5bWJvbHMuXG5cbkFuZCwgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYXJlIGVuYWJsZWQsIGFzIHRoZXNlIGFyZSBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY2hhbmdlcyB0byBldmVuIGJlIHJlbGV2YW50LiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MjguMzY0NzQ1MzE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1Njg5MzI5MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDkzPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjAyLVxcdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjIwMzpcXHQgKiB3aWxsIHJ1bi4gVGhlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoKSB3aWxsIGRvIHRoaXMgY29weSBpbiB0aGVcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjA0LVxcdCAqIGZpbmFsIHN0ZXAuXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjU5LVxcdFxcdH1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjYwOlxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIyNjEtXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMjI1PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMyMzgtXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MzIzOTpcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMyNDAtXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjY4LVxcdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtIHdpbGxcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNjk6XFx0ICogcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZSBmaW5hbFxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI3MC1cXHQgKiBzdGVwLlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjk5LVxcdFxcdH1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzMDA6XFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzAxLVxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzUxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM2Mi1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzNjM6XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjQtXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9MTY1PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0zNDEtXFx0aWYgKCFmcC1cXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzozNDI6XFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMzQzLVxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBOVUxMKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDc5PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTQ5Mi1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjQ5MzpcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2VmaGRyLCBqaXRfZGF0YS1cXHUwMDNlaGRyKTtcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTQ5NC1cXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWFkZHJzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xMjAtXFx0XFx0XFx0ICogaW1hZ2Ugd2lsbCBiZSBsYXRlciBjb3BpZWQgdG8gdGhlIFJYIGltYWdlIGZyb20gd2hlcmUgdGhlIHByb2dyYW1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxMjE6XFx0XFx0XFx0ICogd2lsbCBydW4uIFRoZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKCkgd2lsbCBkbyB0aGlzIGNvcHkgaW4gdGhlXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTIyLVxcdFxcdFxcdCAqIGZpbmFsIHN0ZXAuXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xNTUtXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxNTY6XFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xNTctXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIE5VTEwpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9MjI0PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIzNS1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyMzY6XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yMzctXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zODUxPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4My1cXHRcXHRcXHQvKlxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTg0OlxcdFxcdFxcdCAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgZmFpbHMgaW4gdHdvIHNjZW5hcmlvczpcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4NS1cXHRcXHRcXHQgKiAgIDEpIGhlYWRlciBpcyBub3QgcG9pbnRpbmcgdG8gcHJvcGVyIG1vZHVsZSBtZW1vcnk7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4OS1cXHRcXHRcXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6Mzk5MDpcXHRcXHRcXHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk5MS1cXHRcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz00MDcxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDg0LVxcdFxcdGlmIChqaXRfZGF0YSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDg1OlxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXFx1MDAzZWhlYWRlcixcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA4Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGppdF9kYXRhLVxcdTAwM2Vyd19oZWFkZXIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUxPWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzNTYtXFx0XFx0XFx0ICBib29sIHdhc19jbGFzc2ljKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTc6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcik7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMTY4PXZvaWQgYnBmX2ppdF9iaW5hcnlfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkcilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTExODAtICogUk8gbWVtb3J5IGFkZHJlc3MsIGJ1dCB3cml0ZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSVyBidWZmZXIuIE9uY2UgdGhlXFxua2VybmVsL2JwZi9jb3JlLmM6MTE4MTogKiBKSVQgZW5naW5lIGZpbmlzaGVzLCBpdCBjYWxscyBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplLCB3aGljaCBjb3BpZXNcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTgyLSAqIHRoZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSTyBtZW1vcnkuXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMTg1PWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTIzMC0vKiBDb3B5IEpJVGVkIHRleHQgZnJvbSByd19oZWFkZXIgdG8gaXRzIGZpbmFsIGxvY2F0aW9uLCB0aGUgcm9faGVhZGVyLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEyMzE6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxua2VybmVsL2JwZi9jb3JlLmMtMTIzMi1cXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjQ3LSAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjQ4OiAqICAgMikgd2hlbiB0aGUgSklUIGVuZ2luZSBmYWlscyAoYmVmb3JlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUpLlxcbmtlcm5lbC9icGYvY29yZS5jLTEyNDktICogRm9yIGNhc2UgMiksIHdlIG5lZWQgdG8gZnJlZSBib3RoIHRoZSBSTyBtZW1vcnkgYW5kIHRoZSBSVyBidWZmZXIuXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjUyLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MgZG9lcyBub3Qgc2V0IGl0LiBUaGVyZWZvcmUsIHJvX2hlYWRlci1cXHUwMDNlc2l6ZVxcbmtlcm5lbC9icGYvY29yZS5jOjEyNTM6ICogbXVzdCBiZSBzZXQgd2l0aCBlaXRoZXIgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSAobm9ybWFsIHBhdGgpIG9yXFxua2VybmVsL2JwZi9jb3JlLmMtMTI1NC0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MzAuOTMzNjgxODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMjA3OTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQlBGIEpJVCBQYXRjaCBSZXZpZXcgLSBJbml0aWFsIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBCUEYgSklUIGNvZGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIHJhaXNlcyBzb21lIHF1ZXN0aW9ucy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgd2UncmUgbG9va2luZyBhdCB0aGUgcmlnaHQgZm91bmRhdGlvbi4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEEgZnVuZGFtZW50YWwgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSB0b3VjaGluZyB0aGUgSklULCBpcyBwb2ludGxlc3MgaWYgdGhlIGZlYXR1cmUgaXRzZWxmIGlzIGRpc2FibGVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBjYW4ndCB3YXN0ZSB0aW1lIGdvaW5nIHRocm91Z2ggaXQsIG9ubHkgdG8gZmluZCB0aGUgZmVhdHVyZSBpc24ndCBldmVuIHN1cHBvcnRlZC4gR290dGEgZ2V0IHRoYXQgYmFzZWxpbmUgY29ycmVjdCBiZWZvcmUgSSBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDozNC43NjU3NjM3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcwOTM4NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDExOjMwOjM3LjAzNjczMjQxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMzY4NjYwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGVuYWJsaW5nIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBmb3Igb3VyIGZ1enppbmcgY29uZmlndXJhdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgYWZmZWN0cyBjcml0aWNhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBicGZfaml0X2ZyZWVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiBUaGVzZSBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgYW5kIGNsZWFudXAgcm91dGluZXMgd2UgbmVlZCB0byB0YXJnZXQuXG5cbkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSB0aGUgY2hhbmdlcyB0byBob3cgYHJvX2hlYWRlcmAgaXMgaGFuZGxlZCBkdXJpbmcgZmFpbHVyZXMgaW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhcyB3ZWxsIGFzIHRoZSBuZXdseSBhZGRlZCBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGNvcmUga2VybmVsIGxvZ2ljLiBUaGlzIHR5cGUgb2YgY2hhbmdlIGlzIGV4YWN0bHkgdGhlIGtpbmQgdGhhdCBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIHVuY292ZXIgdnVsbmVyYWJpbGl0aWVzIGluLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduIGl0c2VsZiwgdGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgc2V0IHNwZWNpZmljYWxseSB0byBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBicGZfaml0X2ZyZWVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiBUaGlzIGFsbG93cyB1cyB0byBmb2N1cyBvdXIgZWZmb3J0cyBkaXJlY3RseSBvbiB0aGUgY29kZSB0aGF0IGhhcyBiZWVuIGNoYW5nZWQgYW5kIHRvIGVmZmljaWVudGx5IGV4ZXJjaXNlIHRoZXNlIHBhdGhzLiBGaW5hbGx5LCB0aGUgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgcmVtYWluIHNldCB0byBgQlBGX0pJVGAsIGFuZCBgQlBGX1NZU0NBTExgLCBjb25maXJtaW5nIG15IHByaW9yIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjcxLCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDo0NC4zNzM2MDA1MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTk2MDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJicGZfaml0X2ZyZWVcIixcbiAgICBcImJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEJQRiBKSVQgY29tcGlsZXIgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuIEl0IGNoYW5nZXMgaG93IGByb19oZWFkZXJgIGlzIGZyZWVkIHdoZW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZhaWxzLCBhbmQgYWRkcyBtaXNzaW5nIGBrdmZyZWVgIGNhbGxzIGluIGBicGZfaml0X2ZyZWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIGFjcm9zcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLiBJdCBjaGFuZ2VzIGhvdyBgcm9faGVhZGVyYCBpcyBmcmVlZCB3aGVuIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCBmYWlscywgYW5kIGFkZHMgbWlzc2luZyBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlzkkx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 11:02:05 +0000 UTC FinishedAt: 2026-07-23 11:30:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "810a273919df09b345cdee74869c030aadbaa891", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "810a273919df09b345cdee74869c030aadbaa891", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "30afb987-31b5-4afc-97ae-6c33fa76e641" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "bpf_jit_free", "bpf_jit_binary_pack_finalize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkN2Y2NjIxNzJhOGU0ZWRkOTgzYWQyOTQ5YjU1MzYxNWEwMzE2OGY3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTE6MzA6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICYjNDM7MjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTMyMzcsNiAmIzQzOzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLmM4Yzg2NjRkY2NhZmE4IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4mIzQzO1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNjEsNiAmIzQzOzIzNjEsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTMzOSw4ICYjNDM7MzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuJiM0MztcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNDQwZDViOTY1ZTYwNDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMjM3LDYgJiM0MzsyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuJiM0MztcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGRlNzUxNWVhMWJlYWU4Li5kMDE3YmIwMzk3Yjg4YiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzk4OCw3ICYjNDM7Mzk4OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7XG4tXHRcdFx0XHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0XHRnb3RvIG91dF9pbWFnZTtcbiBcdFx0XHR9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNDdmZTA0N2FkMzBiODguLjc3MTk1OTExYTNiMzcxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIzNywxMCAmIzQzOzEyMzcsOSBAQCBpbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcbiBcdGt2ZnJlZShyd19oZWFkZXIpO1xuIFxuLVx0aWYgKElTX0VSUihwdHIpKSB7XG4tXHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHJvX2hlYWRlci1cdTAwM2VzaXplKTtcbiYjNDM7XHRpZiAoSVNfRVJSKHB0cikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHB0cik7XG4tXHR9XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEJQRiBKSVQgY29tcGlsZXIgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuIEl0IGNoYW5nZXMgaG93IGByb19oZWFkZXJgIGlzIGZyZWVkIHdoZW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZhaWxzLCBhbmQgYWRkcyBtaXNzaW5nIGBrdmZyZWVgIGNhbGxzIGluIGBicGZfaml0X2ZyZWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkN2Y2NjIxNzJhOGU0ZWRkOTgzYWQyOTQ5YjU1MzYxNWEwMzE2OGY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMTE6MzA6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDRjZGM3ZGZiMDViYTlhLi5lMjAwYjAyMDdmN2FiOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIyNTgsNyAmIzQzOzIyNTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZV9oZHI7CiAJCX0KIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7Ci0JCQkvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTMyMzcsNiAmIzQzOzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpCiAJCSAqLwogCQlpZiAoaml0X2RhdGEpIHsKIAkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtJmd0O3JvX2hlYWRlciwgaml0X2RhdGEtJmd0O2hlYWRlcik7CiYjNDM7CQkJa3ZmcmVlKGppdF9kYXRhLSZndDtjdHgub2Zmc2V0KTsKIAkJCWtmcmVlKGppdF9kYXRhKTsKIAkJfQogCQlwcm9nLSZndDticGZfZnVuYyA9ICh2b2lkICopcHJvZy0mZ3Q7YnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggMjczOGI0ZGIxMTY1MzMuLmM4Yzg2NjRkY2NhZmE4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZTsKIAkJfQogCQlpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHsKLQkJCS8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlOwpAQCAtMjM2MSw2ICYjNDM7MjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTMzOSw4ICYjNDM7MzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAjZW5kaWYKIAogCWlmICghZnAtJmd0O2lzX2Z1bmMgfHwgZXh0cmFfcGFzcykgewotCQlpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKQomIzQzOwkJaWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkgewomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBOVUxMKTsKIAkJCWdvdG8gb3V0X2VycjsKJiM0MzsJCX0KIAl9CiAKIAlmcC0mZ3Q7YnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggY2JmY2QyODdlYTE2NjguLjQ0MGQ1Yjk2NWU2MDQwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwpAQCAtMTU0LDcgJiM0MzsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCiAJaWYgKCFwcm9nLSZndDtpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHsKIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKSkpIHsKLQkJCS8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBOVUxMKTsKIAkJCWppdF9kYXRhLSZndDtyb19oZWFkZXIgPSBOVUxMOwogCQkJaml0X2RhdGEtJmd0O2hlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTIzNyw2ICYjNDM7MjM3LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKQogCQkJa3ZmcmVlKGppdF9kYXRhLSZndDtjdHgub2Zmc2V0KTsKIAkJCWtmcmVlKGppdF9kYXRhKTsKIAkJfQomIzQzOwkJcHJvZy0mZ3Q7YnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctJmd0O2JwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTsKIAkJaGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7CiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZHIsIE5VTEwpOwogCQlXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYocHJvZykpOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGRlNzUxNWVhMWJlYWU4Li5kMDE3YmIwMzk3Yjg4YiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYwpAQCAtMzk4OCw3ICYjNDM7Mzk4OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQkgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi4KIAkJCSAqLwogCQkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7Ci0JCQkJLyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovCiYjNDM7CQkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpOwogCQkJCWhlYWRlciA9IE5VTEw7CiAJCQkJZ290byBvdXRfaW1hZ2U7CiAJCQl9CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9icGYvY29yZS5jCmluZGV4IDQ3ZmUwNDdhZDMwYjg4Li43NzE5NTkxMWEzYjM3MSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9jb3JlLmMKQEAgLTEyMzcsMTAgJiM0MzsxMjM3LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsCiAKIAlrdmZyZWUocndfaGVhZGVyKTsKIAotCWlmIChJU19FUlIocHRyKSkgewotCQlicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItJmd0O3NpemUpOwomIzQzOwlpZiAoSVNfRVJSKHB0cikpCiAJCXJldHVybiBQVFJfRVJSKHB0cik7Ci0JfQomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDExOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMg4oCTIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2LCBhbG9uZyB3aXRoIHRoZSBjb3JlIEJQRiBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodCBvZmYgdGhlIGJhdCwgYXMgaXQgbW9kaWZpZXMgaG93IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIGNvbXBpbGF0aW9uIGZhaWx1cmVzLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiAgSW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBgcm9faGVhZGVyYCBvbiBhIGZhaWx1cmUgd2l0aGluIHRoYXQgZnVuY3Rpb24sIGl0JiMzOTtzIG5vdyBzaGlmdGluZyB0aGUgcmVzcG9uc2liaWxpdHkgdG8gdGhlICpjYWxsZXIqIHRvIGNhbGwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpYCB3aGVuIGEgZmFpbHVyZSBpcyBkZXRlY3RlZCBpbiB0aGUgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc2hpZnQgaW4gcmVzcG9uc2liaWxpdHkgdGhhdCYjMzk7cyB3b3J0aCBub3RpbmcgYW5kIEkgbmVlZCB0byB0aGluayBhYm91dCB0aGF0IGltcGxpY2F0aW9uLgoKQmV5b25kIHRoYXQsIHRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBmZXcgdHdlYWtzIHRvIHRoZSBgYnBmX2ppdF9mcmVlYCBmdW5jdGlvbiBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcyBhIGBrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpO2AgY2FsbCBmb3IgYXJtNjQgYW5kIGxvb25nYXJjaCBpbiB0aGUgYGJwZl9qaXRfZnJlZWAgYW5kIGZvciByaXNjdiwgYHByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7YCBpcyBhZGRlZC4KClRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgZ2l2ZW4gaXRzIHNjb3BlLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLiBBbnkgc2hpZnQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3IgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEpJVCBjb21waWxlciBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6CiogICBgYnBmX2ludF9qaXRfY29tcGlsZWAgKGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlcyBsaXN0ZWQgZWFybGllcikKKiAgIGBicGZfaml0X2ZyZWVgIChhcm02NCwgbG9vbmdhcmNoLCByaXNjdikKKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCAodGhlIGNvcmUgb25lIGluIGBrZXJuZWwvYnBmL2NvcmUuY2ApCgpNeSBmb2N1cyBmb3IgaW5zcGVjdGlvbiBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRob3NlIHRocmVlIHN5bWJvbHMuCgpBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX0JQRl9KSVRgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcmUgZW5hYmxlZCwgYXMgdGhlc2UgYXJlIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjaGFuZ2VzIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIFRpbWUgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDkzPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjIwMi1cdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjAzOlx0ICogd2lsbCBydW4uIFRoZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKCkgd2lsbCBkbyB0aGlzIGNvcHkgaW4gdGhlXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjA0LVx0ICogZmluYWwgc3RlcC5cbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjU5LVx0XHR9XG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjYwOlx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHtcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIyNjEtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzIyNT12b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIzOC1cdFx0aWYgKGppdF9kYXRhKSB7XG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzozMjM5Olx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzI0MC1cdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTk3PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjY4LVx0ICogaW1hZ2Ugd2lsbCBiZSBsYXRlciBjb3BpZWQgdG8gdGhlIFJYIGltYWdlIGZyb20gd2hlcmUgdGhlIHByb2dyYW0gd2lsbFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjY5Olx0ICogcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZSBmaW5hbFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjcwLVx0ICogc3RlcC5cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyOTktXHRcdH1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjMwMDpcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzMDEtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzUxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjItXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzYzOlx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzY0LVx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTE2NT1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTM0MS1cdGlmICghZnAtXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjM0MjpcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0zNDMtXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpO1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDc5PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00OTItXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo0OTM6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2VmaGRyLCBqaXRfZGF0YS1cdTAwM2VoZHIpO1xuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00OTQtXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWFkZHJzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTEyMC1cdFx0XHQgKiBpbWFnZSB3aWxsIGJlIGxhdGVyIGNvcGllZCB0byB0aGUgUlggaW1hZ2UgZnJvbSB3aGVyZSB0aGUgcHJvZ3JhbVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTIxOlx0XHRcdCAqIHdpbGwgcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTIyLVx0XHRcdCAqIGZpbmFsIHN0ZXAuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTU1LVx0aWYgKCFwcm9nLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTU2Olx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKSkpIHtcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTE1Ny1cdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0yMjQ9dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIzNS1cdFx0aWYgKGppdF9kYXRhKSB7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyMzY6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcik7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yMzctXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zODUxPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5ODMtXHRcdFx0LypcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTg0Olx0XHRcdCAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgZmFpbHMgaW4gdHdvIHNjZW5hcmlvczpcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zOTg1LVx0XHRcdCAqICAgMSkgaGVhZGVyIGlzIG5vdCBwb2ludGluZyB0byBwcm9wZXIgbW9kdWxlIG1lbW9yeTtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4OS1cdFx0XHQgKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTkwOlx0XHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5OTEtXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA3MT12b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwODQtXHRcdGlmIChqaXRfZGF0YSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjQwODU6XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2VoZWFkZXIsXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA4Ni1cdFx0XHRcdFx0XHQgICAgIGppdF9kYXRhLVx1MDAzZXJ3X2hlYWRlcik7XG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUxPWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU2LVx0XHRcdCAgYm9vbCB3YXNfY2xhc3NpYyk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTc6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzNTgtXHRcdFx0XHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTExNjg9dm9pZCBicGZfaml0X2JpbmFyeV9mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTExODAtICogUk8gbWVtb3J5IGFkZHJlc3MsIGJ1dCB3cml0ZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSVyBidWZmZXIuIE9uY2UgdGhlXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTgxOiAqIEpJVCBlbmdpbmUgZmluaXNoZXMsIGl0IGNhbGxzIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUsIHdoaWNoIGNvcGllc1xua2VybmVsL2JwZi9jb3JlLmMtMTE4Mi0gKiB0aGUgSklUZWQgcHJvZ3JhbSB0byB0aGUgUk8gbWVtb3J5LlxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTExODU9YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTIzMC0vKiBDb3B5IEpJVGVkIHRleHQgZnJvbSByd19oZWFkZXIgdG8gaXRzIGZpbmFsIGxvY2F0aW9uLCB0aGUgcm9faGVhZGVyLiAqL1xua2VybmVsL2JwZi9jb3JlLmM6MTIzMTppbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbmtlcm5lbC9icGYvY29yZS5jLTEyMzItXHRcdFx0XHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMTI0Ny0gKiAgIDEpIHdoZW4gdGhlIHByb2dyYW0gaXMgZnJlZWQgYWZ0ZXI7XG5rZXJuZWwvYnBmL2NvcmUuYzoxMjQ4OiAqICAgMikgd2hlbiB0aGUgSklUIGVuZ2luZSBmYWlscyAoYmVmb3JlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUpLlxua2VybmVsL2JwZi9jb3JlLmMtMTI0OS0gKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjUyLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MgZG9lcyBub3Qgc2V0IGl0LiBUaGVyZWZvcmUsIHJvX2hlYWRlci1cdTAwM2VzaXplXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjUzOiAqIG11c3QgYmUgc2V0IHdpdGggZWl0aGVyIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgKG5vcm1hbCBwYXRoKSBvclxua2VybmVsL2JwZi9jb3JlLmMtMTI1NC0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQlBGIEpJVCBQYXRjaCBSZXZpZXcgLSBJbml0aWFsIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtZXNzaW5nIHdpdGggQlBGIEpJVCBjb2RlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBhbmQgcmFpc2VzIHNvbWUgcXVlc3Rpb25zLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgcmlnaHQgZm91bmRhdGlvbi4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEEgZnVuZGFtZW50YWwgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSB0b3VjaGluZyB0aGUgSklULCBpcyBwb2ludGxlc3MgaWYgdGhlIGZlYXR1cmUgaXRzZWxmIGlzIGRpc2FibGVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBjYW4mIzM5O3Qgd2FzdGUgdGltZSBnb2luZyB0aHJvdWdoIGl0LCBvbmx5IHRvIGZpbmQgdGhlIGZlYXR1cmUgaXNuJiMzOTt0IGV2ZW4gc3VwcG9ydGVkLiBHb3R0YSBnZXQgdGhhdCBiYXNlbGluZSBjb3JyZWN0IGJlZm9yZSBJIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxMTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY3MQoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgZW5hYmxpbmcgYEJQRl9KSVRgIGFuZCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBhZmZlY3RzIGNyaXRpY2FsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBKSVQgY29tcGlsZXI6IGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgY2xlYW51cCByb3V0aW5lcyB3ZSBuZWVkIHRvIHRhcmdldC4KCkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSB0aGUgY2hhbmdlcyB0byBob3cgYHJvX2hlYWRlcmAgaXMgaGFuZGxlZCBkdXJpbmcgZmFpbHVyZXMgaW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhcyB3ZWxsIGFzIHRoZSBuZXdseSBhZGRlZCBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBleGFjdGx5IHRoZSBraW5kIHRoYXQgZnV6emluZyBpcyBkZXNpZ25lZCB0byB1bmNvdmVyIHZ1bG5lcmFiaWxpdGllcyBpbi4gVGhlcmVmb3JlLCBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZ1enppbmcgY2FtcGFpZ24gaXRzZWxmLCB0aGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBzZXQgc3BlY2lmaWNhbGx5IHRvIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuIFRoaXMgYWxsb3dzIHVzIHRvIGZvY3VzIG91ciBlZmZvcnRzIGRpcmVjdGx5IG9uIHRoZSBjb2RlIHRoYXQgaGFzIGJlZW4gY2hhbmdlZCBhbmQgdG8gZWZmaWNpZW50bHkgZXhlcmNpc2UgdGhlc2UgcGF0aHMuIEZpbmFsbHksIHRoZSBgRW5hYmxlQ29uZmlnc2Agd2lsbCByZW1haW4gc2V0IHRvIGBCUEZfSklUYCwgYW5kIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgcHJpb3IgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTE6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDoyMC41NjIyMTMyNzRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk2MTM5MTkyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDExOjMwOjIwLjU2MjIyMDkyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyMTc1MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDdmNjYyMTcyYThlNGVkZDk4M2FkMjk0OWI1NTM2MTVhMDMxNjhmN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxMTozMDoxOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMjI1OCw3ICsyMjU4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9oZHI7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuLVxcdFxcdFxcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xcbiBcXHRcXHRcXHRyb19oZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMzIzNyw2ICszMjM3LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuIFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXFx1MDAzZWhlYWRlcik7XFxuK1xcdFxcdFxcdGt2ZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuIFxcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbmluZGV4IDI3MzhiNGRiMTE2NTMzLi5jOGM4NjY0ZGNjYWZhOCAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbkBAIC0yMjk4LDcgKzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbi1cXHRcXHRcXHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXZlIGJlZW4gZnJlZWQgKi9cXG4rXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XFxuIFxcdFxcdFxcdHJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGhlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuQEAgLTIzNjEsNiArMjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChqaXRfZGF0YSkge1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbitcXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWN0eC5vZmZzZXQpO1xcbiBcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggN2IwN2I0MzU3NWYxMTEuLjBjYTE0YjdkMGIwZTY1IDEwMDY0NFxcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTMzOSw4ICszMzksMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gI2VuZGlmXFxuIFxcbiBcXHRpZiAoIWZwLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4tXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSlcXG4rXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRmcC1cXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li40NDBkNWI5NjVlNjA0MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGppdF9kYXRhLVxcdTAwM2VoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMjM3LDYgKzIzNyw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4gXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbiBcXHRcXHR9XFxuK1xcdFxcdHByb2ctXFx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVxcdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XFxuIFxcdFxcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xcbiBcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcXG4gXFx0XFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggZGU3NTE1ZWExYmVhZTguLmQwMTdiYjAzOTdiODhiIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0zOTg4LDcgKzM5ODgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHQgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi5cXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xcbi1cXHRcXHRcXHRcXHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cXG4rXFx0XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgTlVMTCk7XFxuIFxcdFxcdFxcdFxcdGhlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0X2ltYWdlO1xcbiBcXHRcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCA0N2ZlMDQ3YWQzMGI4OC4uNzcxOTU5MTFhM2IzNzEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC0xMjM3LDEwICsxMjM3LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuIFxcbiBcXHRrdmZyZWUocndfaGVhZGVyKTtcXG4gXFxuLVxcdGlmIChJU19FUlIocHRyKSkge1xcbi1cXHRcXHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXFx1MDAzZXNpemUpO1xcbitcXHRpZiAoSVNfRVJSKHB0cikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHB0cik7XFxuLVxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDoyMS4xNTUwNDI5MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMzM2ODU0OTM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGUgQlBGIEpJVCBjb21waWxlciBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4gSXQgY2hhbmdlcyBob3cgYHJvX2hlYWRlcmAgaXMgZnJlZWQgd2hlbiBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgZmFpbHMsIGFuZCBhZGRzIG1pc3NpbmcgYGt2ZnJlZWAgY2FsbHMgaW4gYGJwZl9qaXRfZnJlZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdmNjYyMTcyYThlNGVkZDk4M2FkMjk0OWI1NTM2MTVhMDMxNjhmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIzIDExOjMwOjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLmUyMDBiMDIwN2Y3YWI5IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICsyMjU4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRnb3RvIG91dF9mcmVlX2hkcjtcbiBcdFx0fVxuIFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHJvX2hlYWRlciwgaGVhZGVyKSkpIHtcbi1cdFx0XHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuK1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlX2hkcjtcbkBAIC0zMjM3LDYgKzMyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbitcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4gXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHR9XG4gXHRcdHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNzM4YjRkYjExNjUzMy4uYzhjODY2NGRjY2FmYTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtMjI5OCw3ICsyMjk4LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuIFx0XHR9XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqL1xuK1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNjEsNiArMjM2MSw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDdiMDdiNDM1NzVmMTExLi4wY2ExNGI3ZDBiMGU2NSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMzksOCArMzM5LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuK1x0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKSB7XG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNDQwZDViOTY1ZTYwNDAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyArMTU0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdGlmICghcHJvZy1cdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0aml0X2RhdGEtXHUwMDNlcm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2VoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTIzNyw2ICsyMzcsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuK1x0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZHIsIE5VTEwpO1xuIFx0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYocHJvZykpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggZGU3NTE1ZWExYmVhZTguLmQwMTdiYjAzOTdiODhiIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zOTg4LDcgKzM5ODgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdCAqIEJvdGggY2FzZXMgYXJlIHNlcmlvdXMgYnVncyBhbmQganVzdGlmeSBXQVJOX09OLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkge1xuLVx0XHRcdFx0LyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXG4rXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0XHRnb3RvIG91dF9pbWFnZTtcbiBcdFx0XHR9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggNDdmZTA0N2FkMzBiODguLjc3MTk1OTExYTNiMzcxIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbisrKyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIzNywxMCArMTIzNyw5IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuIFxuIFx0a3ZmcmVlKHJ3X2hlYWRlcik7XG4gXG4tXHRpZiAoSVNfRVJSKHB0cikpIHtcbi1cdFx0YnBmX3Byb2dfcGFja19mcmVlKHJvX2hlYWRlciwgcm9faGVhZGVyLVx1MDAzZXNpemUpO1xuK1x0aWYgKElTX0VSUihwdHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwdHIpO1xuLVx0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MjEuMTU1MDQ0MTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIwOTY5ODYzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMg4oCTIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2LCBhbG9uZyB3aXRoIHRoZSBjb3JlIEJQRiBjb2RlIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCByaWdodCBvZmYgdGhlIGJhdCwgYXMgaXQgbW9kaWZpZXMgaG93IG1lbW9yeSBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIGNvbXBpbGF0aW9uIGZhaWx1cmVzLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIGFyb3VuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAuICBJbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIGByb19oZWFkZXJgIG9uIGEgZmFpbHVyZSB3aXRoaW4gdGhhdCBmdW5jdGlvbiwgaXQncyBub3cgc2hpZnRpbmcgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHRoZSAqY2FsbGVyKiB0byBjYWxsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKWAgd2hlbiBhIGZhaWx1cmUgaXMgZGV0ZWN0ZWQgaW4gdGhlIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCBmdW5jdGlvbi4gVGhhdCdzIGEgc2hpZnQgaW4gcmVzcG9uc2liaWxpdHkgdGhhdCdzIHdvcnRoIG5vdGluZyBhbmQgSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoYXQgaW1wbGljYXRpb24uXG5cbkJleW9uZCB0aGF0LCB0aGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2VzIGEgZmV3IHR3ZWFrcyB0byB0aGUgYGJwZl9qaXRfZnJlZWAgZnVuY3Rpb24gZm9yIHNwZWNpZmljIGFyY2hpdGVjdHVyZXMuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGFkZHMgYSBga3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO2AgY2FsbCBmb3IgYXJtNjQgYW5kIGxvb25nYXJjaCBpbiB0aGUgYGJwZl9qaXRfZnJlZWAgYW5kIGZvciByaXNjdiwgYHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO2AgaXMgYWRkZWQuXG5cblRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgZ2l2ZW4gaXRzIHNjb3BlLCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBmdXp6aW5nIHRoaXMuIEFueSBzaGlmdCBpbiBtZW1vcnkgbWFuYWdlbWVudCBvciBlcnJvciBoYW5kbGluZyBpbiB0aGUgSklUIGNvbXBpbGVyIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkOlxuKiAgIGBicGZfaW50X2ppdF9jb21waWxlYCAoYWNyb3NzIHRoZSBhcmNoaXRlY3R1cmVzIGxpc3RlZCBlYXJsaWVyKVxuKiAgIGBicGZfaml0X2ZyZWVgIChhcm02NCwgbG9vbmdhcmNoLCByaXNjdilcbiogICBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAgKHRoZSBjb3JlIG9uZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgKVxuXG5NeSBmb2N1cyBmb3IgaW5zcGVjdGlvbiBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIGJlIHRob3NlIHRocmVlIHN5bWJvbHMuXG5cbkFuZCwgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYXJlIGVuYWJsZWQsIGFzIHRoZXNlIGFyZSBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY2hhbmdlcyB0byBldmVuIGJlIHJlbGV2YW50LiBUaW1lIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjE4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MjguMzY0NzQ1MzE0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1Njg5MzI5MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0yMDkzPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjAyLVxcdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjIwMzpcXHQgKiB3aWxsIHJ1bi4gVGhlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoKSB3aWxsIGRvIHRoaXMgY29weSBpbiB0aGVcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjA0LVxcdCAqIGZpbmFsIHN0ZXAuXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMjU5LVxcdFxcdH1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMjYwOlxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIyNjEtXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMjI1PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMyMzgtXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MzIzOTpcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMyNDAtXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjY4LVxcdCAqIGltYWdlIHdpbGwgYmUgbGF0ZXIgY29waWVkIHRvIHRoZSBSWCBpbWFnZSBmcm9tIHdoZXJlIHRoZSBwcm9ncmFtIHdpbGxcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNjk6XFx0ICogcnVuLiBUaGUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSgpIHdpbGwgZG8gdGhpcyBjb3B5IGluIHRoZSBmaW5hbFxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI3MC1cXHQgKiBzdGVwLlxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjk5LVxcdFxcdH1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzMDA6XFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzAxLVxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzUxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM2Mi1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzNjM6XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjQtXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9MTY1PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0zNDEtXFx0aWYgKCFmcC1cXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzozNDI6XFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMzQzLVxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBOVUxMKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDc5PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTQ5Mi1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjQ5MzpcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2VmaGRyLCBqaXRfZGF0YS1cXHUwMDNlaGRyKTtcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTQ5NC1cXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWFkZHJzKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xMjAtXFx0XFx0XFx0ICogaW1hZ2Ugd2lsbCBiZSBsYXRlciBjb3BpZWQgdG8gdGhlIFJYIGltYWdlIGZyb20gd2hlcmUgdGhlIHByb2dyYW1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxMjE6XFx0XFx0XFx0ICogd2lsbCBydW4uIFRoZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKCkgd2lsbCBkbyB0aGlzIGNvcHkgaW4gdGhlXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTIyLVxcdFxcdFxcdCAqIGZpbmFsIHN0ZXAuXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xNTUtXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoxNTY6XFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xNTctXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIE5VTEwpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9MjI0PXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIzNS1cXHRcXHRpZiAoaml0X2RhdGEpIHtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzoyMzY6XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0yMzctXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zODUxPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4My1cXHRcXHRcXHQvKlxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTg0OlxcdFxcdFxcdCAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgZmFpbHMgaW4gdHdvIHNjZW5hcmlvczpcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4NS1cXHRcXHRcXHQgKiAgIDEpIGhlYWRlciBpcyBub3QgcG9pbnRpbmcgdG8gcHJvcGVyIG1vZHVsZSBtZW1vcnk7XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk4OS1cXHRcXHRcXHQgKi9cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6Mzk5MDpcXHRcXHRcXHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk5MS1cXHRcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz00MDcxPXZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDg0LVxcdFxcdGlmIChqaXRfZGF0YSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDg1OlxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXFx1MDAzZWhlYWRlcixcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA4Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGppdF9kYXRhLVxcdTAwM2Vyd19oZWFkZXIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUxPWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEzNTYtXFx0XFx0XFx0ICBib29sIHdhc19jbGFzc2ljKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTc6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcik7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMTY4PXZvaWQgYnBmX2ppdF9iaW5hcnlfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkcilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTExODAtICogUk8gbWVtb3J5IGFkZHJlc3MsIGJ1dCB3cml0ZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSVyBidWZmZXIuIE9uY2UgdGhlXFxua2VybmVsL2JwZi9jb3JlLmM6MTE4MTogKiBKSVQgZW5naW5lIGZpbmlzaGVzLCBpdCBjYWxscyBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplLCB3aGljaCBjb3BpZXNcXG5rZXJuZWwvYnBmL2NvcmUuYy0xMTgyLSAqIHRoZSBKSVRlZCBwcm9ncmFtIHRvIHRoZSBSTyBtZW1vcnkuXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMTg1PWJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTIzMC0vKiBDb3B5IEpJVGVkIHRleHQgZnJvbSByd19oZWFkZXIgdG8gaXRzIGZpbmFsIGxvY2F0aW9uLCB0aGUgcm9faGVhZGVyLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjEyMzE6aW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxua2VybmVsL2JwZi9jb3JlLmMtMTIzMi1cXHRcXHRcXHRcXHQgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyd19oZWFkZXIpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjQ3LSAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMjQ4OiAqICAgMikgd2hlbiB0aGUgSklUIGVuZ2luZSBmYWlscyAoYmVmb3JlIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUpLlxcbmtlcm5lbC9icGYvY29yZS5jLTEyNDktICogRm9yIGNhc2UgMiksIHdlIG5lZWQgdG8gZnJlZSBib3RoIHRoZSBSTyBtZW1vcnkgYW5kIHRoZSBSVyBidWZmZXIuXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0xMjUyLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MgZG9lcyBub3Qgc2V0IGl0LiBUaGVyZWZvcmUsIHJvX2hlYWRlci1cXHUwMDNlc2l6ZVxcbmtlcm5lbC9icGYvY29yZS5jOjEyNTM6ICogbXVzdCBiZSBzZXQgd2l0aCBlaXRoZXIgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSAobm9ybWFsIHBhdGgpIG9yXFxua2VybmVsL2JwZi9jb3JlLmMtMTI1NC0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTE6MzA6MzAuOTMzNjgxODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMjA3OTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQlBGIEpJVCBQYXRjaCBSZXZpZXcgLSBJbml0aWFsIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1lc3Npbmcgd2l0aCBCUEYgSklUIGNvZGUuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYW5kIHJhaXNlcyBzb21lIHF1ZXN0aW9ucy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBlbnN1cmUgd2UncmUgbG9va2luZyBhdCB0aGUgcmlnaHQgZm91bmRhdGlvbi4gQmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX0JQRl9KSVRgIGlzIGVuYWJsZWQuIEEgZnVuZGFtZW50YWwgY2hhbmdlIGxpa2UgdGhpcywgZXNwZWNpYWxseSB0b3VjaGluZyB0aGUgSklULCBpcyBwb2ludGxlc3MgaWYgdGhlIGZlYXR1cmUgaXRzZWxmIGlzIGRpc2FibGVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSBjYW4ndCB3YXN0ZSB0aW1lIGdvaW5nIHRocm91Z2ggaXQsIG9ubHkgdG8gZmluZCB0aGUgZmVhdHVyZSBpc24ndCBldmVuIHN1cHBvcnRlZC4gR290dGEgZ2V0IHRoYXQgYmFzZWxpbmUgY29ycmVjdCBiZWZvcmUgSSBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNDcsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDozNC43NjU3NjM3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjcwOTM4NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDExOjMwOjM3LjAzNjczMjQxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczMzY4NjYwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIEpJVCBDb21waWxlciBQYXRjaCoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGVuYWJsaW5nIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBmb3Igb3VyIGZ1enppbmcgY29uZmlndXJhdGlvbi4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgYWZmZWN0cyBjcml0aWNhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyOiBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBicGZfaml0X2ZyZWVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiBUaGVzZSBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgYW5kIGNsZWFudXAgcm91dGluZXMgd2UgbmVlZCB0byB0YXJnZXQuXG5cbkdpdmVuIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSB0aGUgY2hhbmdlcyB0byBob3cgYHJvX2hlYWRlcmAgaXMgaGFuZGxlZCBkdXJpbmcgZmFpbHVyZXMgaW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhcyB3ZWxsIGFzIHRoZSBuZXdseSBhZGRlZCBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgcmVwcmVzZW50cyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIGNvcmUga2VybmVsIGxvZ2ljLiBUaGlzIHR5cGUgb2YgY2hhbmdlIGlzIGV4YWN0bHkgdGhlIGtpbmQgdGhhdCBmdXp6aW5nIGlzIGRlc2lnbmVkIHRvIHVuY292ZXIgdnVsbmVyYWJpbGl0aWVzIGluLiBUaGVyZWZvcmUsIEkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHRoZSBmdXp6aW5nIGNhbXBhaWduIGl0c2VsZiwgdGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgc2V0IHNwZWNpZmljYWxseSB0byBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBicGZfaml0X2ZyZWVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLiBUaGlzIGFsbG93cyB1cyB0byBmb2N1cyBvdXIgZWZmb3J0cyBkaXJlY3RseSBvbiB0aGUgY29kZSB0aGF0IGhhcyBiZWVuIGNoYW5nZWQgYW5kIHRvIGVmZmljaWVudGx5IGV4ZXJjaXNlIHRoZXNlIHBhdGhzLiBGaW5hbGx5LCB0aGUgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgcmVtYWluIHNldCB0byBgQlBGX0pJVGAsIGFuZCBgQlBGX1NZU0NBTExgLCBjb25maXJtaW5nIG15IHByaW9yIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjcxLCJPdXRwdXRUb2tlbnMiOjE1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxMTozMDo0NC4zNzM2MDA1MzVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTk2MDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJicGZfaml0X2ZyZWVcIixcbiAgICBcImJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIEJQRiBKSVQgY29tcGlsZXIgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuIEl0IGNoYW5nZXMgaG93IGByb19oZWFkZXJgIGlzIGZyZWVkIHdoZW4gYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgIGZhaWxzLCBhbmQgYWRkcyBtaXNzaW5nIGBrdmZyZWVgIGNhbGxzIGluIGBicGZfaml0X2ZyZWVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIGFjcm9zcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLiBJdCBjaGFuZ2VzIGhvdyBgcm9faGVhZGVyYCBpcyBmcmVlZCB3aGVuIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCBmYWlscywgYW5kIGFkZHMgbWlzc2luZyBga3ZmcmVlYCBjYWxscyBpbiBgYnBmX2ppdF9mcmVlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowlzkkx[1] Phase: Succeeded StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 11:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 11:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2] Phase: Succeeded StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 11:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 11:30:56 +0000 UTC FinishedAt: 2026-07-23 11:31:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlzkkx/series-workflowlzkkx-convert-artifact-4208200781/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 11:31:06 +0000 UTC FinishedAt: 2026-07-23 11:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 11:31:06 +0000 UTC FinishedAt: 2026-07-23 11:59:43 +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:*f14cc7d2-84a0-4bec-89c4-10aaef626266,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-workflowlzkkx/series-workflowlzkkx-convert-artifact-4208200781/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": "37b65312-32a0-4a80-9084-88563593070c", "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-workflowlzkkx/series-workflowlzkkx-build-action-2093501635/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 11:31:06 +0000 UTC FinishedAt: 2026-07-23 11:59:33 +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:*f14cc7d2-84a0-4bec-89c4-10aaef626266,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-workflowlzkkx/series-workflowlzkkx-convert-artifact-4208200781/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": "37b65312-32a0-4a80-9084-88563593070c", "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-workflowlzkkx/series-workflowlzkkx-build-action-2093501635/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 11:59:43 +0000 UTC FinishedAt: 2026-07-23 11:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 11:59:43 +0000 UTC FinishedAt: 2026-07-23 11:59:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 11:59:43 +0000 UTC FinishedAt: 2026-07-23 11:59:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 11:59:43 +0000 UTC FinishedAt: 2026-07-23 11:59:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlzkkx/series-workflowlzkkx-convert-artifact-2959991208/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 11:59:53 +0000 UTC FinishedAt: 2026-07-23 12:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 11:59:53 +0000 UTC FinishedAt: 2026-07-23 12:01:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*37b65312-32a0-4a80-9084-88563593070c,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-workflowlzkkx/series-workflowlzkkx-build-action-2093501635/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-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 12:01:50 +0000 UTC FinishedAt: 2026-07-23 12:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 12:01:50 +0000 UTC FinishedAt: 2026-07-23 12:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 12:01:50 +0000 UTC FinishedAt: 2026-07-23 12:30:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 12:01:50 +0000 UTC FinishedAt: 2026-07-23 12:30:05 +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:*f14cc7d2-84a0-4bec-89c4-10aaef626266,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-workflowlzkkx/series-workflowlzkkx-convert-artifact-2959991208/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": "6425d054-b8e3-4b5d-8de0-f3f4c7e74bb1", "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-workflowlzkkx/series-workflowlzkkx-build-action-1605820244/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 12:01:50 +0000 UTC FinishedAt: 2026-07-23 12:29:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f14cc7d2-84a0-4bec-89c4-10aaef626266,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-workflowlzkkx/series-workflowlzkkx-convert-artifact-2959991208/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": "6425d054-b8e3-4b5d-8de0-f3f4c7e74bb1", "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-workflowlzkkx/series-workflowlzkkx-build-action-1605820244/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 12:30:05 +0000 UTC FinishedAt: 2026-07-23 12:30:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 12:30:05 +0000 UTC FinishedAt: 2026-07-23 12:30:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 12:30:05 +0000 UTC FinishedAt: 2026-07-23 12:32:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 12:30:05 +0000 UTC FinishedAt: 2026-07-23 12:31:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6425d054-b8e3-4b5d-8de0-f3f4c7e74bb1,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-workflowlzkkx/series-workflowlzkkx-build-action-1605820244/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-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"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:*37b65312-32a0-4a80-9084-88563593070c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6425d054-b8e3-4b5d-8de0-f3f4c7e74bb1,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-workflowlzkkx/series-workflowlzkkx-build-action-2093501635/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-workflowlzkkx/series-workflowlzkkx-build-action-1605820244/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 12:32:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 12:32:12 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"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-workflowlzkkx/series-workflowlzkkx-convert-artifact-3167266529/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 12:32:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 12:32:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 12:32:06 +0000 UTC FinishedAt: 2026-07-23 12:32:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 12:32:16 +0000 UTC FinishedAt: 2026-07-23 15:35:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlzkkx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_free","bpf_jit_binary_pack_finalize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"810a273919df09b345cdee74869c030aadbaa891","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"30afb987-31b5-4afc-97ae-6c33fa76e641","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 12:32:16 +0000 UTC FinishedAt: 2026-07-23 15:35:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*37b65312-32a0-4a80-9084-88563593070c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6425d054-b8e3-4b5d-8de0-f3f4c7e74bb1,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-workflowlzkkx/series-workflowlzkkx-build-action-2093501635/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-workflowlzkkx/series-workflowlzkkx-build-action-1605820244/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-workflowlzkkx/series-workflowlzkkx-convert-artifact-3167266529/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,}