Name: series-workflowzjlbx Phase: Succeeded StartedAt: 2026-07-31 04:37:24 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[0] Phase: Succeeded StartedAt: 2026-07-31 04:37:24 +0000 UTC FinishedAt: 2026-07-31 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 04:37:24 +0000 UTC FinishedAt: 2026-07-31 04:39:30 +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": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "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": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "08dbeb84-0de4-4aea-a198-c0c49629a34d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_fixup_kfunc_call", "bpf_iter_num_next", "bpf_iter_num_destroy" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ZpeHVwX2tmdW5jX2NhbGwmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfbnVtX25leHQmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfbnVtX2Rlc3Ryb3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNjU5MGM4MjFlNzFlNDNmN2I2YzkyZmI0NjgzMDFmMzY3NDJhN2VlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6Mzg6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXG5pbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfaXRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcbkBAIC04MDIsMTIgJiM0Mzs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiB7XG4gXHRzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0O1xuIFxuLVx0LyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTtcbi1cdCAqIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBvdmVyZmxvdywgc28gY29udmVydCB0byBzNjQgZm9yIGNoZWNrcyxcbi1cdCAqIGUuZy4sIGlmIHMtXHUwMDNlY3VyID09IHMtXHUwMDNlZW5kID09IElOVF9NQVgsIHdlIGNhbiYjMzk7dCBqdXN0IGRvXG4tXHQgKiBzLVx1MDAzZWN1ciAmIzQzOyAxIFx1MDAzZT0gcy1cdTAwM2VlbmRcbiYjNDM7XHQvKiBEZXRlY3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIG9yIGEgZmFpbGVkL2VtcHR5IGl0ZXJhdG9yOiBhbGwgb2YgdGhlc2VcbiYjNDM7XHQgKiBsZWF2ZSBzLVx1MDAzZWN1ciAmIzQzOyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQuIGJwZl9pdGVyX251bV9uZXcoKSBzZXQgcy1cdTAwM2VjdXIgdG8gc3RhcnQgLSAxXG4mIzQzO1x0ICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtXHUwMDNlY3VyICYjNDM7IDEgYmVsb3dcbiYjNDM7XHQgKiBpcyBhIGRlbGliZXJhdGUgMzItYml0IHdyYXBhcm91bmQgdGhhdCByZWNvdmVycyBzdGFydC4gQXMgcy1cdTAwM2VjdXIgYW5kXG4mIzQzO1x0ICogcy1cdTAwM2VlbmQgYXJlIGludCwgdGhpcyBpcyBhbiBvcmRpbmFyeSBzaWduZWQgMzItYml0IGNvbXBhcmUsIGV4YWN0bHkgd2hhdFxuJiM0MztcdCAqIHRoZSBpbmxpbmVkIGJwZl9pdGVyX251bV9uZXh0KCkgZW1pdHMuXG4gXHQgKi9cbi1cdGlmICgoczY0KShzLVx1MDAzZWN1ciAmIzQzOyAxKSBcdTAwM2U9IHMtXHUwMDNlZW5kKSB7XG4mIzQzO1x0aWYgKHMtXHUwMDNlY3VyICYjNDM7IDEgXHUwMDNlPSBzLVx1MDAzZWVuZCkge1xuIFx0XHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG5AQCAtODE5LDkgJiM0Mzs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiBcbiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KVxuIHtcbi1cdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4tXG4tXHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE5vdGhpbmcgdG8gZG86IHRoZSBzdGFjayBzbG90IGJhY2tpbmcgdGhlIGl0ZXJhdG9yIGlzIG5vIGxvbmdlclxuJiM0MztcdCAqIHRyYWNrZWQgYXMgaXRlcmF0b3Igc3RhdGUgb25jZSBkZXN0cm95KCkgcmV0dXJucywgc28gaXRzIGNvbnRlbnRzIGRvXG4mIzQzO1x0ICogbm90IG1hdHRlci4gVGhlIHZlcmlmaWVyIGlubGluZXMgdGhpcyBjYWxsIGF3YXkgZW50aXJlbHkuXG4mIzQzO1x0ICovXG4gfVxuIFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCBlNmYzNWY0ZTcxNWI2Li4zNmYzZTgwZDJmMGI5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xOTc3Myw2ICYjNDM7MTk3NzMsODMgQEAgc3RhdGljIHZvaWQgX19maXh1cF9jb2xsZWN0aW9uX2luc2VydF9rZnVuYyhzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuIFx0KmNudCA9IDQ7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25ldygpLiBSMSBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgaXRlcmF0b3IsIFIyIGFuZCBSMyBob2xkIHRoZSAoaW50KVxuJiM0MzsgKiBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9uZXcoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcbiYjNDM7e1xuJiM0MztcdGludCBpID0gMDtcbiYjNDM7XG4mIzQzO1x0LyogaWYgKHN0YXJ0IFx1MDAzZSBlbmQpIGdvdG8gZWludmFsOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR1QsIEJQRl9SRUdfMiwgQlBGX1JFR18zLCA4KTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHN0YXJ0IFx1MDAzYz0gZW5kIGhlcmUsIHNvIHRoZSByYW5nZSBlbmQgLSBzdGFydCBmaXRzIGluIGEgdTMyOyBjb21wdXRlIGl0IGFzIGEgMzItYml0XG4mIzQzO1x0ICogc3VidHJhY3Rpb24gdGhhdCB6ZXJvLWV4dGVuZHMgaW50byByMCBhbmQgcmFuZ2UtY2hlY2sgaXQgYXMgdW5zaWduZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjMyX1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMyk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX1JFRyhCUEZfU1VCLCBCUEZfUkVHXzAsIEJQRl9SRUdfMik7XG4mIzQzO1x0LyogaWYgKHIwIFx1MDAzZSBCUEZfTUFYX0xPT1BTKSBnb3RvIGUyYmlnOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfSU1NKEJQRl9KR1QsIEJQRl9SRUdfMCwgQlBGX01BWF9MT09QUywgOCk7XG4mIzQzO1x0Lyogcy1cdTAwM2VjdXIgPSBzdGFydCAtIDE7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApO1xuJiM0MztcdC8qIHMtXHUwMDNlZW5kID0gZW5kOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7XG4mIzQzO1x0LyogcmV0dXJuIDA7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSg1KTtcbiYjNDM7XHQvKiBlaW52YWw6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9BKDIpO1xuJiM0MztcdC8qIGUyYmlnOiBzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDsgcmV0dXJuIC1FMkJJRzsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUUyQklHKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fbmV4dCgpLiBSMSBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgaXRlcmF0b3IuIEtlZXAgaW4gc3luYyB3aXRoIHRoZVxuJiM0MzsgKiBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGkgPSAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHMtXHUwMDNlY3VyIGFuZCBzLVx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMmIzM5O3Mgcy1cdTAwM2VjdXIgJiM0MzsgMSBcdTAwM2U9IHMtXHUwMDNlZW5kIGNoZWNrIGlzIGEgc2lnbmVkIDMyLWJpdFxuJiM0MztcdCAqIGNvbXBhcmlzb24gb2YgKHMtXHUwMDNlY3VyICYjNDM7IDEpIGFnYWluc3Qgcy1cdTAwM2VlbmQgYW5kIG5lZWRzIG5vIHNpZ24gZXh0ZW5zaW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzAsIDEpO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzIsIEJQRl9SRUdfMSwgNCk7XG4mIzQzO1x0LyogaWYgKChzMzIpKHMtXHUwMDNlY3VyICYjNDM7IDEpIFx1MDAzZT0gKHMzMilzLVx1MDAzZWVuZCkgZ290byBkb25lOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR0UsIEJQRl9SRUdfMCwgQlBGX1JFR18yLCAzKTtcbiYjNDM7XHQvKiBzLVx1MDAzZWN1ciYjNDM7JiM0Mzs7IHJldHVybiBcdTAwMjZzLVx1MDAzZWN1cjsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzAsIDApO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSgyKTtcbiYjNDM7XHQvKiBkb25lOiBzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDsgcmV0dXJuIE5VTEw7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogSW5saW5lIGJwZl9pdGVyX251bV9kZXN0cm95KCkuIFRoZSBzdGFjayBzbG90IGlzIG5vIGxvbmdlciB0cmFja2VkIGFzIGl0ZXJhdG9yIHN0YXRlIGFmdGVyXG4mIzQzOyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luY1xuJiM0MzsgKiB3aXRoIHRoZSBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuJiM0Mzt7XG4mIzQzO1x0aW5zbl9idWZbMF0gPSBCUEZfSk1QX0EoMCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcbiB7XG5AQCAtMTk5MDIsNiAmIzQzOzE5OTc5LDEyIEBAIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdGluc25fYnVmWzRdID0gQlBGX0FMVTY0X1JFRyhCUEZfU1VCLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSk7XG4gXHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfTkVHLCBCUEZfUkVHXzAsIDApO1xuIFx0XHQqY250ID0gNjtcbiYjNDM7XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcbiYjNDM7XHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XG4mIzQzO1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXh0XSkge1xuJiM0MztcdFx0KmNudCA9IGlubGluZV9icGZfaXRlcl9udW1fbmV4dChpbnNuX2J1Zik7XG4mIzQzO1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xuJiM0MztcdFx0KmNudCA9IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShpbnNuX2J1Zik7XG4gXHR9XG4gXG4gXHRpZiAoZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmFyZ19wcm9nKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5pbmRleCA1NWQzOTQ0Mzg3MDVhLi4zMTc0YzJmMThlNzE1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC05NjUsNiAmIzQzOzk2NSw3IEBAICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbiBcdFx0XHQgICAgJChPVVRQVVQpL3BlcmZidWZfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubzogJChPVVRQVVQpL2Jsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubzogJChPVVRQVVQpL2JwZl9sb29wX2JlbmNoLnNrZWwuaFxuJiM0MzskKE9VVFBVVCkvYmVuY2hfYnBmX2Zvci5vOiAkKE9VVFBVVCkvYnBmX2Zvcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm86ICQoT1VUUFVUKS9sb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxuQEAgLTk5MCw2ICYjNDM7OTkxLDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5pbmRleCAzZDlkMmNkNzc2NGJkLi5iODZiNzM0NTZkM2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5AQCAtMjc2LDYgJiM0MzsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfcmluZ2J1ZnNfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfYmxvb21fbWFwX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XG4mIzQzO2V4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2xvY2FsX3N0b3JhZ2VfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfc3RybmNtcF9hcmdwO1xuQEAgLTI5Miw2ICYjNDM7MjkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX2NoaWxkIGJlbmNoX3BhcnNlcnNbXSA9IHtcbiBcdHsgXHUwMDI2YmVuY2hfcmluZ2J1ZnNfYXJncCwgMCwgXCYjMzQ7UmluZyBidWZmZXJzIGJlbmNobWFya1wmIzM0OywgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9ibG9vbV9tYXBfYXJncCwgMCwgXCYjMzQ7Qmxvb20gZmlsdGVyIG1hcCBiZW5jaG1hcmtcJiMzNDssIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgXCYjMzQ7YnBmX2xvb3AgaGVscGVyIGJlbmNobWFya1wmIzM0OywgMCB9LFxuJiM0MztcdHsgXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLCAwLCBcJiMzNDticGZfZm9yIGxvb3AgYmVuY2htYXJrXCYjMzQ7LCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfYXJncCwgMCwgXCYjMzQ7bG9jYWxfc3RvcmFnZSBiZW5jaG1hcmtcJiMzNDssIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfc3RybmNtcF9hcmdwLCAwLCBcJiMzNDticGZfc3RybmNtcCBoZWxwZXIgYmVuY2htYXJrXCYjMzQ7LCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2FyZ3AsIDAsXG5AQCAtNTU3LDYgJiM0Mzs1NTksNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2Jsb29tX2ZhbHNlX3Bvc2l0aXZlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2xvb3A7XG4mIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvcjtcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfbm9faGVscGVyO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfc3RybmNtcF9oZWxwZXI7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZTtcbkBAIC02NDAsNiAmIzQzOzY0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0ge1xuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfYnBmX2xvb3AsXG4mIzQzO1x0XHUwMDI2YmVuY2hfYnBmX2ZvcixcbiBcdFx1MDAyNmJlbmNoX3N0cm5jbXBfbm9faGVscGVyLFxuIFx0XHUwMDI2YmVuY2hfc3RybmNtcF9oZWxwZXIsXG4gXHRcdTAwMjZiZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzMwYzUxYWQyZGVjM1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcbkBAIC0wLDAgJiM0MzsxLDEwNCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YmVuY2guaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfZm9yX2JlbmNoLnNrZWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7LyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGN0eCB7XG4mIzQzO1x0c3RydWN0IGJwZl9mb3JfYmVuY2ggKnNrZWw7XG4mIzQzO30gY3R4O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCB7XG4mIzQzO1x0X191MzIgbnJfbG9vcHM7XG4mIzQzO30gYXJncyA9IHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIERlZmF1bHQgdG8gYSBsYXJnZSBsb29wIGNvdW50IHNvIHRoZSBwZXItaXRlcmF0aW9uIGJwZl9pdGVyX251bV9uZXh0KCkgY29zdCBkb21pbmF0ZXNcbiYjNDM7XHQgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0Lm5yX2xvb3BzID0gMTAwMCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO2VudW0ge1xuJiM0MztcdEFSR19OUl9MT09QUyA9IDQwMDAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiYjNDM7XHR7IFwmIzM0O25yX2xvb3BzXCYjMzQ7LCBBUkdfTlJfTE9PUFMsIFwmIzM0O25yX2xvb3BzXCYjMzQ7LCAwLFxuJiM0MztcdFx0XCYjMzQ7U2V0IG51bWJlciBvZiBpdGVyYXRpb25zIGZvciB0aGUgYnBmX2ZvcigpIGxvb3BcJiMzNDt9LFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChrZXkpIHtcbiYjNDM7XHRjYXNlIEFSR19OUl9MT09QUzpcbiYjNDM7XHRcdGFyZ3MubnJfbG9vcHMgPSBzdHJ0b2woYXJnLCBOVUxMLCAxMCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogZXhwb3J0ZWQgaW50byBiZW5jaG1hcmsgcnVubmVyICovXG4mIzQzO2NvbnN0IHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncCA9IHtcbiYjNDM7XHQub3B0aW9ucyA9IG9wdHMsXG4mIzQzO1x0LnBhcnNlciA9IHBhcnNlX2FyZyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHJ1ZSlcbiYjNDM7XHRcdC8qIHRyaWdnZXIgdGhlIGJwZiBwcm9ncmFtICovXG4mIzQzO1x0XHRzeXNjYWxsKF9fTlJfZ2V0cGdpZCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcbiYjNDM7e1xuJiM0MztcdHJlcy1cdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXHUwMDI2Y3R4LnNrZWwtXHUwMDNlYnNzLVx1MDAzZWhpdHMsIDApO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRzZXR1cF9saWJicGYoKTtcbiYjNDM7XG4mIzQzO1x0Y3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFjdHguc2tlbCkge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2ZhaWxlZCB0byBvcGVuIHNrZWxldG9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChjdHguc2tlbC1cdTAwM2Vwcm9ncy5iZW5jaG1hcmspO1xuJiM0MztcdGlmICghbGluaykge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2ZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcXG5cJiMzNDspO1xuJiM0MztcdFx0ZXhpdCgxKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7YnBmLWZvclwmIzM0OyxcbiYjNDM7XHQuYXJncCA9IFx1MDAyNmJlbmNoX2JwZl9mb3JfYXJncCxcbiYjNDM7XHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcbiYjNDM7XHQuc2V0dXAgPSBzZXR1cCxcbiYjNDM7XHQucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsXG4mIzQzO1x0Lm1lYXN1cmUgPSBtZWFzdXJlLFxuJiM0MztcdC5yZXBvcnRfcHJvZ3Jlc3MgPSBvcHNfcmVwb3J0X3Byb2dyZXNzLFxuJiM0MztcdC5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLFxuJiM0Mzt9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvcnVuX2JlbmNoX2JwZl9mb3Iuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uN2RhNjQ1MzkyMGRhYlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxuQEAgLTAsMCAmIzQzOzEsMTUgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7c291cmNlIC4vYmVuY2hzL3J1bl9jb21tb24uc2hcbiYjNDM7XG4mIzQzO3NldCAtZXVmbyBwaXBlZmFpbFxuJiM0MztcbiYjNDM7Zm9yIHQgaW4gMSA0IDggMTIgMTY7IGRvXG4mIzQzO2ZvciBpIGluIDEwIDEwMCA1MDAgMTAwMCA1MDAwIDEwMDAwIDUwMDAwIDEwMDAwMCA1MDAwMDAgMTAwMDAwMDsgZG9cbiYjNDM7c3VidGl0bGUgXCYjMzQ7bnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdFwmIzM0O1xuJiM0MztcdHN1bW1hcml6ZV9vcHMgXCYjMzQ7YnBmX2ZvcjogXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIFwmIzM0OyQoJFJVTl9CRU5DSCAtcCAkdCAtLW5yX2xvb3BzICRpIGJwZi1mb3IpXCYjMzQ7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1xcblwmIzM0O1xuJiM0Mztkb25lXG4mIzQzO2RvbmVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmY5YzcyMzA1MWZjNzRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfZm9yX2JlbmNoLmNcbkBAIC0wLDAgJiM0MzsxLDMyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtbGludXguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IG5yX2xvb3BzO1xuJiM0Mztsb25nIGhpdHM7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbXB0eSBib2R5OiB0aGUgd29yayBiZWluZyBtZWFzdXJlZCBpcyB0aGUgb3Blbi1jb2RlZCBudW1lcmljIGl0ZXJhdG9yIGl0c2VsZlxuJiM0MztcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRicGZfZm9yKGksIDAsIG5yX2xvb3BzKVxuJiM0MztcdFx0O1xuJiM0MztcdF9fc3luY19hZGRfYW5kX2ZldGNoKFx1MDAyNmhpdHMsIG5yX2xvb3BzKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9cJiMzNDsgU1lTX1BSRUZJWCBcJiMzNDtzeXNfZ2V0cGdpZFwmIzM0OylcbiYjNDM7aW50IGJlbmNobWFyayh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDBmYTcwYjEzM2Q5MzIuLjYyZDdkZjllODBiZWIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC04OCw2ICYjNDM7ODgsODkgQEAgaW50IGl0ZXJfZXJyX3Vuc2FmZV9hc21fbG9vcChjb25zdCB2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIE5ha2VkIGZ1bmN0aW9uLCBzbyB0aGVyZSBpcyBubyBjb21waWxlci1nZW5lcmF0ZWQgZ2x1ZSBhbmQgdGhlIHdob2xlIGlubGluZWQgcHJvZ3JhbSBjYW4gYmVcbiYjNDM7ICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxuJiM0MzsgKiAoYnBmX2ppdF9uZWVkc196ZXh0KCkgPT0gZmFsc2UpOyBvbiBhcmNoZXMgdGhhdCBuZWVkIGV4cGxpY2l0IHplcm8tZXh0ZW5zaW9uIHRoZSB2ZXJpZmllclxuJiM0MzsgKiBpbnRlcmxlYXZlcyBcJiMzNDt3TiA9IHdOXCYjMzQ7IGluc25zIGFuZCB0aGUgZml4ZWQgc2hhcGUgYmVsb3cgd291bGQgbm90IG1hdGNoLiBUaGUgaW5saW5pbmcgaXRzZWxmIGlzXG4mIzQzOyAqIGFyY2ggaW5kZXBlbmRlbnQsIHNvIGNoZWNraW5nIGl0IG9uIHRoZXNlIGFyY2hlcyBpcyBzdWZmaWNpZW50LlxuJiM0MzsgKlxuJiM0MzsgKiBicGZfaXRlcl9udW1fbmV3KCkgZW1pdHMgdGhlIGZ1bGwgcmFuZ2UgY2hlY2sgKGRpc3RhbmNlIGNvbXB1dGF0aW9uIGFuZCBib3RoIHRoZSAtRUlOVkFMIGFuZFxuJiM0MzsgKiAtRTJCSUcgZXJyb3IgcGF0aHMpOyBicGZfaXRlcl9udW1fbmV4dCgpIGFuZCBicGZfaXRlcl9udW1fZGVzdHJveSgpIGFyZSBpbmxpbmVkIHRvby5cbiYjNDM7ICovXG4mIzQzO1NFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4mIzQzO19fYXJjaF94ODZfNjRcbiYjNDM7X19hcmNoX2FybTY0XG4mIzQzO19fc3VjY2Vzc1xuJiM0MztfX3hsYXRlZChcJiMzNDtyNiA9IHIxMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7cjYgJiM0Mzs9IC04XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtjYWxsIHVua25vd25cJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IzID0gcjBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IzIFx1MDAyNj0gNjU1MzVcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IyID0gMFwmIzM0OylcbiYjNDM7LyogYnBmX2l0ZXJfbnVtX25ldyhcdTAwMjZpdCwgMCwgXHUwMDNjbm9uLWNvbnN0XHUwMDNlKSB3aXRoIHRoZSByYW5nZSBjaGVjayBrZXB0ICovXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHcyIHNcdTAwM2UgdzMgZ290byBwYyYjNDM7OFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7dzAgPSB3M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7dzAgLT0gdzJcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHIwIFx1MDAzZSAweDgwMDAwMCBnb3RvIHBjJiM0Mzs4XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDt3MiAmIzQzOz0gLTFcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTMyICopKHIxICYjNDM7MCkgPSByMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1MzIgKikocjEgJiM0Mzs0KSA9IHIzXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2dvdG8gcGMmIzQzOzVcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTY0ICopKHIxICYjNDM7MCkgPSAwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9IC0yMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Z290byBwYyYjNDM7MlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gLTdcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzOy8qIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KSAqL1xuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9ICoodTMyICopKHIxICYjNDM7MClcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3cwICYjNDM7PSAxXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMiA9ICoodTMyICopKHIxICYjNDM7NClcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHcwIHNcdTAwM2U9IHcyIGdvdG8gcGMmIzQzOzNcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTMyICopKHIxICYjNDM7MCkgPSByMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7cjAgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Z290byBwYyYjNDM7MlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7aWYgcjAgIT0gMHgwIGdvdG8gcGMtMTFcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzOy8qIGJwZl9pdGVyX251bV9kZXN0cm95KFx1MDAyNml0KSBpcyBpbmxpbmVkIHRvIGEgbm9wICovXG4mIzQzO19feGxhdGVkKFwmIzM0O2dvdG8gcGMmIzQzOzBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ZXhpdFwmIzM0OylcbiYjNDM7aW50IF9fbmFrZWQgaXRlcl9udW1fbmV3X2lubGluZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHQvKiByNiBwb2ludHMgdG8gc3RydWN0IGJwZl9pdGVyX251bSBvbiB0aGUgc3RhY2sgKi9cbiYjNDM7XHRcdFwmIzM0O3I2ID0gcjEwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjYgJiM0Mzs9IC04O1wmIzM0O1xuJiM0MztcdFx0Lyogbm9uLWNvbnN0YW50IGVuZCBzbyB0aGUgcmFuZ2UgY2hlY2tzIGFyZSBrZXB0ICovXG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMyA9IHIwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjMgXHUwMDI2PSAweGZmZmY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMSA9IHI2O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjIgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXddO1wmIzM0O1xuJiM0MztcdFwmIzM0OzE6XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMSA9IHI2O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2lmIHIwICE9IDAgZ290byAxYjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IxID0gcjY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjAgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHRcdDpcbiYjNDM7XHRcdDogX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMiksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfaXRlcl9udW1fbmV4dCksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9kZXN0cm95KVxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcJiMzNDtyNlwmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX3N1Y2Nlc3NcbiBpbnQgaXRlcl93aGlsZV9sb29wKGNvbnN0IHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE2NTkwYzgyMWU3MWU0M2Y3YjZjOTJmYjQ2ODMwMWYzNjc0MmE3ZWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNDozODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnBmX2l0ZXIuYyBiL2tlcm5lbC9icGYvYnBmX2l0ZXIuYwppbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2JwZl9pdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfaXRlci5jCkBAIC04MDIsMTIgJiM0Mzs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdCkKIHsKIAlzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0OwogCi0JLyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTsKLQkgKiBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgb3ZlcmZsb3csIHNvIGNvbnZlcnQgdG8gczY0IGZvciBjaGVja3MsCi0JICogZS5nLiwgaWYgcy0mZ3Q7Y3VyID09IHMtJmd0O2VuZCA9PSBJTlRfTUFYLCB3ZSBjYW4mIzM5O3QganVzdCBkbwotCSAqIHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZAomIzQzOwkvKiBEZXRlY3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIG9yIGEgZmFpbGVkL2VtcHR5IGl0ZXJhdG9yOiBhbGwgb2YgdGhlc2UKJiM0MzsJICogbGVhdmUgcy0mZ3Q7Y3VyICYjNDM7IDEgJmd0Oz0gcy0mZ3Q7ZW5kLiBicGZfaXRlcl9udW1fbmV3KCkgc2V0IHMtJmd0O2N1ciB0byBzdGFydCAtIDEKJiM0MzsJICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtJmd0O2N1ciAmIzQzOyAxIGJlbG93CiYjNDM7CSAqIGlzIGEgZGVsaWJlcmF0ZSAzMi1iaXQgd3JhcGFyb3VuZCB0aGF0IHJlY292ZXJzIHN0YXJ0LiBBcyBzLSZndDtjdXIgYW5kCiYjNDM7CSAqIHMtJmd0O2VuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0CiYjNDM7CSAqIHRoZSBpbmxpbmVkIGJwZl9pdGVyX251bV9uZXh0KCkgZW1pdHMuCiAJICovCi0JaWYgKChzNjQpKHMtJmd0O2N1ciAmIzQzOyAxKSAmZ3Q7PSBzLSZndDtlbmQpIHsKJiM0MzsJaWYgKHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZCkgewogCQlzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOwogCQlyZXR1cm4gTlVMTDsKIAl9CkBAIC04MTksOSAmIzQzOzgyMSwxMSBAQCBfX2JwZl9rZnVuYyBpbnQgKmJwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaXRlcl9udW0qIGl0KQogCiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KQogewotCXN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7Ci0KLQlzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOwomIzQzOwkvKgomIzQzOwkgKiBOb3RoaW5nIHRvIGRvOiB0aGUgc3RhY2sgc2xvdCBiYWNraW5nIHRoZSBpdGVyYXRvciBpcyBubyBsb25nZXIKJiM0MzsJICogdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBvbmNlIGRlc3Ryb3koKSByZXR1cm5zLCBzbyBpdHMgY29udGVudHMgZG8KJiM0MzsJICogbm90IG1hdHRlci4gVGhlIHZlcmlmaWVyIGlubGluZXMgdGhpcyBjYWxsIGF3YXkgZW50aXJlbHkuCiYjNDM7CSAqLwogfQogCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGU2ZjM1ZjRlNzE1YjYuLjM2ZjNlODBkMmYwYjkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5NzczLDYgJiM0MzsxOTc3Myw4MyBAQCBzdGF0aWMgdm9pZCBfX2ZpeHVwX2NvbGxlY3Rpb25faW5zZXJ0X2tmdW5jKHN0cnVjdCBicGZfaW5zbl9hdXhfZGF0YSAqaW5zbl9hdXgsCiAJKmNudCA9IDQ7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fbmV3KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvciwgUjIgYW5kIFIzIGhvbGQgdGhlIChpbnQpCiYjNDM7ICogc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKQomIzQzO3sKJiM0MzsJaW50IGkgPSAwOwomIzQzOwomIzQzOwkvKiBpZiAoc3RhcnQgJmd0OyBlbmQpIGdvdG8gZWludmFsOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dULCBCUEZfUkVHXzIsIEJQRl9SRUdfMywgOCk7CiYjNDM7CS8qCiYjNDM7CSAqIHN0YXJ0ICZsdDs9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdAomIzQzOwkgKiBzdWJ0cmFjdGlvbiB0aGF0IHplcm8tZXh0ZW5kcyBpbnRvIHIwIGFuZCByYW5nZS1jaGVjayBpdCBhcyB1bnNpZ25lZC4KJiM0MzsJICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1YzMl9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzMpOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfQUxVMzJfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18yKTsKJiM0MzsJLyogaWYgKHIwICZndDsgQlBGX01BWF9MT09QUykgZ290byBlMmJpZzsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9JTU0oQlBGX0pHVCwgQlBGX1JFR18wLCBCUEZfTUFYX0xPT1BTLCA4KTsKJiM0MzsJLyogcy0mZ3Q7Y3VyID0gc3RhcnQgLSAxOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfQUxVMzJfSU1NKEJQRl9BREQsIEJQRl9SRUdfMiwgLTEpOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApOwomIzQzOwkvKiBzLSZndDtlbmQgPSBlbmQ7ICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7CiYjNDM7CS8qIHJldHVybiAwOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSg1KTsKJiM0MzsJLyogZWludmFsOiBzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRUlOVkFMKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9BKDIpOwomIzQzOwkvKiBlMmJpZzogcy0mZ3Q7Y3VyID0gcy0mZ3Q7ZW5kID0gMDsgcmV0dXJuIC1FMkJJRzsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRTJCSUcpOwomIzQzOwomIzQzOwlyZXR1cm4gaTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25leHQoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLiBLZWVwIGluIHN5bmMgd2l0aCB0aGUKJiM0MzsgKiBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZikKJiM0Mzt7CiYjNDM7CWludCBpID0gMDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogcy0mZ3Q7Y3VyIGFuZCBzLSZndDtlbmQgYXJlIGludCwgc28gdGhlIGtmdW5jJiMzOTtzIHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXQKJiM0MzsJICogY29tcGFyaXNvbiBvZiAocy0mZ3Q7Y3VyICYjNDM7IDEpIGFnYWluc3Qgcy0mZ3Q7ZW5kIGFuZCBuZWVkcyBubyBzaWduIGV4dGVuc2lvbi4KJiM0MzsJICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9BTFUzMl9JTU0oQlBGX0FERCwgQlBGX1JFR18wLCAxKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0xEWF9NRU0oQlBGX1csIEJQRl9SRUdfMiwgQlBGX1JFR18xLCA0KTsKJiM0MzsJLyogaWYgKChzMzIpKHMtJmd0O2N1ciAmIzQzOyAxKSAmZ3Q7PSAoczMyKXMtJmd0O2VuZCkgZ290byBkb25lOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dFLCBCUEZfUkVHXzAsIEJQRl9SRUdfMiwgMyk7CiYjNDM7CS8qIHMtJmd0O2N1ciYjNDM7JiM0Mzs7IHJldHVybiAmYW1wO3MtJmd0O2N1cjsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18wLCAwKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMSk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSgyKTsKJiM0MzsJLyogZG9uZTogcy0mZ3Q7Y3VyID0gcy0mZ3Q7ZW5kID0gMDsgcmV0dXJuIE5VTEw7ICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCk7CiYjNDM7CiYjNDM7CXJldHVybiBpOwomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlcgomIzQzOyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luYwomIzQzOyAqIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKQomIzQzO3sKJiM0MzsJaW5zbl9idWZbMF0gPSBCUEZfSk1QX0EoMCk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJCSAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudCkKIHsKQEAgLTE5OTAyLDYgJiM0MzsxOTk3OSwxMiBAQCBpbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLAogCQlpbnNuX2J1Zls0XSA9IEJQRl9BTFU2NF9SRUcoQlBGX1NVQiwgQlBGX1JFR18wLCBCUEZfUkVHXzEpOwogCQlpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX05FRywgQlBGX1JFR18wLCAwKTsKIAkJKmNudCA9IDY7CiYjNDM7CX0gZWxzZSBpZiAoZGVzYy0mZ3Q7ZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHsKJiM0MzsJCSpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7CiYjNDM7CX0gZWxzZSBpZiAoZGVzYy0mZ3Q7ZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7CiYjNDM7CQkqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9uZXh0KGluc25fYnVmKTsKJiM0MzsJfSBlbHNlIGlmIChkZXNjLSZndDtmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fZGVzdHJveV0pIHsKJiM0MzsJCSpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koaW5zbl9idWYpOwogCX0KIAogCWlmIChlbnYtJmd0O2luc25fYXV4X2RhdGFbaW5zbl9pZHhdLmFyZ19wcm9nKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggNTVkMzk0NDM4NzA1YS4uMzE3NGMyZjE4ZTcxNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQpAQCAtOTY1LDYgJiM0Mzs5NjUsNyBAQCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFwKIAkJCSAgICAkKE9VVFBVVCkvcGVyZmJ1Zl9iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubzogJChPVVRQVVQpL2JwZl9sb29wX2JlbmNoLnNrZWwuaAomIzQzOyQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm86ICQoT1VUUFVUKS9icGZfZm9yX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubzogJChPVVRQVVQpL3N0cm5jbXBfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubzogJChPVVRQVVQpL2xvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oCkBAIC05OTAsNiAmIzQzOzk5MSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcCiYjNDM7CQkgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwppbmRleCAzZDlkMmNkNzc2NGJkLi5iODZiNzM0NTZkM2NhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwpAQCAtMjc2LDYgJiM0MzsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9yaW5nYnVmc19hcmdwOwogZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2Jsb29tX21hcF9hcmdwOwogZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7CiYjNDM7ZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncDsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3A7CiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncDsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9zdHJuY21wX2FyZ3A7CkBAIC0yOTIsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9jaGlsZCBiZW5jaF9wYXJzZXJzW10gPSB7CiAJeyAmYW1wO2JlbmNoX3JpbmdidWZzX2FyZ3AsIDAsICYjMzQ7UmluZyBidWZmZXJzIGJlbmNobWFyayYjMzQ7LCAwIH0sCiAJeyAmYW1wO2JlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCAmIzM0O0Jsb29tIGZpbHRlciBtYXAgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgJiMzNDticGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrJiMzNDssIDAgfSwKJiM0MzsJeyAmYW1wO2JlbmNoX2JwZl9mb3JfYXJncCwgMCwgJiMzNDticGZfZm9yIGxvb3AgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfbG9jYWxfc3RvcmFnZV9hcmdwLCAwLCAmIzM0O2xvY2FsX3N0b3JhZ2UgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfc3RybmNtcF9hcmdwLCAwLCAmIzM0O2JwZl9zdHJuY21wIGhlbHBlciBiZW5jaG1hcmsmIzM0OywgMCB9LAogCXsgJmFtcDtiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwLCAwLApAQCAtNTU3LDYgJiM0Mzs1NTksNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2Jsb29tX2ZhbHNlX3Bvc2l0aXZlOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb207CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2hhc2htYXBfd2l0aF9ibG9vbTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2xvb3A7CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9zdHJuY21wX25vX2hlbHBlcjsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfc3RybmNtcF9oZWxwZXI7CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlOwpAQCAtNjQwLDYgJiM0Mzs2NDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHsKIAkmYW1wO2JlbmNoX2hhc2htYXBfd2l0aG91dF9ibG9vbSwKIAkmYW1wO2JlbmNoX2hhc2htYXBfd2l0aF9ibG9vbSwKIAkmYW1wO2JlbmNoX2JwZl9sb29wLAomIzQzOwkmYW1wO2JlbmNoX2JwZl9mb3IsCiAJJmFtcDtiZW5jaF9zdHJuY21wX25vX2hlbHBlciwKIAkmYW1wO2JlbmNoX3N0cm5jbXBfaGVscGVyLAogCSZhbXA7YmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUsCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjczMGM1MWFkMmRlYzMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYwpAQCAtMCwwICYjNDM7MSwxMDQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7YXJncC5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YmVuY2guaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfZm9yX2JlbmNoLnNrZWwuaCYjMzQ7CiYjNDM7CiYjNDM7LyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqLwomIzQzO3N0YXRpYyBzdHJ1Y3QgY3R4IHsKJiM0MzsJc3RydWN0IGJwZl9mb3JfYmVuY2ggKnNrZWw7CiYjNDM7fSBjdHg7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCB7CiYjNDM7CV9fdTMyIG5yX2xvb3BzOwomIzQzO30gYXJncyA9IHsKJiM0MzsJLyoKJiM0MzsJICogRGVmYXVsdCB0byBhIGxhcmdlIGxvb3AgY291bnQgc28gdGhlIHBlci1pdGVyYXRpb24gYnBmX2l0ZXJfbnVtX25leHQoKSBjb3N0IGRvbWluYXRlcwomIzQzOwkgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uCiYjNDM7CSAqLwomIzQzOwkubnJfbG9vcHMgPSAxMDAwLAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB7CiYjNDM7CUFSR19OUl9MT09QUyA9IDQwMDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKJiM0MzsJeyAmIzM0O25yX2xvb3BzJiMzNDssIEFSR19OUl9MT09QUywgJiMzNDtucl9sb29wcyYjMzQ7LCAwLAomIzQzOwkJJiMzNDtTZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBicGZfZm9yKCkgbG9vcCYjMzQ7fSwKJiM0MzsJe30sCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgZXJyb3JfdCBwYXJzZV9hcmcoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGtleSkgewomIzQzOwljYXNlIEFSR19OUl9MT09QUzoKJiM0MzsJCWFyZ3MubnJfbG9vcHMgPSBzdHJ0b2woYXJnLCBOVUxMLCAxMCk7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBBUkdQX0VSUl9VTktOT1dOOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MzsvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi8KJiM0Mztjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3AgPSB7CiYjNDM7CS5vcHRpb25zID0gb3B0cywKJiM0MzsJLnBhcnNlciA9IHBhcnNlX2FyZywKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7CiYjNDM7CQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtiZW5jaG1hcmsgZG9lc24mIzM5O3Qgc3VwcG9ydCBjb25zdW1lciFcbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnByb2R1Y2VyKHZvaWQgKmlucHV0KQomIzQzO3sKJiM0MzsJd2hpbGUgKHRydWUpCiYjNDM7CQkvKiB0cmlnZ2VyIHRoZSBicGYgcHJvZ3JhbSAqLwomIzQzOwkJc3lzY2FsbChfX05SX2dldHBnaWQpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpCiYjNDM7ewomIzQzOwlyZXMtJmd0O2hpdHMgPSBhdG9taWNfc3dhcCgmYW1wO2N0eC5za2VsLSZndDtic3MtJmd0O2hpdHMsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlzZXR1cF9saWJicGYoKTsKJiM0MzsKJiM0MzsJY3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghY3R4LnNrZWwpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O2ZhaWxlZCB0byBvcGVuIHNrZWxldG9uXG4mIzM0Oyk7CiYjNDM7CQlleGl0KDEpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLSZndDtwcm9ncy5iZW5jaG1hcmspOwomIzQzOwlpZiAoIWxpbmspIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O2ZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LnNrZWwtJmd0O2Jzcy0mZ3Q7bnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzOwomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvciA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2JwZi1mb3ImIzM0OywKJiM0MzsJLmFyZ3AgPSAmYW1wO2JlbmNoX2JwZl9mb3JfYXJncCwKJiM0MzsJLnZhbGlkYXRlID0gdmFsaWRhdGUsCiYjNDM7CS5zZXR1cCA9IHNldHVwLAomIzQzOwkucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsCiYjNDM7CS5tZWFzdXJlID0gbWVhc3VyZSwKJiM0MzsJLnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsCiYjNDM7CS5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLAomIzQzO307CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi43ZGE2NDUzOTIwZGFiCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaApAQCAtMCwwICYjNDM7MSwxNSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzO3NvdXJjZSAuL2JlbmNocy9ydW5fY29tbW9uLnNoCiYjNDM7CiYjNDM7c2V0IC1ldWZvIHBpcGVmYWlsCiYjNDM7CiYjNDM7Zm9yIHQgaW4gMSA0IDggMTIgMTY7IGRvCiYjNDM7Zm9yIGkgaW4gMTAgMTAwIDUwMCAxMDAwIDUwMDAgMTAwMDAgNTAwMDAgMTAwMDAwIDUwMDAwMCAxMDAwMDAwOyBkbwomIzQzO3N1YnRpdGxlICYjMzQ7bnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdCYjMzQ7CiYjNDM7CXN1bW1hcml6ZV9vcHMgJiMzNDticGZfZm9yOiAmIzM0OyBcCiYjNDM7CSAgICAmIzM0OyQoJFJVTl9CRU5DSCAtcCAkdCAtLW5yX2xvb3BzICRpIGJwZi1mb3IpJiMzNDsKJiM0MzsJcHJpbnRmICYjMzQ7XG4mIzM0OwomIzQzO2RvbmUKJiM0Mztkb25lCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mOWM3MjMwNTFmYzc0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYwpAQCAtMCwwICYjNDM7MSwzMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CiYjNDM7CiYjNDM7aW50IG5yX2xvb3BzOwomIzQzO2xvbmcgaGl0czsKJiM0MzsKJiM0MztzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRW1wdHkgYm9keTogdGhlIHdvcmsgYmVpbmcgbWVhc3VyZWQgaXMgdGhlIG9wZW4tY29kZWQgbnVtZXJpYyBpdGVyYXRvciBpdHNlbGYKJiM0MzsJICogKGJwZl9pdGVyX251bV9uZXcvbmV4dC9kZXN0cm95IGJlaGluZCBicGZfZm9yKCkpLgomIzQzOwkgKi8KJiM0MzsJYnBmX2ZvcihpLCAwLCBucl9sb29wcykKJiM0MzsJCTsKJiM0MzsJX19zeW5jX2FkZF9hbmRfZmV0Y2goJmFtcDtoaXRzLCBucl9sb29wcyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkvJiMzNDsgU1lTX1BSRUZJWCAmIzM0O3N5c19nZXRwZ2lkJiMzNDspCiYjNDM7aW50IGJlbmNobWFyayh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwppbmRleCAwZmE3MGIxMzNkOTMyLi42MmQ3ZGY5ZTgwYmViIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwpAQCAtODgsNiAmIzQzOzg4LDg5IEBAIGludCBpdGVyX2Vycl91bnNhZmVfYXNtX2xvb3AoY29uc3Qgdm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7LyoKJiM0MzsgKiBOYWtlZCBmdW5jdGlvbiwgc28gdGhlcmUgaXMgbm8gY29tcGlsZXItZ2VuZXJhdGVkIGdsdWUgYW5kIHRoZSB3aG9sZSBpbmxpbmVkIHByb2dyYW0gY2FuIGJlCiYjNDM7ICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseQomIzQzOyAqIChicGZfaml0X25lZWRzX3pleHQoKSA9PSBmYWxzZSk7IG9uIGFyY2hlcyB0aGF0IG5lZWQgZXhwbGljaXQgemVyby1leHRlbnNpb24gdGhlIHZlcmlmaWVyCiYjNDM7ICogaW50ZXJsZWF2ZXMgJiMzNDt3TiA9IHdOJiMzNDsgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXMKJiM0MzsgKiBhcmNoIGluZGVwZW5kZW50LCBzbyBjaGVja2luZyBpdCBvbiB0aGVzZSBhcmNoZXMgaXMgc3VmZmljaWVudC4KJiM0MzsgKgomIzQzOyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kCiYjNDM7ICogLUUyQklHIGVycm9yIHBhdGhzKTsgYnBmX2l0ZXJfbnVtX25leHQoKSBhbmQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koKSBhcmUgaW5saW5lZCB0b28uCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7cmF3X3RwJiMzNDspCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19fYXJjaF9hcm02NAomIzQzO19fc3VjY2VzcwomIzQzO19feGxhdGVkKCYjMzQ7cjYgPSByMTAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3I2ICYjNDM7PSAtOCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Y2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMyA9IHIwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMyAmYW1wOz0gNjU1MzUmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IxID0gcjYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IyID0gMCYjMzQ7KQomIzQzOy8qIGJwZl9pdGVyX251bV9uZXcoJmFtcDtpdCwgMCwgJmx0O25vbi1jb25zdCZndDspIHdpdGggdGhlIHJhbmdlIGNoZWNrIGtlcHQgKi8KJiM0MztfX3hsYXRlZCgmIzM0O2lmIHcyIHMmZ3Q7IHczIGdvdG8gcGMmIzQzOzgmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwID0gdzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwIC09IHcyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtpZiByMCAmZ3Q7IDB4ODAwMDAwIGdvdG8gcGMmIzQzOzgmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cyICYjNDM7PSAtMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Kih1MzIgKikocjEgJiM0MzswKSA9IHIyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHUzMiAqKShyMSAmIzQzOzQpID0gcjMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Z290byBwYyYjNDM7NSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gLTIyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtnb3RvIHBjJiM0MzsyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHU2NCAqKShyMSAmIzQzOzApID0gMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjAgPSAtNyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjEgPSByNiYjMzQ7KQomIzQzOy8qIGJwZl9pdGVyX251bV9uZXh0KCZhbXA7aXQpICovCiYjNDM7X194bGF0ZWQoJiMzNDtyMCA9ICoodTMyICopKHIxICYjNDM7MCkmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwICYjNDM7PSAxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMiA9ICoodTMyICopKHIxICYjNDM7NCkmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2lmIHcwIHMmZ3Q7PSB3MiBnb3RvIHBjJiM0MzszJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHUzMiAqKShyMSAmIzQzOzApID0gcjAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gcjEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2dvdG8gcGMmIzQzOzImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OyoodTY0ICopKHIxICYjNDM7MCkgPSAwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMCA9IDAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2lmIHIwICE9IDB4MCBnb3RvIHBjLTExJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMSA9IHI2JiMzNDspCiYjNDM7LyogYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koJmFtcDtpdCkgaXMgaW5saW5lZCB0byBhIG5vcCAqLwomIzQzO19feGxhdGVkKCYjMzQ7Z290byBwYyYjNDM7MCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjAgPSAwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtleGl0JiMzNDspCiYjNDM7aW50IF9fbmFrZWQgaXRlcl9udW1fbmV3X2lubGluZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkvKiByNiBwb2ludHMgdG8gc3RydWN0IGJwZl9pdGVyX251bSBvbiB0aGUgc3RhY2sgKi8KJiM0MzsJCSYjMzQ7cjYgPSByMTA7JiMzNDsKJiM0MzsJCSYjMzQ7cjYgJiM0Mzs9IC04OyYjMzQ7CiYjNDM7CQkvKiBub24tY29uc3RhbnQgZW5kIHNvIHRoZSByYW5nZSBjaGVja3MgYXJlIGtlcHQgKi8KJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdOyYjMzQ7CiYjNDM7CQkmIzM0O3IzID0gcjA7JiMzNDsKJiM0MzsJCSYjMzQ7cjMgJmFtcDs9IDB4ZmZmZjsmIzM0OwomIzQzOwkJJiMzNDtyMSA9IHI2OyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gMDsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX25ld107JiMzNDsKJiM0MzsJJiMzNDsxOiYjMzQ7CiYjNDM7CQkmIzM0O3IxID0gcjY7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTsmIzM0OwomIzQzOwkJJiMzNDtpZiByMCAhPSAwIGdvdG8gMWI7JiMzNDsKJiM0MzsJCSYjMzQ7cjEgPSByNjsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldOyYjMzQ7CiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CQk6CiYjNDM7CQk6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLAomIzQzOwkJICBfX2ltbShicGZfaXRlcl9udW1fbmV3KSwKJiM0MzsJCSAgX19pbW0oYnBmX2l0ZXJfbnVtX25leHQpLAomIzQzOwkJICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSkKJiM0MzsJCTogX19jbG9iYmVyX2NvbW1vbiwgJiMzNDtyNiYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX3N1Y2Nlc3MKIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdG9yIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG9wdGltaXppbmcgdGhlIEJQRiBpdGVyYXRvciBsb2dpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgc2NhbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEhvd2V2ZXIsIHRoaXMgZ29lcyBkZWVwZXIsIGFzIGl0JiMzOTtzIGFsc28gdG91Y2hpbmcgdGhlIHZlcmlmaWVyIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50cmlndWluZy4gVGhleSYjMzk7cmUgaW5saW5pbmcgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCB3aXRoaW4gdGhlIHZlcmlmaWVyLiBBZGRpbmcgYmVuY2htYXJrcyBhbmQgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGlzIGEgc21hcnQgbW92ZS4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBjaGFuZ2VzIGZpcnN0LiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveWAsIGFuZCB0aGVuIGNhbGxpbmcgdGhlbSBmcm9tIHdpdGhpbiBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgLiBSaWdodCwgc28gdGhpcyByZXBsYWNlcyBrZnVuYyBjYWxscyB3aXRoIGlubGluZSBCUEYgaW5zdHJ1Y3Rpb25zLCBlZmZlY3RpdmVseSBhbHRlcmluZyB0aGUgdmVyaWZpY2F0aW9uIGFuZCBKSVQgcHJvY2Vzcy4gVGhpcyBpcyBnb29kLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNob3VsZCBpbXBhY3QgaG93IEJQRiBwcm9ncmFtcyBhcmUgdmVyaWZpZWQgYW5kIEpJVHRlZCwgc2hpZnRpbmcgZnJvbSBrZnVuYyBjYWxscyB0byBpbmxpbmVkIEJQRiBpbnN0cnVjdGlvbnMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplIGhlcmUgYXJlIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIG9mIGNvdXJzZSB0aGUgb3JpZ2luYWxzIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBoZXJlLCBhcyB0aGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQuCgpMZXQmIzM5O3MgZmluZCBvdXQgaG93IHJlYWNoYWJsZSBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgIGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgQlBGIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBiYXNlIHJlcXVpcmVtZW50LiBUaGVuLCBJIG5lZWQgdG8gc2VhcmNoIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBkaXJlY3RseSBmb3IgdGhhdCBmdW5jdGlvbiB0byBncmFzcCBpdHMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1NC1cdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MzcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQlBGIEZ1bmN0aW9uIENhbGwgRml4LVVwKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cgZm9yIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSSYjMzk7bGwgbmVlZCB0byB1c2Ugc29tZSBjb2RlIG5hdmlnYXRpb24gdG9vbHMsIHByb2JhYmx5IGdyZXAgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoLCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsIHRvIHRyYWNpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBsYXJnZXIgZXhlY3V0aW9uIGNvbnRleHQgaXQgb3BlcmF0ZXMgd2l0aGluLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBCUEYgcHJvY2Vzc2luZyBwaXBlbGluZS4gT25jZSBJIGhhdmUgdGhhdCBsaXN0LCBJIGNhbiBzdGFydCBkaXZpbmcgZGVlcGVyIGludG8gZWFjaCBjYWxsIHNpdGUgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aG9zZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvZml4dXBzLmM9MTQ4MD1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODI1LVx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xua2VybmVsL2JwZi9maXh1cHMuYzoxODI2Olx0XHRcdHJldCA9IGJwZl9maXh1cF9rZnVuY19jYWxsKGVudiwgaW5zbiwgaW5zbl9idWYsIGkgJiM0MzsgZGVsdGEsIFx1MDAyNmNudCk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MjctXHRcdFx0aWYgKHJldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1NC1cdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIEJQRiBGdW5jdGlvbiBDYWxsIEZpeHVwcyoqCgpBbHJpZ2h0LCBzbyBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgIGlzIGJlaW5nIHRyaWdnZXJlZCBmcm9tIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgQlBGIHZlcmlmaWVyLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93LCBzaW5jZSB3ZSBhcmUgZXhhbWluaW5nIEJQRiBpdGVyYXRvcnMsIEkgc2hvdWxkIGNoZWNrIHRoZSBmdW5jdGlvbnMgdXNlZCB3aXRoIGBicGZfaXRlcmAgd2hpY2ggYXJlOiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIHdpdGhpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgd29ya2luZyBhcyBleHBlY3RlZCBvciBpZiB0aGV5IG5lZWQgdG8gYmUgdXBkYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnBmX2l0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2JwZl9pdGVyLmM9NzcwPV9fYnBmX2tmdW5jIGludCBicGZfaXRlcl9udW1fbmV3KHN0cnVjdCBicGZfaXRlcl9udW0gKml0LCBpbnQgc3RhcnQsIGludCBlbmQpXG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTc3Ny1cdC8qIHN0YXJ0ID09IGVuZCBpcyBsZWdpdCwgaXQmIzM5O3MgYW4gZW1wdHkgcmFuZ2UgYW5kIHdlJiMzOTtsbCBqdXN0IGdldCBOVUxMXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6Nzc4Olx0ICogb24gZmlyc3QgKGFuZCBhbnkgc3Vic2VxdWVudCkgYnBmX2l0ZXJfbnVtX25leHQoKSBjYWxsXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzc5LVx0ICovXG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTc5MC1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo3OTE6XHQvKiB1c2VyIHdpbGwgY2FsbCBicGZfaXRlcl9udW1fbmV4dCgpIGZpcnN0LFxua2VybmVsL2JwZi9icGZfaXRlci5jLTc5Mi1cdCAqIHdoaWNoIHdpbGwgc2V0IHMtXHUwMDNlY3VyIHRvIGV4YWN0bHkgc3RhcnQgdmFsdWU7XG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMC1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo4MDE6X19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MDIte1xuLS1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MDktXHQgKiBzLVx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6ODEwOlx0ICogdGhlIGlubGluZWQgYnBmX2l0ZXJfbnVtX25leHQoKSBlbWl0cy5cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MTEtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA2MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdGlvbiBLZnVuYyBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRob3NlIGFzIGtmdW5jcyDigJMga2VybmVsIGZ1bmN0aW9ucyBleHBvc2VkIGZvciB1c2Ugd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgQlBGIGl0ZXJhdGlvbiBvdmVyIG51bWVyaWMgZGF0YS4gR2l2ZW4gdGhhdCwgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIHJlcXVpcmVtZW50IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgbWFrZXMgdGhlIGFiaWxpdHkgdG8gY2FsbCB0aGUga2Z1bmNzIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbXMuCgpOb3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHdvdWxkIGJlIHdpc2UgdG8gc2VlIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgcmVsaWVzIG9uIG90aGVyIEJQRi1yZWxhdGVkIGtlcm5lbCBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZXF1aXJlZC4gVGltZSB0byBkaWcgdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDQ3CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDczMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEl0ZXJhdGlvbiBLZnVuYyBJbmxpbmluZyoqCgpPa2F5LCBzbyBgQlBGX1NZU0NBTExgIGlzIHRoZSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YgaGVyZS4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUgYXJlIHRoZSBzdGF0aWMgaW5saW5lcywgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuCgpJJiMzOTttIGdvaW5nIHRvIGxpc3QgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBhcyB0aGUgZm9jdXMgc3ltYm9sOyBpdCYjMzk7cyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIEkgbmVlZCB0byBhZGQgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIEkgbmVlZCB0byBjb25maXJtIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgYXJlIG5vdCBzdGF0aWMsIGFuZCB0aGV5IGFyZW4mIzM5O3QhCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgZXNzZW50aWFsIGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZToKCiogICBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgCiogICBgYnBmX2l0ZXJfbnVtX25leHRgCiogICBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgCgpUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYCBhbmQgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4KCmBicGZfZml4dXBfa2Z1bmNfY2FsbGAgaXMgY2FsbGVkIGR1cmluZyBldmVyeSBrZnVuYyBjYWxsIGR1cmluZyB2ZXJpZmljYXRpb24uIEl0IGlzIHNwZWNpZmljIHRvIGtmdW5jIGNhbGxzLiBgYnBmX2RvX21pc2NfZml4dXBzYCBpcyB0aGUgY2FsbGVyLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHBhdGNoIGludHJvZHVjZXMgaW5saW5pbmcgZm9yIHRoZSBgYnBmX2l0ZXJfbnVtXypgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBCZWNhdXNlIG9mIHRoaXMsIGl0JiMzOTtzIGltcGFjdGluZyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuCgpIZXJlJiMzOTtzIHRoZSBkYXRhIGZvciB0aGUgdG9vbDoKCioqRm9jdXMgU3ltYm9sczoqKgoKKiAgIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAKKiAgIGBicGZfaXRlcl9udW1fbmV4dGAKKiAgIGBicGZfaXRlcl9udW1fZGVzdHJveWAKCioqQ29uZmlnczoqKgoKKiAgIGBCUEZfU1lTQ0FMTGAKCkZpbmFsbHksIGBicGZfaXRlcl9udW1fbmV4dGAgaXMgYSBrZnVuYywgc28sIGl0IGlzIGNhbGxhYmxlIGZyb20gQlBGIHByb2dyYW1zLiBUaW1lIHRvIHJ1biB0aGlzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM4OjM5LjQ2ODY1OTYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODIwMzk1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ZpeHVwX2tmdW5jX2NhbGxcIixcbiAgICBcImJwZl9pdGVyX251bV9uZXh0XCIsXG4gICAgXCJicGZfaXRlcl9udW1fZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gaW5saW5lIGBicGZfaXRlcl9udW1fbmV3YCwgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAga2Z1bmNzLiBJdCBhbHNvIHVwZGF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIEJQRiB2ZXJpZmllciBhbmQgaXRlcmF0b3IgbG9naWMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODozOS40Njg2NjYzMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzU0NDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE2NTkwYzgyMWU3MWU0M2Y3YjZjOTJmYjQ2ODMwMWYzNjc0MmE3ZWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6Mzg6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXFxuaW5kZXggZjVlYWViMjQ5M2Q0YS4uZmYyMDU1Mzk5ZjNjMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcXG5AQCAtODAyLDEyICs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0O1xcbiBcXG4tXFx0LyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTtcXG4tXFx0ICogbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IG92ZXJmbG93LCBzbyBjb252ZXJ0IHRvIHM2NCBmb3IgY2hlY2tzLFxcbi1cXHQgKiBlLmcuLCBpZiBzLVxcdTAwM2VjdXIgPT0gcy1cXHUwMDNlZW5kID09IElOVF9NQVgsIHdlIGNhbid0IGp1c3QgZG9cXG4tXFx0ICogcy1cXHUwMDNlY3VyICsgMSBcXHUwMDNlPSBzLVxcdTAwM2VlbmRcXG4rXFx0LyogRGV0ZWN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBvciBhIGZhaWxlZC9lbXB0eSBpdGVyYXRvcjogYWxsIG9mIHRoZXNlXFxuK1xcdCAqIGxlYXZlIHMtXFx1MDAzZWN1ciArIDEgXFx1MDAzZT0gcy1cXHUwMDNlZW5kLiBicGZfaXRlcl9udW1fbmV3KCkgc2V0IHMtXFx1MDAzZWN1ciB0byBzdGFydCAtIDFcXG4rXFx0ICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtXFx1MDAzZWN1ciArIDEgYmVsb3dcXG4rXFx0ICogaXMgYSBkZWxpYmVyYXRlIDMyLWJpdCB3cmFwYXJvdW5kIHRoYXQgcmVjb3ZlcnMgc3RhcnQuIEFzIHMtXFx1MDAzZWN1ciBhbmRcXG4rXFx0ICogcy1cXHUwMDNlZW5kIGFyZSBpbnQsIHRoaXMgaXMgYW4gb3JkaW5hcnkgc2lnbmVkIDMyLWJpdCBjb21wYXJlLCBleGFjdGx5IHdoYXRcXG4rXFx0ICogdGhlIGlubGluZWQgYnBmX2l0ZXJfbnVtX25leHQoKSBlbWl0cy5cXG4gXFx0ICovXFxuLVxcdGlmICgoczY0KShzLVxcdTAwM2VjdXIgKyAxKSBcXHUwMDNlPSBzLVxcdTAwM2VlbmQpIHtcXG4rXFx0aWYgKHMtXFx1MDAzZWN1ciArIDEgXFx1MDAzZT0gcy1cXHUwMDNlZW5kKSB7XFxuIFxcdFxcdHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuQEAgLTgxOSw5ICs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcXG4gXFxuIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pdGVyX251bSAqaXQpXFxuIHtcXG4tXFx0c3RydWN0IGJwZl9pdGVyX251bV9rZXJuICpzID0gKHZvaWQgKilpdDtcXG4tXFxuLVxcdHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7XFxuK1xcdC8qXFxuK1xcdCAqIE5vdGhpbmcgdG8gZG86IHRoZSBzdGFjayBzbG90IGJhY2tpbmcgdGhlIGl0ZXJhdG9yIGlzIG5vIGxvbmdlclxcbitcXHQgKiB0cmFja2VkIGFzIGl0ZXJhdG9yIHN0YXRlIG9uY2UgZGVzdHJveSgpIHJldHVybnMsIHNvIGl0cyBjb250ZW50cyBkb1xcbitcXHQgKiBub3QgbWF0dGVyLiBUaGUgdmVyaWZpZXIgaW5saW5lcyB0aGlzIGNhbGwgYXdheSBlbnRpcmVseS5cXG4rXFx0ICovXFxuIH1cXG4gXFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IGU2ZjM1ZjRlNzE1YjYuLjM2ZjNlODBkMmYwYjkgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE5NzczLDYgKzE5NzczLDgzIEBAIHN0YXRpYyB2b2lkIF9fZml4dXBfY29sbGVjdGlvbl9pbnNlcnRfa2Z1bmMoc3RydWN0IGJwZl9pbnNuX2F1eF9kYXRhICppbnNuX2F1eCxcXG4gXFx0KmNudCA9IDQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIElubGluZSBicGZfaXRlcl9udW1fbmV3KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvciwgUjIgYW5kIFIzIGhvbGQgdGhlIChpbnQpXFxuKyAqIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBLZWVwIGluIHN5bmMgd2l0aCB0aGUga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxcbit7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdC8qIGlmIChzdGFydCBcXHUwMDNlIGVuZCkgZ290byBlaW52YWw7ICovXFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dULCBCUEZfUkVHXzIsIEJQRl9SRUdfMywgOCk7XFxuK1xcdC8qXFxuK1xcdCAqIHN0YXJ0IFxcdTAwM2M9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdFxcbitcXHQgKiBzdWJ0cmFjdGlvbiB0aGF0IHplcm8tZXh0ZW5kcyBpbnRvIHIwIGFuZCByYW5nZS1jaGVjayBpdCBhcyB1bnNpZ25lZC5cXG4rXFx0ICovXFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WMzJfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18zKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9BTFUzMl9SRUcoQlBGX1NVQiwgQlBGX1JFR18wLCBCUEZfUkVHXzIpO1xcbitcXHQvKiBpZiAocjAgXFx1MDAzZSBCUEZfTUFYX0xPT1BTKSBnb3RvIGUyYmlnOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9JTU0oQlBGX0pHVCwgQlBGX1JFR18wLCBCUEZfTUFYX0xPT1BTLCA4KTtcXG4rXFx0Lyogcy1cXHUwMDNlY3VyID0gc3RhcnQgLSAxOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMiwgMCk7XFxuK1xcdC8qIHMtXFx1MDAzZWVuZCA9IGVuZDsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7XFxuK1xcdC8qIHJldHVybiAwOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDUpO1xcbitcXHQvKiBlaW52YWw6IHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7IHJldHVybiAtRUlOVkFMOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0EoMik7XFxuK1xcdC8qIGUyYmlnOiBzLVxcdTAwM2VjdXIgPSBzLVxcdTAwM2VlbmQgPSAwOyByZXR1cm4gLUUyQklHOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUUyQklHKTtcXG4rXFxuK1xcdHJldHVybiBpO1xcbit9XFxuK1xcbisvKlxcbisgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25leHQoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLiBLZWVwIGluIHN5bmMgd2l0aCB0aGVcXG4rICoga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4re1xcbitcXHRpbnQgaSA9IDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBzLVxcdTAwM2VjdXIgYW5kIHMtXFx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMncyBzLVxcdTAwM2VjdXIgKyAxIFxcdTAwM2U9IHMtXFx1MDAzZWVuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXRcXG4rXFx0ICogY29tcGFyaXNvbiBvZiAocy1cXHUwMDNlY3VyICsgMSkgYWdhaW5zdCBzLVxcdTAwM2VlbmQgYW5kIG5lZWRzIG5vIHNpZ24gZXh0ZW5zaW9uLlxcbitcXHQgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfQUxVMzJfSU1NKEJQRl9BREQsIEJQRl9SRUdfMCwgMSk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18yLCBCUEZfUkVHXzEsIDQpO1xcbitcXHQvKiBpZiAoKHMzMikocy1cXHUwMDNlY3VyICsgMSkgXFx1MDAzZT0gKHMzMilzLVxcdTAwM2VlbmQpIGdvdG8gZG9uZTsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR0UsIEJQRl9SRUdfMCwgQlBGX1JFR18yLCAzKTtcXG4rXFx0Lyogcy1cXHUwMDNlY3VyKys7IHJldHVybiBcXHUwMDI2cy1cXHUwMDNlY3VyOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18wLCAwKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xcbitcXHQvKiBkb25lOiBzLVxcdTAwM2VjdXIgPSBzLVxcdTAwM2VlbmQgPSAwOyByZXR1cm4gTlVMTDsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xcbitcXG4rXFx0cmV0dXJuIGk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlclxcbisgKiBkZXN0cm95KCksIHNvIG5vdGhpbmcgaGFzIHRvIGJlIGRvbmUgdG8gaXQ7IGVtaXQgYSBub3AganVzdCB0byBkcm9wIHRoZSBjYWxsLiBLZWVwIGluIHN5bmNcXG4rICogd2l0aCB0aGUga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4re1xcbitcXHRpbnNuX2J1ZlswXSA9IEJQRl9KTVBfQSgwKTtcXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbiBpbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbiBcXHRcXHQgICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsIGludCBpbnNuX2lkeCwgaW50ICpjbnQpXFxuIHtcXG5AQCAtMTk5MDIsNiArMTk5NzksMTIgQEAgaW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0aW5zbl9idWZbNF0gPSBCUEZfQUxVNjRfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcXG4gXFx0XFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9ORUcsIEJQRl9SRUdfMCwgMCk7XFxuIFxcdFxcdCpjbnQgPSA2O1xcbitcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddKSB7XFxuK1xcdFxcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XFxuK1xcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxuK1xcdFxcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoaW5zbl9idWYpO1xcbitcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xcbitcXHRcXHQqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KGluc25fYnVmKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0uYXJnX3Byb2cpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuaW5kZXggNTVkMzk0NDM4NzA1YS4uMzE3NGMyZjE4ZTcxNSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5AQCAtOTY1LDYgKzk2NSw3IEBAICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcXFxcbiBcXHRcXHRcXHQgICAgJChPVVRQVVQpL3BlcmZidWZfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vOiAkKE9VVFBVVCkvYnBmX2xvb3BfYmVuY2guc2tlbC5oXFxuKyQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm86ICQoT1VUUFVUKS9icGZfZm9yX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm86ICQoT1VUUFVUKS9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubzogJChPVVRQVVQpL2xvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXFxuQEAgLTk5MCw2ICs5OTEsNyBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcXFxcbitcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuaW5kZXggM2Q5ZDJjZDc3NjRiZC4uYjg2YjczNDU2ZDNjYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuQEAgLTI3Niw2ICsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcXG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX3JpbmdidWZzX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9ibG9vbV9tYXBfYXJncDtcXG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XFxuK2V4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwO1xcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfc3RybmNtcF9hcmdwO1xcbkBAIC0yOTIsNiArMjkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX2NoaWxkIGJlbmNoX3BhcnNlcnNbXSA9IHtcXG4gXFx0eyBcXHUwMDI2YmVuY2hfcmluZ2J1ZnNfYXJncCwgMCwgXFxcIlJpbmcgYnVmZmVycyBiZW5jaG1hcmtcXFwiLCAwIH0sXFxuIFxcdHsgXFx1MDAyNmJlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCBcXFwiQmxvb20gZmlsdGVyIG1hcCBiZW5jaG1hcmtcXFwiLCAwIH0sXFxuIFxcdHsgXFx1MDAyNmJlbmNoX2JwZl9sb29wX2FyZ3AsIDAsIFxcXCJicGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrXFxcIiwgMCB9LFxcbitcXHR7IFxcdTAwMjZiZW5jaF9icGZfZm9yX2FyZ3AsIDAsIFxcXCJicGZfZm9yIGxvb3AgYmVuY2htYXJrXFxcIiwgMCB9LFxcbiBcXHR7IFxcdTAwMjZiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3AsIDAsIFxcXCJsb2NhbF9zdG9yYWdlIGJlbmNobWFya1xcXCIsIDAgfSxcXG4gXFx0eyBcXHUwMDI2YmVuY2hfc3RybmNtcF9hcmdwLCAwLCBcXFwiYnBmX3N0cm5jbXAgaGVscGVyIGJlbmNobWFya1xcXCIsIDAgfSxcXG4gXFx0eyBcXHUwMDI2YmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncCwgMCxcXG5AQCAtNTU3LDYgKzU1OSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYmxvb21fZmFsc2VfcG9zaXRpdmU7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2hhc2htYXBfd2l0aF9ibG9vbTtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfbG9vcDtcXG4rZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfbm9faGVscGVyO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfaGVscGVyO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlO1xcbkBAIC02NDAsNiArNjQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XFxuIFxcdFxcdTAwMjZiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb20sXFxuIFxcdFxcdTAwMjZiZW5jaF9oYXNobWFwX3dpdGhfYmxvb20sXFxuIFxcdFxcdTAwMjZiZW5jaF9icGZfbG9vcCxcXG4rXFx0XFx1MDAyNmJlbmNoX2JwZl9mb3IsXFxuIFxcdFxcdTAwMjZiZW5jaF9zdHJuY21wX25vX2hlbHBlcixcXG4gXFx0XFx1MDAyNmJlbmNoX3N0cm5jbXBfaGVscGVyLFxcbiBcXHRcXHUwMDI2YmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjczMGM1MWFkMmRlYzNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcXG5AQCAtMCwwICsxLDEwNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjYXJncC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYmVuY2guaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9mb3JfYmVuY2guc2tlbC5oXFxcIlxcbitcXG4rLyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqL1xcbitzdGF0aWMgc3RydWN0IGN0eCB7XFxuK1xcdHN0cnVjdCBicGZfZm9yX2JlbmNoICpza2VsO1xcbit9IGN0eDtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qge1xcbitcXHRfX3UzMiBucl9sb29wcztcXG4rfSBhcmdzID0ge1xcbitcXHQvKlxcbitcXHQgKiBEZWZhdWx0IHRvIGEgbGFyZ2UgbG9vcCBjb3VudCBzbyB0aGUgcGVyLWl0ZXJhdGlvbiBicGZfaXRlcl9udW1fbmV4dCgpIGNvc3QgZG9taW5hdGVzXFxuK1xcdCAqIHRoZSBvbmUtdGltZSBicGZfaXRlcl9udW1fbmV3KCkvZGVzdHJveSgpIHNldHVwIGFuZCB0ZWFyZG93bi5cXG4rXFx0ICovXFxuK1xcdC5ucl9sb29wcyA9IDEwMDAsXFxuK307XFxuK1xcbitlbnVtIHtcXG4rXFx0QVJHX05SX0xPT1BTID0gNDAwMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0c1tdID0ge1xcbitcXHR7IFxcXCJucl9sb29wc1xcXCIsIEFSR19OUl9MT09QUywgXFxcIm5yX2xvb3BzXFxcIiwgMCxcXG4rXFx0XFx0XFxcIlNldCBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIGJwZl9mb3IoKSBsb29wXFxcIn0sXFxuK1xcdHt9LFxcbit9O1xcbitcXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN3aXRjaCAoa2V5KSB7XFxuK1xcdGNhc2UgQVJHX05SX0xPT1BTOlxcbitcXHRcXHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi9cXG4rY29uc3Qgc3RydWN0IGFyZ3AgYmVuY2hfYnBmX2Zvcl9hcmdwID0ge1xcbitcXHQub3B0aW9ucyA9IG9wdHMsXFxuK1xcdC5wYXJzZXIgPSBwYXJzZV9hcmcsXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKVxcbit7XFxuK1xcdGlmIChlbnYuY29uc3VtZXJfY250ICE9IDApIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJiZW5jaG1hcmsgZG9lc24ndCBzdXBwb3J0IGNvbnN1bWVyIVxcXFxuXFxcIik7XFxuK1xcdFxcdGV4aXQoMSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgKnByb2R1Y2VyKHZvaWQgKmlucHV0KVxcbit7XFxuK1xcdHdoaWxlICh0cnVlKVxcbitcXHRcXHQvKiB0cmlnZ2VyIHRoZSBicGYgcHJvZ3JhbSAqL1xcbitcXHRcXHRzeXNjYWxsKF9fTlJfZ2V0cGdpZCk7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpXFxuK3tcXG4rXFx0cmVzLVxcdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXFx1MDAyNmN0eC5za2VsLVxcdTAwM2Vic3MtXFx1MDAzZWhpdHMsIDApO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdHNldHVwX2xpYmJwZigpO1xcbitcXG4rXFx0Y3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghY3R4LnNrZWwpIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcXFxuXFxcIik7XFxuK1xcdFxcdGV4aXQoMSk7XFxuK1xcdH1cXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVxcdTAwM2Vwcm9ncy5iZW5jaG1hcmspO1xcbitcXHRpZiAoIWxpbmspIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJmYWlsZWQgdG8gYXR0YWNoIHByb2dyYW0hXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXhpdCgxKTtcXG4rXFx0fVxcbitcXG4rXFx0Y3R4LnNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlbnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzO1xcbit9XFxuK1xcbitjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvciA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwiYnBmLWZvclxcXCIsXFxuK1xcdC5hcmdwID0gXFx1MDAyNmJlbmNoX2JwZl9mb3JfYXJncCxcXG4rXFx0LnZhbGlkYXRlID0gdmFsaWRhdGUsXFxuK1xcdC5zZXR1cCA9IHNldHVwLFxcbitcXHQucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsXFxuK1xcdC5tZWFzdXJlID0gbWVhc3VyZSxcXG4rXFx0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXFxuK1xcdC5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLFxcbit9O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uN2RhNjQ1MzkyMGRhYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoXFxuQEAgLTAsMCArMSwxNSBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbitzb3VyY2UgLi9iZW5jaHMvcnVuX2NvbW1vbi5zaFxcbitcXG4rc2V0IC1ldWZvIHBpcGVmYWlsXFxuK1xcbitmb3IgdCBpbiAxIDQgOCAxMiAxNjsgZG9cXG4rZm9yIGkgaW4gMTAgMTAwIDUwMCAxMDAwIDUwMDAgMTAwMDAgNTAwMDAgMTAwMDAwIDUwMDAwMCAxMDAwMDAwOyBkb1xcbitzdWJ0aXRsZSBcXFwibnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdFxcXCJcXG4rXFx0c3VtbWFyaXplX29wcyBcXFwiYnBmX2ZvcjogXFxcIiBcXFxcXFxuK1xcdCAgICBcXFwiJCgkUlVOX0JFTkNIIC1wICR0IC0tbnJfbG9vcHMgJGkgYnBmLWZvcilcXFwiXFxuK1xcdHByaW50ZiBcXFwiXFxcXG5cXFwiXFxuK2RvbmVcXG4rZG9uZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjljNzIzMDUxZmM3NFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jXFxuQEAgLTAsMCArMSwzMiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuK1xcbitpbnQgbnJfbG9vcHM7XFxuK2xvbmcgaGl0cztcXG4rXFxuK3N0YXRpYyBpbnQgb3V0ZXJfbG9vcChfX3UzMiBpbmRleCwgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVtcHR5IGJvZHk6IHRoZSB3b3JrIGJlaW5nIG1lYXN1cmVkIGlzIHRoZSBvcGVuLWNvZGVkIG51bWVyaWMgaXRlcmF0b3IgaXRzZWxmXFxuK1xcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cXG4rXFx0ICovXFxuK1xcdGJwZl9mb3IoaSwgMCwgbnJfbG9vcHMpXFxuK1xcdFxcdDtcXG4rXFx0X19zeW5jX2FkZF9hbmRfZmV0Y2goXFx1MDAyNmhpdHMsIG5yX2xvb3BzKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiZmVudHJ5L1xcXCIgU1lTX1BSRUZJWCBcXFwic3lzX2dldHBnaWRcXFwiKVxcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcXG4re1xcbitcXHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbmluZGV4IDBmYTcwYjEzM2Q5MzIuLjYyZDdkZjllODBiZWIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbkBAIC04OCw2ICs4OCw4OSBAQCBpbnQgaXRlcl9lcnJfdW5zYWZlX2FzbV9sb29wKGNvbnN0IHZvaWQgKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIE5ha2VkIGZ1bmN0aW9uLCBzbyB0aGVyZSBpcyBubyBjb21waWxlci1nZW5lcmF0ZWQgZ2x1ZSBhbmQgdGhlIHdob2xlIGlubGluZWQgcHJvZ3JhbSBjYW4gYmVcXG4rICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxcbisgKiAoYnBmX2ppdF9uZWVkc196ZXh0KCkgPT0gZmFsc2UpOyBvbiBhcmNoZXMgdGhhdCBuZWVkIGV4cGxpY2l0IHplcm8tZXh0ZW5zaW9uIHRoZSB2ZXJpZmllclxcbisgKiBpbnRlcmxlYXZlcyBcXFwid04gPSB3TlxcXCIgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXNcXG4rICogYXJjaCBpbmRlcGVuZGVudCwgc28gY2hlY2tpbmcgaXQgb24gdGhlc2UgYXJjaGVzIGlzIHN1ZmZpY2llbnQuXFxuKyAqXFxuKyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kXFxuKyAqIC1FMkJJRyBlcnJvciBwYXRocyk7IGJwZl9pdGVyX251bV9uZXh0KCkgYW5kIGJwZl9pdGVyX251bV9kZXN0cm95KCkgYXJlIGlubGluZWQgdG9vLlxcbisgKi9cXG4rU0VDKFxcXCJyYXdfdHBcXFwiKVxcbitfX2FyY2hfeDg2XzY0XFxuK19fYXJjaF9hcm02NFxcbitfX3N1Y2Nlc3NcXG4rX194bGF0ZWQoXFxcInI2ID0gcjEwXFxcIilcXG4rX194bGF0ZWQoXFxcInI2ICs9IC04XFxcIilcXG4rX194bGF0ZWQoXFxcImNhbGwgdW5rbm93blxcXCIpXFxuK19feGxhdGVkKFxcXCJyMyA9IHIwXFxcIilcXG4rX194bGF0ZWQoXFxcInIzIFxcdTAwMjY9IDY1NTM1XFxcIilcXG4rX194bGF0ZWQoXFxcInIxID0gcjZcXFwiKVxcbitfX3hsYXRlZChcXFwicjIgPSAwXFxcIilcXG4rLyogYnBmX2l0ZXJfbnVtX25ldyhcXHUwMDI2aXQsIDAsIFxcdTAwM2Nub24tY29uc3RcXHUwMDNlKSB3aXRoIHRoZSByYW5nZSBjaGVjayBrZXB0ICovXFxuK19feGxhdGVkKFxcXCJpZiB3MiBzXFx1MDAzZSB3MyBnb3RvIHBjKzhcXFwiKVxcbitfX3hsYXRlZChcXFwidzAgPSB3M1xcXCIpXFxuK19feGxhdGVkKFxcXCJ3MCAtPSB3MlxcXCIpXFxuK19feGxhdGVkKFxcXCJpZiByMCBcXHUwMDNlIDB4ODAwMDAwIGdvdG8gcGMrOFxcXCIpXFxuK19feGxhdGVkKFxcXCJ3MiArPSAtMVxcXCIpXFxuK19feGxhdGVkKFxcXCIqKHUzMiAqKShyMSArMCkgPSByMlxcXCIpXFxuK19feGxhdGVkKFxcXCIqKHUzMiAqKShyMSArNCkgPSByM1xcXCIpXFxuK19feGxhdGVkKFxcXCJyMCA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYys1XFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAtMjJcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYysyXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAtN1xcXCIpXFxuK19feGxhdGVkKFxcXCJyMSA9IHI2XFxcIilcXG4rLyogYnBmX2l0ZXJfbnVtX25leHQoXFx1MDAyNml0KSAqL1xcbitfX3hsYXRlZChcXFwicjAgPSAqKHUzMiAqKShyMSArMClcXFwiKVxcbitfX3hsYXRlZChcXFwidzAgKz0gMVxcXCIpXFxuK19feGxhdGVkKFxcXCJyMiA9ICoodTMyICopKHIxICs0KVxcXCIpXFxuK19feGxhdGVkKFxcXCJpZiB3MCBzXFx1MDAzZT0gdzIgZ290byBwYyszXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTMyICopKHIxICswKSA9IHIwXFxcIilcXG4rX194bGF0ZWQoXFxcInIwID0gcjFcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYysyXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAwXFxcIilcXG4rX194bGF0ZWQoXFxcImlmIHIwICE9IDB4MCBnb3RvIHBjLTExXFxcIilcXG4rX194bGF0ZWQoXFxcInIxID0gcjZcXFwiKVxcbisvKiBicGZfaXRlcl9udW1fZGVzdHJveShcXHUwMDI2aXQpIGlzIGlubGluZWQgdG8gYSBub3AgKi9cXG4rX194bGF0ZWQoXFxcImdvdG8gcGMrMFxcXCIpXFxuK19feGxhdGVkKFxcXCJyMCA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwiZXhpdFxcXCIpXFxuK2ludCBfX25ha2VkIGl0ZXJfbnVtX25ld19pbmxpbmVkKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0LyogcjYgcG9pbnRzIHRvIHN0cnVjdCBicGZfaXRlcl9udW0gb24gdGhlIHN0YWNrICovXFxuK1xcdFxcdFxcXCJyNiA9IHIxMDtcXFwiXFxuK1xcdFxcdFxcXCJyNiArPSAtODtcXFwiXFxuK1xcdFxcdC8qIG5vbi1jb25zdGFudCBlbmQgc28gdGhlIHJhbmdlIGNoZWNrcyBhcmUga2VwdCAqL1xcbitcXHRcXHRcXFwiY2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1xcXCJcXG4rXFx0XFx0XFxcInIzID0gcjA7XFxcIlxcbitcXHRcXHRcXFwicjMgXFx1MDAyNj0gMHhmZmZmO1xcXCJcXG4rXFx0XFx0XFxcInIxID0gcjY7XFxcIlxcbitcXHRcXHRcXFwicjIgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfaXRlcl9udW1fbmV3XTtcXFwiXFxuK1xcdFxcXCIxOlxcXCJcXG4rXFx0XFx0XFxcInIxID0gcjY7XFxcIlxcbitcXHRcXHRcXFwiY2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTtcXFwiXFxuK1xcdFxcdFxcXCJpZiByMCAhPSAwIGdvdG8gMWI7XFxcIlxcbitcXHRcXHRcXFwicjEgPSByNjtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1xcXCJcXG4rXFx0XFx0XFxcInIwID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJleGl0O1xcXCJcXG4rXFx0XFx0OlxcbitcXHRcXHQ6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLFxcbitcXHRcXHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxcbitcXHRcXHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXh0KSxcXG4rXFx0XFx0ICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSlcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcXFwicjZcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19zdWNjZXNzXFxuIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODozOS45MTMxNTk4MDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODM3NTg4Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9maXh1cF9rZnVuY19jYWxsXCIsXG4gICAgXCJicGZfaXRlcl9udW1fbmV4dFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTY1OTBjODIxZTcxZTQzZjdiNmM5MmZiNDY4MzAxZjM2NzQyYTdlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA0OjM4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXG5pbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfaXRlci5jXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcbkBAIC04MDIsMTIgKzgwMiwxNCBAQCBfX2JwZl9rZnVuYyBpbnQgKmJwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaXRlcl9udW0qIGl0KVxuIHtcbiBcdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4gXG4tXHQvKiBjaGVjayBmYWlsZWQgaW5pdGlhbGl6YXRpb24gb3IgaWYgd2UgYXJlIGRvbmUgKHNhbWUgYmVoYXZpb3IpO1xuLVx0ICogbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IG92ZXJmbG93LCBzbyBjb252ZXJ0IHRvIHM2NCBmb3IgY2hlY2tzLFxuLVx0ICogZS5nLiwgaWYgcy1cdTAwM2VjdXIgPT0gcy1cdTAwM2VlbmQgPT0gSU5UX01BWCwgd2UgY2FuJ3QganVzdCBkb1xuLVx0ICogcy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmRcbitcdC8qIERldGVjdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgb3IgYSBmYWlsZWQvZW1wdHkgaXRlcmF0b3I6IGFsbCBvZiB0aGVzZVxuK1x0ICogbGVhdmUgcy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQuIGJwZl9pdGVyX251bV9uZXcoKSBzZXQgcy1cdTAwM2VjdXIgdG8gc3RhcnQgLSAxXG4rXHQgKiAod2hpY2ggd3JhcHMgdG8gSU5UX01BWCB3aGVuIHN0YXJ0ID09IElOVF9NSU4pLCBzbyB0aGUgcy1cdTAwM2VjdXIgKyAxIGJlbG93XG4rXHQgKiBpcyBhIGRlbGliZXJhdGUgMzItYml0IHdyYXBhcm91bmQgdGhhdCByZWNvdmVycyBzdGFydC4gQXMgcy1cdTAwM2VjdXIgYW5kXG4rXHQgKiBzLVx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XG4rXHQgKiB0aGUgaW5saW5lZCBicGZfaXRlcl9udW1fbmV4dCgpIGVtaXRzLlxuIFx0ICovXG4tXHRpZiAoKHM2NCkocy1cdTAwM2VjdXIgKyAxKSBcdTAwM2U9IHMtXHUwMDNlZW5kKSB7XG4rXHRpZiAocy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQpIHtcbiBcdFx0cy1cdTAwM2VjdXIgPSBzLVx1MDAzZWVuZCA9IDA7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuQEAgLTgxOSw5ICs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiBcbiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KVxuIHtcbi1cdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4tXG4tXHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbitcdC8qXG4rXHQgKiBOb3RoaW5nIHRvIGRvOiB0aGUgc3RhY2sgc2xvdCBiYWNraW5nIHRoZSBpdGVyYXRvciBpcyBubyBsb25nZXJcbitcdCAqIHRyYWNrZWQgYXMgaXRlcmF0b3Igc3RhdGUgb25jZSBkZXN0cm95KCkgcmV0dXJucywgc28gaXRzIGNvbnRlbnRzIGRvXG4rXHQgKiBub3QgbWF0dGVyLiBUaGUgdmVyaWZpZXIgaW5saW5lcyB0aGlzIGNhbGwgYXdheSBlbnRpcmVseS5cbitcdCAqL1xuIH1cbiBcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZTZmMzVmNGU3MTViNi4uMzZmM2U4MGQyZjBiOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk3NzMsNiArMTk3NzMsODMgQEAgc3RhdGljIHZvaWQgX19maXh1cF9jb2xsZWN0aW9uX2luc2VydF9rZnVuYyhzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuIFx0KmNudCA9IDQ7XG4gfVxuIFxuKy8qXG4rICogSW5saW5lIGJwZl9pdGVyX251bV9uZXcoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLCBSMiBhbmQgUjMgaG9sZCB0aGUgKGludClcbisgKiBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbisgKi9cbitzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fbmV3KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4re1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0LyogaWYgKHN0YXJ0IFx1MDAzZSBlbmQpIGdvdG8gZWludmFsOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR1QsIEJQRl9SRUdfMiwgQlBGX1JFR18zLCA4KTtcbitcdC8qXG4rXHQgKiBzdGFydCBcdTAwM2M9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdFxuK1x0ICogc3VidHJhY3Rpb24gdGhhdCB6ZXJvLWV4dGVuZHMgaW50byByMCBhbmQgcmFuZ2UtY2hlY2sgaXQgYXMgdW5zaWduZWQuXG4rXHQgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfTU9WMzJfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18zKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfQUxVMzJfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18yKTtcbitcdC8qIGlmIChyMCBcdTAwM2UgQlBGX01BWF9MT09QUykgZ290byBlMmJpZzsgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0lNTShCUEZfSkdULCBCUEZfUkVHXzAsIEJQRl9NQVhfTE9PUFMsIDgpO1xuK1x0Lyogcy1cdTAwM2VjdXIgPSBzdGFydCAtIDE7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApO1xuK1x0Lyogcy1cdTAwM2VlbmQgPSBlbmQ7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18zLCA0KTtcbitcdC8qIHJldHVybiAwOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0EoNSk7XG4rXHQvKiBlaW52YWw6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xuK1x0LyogZTJiaWc6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUUyQklHOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRTJCSUcpO1xuK1xuK1x0cmV0dXJuIGk7XG4rfVxuK1xuKy8qXG4rICogSW5saW5lIGJwZl9pdGVyX251bV9uZXh0KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvci4gS2VlcCBpbiBzeW5jIHdpdGggdGhlXG4rICoga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxuKyAqL1xuK3N0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4re1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0LypcbitcdCAqIHMtXHUwMDNlY3VyIGFuZCBzLVx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMncyBzLVx1MDAzZWN1ciArIDEgXHUwMDNlPSBzLVx1MDAzZWVuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXRcbitcdCAqIGNvbXBhcmlzb24gb2YgKHMtXHUwMDNlY3VyICsgMSkgYWdhaW5zdCBzLVx1MDAzZWVuZCBhbmQgbmVlZHMgbm8gc2lnbiBleHRlbnNpb24uXG4rXHQgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18wLCBCUEZfUkVHXzEsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9BTFUzMl9JTU0oQlBGX0FERCwgQlBGX1JFR18wLCAxKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18yLCBCUEZfUkVHXzEsIDQpO1xuK1x0LyogaWYgKChzMzIpKHMtXHUwMDNlY3VyICsgMSkgXHUwMDNlPSAoczMyKXMtXHUwMDNlZW5kKSBnb3RvIGRvbmU7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUDMyX1JFRyhCUEZfSlNHRSwgQlBGX1JFR18wLCBCUEZfUkVHXzIsIDMpO1xuK1x0Lyogcy1cdTAwM2VjdXIrKzsgcmV0dXJuIFx1MDAyNnMtXHUwMDNlY3VyOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMCwgMCk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMSk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xuK1x0LyogZG9uZTogcy1cdTAwM2VjdXIgPSBzLVx1MDAzZWVuZCA9IDA7IHJldHVybiBOVUxMOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKTtcbitcbitcdHJldHVybiBpO1xuK31cbitcbisvKlxuKyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlclxuKyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luY1xuKyAqIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbisgKi9cbitzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuK3tcbitcdGluc25fYnVmWzBdID0gQlBGX0pNUF9BKDApO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcbiB7XG5AQCAtMTk5MDIsNiArMTk5NzksMTIgQEAgaW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbiBcdFx0aW5zbl9idWZbNF0gPSBCUEZfQUxVNjRfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcbiBcdFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9ORUcsIEJQRl9SRUdfMCwgMCk7XG4gXHRcdCpjbnQgPSA2O1xuK1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddKSB7XG4rXHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XG4rXHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XG4rXHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoaW5zbl9idWYpO1xuK1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xuK1x0XHQqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KGluc25fYnVmKTtcbiBcdH1cbiBcbiBcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0uYXJnX3Byb2cpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDU1ZDM5NDQzODcwNWEuLjMxNzRjMmYxOGU3MTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTk2NSw2ICs5NjUsNyBAQCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG4gXHRcdFx0ICAgICQoT1VUUFVUKS9wZXJmYnVmX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm86ICQoT1VUUFVUKS9icGZfbG9vcF9iZW5jaC5za2VsLmhcbiskKE9VVFBVVCkvYmVuY2hfYnBmX2Zvci5vOiAkKE9VVFBVVCkvYnBmX2Zvcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm86ICQoT1VUUFVUKS9sb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxuQEAgLTk5MCw2ICs5OTEsNyBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbitcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuaW5kZXggM2Q5ZDJjZDc3NjRiZC4uYjg2YjczNDU2ZDNjYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuQEAgLTI3Niw2ICsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfcmluZ2J1ZnNfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfYmxvb21fbWFwX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XG4rZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9hcmdwO1xuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwO1xuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9zdHJuY21wX2FyZ3A7XG5AQCAtMjkyLDYgKzI5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9jaGlsZCBiZW5jaF9wYXJzZXJzW10gPSB7XG4gXHR7IFx1MDAyNmJlbmNoX3JpbmdidWZzX2FyZ3AsIDAsIFwiUmluZyBidWZmZXJzIGJlbmNobWFya1wiLCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCBcIkJsb29tIGZpbHRlciBtYXAgYmVuY2htYXJrXCIsIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgXCJicGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrXCIsIDAgfSxcbitcdHsgXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLCAwLCBcImJwZl9mb3IgbG9vcCBiZW5jaG1hcmtcIiwgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3AsIDAsIFwibG9jYWxfc3RvcmFnZSBiZW5jaG1hcmtcIiwgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9zdHJuY21wX2FyZ3AsIDAsIFwiYnBmX3N0cm5jbXAgaGVscGVyIGJlbmNobWFya1wiLCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2FyZ3AsIDAsXG5AQCAtNTU3LDYgKzU1OSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYmxvb21fZmFsc2VfcG9zaXRpdmU7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb207XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhfYmxvb207XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfbG9vcDtcbitleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9mb3I7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9zdHJuY21wX25vX2hlbHBlcjtcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfaGVscGVyO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGU7XG5AQCAtNjQwLDYgKzY0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0ge1xuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfYnBmX2xvb3AsXG4rXHRcdTAwMjZiZW5jaF9icGZfZm9yLFxuIFx0XHUwMDI2YmVuY2hfc3RybmNtcF9ub19oZWxwZXIsXG4gXHRcdTAwMjZiZW5jaF9zdHJuY21wX2hlbHBlcixcbiBcdFx1MDAyNmJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzBjNTFhZDJkZWMzXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuY1xuQEAgLTAsMCArMSwxMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbisjaW5jbHVkZSBcImJlbmNoLmhcIlxuKyNpbmNsdWRlIFwiYnBmX2Zvcl9iZW5jaC5za2VsLmhcIlxuK1xuKy8qIEJQRiB0cmlnZ2VyaW5nIGJlbmNobWFya3MgKi9cbitzdGF0aWMgc3RydWN0IGN0eCB7XG4rXHRzdHJ1Y3QgYnBmX2Zvcl9iZW5jaCAqc2tlbDtcbit9IGN0eDtcbitcbitzdGF0aWMgc3RydWN0IHtcbitcdF9fdTMyIG5yX2xvb3BzO1xuK30gYXJncyA9IHtcbitcdC8qXG4rXHQgKiBEZWZhdWx0IHRvIGEgbGFyZ2UgbG9vcCBjb3VudCBzbyB0aGUgcGVyLWl0ZXJhdGlvbiBicGZfaXRlcl9udW1fbmV4dCgpIGNvc3QgZG9taW5hdGVzXG4rXHQgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uXG4rXHQgKi9cbitcdC5ucl9sb29wcyA9IDEwMDAsXG4rfTtcbitcbitlbnVtIHtcbitcdEFSR19OUl9MT09QUyA9IDQwMDAsXG4rfTtcbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbitcdHsgXCJucl9sb29wc1wiLCBBUkdfTlJfTE9PUFMsIFwibnJfbG9vcHNcIiwgMCxcbitcdFx0XCJTZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBicGZfZm9yKCkgbG9vcFwifSxcbitcdHt9LFxuK307XG4rXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN3aXRjaCAoa2V5KSB7XG4rXHRjYXNlIEFSR19OUl9MT09QUzpcbitcdFx0YXJncy5ucl9sb29wcyA9IHN0cnRvbChhcmcsIE5VTEwsIDEwKTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbisvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi9cbitjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3AgPSB7XG4rXHQub3B0aW9ucyA9IG9wdHMsXG4rXHQucGFyc2VyID0gcGFyc2VfYXJnLFxuK307XG4rXG4rc3RhdGljIHZvaWQgdmFsaWRhdGUodm9pZClcbit7XG4rXHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcImJlbmNobWFyayBkb2Vzbid0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCIpO1xuK1x0XHRleGl0KDEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4re1xuK1x0d2hpbGUgKHRydWUpXG4rXHRcdC8qIHRyaWdnZXIgdGhlIGJwZiBwcm9ncmFtICovXG4rXHRcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcbit7XG4rXHRyZXMtXHUwMDNlaGl0cyA9IGF0b21pY19zd2FwKFx1MDAyNmN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2VoaXRzLCAwKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgc2V0dXAodm9pZClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRzZXR1cF9saWJicGYoKTtcbitcbitcdGN0eC5za2VsID0gYnBmX2Zvcl9iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFjdHguc2tlbCkge1xuK1x0XHRmcHJpbnRmKHN0ZGVyciwgXCJmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4rXHRpZiAoIWxpbmspIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbitcbitcdGN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4rfVxuK1xuK2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yID0ge1xuK1x0Lm5hbWUgPSBcImJwZi1mb3JcIixcbitcdC5hcmdwID0gXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLFxuK1x0LnZhbGlkYXRlID0gdmFsaWRhdGUsXG4rXHQuc2V0dXAgPSBzZXR1cCxcbitcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcbitcdC5tZWFzdXJlID0gbWVhc3VyZSxcbitcdC5yZXBvcnRfcHJvZ3Jlc3MgPSBvcHNfcmVwb3J0X3Byb2dyZXNzLFxuK1x0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXG4rfTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjdkYTY0NTM5MjBkYWJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvcnVuX2JlbmNoX2JwZl9mb3Iuc2hcbkBAIC0wLDAgKzEsMTUgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbitzb3VyY2UgLi9iZW5jaHMvcnVuX2NvbW1vbi5zaFxuK1xuK3NldCAtZXVmbyBwaXBlZmFpbFxuK1xuK2ZvciB0IGluIDEgNCA4IDEyIDE2OyBkb1xuK2ZvciBpIGluIDEwIDEwMCA1MDAgMTAwMCA1MDAwIDEwMDAwIDUwMDAwIDEwMDAwMCA1MDAwMDAgMTAwMDAwMDsgZG9cbitzdWJ0aXRsZSBcIm5yX2xvb3BzOiAkaSwgbnJfdGhyZWFkczogJHRcIlxuK1x0c3VtbWFyaXplX29wcyBcImJwZl9mb3I6IFwiIFxcXG4rXHQgICAgXCIkKCRSVU5fQkVOQ0ggLXAgJHQgLS1ucl9sb29wcyAkaSBicGYtZm9yKVwiXG4rXHRwcmludGYgXCJcXG5cIlxuK2RvbmVcbitkb25lXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfZm9yX2JlbmNoLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mOWM3MjMwNTFmYzc0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jXG5AQCAtMCwwICsxLDMyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXCJ2bWxpbnV4LmhcIlxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4raW50IG5yX2xvb3BzO1xuK2xvbmcgaGl0cztcbitcbitzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpXG4re1xuK1x0aW50IGk7XG4rXG4rXHQvKlxuK1x0ICogRW1wdHkgYm9keTogdGhlIHdvcmsgYmVpbmcgbWVhc3VyZWQgaXMgdGhlIG9wZW4tY29kZWQgbnVtZXJpYyBpdGVyYXRvciBpdHNlbGZcbitcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cbitcdCAqL1xuK1x0YnBmX2ZvcihpLCAwLCBucl9sb29wcylcbitcdFx0O1xuK1x0X19zeW5jX2FkZF9hbmRfZmV0Y2goXHUwMDI2aGl0cywgbnJfbG9vcHMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcImZlbnRyeS9cIiBTWVNfUFJFRklYIFwic3lzX2dldHBnaWRcIilcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcbit7XG4rXHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5pbmRleCAwZmE3MGIxMzNkOTMyLi42MmQ3ZGY5ZTgwYmViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5AQCAtODgsNiArODgsODkgQEAgaW50IGl0ZXJfZXJyX3Vuc2FmZV9hc21fbG9vcChjb25zdCB2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBOYWtlZCBmdW5jdGlvbiwgc28gdGhlcmUgaXMgbm8gY29tcGlsZXItZ2VuZXJhdGVkIGdsdWUgYW5kIHRoZSB3aG9sZSBpbmxpbmVkIHByb2dyYW0gY2FuIGJlXG4rICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxuKyAqIChicGZfaml0X25lZWRzX3pleHQoKSA9PSBmYWxzZSk7IG9uIGFyY2hlcyB0aGF0IG5lZWQgZXhwbGljaXQgemVyby1leHRlbnNpb24gdGhlIHZlcmlmaWVyXG4rICogaW50ZXJsZWF2ZXMgXCJ3TiA9IHdOXCIgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXNcbisgKiBhcmNoIGluZGVwZW5kZW50LCBzbyBjaGVja2luZyBpdCBvbiB0aGVzZSBhcmNoZXMgaXMgc3VmZmljaWVudC5cbisgKlxuKyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kXG4rICogLUUyQklHIGVycm9yIHBhdGhzKTsgYnBmX2l0ZXJfbnVtX25leHQoKSBhbmQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koKSBhcmUgaW5saW5lZCB0b28uXG4rICovXG4rU0VDKFwicmF3X3RwXCIpXG4rX19hcmNoX3g4Nl82NFxuK19fYXJjaF9hcm02NFxuK19fc3VjY2Vzc1xuK19feGxhdGVkKFwicjYgPSByMTBcIilcbitfX3hsYXRlZChcInI2ICs9IC04XCIpXG4rX194bGF0ZWQoXCJjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcInIzID0gcjBcIilcbitfX3hsYXRlZChcInIzIFx1MDAyNj0gNjU1MzVcIilcbitfX3hsYXRlZChcInIxID0gcjZcIilcbitfX3hsYXRlZChcInIyID0gMFwiKVxuKy8qIGJwZl9pdGVyX251bV9uZXcoXHUwMDI2aXQsIDAsIFx1MDAzY25vbi1jb25zdFx1MDAzZSkgd2l0aCB0aGUgcmFuZ2UgY2hlY2sga2VwdCAqL1xuK19feGxhdGVkKFwiaWYgdzIgc1x1MDAzZSB3MyBnb3RvIHBjKzhcIilcbitfX3hsYXRlZChcIncwID0gdzNcIilcbitfX3hsYXRlZChcIncwIC09IHcyXCIpXG4rX194bGF0ZWQoXCJpZiByMCBcdTAwM2UgMHg4MDAwMDAgZ290byBwYys4XCIpXG4rX194bGF0ZWQoXCJ3MiArPSAtMVwiKVxuK19feGxhdGVkKFwiKih1MzIgKikocjEgKzApID0gcjJcIilcbitfX3hsYXRlZChcIioodTMyICopKHIxICs0KSA9IHIzXCIpXG4rX194bGF0ZWQoXCJyMCA9IDBcIilcbitfX3hsYXRlZChcImdvdG8gcGMrNVwiKVxuK19feGxhdGVkKFwiKih1NjQgKikocjEgKzApID0gMFwiKVxuK19feGxhdGVkKFwicjAgPSAtMjJcIilcbitfX3hsYXRlZChcImdvdG8gcGMrMlwiKVxuK19feGxhdGVkKFwiKih1NjQgKikocjEgKzApID0gMFwiKVxuK19feGxhdGVkKFwicjAgPSAtN1wiKVxuK19feGxhdGVkKFwicjEgPSByNlwiKVxuKy8qIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KSAqL1xuK19feGxhdGVkKFwicjAgPSAqKHUzMiAqKShyMSArMClcIilcbitfX3hsYXRlZChcIncwICs9IDFcIilcbitfX3hsYXRlZChcInIyID0gKih1MzIgKikocjEgKzQpXCIpXG4rX194bGF0ZWQoXCJpZiB3MCBzXHUwMDNlPSB3MiBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIioodTMyICopKHIxICswKSA9IHIwXCIpXG4rX194bGF0ZWQoXCJyMCA9IHIxXCIpXG4rX194bGF0ZWQoXCJnb3RvIHBjKzJcIilcbitfX3hsYXRlZChcIioodTY0ICopKHIxICswKSA9IDBcIilcbitfX3hsYXRlZChcInIwID0gMFwiKVxuK19feGxhdGVkKFwiaWYgcjAgIT0gMHgwIGdvdG8gcGMtMTFcIilcbitfX3hsYXRlZChcInIxID0gcjZcIilcbisvKiBicGZfaXRlcl9udW1fZGVzdHJveShcdTAwMjZpdCkgaXMgaW5saW5lZCB0byBhIG5vcCAqL1xuK19feGxhdGVkKFwiZ290byBwYyswXCIpXG4rX194bGF0ZWQoXCJyMCA9IDBcIilcbitfX3hsYXRlZChcImV4aXRcIilcbitpbnQgX19uYWtlZCBpdGVyX251bV9uZXdfaW5saW5lZCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXG4rXHRcdC8qIHI2IHBvaW50cyB0byBzdHJ1Y3QgYnBmX2l0ZXJfbnVtIG9uIHRoZSBzdGFjayAqL1xuK1x0XHRcInI2ID0gcjEwO1wiXG4rXHRcdFwicjYgKz0gLTg7XCJcbitcdFx0Lyogbm9uLWNvbnN0YW50IGVuZCBzbyB0aGUgcmFuZ2UgY2hlY2tzIGFyZSBrZXB0ICovXG4rXHRcdFwiY2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1wiXG4rXHRcdFwicjMgPSByMDtcIlxuK1x0XHRcInIzIFx1MDAyNj0gMHhmZmZmO1wiXG4rXHRcdFwicjEgPSByNjtcIlxuK1x0XHRcInIyID0gMDtcIlxuK1x0XHRcImNhbGwgJVticGZfaXRlcl9udW1fbmV3XTtcIlxuK1x0XCIxOlwiXG4rXHRcdFwicjEgPSByNjtcIlxuK1x0XHRcImNhbGwgJVticGZfaXRlcl9udW1fbmV4dF07XCJcbitcdFx0XCJpZiByMCAhPSAwIGdvdG8gMWI7XCJcbitcdFx0XCJyMSA9IHI2O1wiXG4rXHRcdFwiY2FsbCAlW2JwZl9pdGVyX251bV9kZXN0cm95XTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLFxuK1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxuK1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXh0KSxcbitcdFx0ICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSlcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcInI2XCJcbitcdCk7XG4rfVxuK1xuIFNFQyhcInJhd190cFwiKVxuIF9fc3VjY2Vzc1xuIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6MzkuOTEzMTYxNjQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzMTEzMTE4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgSXRlcmF0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG9wdGltaXppbmcgdGhlIEJQRiBpdGVyYXRvciBsb2dpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgc2NhbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEhvd2V2ZXIsIHRoaXMgZ29lcyBkZWVwZXIsIGFzIGl0J3MgYWxzbyB0b3VjaGluZyB0aGUgdmVyaWZpZXIgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRyaWd1aW5nLiBUaGV5J3JlIGlubGluaW5nIGBicGZfaXRlcl9udW1fbmV3YCwgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgd2l0aGluIHRoZSB2ZXJpZmllci4gQWRkaW5nIGJlbmNobWFya3MgYW5kIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBpcyBhIHNtYXJ0IG1vdmUuXG5cbk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBjaGFuZ2VzIGZpcnN0LiBJdCBsb29rcyBsaWtlIHRoZXkncmUgaW50cm9kdWNpbmcgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIHRoZW4gY2FsbGluZyB0aGVtIGZyb20gd2l0aGluIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAuIFJpZ2h0LCBzbyB0aGlzIHJlcGxhY2VzIGtmdW5jIGNhbGxzIHdpdGggaW5saW5lIEJQRiBpbnN0cnVjdGlvbnMsIGVmZmVjdGl2ZWx5IGFsdGVyaW5nIHRoZSB2ZXJpZmljYXRpb24gYW5kIEpJVCBwcm9jZXNzLiBUaGlzIGlzIGdvb2QuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzaG91bGQgaW1wYWN0IGhvdyBCUEYgcHJvZ3JhbXMgYXJlIHZlcmlmaWVkIGFuZCBKSVR0ZWQsIHNoaWZ0aW5nIGZyb20ga2Z1bmMgY2FsbHMgdG8gaW5saW5lZCBCUEYgaW5zdHJ1Y3Rpb25zLlxuXG5UaGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplIGhlcmUgYXJlIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIG9mIGNvdXJzZSB0aGUgb3JpZ2luYWxzIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBoZXJlLCBhcyB0aGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQuXG5cbkxldCdzIGZpbmQgb3V0IGhvdyByZWFjaGFibGUgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgQlBGIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyB0aGF0J3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQuIFRoZW4sIEkgbmVlZCB0byBzZWFyY2ggd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGRpcmVjdGx5IGZvciB0aGF0IGZ1bmN0aW9uIHRvIGdyYXNwIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6NTAuMjI0NDc1NzQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTgzOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9maXh1cF9rZnVuY19jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1Mi1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTQtXFx0XFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODo1MC4yOTQ2NjUyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTEwNzA2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBCUEYgRnVuY3Rpb24gQ2FsbCBGaXgtVXAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93IGZvciBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIEknbGwgbmVlZCB0byB1c2Ugc29tZSBjb2RlIG5hdmlnYXRpb24gdG9vbHMsIHByb2JhYmx5IGdyZXAgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoLCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsIHRvIHRyYWNpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBsYXJnZXIgZXhlY3V0aW9uIGNvbnRleHQgaXQgb3BlcmF0ZXMgd2l0aGluLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBCUEYgcHJvY2Vzc2luZyBwaXBlbGluZS4gT25jZSBJIGhhdmUgdGhhdCBsaXN0LCBJIGNhbiBzdGFydCBkaXZpbmcgZGVlcGVyIGludG8gZWFjaCBjYWxsIHNpdGUgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aG9zZSBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgzNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM4OjU1LjA0NTczODA4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQxOTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jPTE0ODA9aW50IGJwZl9kb19taXNjX2ZpeHVwcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODI1LVxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MTgyNjpcXHRcXHRcXHRyZXQgPSBicGZfZml4dXBfa2Z1bmNfY2FsbChlbnYsIGluc24sIGluc25fYnVmLCBpICsgZGVsdGEsIFxcdTAwMjZjbnQpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMTgyNy1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5ODQ2PXN0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUzOmludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODU0LVxcdFxcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6NTUuMTA3MTcwMDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI4NTI2ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgQlBGIEZ1bmN0aW9uIENhbGwgRml4dXBzKipcblxuQWxyaWdodCwgc28gYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgQlBGIHZlcmlmaWVyLiBUaGF0J3MgZ29vZCB0byBrbm93LiBOb3csIHNpbmNlIHdlIGFyZSBleGFtaW5pbmcgQlBGIGl0ZXJhdG9ycywgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB1c2VkIHdpdGggYGJwZl9pdGVyYCB3aGljaCBhcmU6IGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgd2l0aGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSB3b3JraW5nIGFzIGV4cGVjdGVkIG9yIGlmIHRoZXkgbmVlZCB0byBiZSB1cGRhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjAwLjUzNTY5OTYwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEwMTkwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl9udW1fbmV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2JwZl9pdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9icGZfaXRlci5jPTc3MD1fX2JwZl9rZnVuYyBpbnQgYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2l0ZXJfbnVtICppdCwgaW50IHN0YXJ0LCBpbnQgZW5kKVxcbi0tXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTc3Ny1cXHQvKiBzdGFydCA9PSBlbmQgaXMgbGVnaXQsIGl0J3MgYW4gZW1wdHkgcmFuZ2UgYW5kIHdlJ2xsIGp1c3QgZ2V0IE5VTExcXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6Nzc4OlxcdCAqIG9uIGZpcnN0IChhbmQgYW55IHN1YnNlcXVlbnQpIGJwZl9pdGVyX251bV9uZXh0KCkgY2FsbFxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy03NzktXFx0ICovXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzkwLVxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo3OTE6XFx0LyogdXNlciB3aWxsIGNhbGwgYnBmX2l0ZXJfbnVtX25leHQoKSBmaXJzdCxcXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzkyLVxcdCAqIHdoaWNoIHdpbGwgc2V0IHMtXFx1MDAzZWN1ciB0byBleGFjdGx5IHN0YXJ0IHZhbHVlO1xcbi0tXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMC1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6ODAxOl9fYnBmX2tmdW5jIGludCAqYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pdGVyX251bSogaXQpXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMi17XFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtODA5LVxcdCAqIHMtXFx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XFxua2VybmVsL2JwZi9icGZfaXRlci5jOjgxMDpcXHQgKiB0aGUgaW5saW5lZCBicGZfaXRlcl9udW1fbmV4dCgpIGVtaXRzLlxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MTEtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjAwLjU5NjgwNzI5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODk5MTI3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdGlvbiBLZnVuYyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhvc2UgYXMga2Z1bmNzIOKAkyBrZXJuZWwgZnVuY3Rpb25zIGV4cG9zZWQgZm9yIHVzZSB3aXRoaW4gQlBGIHByb2dyYW1zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIEJQRiBpdGVyYXRpb24gb3ZlciBudW1lcmljIGRhdGEuIEdpdmVuIHRoYXQsIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCByZXF1aXJlbWVudCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1ha2VzIHRoZSBhYmlsaXR5IHRvIGNhbGwgdGhlIGtmdW5jcyBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW1zLlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHdvdWxkIGJlIHdpc2UgdG8gc2VlIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgcmVsaWVzIG9uIG90aGVyIEJQRi1yZWxhdGVkIGtlcm5lbCBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZXF1aXJlZC4gVGltZSB0byBkaWcgdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA2MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjA0LjQ4NjcyMjY4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NDUyMTI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzk6MDYuNjcxMjUyNjM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDg4Njk3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgSXRlcmF0aW9uIEtmdW5jIElubGluaW5nKipcblxuT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbiB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhlcmUuIE5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUgYXJlIHRoZSBzdGF0aWMgaW5saW5lcywgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuXG5cbkknbSBnb2luZyB0byBsaXN0IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAgYXMgdGhlIGZvY3VzIHN5bWJvbDsgaXQncyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIEkgbmVlZCB0byBhZGQgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIEkgbmVlZCB0byBjb25maXJtIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgYXJlIG5vdCBzdGF0aWMsIGFuZCB0aGV5IGFyZW4ndCFcblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIGVzc2VudGlhbCBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZTpcblxuKiAgIGBicGZfZml4dXBfa2Z1bmNfY2FsbGBcbiogICBgYnBmX2l0ZXJfbnVtX25leHRgXG4qICAgYGJwZl9pdGVyX251bV9kZXN0cm95YFxuXG5UaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYCBhbmQgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcyBjYWxsZWQgZHVyaW5nIGV2ZXJ5IGtmdW5jIGNhbGwgZHVyaW5nIHZlcmlmaWNhdGlvbi4gSXQgaXMgc3BlY2lmaWMgdG8ga2Z1bmMgY2FsbHMuIGBicGZfZG9fbWlzY19maXh1cHNgIGlzIHRoZSBjYWxsZXIuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGlubGluaW5nIGZvciB0aGUgYGJwZl9pdGVyX251bV8qYCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YC4gQmVjYXVzZSBvZiB0aGlzLCBpdCdzIGltcGFjdGluZyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuXG5cbkhlcmUncyB0aGUgZGF0YSBmb3IgdGhlIHRvb2w6XG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYGJwZl9maXh1cF9rZnVuY19jYWxsYFxuKiAgIGBicGZfaXRlcl9udW1fbmV4dGBcbiogICBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgXG5cbioqQ29uZmlnczoqKlxuXG4qICAgYEJQRl9TWVNDQUxMYFxuXG5GaW5hbGx5LCBgYnBmX2l0ZXJfbnVtX25leHRgIGlzIGEga2Z1bmMsIHNvLCBpdCBpcyBjYWxsYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4gVGltZSB0byBydW4gdGhpcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDcsIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjE4LjE1OTk1Mjk4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTA5MDgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX25leHRcIixcbiAgICBcImJwZl9pdGVyX251bV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX25leHRcIixcbiAgICBcImJwZl9pdGVyX251bV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 04:37:24 +0000 UTC FinishedAt: 2026-07-31 04:39:20 +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": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "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": "fdec474c65fd35d5a6e1497ed50a9f98c07192f0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "08dbeb84-0de4-4aea-a198-c0c49629a34d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_fixup_kfunc_call", "bpf_iter_num_next", "bpf_iter_num_destroy" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ZpeHVwX2tmdW5jX2NhbGwmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfbnVtX25leHQmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfbnVtX2Rlc3Ryb3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNjU5MGM4MjFlNzFlNDNmN2I2YzkyZmI0NjgzMDFmMzY3NDJhN2VlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6Mzg6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXG5pbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfaXRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcbkBAIC04MDIsMTIgJiM0Mzs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiB7XG4gXHRzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0O1xuIFxuLVx0LyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTtcbi1cdCAqIG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBvdmVyZmxvdywgc28gY29udmVydCB0byBzNjQgZm9yIGNoZWNrcyxcbi1cdCAqIGUuZy4sIGlmIHMtXHUwMDNlY3VyID09IHMtXHUwMDNlZW5kID09IElOVF9NQVgsIHdlIGNhbiYjMzk7dCBqdXN0IGRvXG4tXHQgKiBzLVx1MDAzZWN1ciAmIzQzOyAxIFx1MDAzZT0gcy1cdTAwM2VlbmRcbiYjNDM7XHQvKiBEZXRlY3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIG9yIGEgZmFpbGVkL2VtcHR5IGl0ZXJhdG9yOiBhbGwgb2YgdGhlc2VcbiYjNDM7XHQgKiBsZWF2ZSBzLVx1MDAzZWN1ciAmIzQzOyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQuIGJwZl9pdGVyX251bV9uZXcoKSBzZXQgcy1cdTAwM2VjdXIgdG8gc3RhcnQgLSAxXG4mIzQzO1x0ICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtXHUwMDNlY3VyICYjNDM7IDEgYmVsb3dcbiYjNDM7XHQgKiBpcyBhIGRlbGliZXJhdGUgMzItYml0IHdyYXBhcm91bmQgdGhhdCByZWNvdmVycyBzdGFydC4gQXMgcy1cdTAwM2VjdXIgYW5kXG4mIzQzO1x0ICogcy1cdTAwM2VlbmQgYXJlIGludCwgdGhpcyBpcyBhbiBvcmRpbmFyeSBzaWduZWQgMzItYml0IGNvbXBhcmUsIGV4YWN0bHkgd2hhdFxuJiM0MztcdCAqIHRoZSBpbmxpbmVkIGJwZl9pdGVyX251bV9uZXh0KCkgZW1pdHMuXG4gXHQgKi9cbi1cdGlmICgoczY0KShzLVx1MDAzZWN1ciAmIzQzOyAxKSBcdTAwM2U9IHMtXHUwMDNlZW5kKSB7XG4mIzQzO1x0aWYgKHMtXHUwMDNlY3VyICYjNDM7IDEgXHUwMDNlPSBzLVx1MDAzZWVuZCkge1xuIFx0XHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG5AQCAtODE5LDkgJiM0Mzs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiBcbiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KVxuIHtcbi1cdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4tXG4tXHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE5vdGhpbmcgdG8gZG86IHRoZSBzdGFjayBzbG90IGJhY2tpbmcgdGhlIGl0ZXJhdG9yIGlzIG5vIGxvbmdlclxuJiM0MztcdCAqIHRyYWNrZWQgYXMgaXRlcmF0b3Igc3RhdGUgb25jZSBkZXN0cm95KCkgcmV0dXJucywgc28gaXRzIGNvbnRlbnRzIGRvXG4mIzQzO1x0ICogbm90IG1hdHRlci4gVGhlIHZlcmlmaWVyIGlubGluZXMgdGhpcyBjYWxsIGF3YXkgZW50aXJlbHkuXG4mIzQzO1x0ICovXG4gfVxuIFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCBlNmYzNWY0ZTcxNWI2Li4zNmYzZTgwZDJmMGI5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xOTc3Myw2ICYjNDM7MTk3NzMsODMgQEAgc3RhdGljIHZvaWQgX19maXh1cF9jb2xsZWN0aW9uX2luc2VydF9rZnVuYyhzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuIFx0KmNudCA9IDQ7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25ldygpLiBSMSBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgaXRlcmF0b3IsIFIyIGFuZCBSMyBob2xkIHRoZSAoaW50KVxuJiM0MzsgKiBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9uZXcoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcbiYjNDM7e1xuJiM0MztcdGludCBpID0gMDtcbiYjNDM7XG4mIzQzO1x0LyogaWYgKHN0YXJ0IFx1MDAzZSBlbmQpIGdvdG8gZWludmFsOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR1QsIEJQRl9SRUdfMiwgQlBGX1JFR18zLCA4KTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHN0YXJ0IFx1MDAzYz0gZW5kIGhlcmUsIHNvIHRoZSByYW5nZSBlbmQgLSBzdGFydCBmaXRzIGluIGEgdTMyOyBjb21wdXRlIGl0IGFzIGEgMzItYml0XG4mIzQzO1x0ICogc3VidHJhY3Rpb24gdGhhdCB6ZXJvLWV4dGVuZHMgaW50byByMCBhbmQgcmFuZ2UtY2hlY2sgaXQgYXMgdW5zaWduZWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjMyX1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMyk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX1JFRyhCUEZfU1VCLCBCUEZfUkVHXzAsIEJQRl9SRUdfMik7XG4mIzQzO1x0LyogaWYgKHIwIFx1MDAzZSBCUEZfTUFYX0xPT1BTKSBnb3RvIGUyYmlnOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfSU1NKEJQRl9KR1QsIEJQRl9SRUdfMCwgQlBGX01BWF9MT09QUywgOCk7XG4mIzQzO1x0Lyogcy1cdTAwM2VjdXIgPSBzdGFydCAtIDE7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApO1xuJiM0MztcdC8qIHMtXHUwMDNlZW5kID0gZW5kOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7XG4mIzQzO1x0LyogcmV0dXJuIDA7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSg1KTtcbiYjNDM7XHQvKiBlaW52YWw6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9BKDIpO1xuJiM0MztcdC8qIGUyYmlnOiBzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDsgcmV0dXJuIC1FMkJJRzsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUUyQklHKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fbmV4dCgpLiBSMSBob2xkcyB0aGUgcG9pbnRlciB0byB0aGUgaXRlcmF0b3IuIEtlZXAgaW4gc3luYyB3aXRoIHRoZVxuJiM0MzsgKiBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGkgPSAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIHMtXHUwMDNlY3VyIGFuZCBzLVx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMmIzM5O3Mgcy1cdTAwM2VjdXIgJiM0MzsgMSBcdTAwM2U9IHMtXHUwMDNlZW5kIGNoZWNrIGlzIGEgc2lnbmVkIDMyLWJpdFxuJiM0MztcdCAqIGNvbXBhcmlzb24gb2YgKHMtXHUwMDNlY3VyICYjNDM7IDEpIGFnYWluc3Qgcy1cdTAwM2VlbmQgYW5kIG5lZWRzIG5vIHNpZ24gZXh0ZW5zaW9uLlxuJiM0MztcdCAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzAsIDEpO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzIsIEJQRl9SRUdfMSwgNCk7XG4mIzQzO1x0LyogaWYgKChzMzIpKHMtXHUwMDNlY3VyICYjNDM7IDEpIFx1MDAzZT0gKHMzMilzLVx1MDAzZWVuZCkgZ290byBkb25lOyAqL1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR0UsIEJQRl9SRUdfMCwgQlBGX1JFR18yLCAzKTtcbiYjNDM7XHQvKiBzLVx1MDAzZWN1ciYjNDM7JiM0Mzs7IHJldHVybiBcdTAwMjZzLVx1MDAzZWN1cjsgKi9cbiYjNDM7XHRpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzAsIDApO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xuJiM0MztcdGluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSgyKTtcbiYjNDM7XHQvKiBkb25lOiBzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDsgcmV0dXJuIE5VTEw7ICovXG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XG4mIzQzO1x0aW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogSW5saW5lIGJwZl9pdGVyX251bV9kZXN0cm95KCkuIFRoZSBzdGFjayBzbG90IGlzIG5vIGxvbmdlciB0cmFja2VkIGFzIGl0ZXJhdG9yIHN0YXRlIGFmdGVyXG4mIzQzOyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luY1xuJiM0MzsgKiB3aXRoIHRoZSBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuJiM0Mzt7XG4mIzQzO1x0aW5zbl9idWZbMF0gPSBCUEZfSk1QX0EoMCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAxO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcbiB7XG5AQCAtMTk5MDIsNiAmIzQzOzE5OTc5LDEyIEBAIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdGluc25fYnVmWzRdID0gQlBGX0FMVTY0X1JFRyhCUEZfU1VCLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSk7XG4gXHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfTkVHLCBCUEZfUkVHXzAsIDApO1xuIFx0XHQqY250ID0gNjtcbiYjNDM7XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcbiYjNDM7XHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XG4mIzQzO1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXh0XSkge1xuJiM0MztcdFx0KmNudCA9IGlubGluZV9icGZfaXRlcl9udW1fbmV4dChpbnNuX2J1Zik7XG4mIzQzO1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xuJiM0MztcdFx0KmNudCA9IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShpbnNuX2J1Zik7XG4gXHR9XG4gXG4gXHRpZiAoZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLmFyZ19wcm9nKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5pbmRleCA1NWQzOTQ0Mzg3MDVhLi4zMTc0YzJmMThlNzE1IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC05NjUsNiAmIzQzOzk2NSw3IEBAICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbiBcdFx0XHQgICAgJChPVVRQVVQpL3BlcmZidWZfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubzogJChPVVRQVVQpL2Jsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubzogJChPVVRQVVQpL2JwZl9sb29wX2JlbmNoLnNrZWwuaFxuJiM0MzskKE9VVFBVVCkvYmVuY2hfYnBmX2Zvci5vOiAkKE9VVFBVVCkvYnBmX2Zvcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm86ICQoT1VUUFVUKS9sb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxuQEAgLTk5MCw2ICYjNDM7OTkxLDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5pbmRleCAzZDlkMmNkNzc2NGJkLi5iODZiNzM0NTZkM2NhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5AQCAtMjc2LDYgJiM0MzsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfcmluZ2J1ZnNfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfYmxvb21fbWFwX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XG4mIzQzO2V4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2xvY2FsX3N0b3JhZ2VfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfc3RybmNtcF9hcmdwO1xuQEAgLTI5Miw2ICYjNDM7MjkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX2NoaWxkIGJlbmNoX3BhcnNlcnNbXSA9IHtcbiBcdHsgXHUwMDI2YmVuY2hfcmluZ2J1ZnNfYXJncCwgMCwgXCYjMzQ7UmluZyBidWZmZXJzIGJlbmNobWFya1wmIzM0OywgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9ibG9vbV9tYXBfYXJncCwgMCwgXCYjMzQ7Qmxvb20gZmlsdGVyIG1hcCBiZW5jaG1hcmtcJiMzNDssIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgXCYjMzQ7YnBmX2xvb3AgaGVscGVyIGJlbmNobWFya1wmIzM0OywgMCB9LFxuJiM0MztcdHsgXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLCAwLCBcJiMzNDticGZfZm9yIGxvb3AgYmVuY2htYXJrXCYjMzQ7LCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfYXJncCwgMCwgXCYjMzQ7bG9jYWxfc3RvcmFnZSBiZW5jaG1hcmtcJiMzNDssIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfc3RybmNtcF9hcmdwLCAwLCBcJiMzNDticGZfc3RybmNtcCBoZWxwZXIgYmVuY2htYXJrXCYjMzQ7LCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2FyZ3AsIDAsXG5AQCAtNTU3LDYgJiM0Mzs1NTksNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2Jsb29tX2ZhbHNlX3Bvc2l0aXZlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2xvb3A7XG4mIzQzO2V4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvcjtcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfbm9faGVscGVyO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfc3RybmNtcF9oZWxwZXI7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZTtcbkBAIC02NDAsNiAmIzQzOzY0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0ge1xuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfYnBmX2xvb3AsXG4mIzQzO1x0XHUwMDI2YmVuY2hfYnBmX2ZvcixcbiBcdFx1MDAyNmJlbmNoX3N0cm5jbXBfbm9faGVscGVyLFxuIFx0XHUwMDI2YmVuY2hfc3RybmNtcF9oZWxwZXIsXG4gXHRcdTAwMjZiZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNzMwYzUxYWQyZGVjM1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcbkBAIC0wLDAgJiM0MzsxLDEwNCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YmVuY2guaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfZm9yX2JlbmNoLnNrZWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7LyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqL1xuJiM0MztzdGF0aWMgc3RydWN0IGN0eCB7XG4mIzQzO1x0c3RydWN0IGJwZl9mb3JfYmVuY2ggKnNrZWw7XG4mIzQzO30gY3R4O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCB7XG4mIzQzO1x0X191MzIgbnJfbG9vcHM7XG4mIzQzO30gYXJncyA9IHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIERlZmF1bHQgdG8gYSBsYXJnZSBsb29wIGNvdW50IHNvIHRoZSBwZXItaXRlcmF0aW9uIGJwZl9pdGVyX251bV9uZXh0KCkgY29zdCBkb21pbmF0ZXNcbiYjNDM7XHQgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uXG4mIzQzO1x0ICovXG4mIzQzO1x0Lm5yX2xvb3BzID0gMTAwMCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO2VudW0ge1xuJiM0MztcdEFSR19OUl9MT09QUyA9IDQwMDAsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiYjNDM7XHR7IFwmIzM0O25yX2xvb3BzXCYjMzQ7LCBBUkdfTlJfTE9PUFMsIFwmIzM0O25yX2xvb3BzXCYjMzQ7LCAwLFxuJiM0MztcdFx0XCYjMzQ7U2V0IG51bWJlciBvZiBpdGVyYXRpb25zIGZvciB0aGUgYnBmX2ZvcigpIGxvb3BcJiMzNDt9LFxuJiM0MztcdHt9LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxuJiM0Mzt7XG4mIzQzO1x0c3dpdGNoIChrZXkpIHtcbiYjNDM7XHRjYXNlIEFSR19OUl9MT09QUzpcbiYjNDM7XHRcdGFyZ3MubnJfbG9vcHMgPSBzdHJ0b2woYXJnLCBOVUxMLCAxMCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogZXhwb3J0ZWQgaW50byBiZW5jaG1hcmsgcnVubmVyICovXG4mIzQzO2NvbnN0IHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncCA9IHtcbiYjNDM7XHQub3B0aW9ucyA9IG9wdHMsXG4mIzQzO1x0LnBhcnNlciA9IHBhcnNlX2FyZyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHJ1ZSlcbiYjNDM7XHRcdC8qIHRyaWdnZXIgdGhlIGJwZiBwcm9ncmFtICovXG4mIzQzO1x0XHRzeXNjYWxsKF9fTlJfZ2V0cGdpZCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcbiYjNDM7e1xuJiM0MztcdHJlcy1cdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXHUwMDI2Y3R4LnNrZWwtXHUwMDNlYnNzLVx1MDAzZWhpdHMsIDApO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuJiM0MztcbiYjNDM7XHRzZXR1cF9saWJicGYoKTtcbiYjNDM7XG4mIzQzO1x0Y3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFjdHguc2tlbCkge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2ZhaWxlZCB0byBvcGVuIHNrZWxldG9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX3Byb2dyYW1fX2F0dGFjaChjdHguc2tlbC1cdTAwM2Vwcm9ncy5iZW5jaG1hcmspO1xuJiM0MztcdGlmICghbGluaykge1xuJiM0MztcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O2ZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcXG5cJiMzNDspO1xuJiM0MztcdFx0ZXhpdCgxKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yID0ge1xuJiM0MztcdC5uYW1lID0gXCYjMzQ7YnBmLWZvclwmIzM0OyxcbiYjNDM7XHQuYXJncCA9IFx1MDAyNmJlbmNoX2JwZl9mb3JfYXJncCxcbiYjNDM7XHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcbiYjNDM7XHQuc2V0dXAgPSBzZXR1cCxcbiYjNDM7XHQucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsXG4mIzQzO1x0Lm1lYXN1cmUgPSBtZWFzdXJlLFxuJiM0MztcdC5yZXBvcnRfcHJvZ3Jlc3MgPSBvcHNfcmVwb3J0X3Byb2dyZXNzLFxuJiM0MztcdC5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLFxuJiM0Mzt9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvcnVuX2JlbmNoX2JwZl9mb3Iuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uN2RhNjQ1MzkyMGRhYlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxuQEAgLTAsMCAmIzQzOzEsMTUgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MztcbiYjNDM7c291cmNlIC4vYmVuY2hzL3J1bl9jb21tb24uc2hcbiYjNDM7XG4mIzQzO3NldCAtZXVmbyBwaXBlZmFpbFxuJiM0MztcbiYjNDM7Zm9yIHQgaW4gMSA0IDggMTIgMTY7IGRvXG4mIzQzO2ZvciBpIGluIDEwIDEwMCA1MDAgMTAwMCA1MDAwIDEwMDAwIDUwMDAwIDEwMDAwMCA1MDAwMDAgMTAwMDAwMDsgZG9cbiYjNDM7c3VidGl0bGUgXCYjMzQ7bnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdFwmIzM0O1xuJiM0MztcdHN1bW1hcml6ZV9vcHMgXCYjMzQ7YnBmX2ZvcjogXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIFwmIzM0OyQoJFJVTl9CRU5DSCAtcCAkdCAtLW5yX2xvb3BzICRpIGJwZi1mb3IpXCYjMzQ7XG4mIzQzO1x0cHJpbnRmIFwmIzM0O1xcblwmIzM0O1xuJiM0Mztkb25lXG4mIzQzO2RvbmVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmY5YzcyMzA1MWZjNzRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfZm9yX2JlbmNoLmNcbkBAIC0wLDAgJiM0MzsxLDMyIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtbGludXguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7aW50IG5yX2xvb3BzO1xuJiM0Mztsb25nIGhpdHM7XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpXG4mIzQzO3tcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbXB0eSBib2R5OiB0aGUgd29yayBiZWluZyBtZWFzdXJlZCBpcyB0aGUgb3Blbi1jb2RlZCBudW1lcmljIGl0ZXJhdG9yIGl0c2VsZlxuJiM0MztcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRicGZfZm9yKGksIDAsIG5yX2xvb3BzKVxuJiM0MztcdFx0O1xuJiM0MztcdF9fc3luY19hZGRfYW5kX2ZldGNoKFx1MDAyNmhpdHMsIG5yX2xvb3BzKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9cJiMzNDsgU1lTX1BSRUZJWCBcJiMzNDtzeXNfZ2V0cGdpZFwmIzM0OylcbiYjNDM7aW50IGJlbmNobWFyayh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbmluZGV4IDBmYTcwYjEzM2Q5MzIuLjYyZDdkZjllODBiZWIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbkBAIC04OCw2ICYjNDM7ODgsODkgQEAgaW50IGl0ZXJfZXJyX3Vuc2FmZV9hc21fbG9vcChjb25zdCB2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIE5ha2VkIGZ1bmN0aW9uLCBzbyB0aGVyZSBpcyBubyBjb21waWxlci1nZW5lcmF0ZWQgZ2x1ZSBhbmQgdGhlIHdob2xlIGlubGluZWQgcHJvZ3JhbSBjYW4gYmVcbiYjNDM7ICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxuJiM0MzsgKiAoYnBmX2ppdF9uZWVkc196ZXh0KCkgPT0gZmFsc2UpOyBvbiBhcmNoZXMgdGhhdCBuZWVkIGV4cGxpY2l0IHplcm8tZXh0ZW5zaW9uIHRoZSB2ZXJpZmllclxuJiM0MzsgKiBpbnRlcmxlYXZlcyBcJiMzNDt3TiA9IHdOXCYjMzQ7IGluc25zIGFuZCB0aGUgZml4ZWQgc2hhcGUgYmVsb3cgd291bGQgbm90IG1hdGNoLiBUaGUgaW5saW5pbmcgaXRzZWxmIGlzXG4mIzQzOyAqIGFyY2ggaW5kZXBlbmRlbnQsIHNvIGNoZWNraW5nIGl0IG9uIHRoZXNlIGFyY2hlcyBpcyBzdWZmaWNpZW50LlxuJiM0MzsgKlxuJiM0MzsgKiBicGZfaXRlcl9udW1fbmV3KCkgZW1pdHMgdGhlIGZ1bGwgcmFuZ2UgY2hlY2sgKGRpc3RhbmNlIGNvbXB1dGF0aW9uIGFuZCBib3RoIHRoZSAtRUlOVkFMIGFuZFxuJiM0MzsgKiAtRTJCSUcgZXJyb3IgcGF0aHMpOyBicGZfaXRlcl9udW1fbmV4dCgpIGFuZCBicGZfaXRlcl9udW1fZGVzdHJveSgpIGFyZSBpbmxpbmVkIHRvby5cbiYjNDM7ICovXG4mIzQzO1NFQyhcJiMzNDtyYXdfdHBcJiMzNDspXG4mIzQzO19fYXJjaF94ODZfNjRcbiYjNDM7X19hcmNoX2FybTY0XG4mIzQzO19fc3VjY2Vzc1xuJiM0MztfX3hsYXRlZChcJiMzNDtyNiA9IHIxMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7cjYgJiM0Mzs9IC04XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtjYWxsIHVua25vd25cJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IzID0gcjBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IzIFx1MDAyNj0gNjU1MzVcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IyID0gMFwmIzM0OylcbiYjNDM7LyogYnBmX2l0ZXJfbnVtX25ldyhcdTAwMjZpdCwgMCwgXHUwMDNjbm9uLWNvbnN0XHUwMDNlKSB3aXRoIHRoZSByYW5nZSBjaGVjayBrZXB0ICovXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHcyIHNcdTAwM2UgdzMgZ290byBwYyYjNDM7OFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7dzAgPSB3M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7dzAgLT0gdzJcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHIwIFx1MDAzZSAweDgwMDAwMCBnb3RvIHBjJiM0Mzs4XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDt3MiAmIzQzOz0gLTFcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTMyICopKHIxICYjNDM7MCkgPSByMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1MzIgKikocjEgJiM0Mzs0KSA9IHIzXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2dvdG8gcGMmIzQzOzVcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTY0ICopKHIxICYjNDM7MCkgPSAwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9IC0yMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Z290byBwYyYjNDM7MlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gLTdcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzOy8qIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KSAqL1xuJiM0MztfX3hsYXRlZChcJiMzNDtyMCA9ICoodTMyICopKHIxICYjNDM7MClcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3cwICYjNDM7PSAxXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDtyMiA9ICoodTMyICopKHIxICYjNDM7NClcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O2lmIHcwIHNcdTAwM2U9IHcyIGdvdG8gcGMmIzQzOzNcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OyoodTMyICopKHIxICYjNDM7MCkgPSByMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7cjAgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Z290byBwYyYjNDM7MlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7aWYgcjAgIT0gMHgwIGdvdG8gcGMtMTFcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IxID0gcjZcJiMzNDspXG4mIzQzOy8qIGJwZl9pdGVyX251bV9kZXN0cm95KFx1MDAyNml0KSBpcyBpbmxpbmVkIHRvIGEgbm9wICovXG4mIzQzO19feGxhdGVkKFwmIzM0O2dvdG8gcGMmIzQzOzBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0O3IwID0gMFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ZXhpdFwmIzM0OylcbiYjNDM7aW50IF9fbmFrZWQgaXRlcl9udW1fbmV3X2lubGluZWQodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZSAoXG4mIzQzO1x0XHQvKiByNiBwb2ludHMgdG8gc3RydWN0IGJwZl9pdGVyX251bSBvbiB0aGUgc3RhY2sgKi9cbiYjNDM7XHRcdFwmIzM0O3I2ID0gcjEwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjYgJiM0Mzs9IC04O1wmIzM0O1xuJiM0MztcdFx0Lyogbm9uLWNvbnN0YW50IGVuZCBzbyB0aGUgcmFuZ2UgY2hlY2tzIGFyZSBrZXB0ICovXG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMyA9IHIwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjMgXHUwMDI2PSAweGZmZmY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMSA9IHI2O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjIgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXddO1wmIzM0O1xuJiM0MztcdFwmIzM0OzE6XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtyMSA9IHI2O1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O2lmIHIwICE9IDAgZ290byAxYjtcJiMzNDtcbiYjNDM7XHRcdFwmIzM0O3IxID0gcjY7XCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7cjAgPSAwO1wmIzM0O1xuJiM0MztcdFx0XCYjMzQ7ZXhpdDtcJiMzNDtcbiYjNDM7XHRcdDpcbiYjNDM7XHRcdDogX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMiksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxuJiM0MztcdFx0ICBfX2ltbShicGZfaXRlcl9udW1fbmV4dCksXG4mIzQzO1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9kZXN0cm95KVxuJiM0MztcdFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcJiMzNDtyNlwmIzM0O1xuJiM0MztcdCk7XG4mIzQzO31cbiYjNDM7XG4gU0VDKFwmIzM0O3Jhd190cFwmIzM0OylcbiBfX3N1Y2Nlc3NcbiBpbnQgaXRlcl93aGlsZV9sb29wKGNvbnN0IHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE2NTkwYzgyMWU3MWU0M2Y3YjZjOTJmYjQ2ODMwMWYzNjc0MmE3ZWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzMSAwNDozODozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnBmX2l0ZXIuYyBiL2tlcm5lbC9icGYvYnBmX2l0ZXIuYwppbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2JwZl9pdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfaXRlci5jCkBAIC04MDIsMTIgJiM0Mzs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdCkKIHsKIAlzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0OwogCi0JLyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTsKLQkgKiBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgb3ZlcmZsb3csIHNvIGNvbnZlcnQgdG8gczY0IGZvciBjaGVja3MsCi0JICogZS5nLiwgaWYgcy0mZ3Q7Y3VyID09IHMtJmd0O2VuZCA9PSBJTlRfTUFYLCB3ZSBjYW4mIzM5O3QganVzdCBkbwotCSAqIHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZAomIzQzOwkvKiBEZXRlY3QgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIG9yIGEgZmFpbGVkL2VtcHR5IGl0ZXJhdG9yOiBhbGwgb2YgdGhlc2UKJiM0MzsJICogbGVhdmUgcy0mZ3Q7Y3VyICYjNDM7IDEgJmd0Oz0gcy0mZ3Q7ZW5kLiBicGZfaXRlcl9udW1fbmV3KCkgc2V0IHMtJmd0O2N1ciB0byBzdGFydCAtIDEKJiM0MzsJICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtJmd0O2N1ciAmIzQzOyAxIGJlbG93CiYjNDM7CSAqIGlzIGEgZGVsaWJlcmF0ZSAzMi1iaXQgd3JhcGFyb3VuZCB0aGF0IHJlY292ZXJzIHN0YXJ0LiBBcyBzLSZndDtjdXIgYW5kCiYjNDM7CSAqIHMtJmd0O2VuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0CiYjNDM7CSAqIHRoZSBpbmxpbmVkIGJwZl9pdGVyX251bV9uZXh0KCkgZW1pdHMuCiAJICovCi0JaWYgKChzNjQpKHMtJmd0O2N1ciAmIzQzOyAxKSAmZ3Q7PSBzLSZndDtlbmQpIHsKJiM0MzsJaWYgKHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZCkgewogCQlzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOwogCQlyZXR1cm4gTlVMTDsKIAl9CkBAIC04MTksOSAmIzQzOzgyMSwxMSBAQCBfX2JwZl9rZnVuYyBpbnQgKmJwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaXRlcl9udW0qIGl0KQogCiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KQogewotCXN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7Ci0KLQlzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOwomIzQzOwkvKgomIzQzOwkgKiBOb3RoaW5nIHRvIGRvOiB0aGUgc3RhY2sgc2xvdCBiYWNraW5nIHRoZSBpdGVyYXRvciBpcyBubyBsb25nZXIKJiM0MzsJICogdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBvbmNlIGRlc3Ryb3koKSByZXR1cm5zLCBzbyBpdHMgY29udGVudHMgZG8KJiM0MzsJICogbm90IG1hdHRlci4gVGhlIHZlcmlmaWVyIGlubGluZXMgdGhpcyBjYWxsIGF3YXkgZW50aXJlbHkuCiYjNDM7CSAqLwogfQogCiBfX2JwZl9rZnVuY19lbmRfZGVmcygpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IGU2ZjM1ZjRlNzE1YjYuLjM2ZjNlODBkMmYwYjkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5NzczLDYgJiM0MzsxOTc3Myw4MyBAQCBzdGF0aWMgdm9pZCBfX2ZpeHVwX2NvbGxlY3Rpb25faW5zZXJ0X2tmdW5jKHN0cnVjdCBicGZfaW5zbl9hdXhfZGF0YSAqaW5zbl9hdXgsCiAJKmNudCA9IDQ7CiB9CiAKJiM0MzsvKgomIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fbmV3KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvciwgUjIgYW5kIFIzIGhvbGQgdGhlIChpbnQpCiYjNDM7ICogc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKQomIzQzO3sKJiM0MzsJaW50IGkgPSAwOwomIzQzOwomIzQzOwkvKiBpZiAoc3RhcnQgJmd0OyBlbmQpIGdvdG8gZWludmFsOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dULCBCUEZfUkVHXzIsIEJQRl9SRUdfMywgOCk7CiYjNDM7CS8qCiYjNDM7CSAqIHN0YXJ0ICZsdDs9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdAomIzQzOwkgKiBzdWJ0cmFjdGlvbiB0aGF0IHplcm8tZXh0ZW5kcyBpbnRvIHIwIGFuZCByYW5nZS1jaGVjayBpdCBhcyB1bnNpZ25lZC4KJiM0MzsJICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1YzMl9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzMpOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfQUxVMzJfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18yKTsKJiM0MzsJLyogaWYgKHIwICZndDsgQlBGX01BWF9MT09QUykgZ290byBlMmJpZzsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9JTU0oQlBGX0pHVCwgQlBGX1JFR18wLCBCUEZfTUFYX0xPT1BTLCA4KTsKJiM0MzsJLyogcy0mZ3Q7Y3VyID0gc3RhcnQgLSAxOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfQUxVMzJfSU1NKEJQRl9BREQsIEJQRl9SRUdfMiwgLTEpOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApOwomIzQzOwkvKiBzLSZndDtlbmQgPSBlbmQ7ICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7CiYjNDM7CS8qIHJldHVybiAwOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSg1KTsKJiM0MzsJLyogZWludmFsOiBzLSZndDtjdXIgPSBzLSZndDtlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRUlOVkFMKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0pNUF9BKDIpOwomIzQzOwkvKiBlMmJpZzogcy0mZ3Q7Y3VyID0gcy0mZ3Q7ZW5kID0gMDsgcmV0dXJuIC1FMkJJRzsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRTJCSUcpOwomIzQzOwomIzQzOwlyZXR1cm4gaTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25leHQoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLiBLZWVwIGluIHN5bmMgd2l0aCB0aGUKJiM0MzsgKiBrZnVuYyBpbiBrZXJuZWwvYnBmL2JwZl9pdGVyLmMuCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZikKJiM0Mzt7CiYjNDM7CWludCBpID0gMDsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogcy0mZ3Q7Y3VyIGFuZCBzLSZndDtlbmQgYXJlIGludCwgc28gdGhlIGtmdW5jJiMzOTtzIHMtJmd0O2N1ciAmIzQzOyAxICZndDs9IHMtJmd0O2VuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXQKJiM0MzsJICogY29tcGFyaXNvbiBvZiAocy0mZ3Q7Y3VyICYjNDM7IDEpIGFnYWluc3Qgcy0mZ3Q7ZW5kIGFuZCBuZWVkcyBubyBzaWduIGV4dGVuc2lvbi4KJiM0MzsJICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9BTFUzMl9JTU0oQlBGX0FERCwgQlBGX1JFR18wLCAxKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX0xEWF9NRU0oQlBGX1csIEJQRl9SRUdfMiwgQlBGX1JFR18xLCA0KTsKJiM0MzsJLyogaWYgKChzMzIpKHMtJmd0O2N1ciAmIzQzOyAxKSAmZ3Q7PSAoczMyKXMtJmd0O2VuZCkgZ290byBkb25lOyAqLwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dFLCBCUEZfUkVHXzAsIEJQRl9SRUdfMiwgMyk7CiYjNDM7CS8qIHMtJmd0O2N1ciYjNDM7JiM0Mzs7IHJldHVybiAmYW1wO3MtJmd0O2N1cjsgKi8KJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18wLCAwKTsKJiM0MzsJaW5zbl9idWZbaSYjNDM7JiM0MztdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMSk7CiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9KTVBfQSgyKTsKJiM0MzsJLyogZG9uZTogcy0mZ3Q7Y3VyID0gcy0mZ3Q7ZW5kID0gMDsgcmV0dXJuIE5VTEw7ICovCiYjNDM7CWluc25fYnVmW2kmIzQzOyYjNDM7XSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApOwomIzQzOwlpbnNuX2J1ZltpJiM0MzsmIzQzO10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgMCk7CiYjNDM7CiYjNDM7CXJldHVybiBpOwomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlcgomIzQzOyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luYwomIzQzOyAqIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKQomIzQzO3sKJiM0MzsJaW5zbl9idWZbMF0gPSBCUEZfSk1QX0EoMCk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sCiAJCSAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudCkKIHsKQEAgLTE5OTAyLDYgJiM0MzsxOTk3OSwxMiBAQCBpbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLAogCQlpbnNuX2J1Zls0XSA9IEJQRl9BTFU2NF9SRUcoQlBGX1NVQiwgQlBGX1JFR18wLCBCUEZfUkVHXzEpOwogCQlpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX05FRywgQlBGX1JFR18wLCAwKTsKIAkJKmNudCA9IDY7CiYjNDM7CX0gZWxzZSBpZiAoZGVzYy0mZ3Q7ZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHsKJiM0MzsJCSpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7CiYjNDM7CX0gZWxzZSBpZiAoZGVzYy0mZ3Q7ZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7CiYjNDM7CQkqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9uZXh0KGluc25fYnVmKTsKJiM0MzsJfSBlbHNlIGlmIChkZXNjLSZndDtmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fZGVzdHJveV0pIHsKJiM0MzsJCSpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koaW5zbl9idWYpOwogCX0KIAogCWlmIChlbnYtJmd0O2luc25fYXV4X2RhdGFbaW5zbl9pZHhdLmFyZ19wcm9nKSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggNTVkMzk0NDM4NzA1YS4uMzE3NGMyZjE4ZTcxNSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQpAQCAtOTY1LDYgJiM0Mzs5NjUsNyBAQCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFwKIAkJCSAgICAkKE9VVFBVVCkvcGVyZmJ1Zl9iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubzogJChPVVRQVVQpL2JwZl9sb29wX2JlbmNoLnNrZWwuaAomIzQzOyQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm86ICQoT1VUUFVUKS9icGZfZm9yX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubzogJChPVVRQVVQpL3N0cm5jbXBfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubzogJChPVVRQVVQpL2xvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oCkBAIC05OTAsNiAmIzQzOzk5MSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcCiYjNDM7CQkgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwppbmRleCAzZDlkMmNkNzc2NGJkLi5iODZiNzM0NTZkM2NhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwpAQCAtMjc2LDYgJiM0MzsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9yaW5nYnVmc19hcmdwOwogZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2Jsb29tX21hcF9hcmdwOwogZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7CiYjNDM7ZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncDsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3A7CiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncDsKIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9zdHJuY21wX2FyZ3A7CkBAIC0yOTIsNiAmIzQzOzI5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9jaGlsZCBiZW5jaF9wYXJzZXJzW10gPSB7CiAJeyAmYW1wO2JlbmNoX3JpbmdidWZzX2FyZ3AsIDAsICYjMzQ7UmluZyBidWZmZXJzIGJlbmNobWFyayYjMzQ7LCAwIH0sCiAJeyAmYW1wO2JlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCAmIzM0O0Jsb29tIGZpbHRlciBtYXAgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgJiMzNDticGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrJiMzNDssIDAgfSwKJiM0MzsJeyAmYW1wO2JlbmNoX2JwZl9mb3JfYXJncCwgMCwgJiMzNDticGZfZm9yIGxvb3AgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfbG9jYWxfc3RvcmFnZV9hcmdwLCAwLCAmIzM0O2xvY2FsX3N0b3JhZ2UgYmVuY2htYXJrJiMzNDssIDAgfSwKIAl7ICZhbXA7YmVuY2hfc3RybmNtcF9hcmdwLCAwLCAmIzM0O2JwZl9zdHJuY21wIGhlbHBlciBiZW5jaG1hcmsmIzM0OywgMCB9LAogCXsgJmFtcDtiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwLCAwLApAQCAtNTU3LDYgJiM0Mzs1NTksNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2Jsb29tX2ZhbHNlX3Bvc2l0aXZlOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb207CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2hhc2htYXBfd2l0aF9ibG9vbTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2xvb3A7CiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9zdHJuY21wX25vX2hlbHBlcjsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfc3RybmNtcF9oZWxwZXI7CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlOwpAQCAtNjQwLDYgJiM0Mzs2NDMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHsKIAkmYW1wO2JlbmNoX2hhc2htYXBfd2l0aG91dF9ibG9vbSwKIAkmYW1wO2JlbmNoX2hhc2htYXBfd2l0aF9ibG9vbSwKIAkmYW1wO2JlbmNoX2JwZl9sb29wLAomIzQzOwkmYW1wO2JlbmNoX2JwZl9mb3IsCiAJJmFtcDtiZW5jaF9zdHJuY21wX25vX2hlbHBlciwKIAkmYW1wO2JlbmNoX3N0cm5jbXBfaGVscGVyLAogCSZhbXA7YmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUsCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjczMGM1MWFkMmRlYzMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuYwpAQCAtMCwwICYjNDM7MSwxMDQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi8KJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7YXJncC5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YmVuY2guaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfZm9yX2JlbmNoLnNrZWwuaCYjMzQ7CiYjNDM7CiYjNDM7LyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqLwomIzQzO3N0YXRpYyBzdHJ1Y3QgY3R4IHsKJiM0MzsJc3RydWN0IGJwZl9mb3JfYmVuY2ggKnNrZWw7CiYjNDM7fSBjdHg7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCB7CiYjNDM7CV9fdTMyIG5yX2xvb3BzOwomIzQzO30gYXJncyA9IHsKJiM0MzsJLyoKJiM0MzsJICogRGVmYXVsdCB0byBhIGxhcmdlIGxvb3AgY291bnQgc28gdGhlIHBlci1pdGVyYXRpb24gYnBmX2l0ZXJfbnVtX25leHQoKSBjb3N0IGRvbWluYXRlcwomIzQzOwkgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uCiYjNDM7CSAqLwomIzQzOwkubnJfbG9vcHMgPSAxMDAwLAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB7CiYjNDM7CUFSR19OUl9MT09QUyA9IDQwMDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKJiM0MzsJeyAmIzM0O25yX2xvb3BzJiMzNDssIEFSR19OUl9MT09QUywgJiMzNDtucl9sb29wcyYjMzQ7LCAwLAomIzQzOwkJJiMzNDtTZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBicGZfZm9yKCkgbG9vcCYjMzQ7fSwKJiM0MzsJe30sCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgZXJyb3JfdCBwYXJzZV9hcmcoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGtleSkgewomIzQzOwljYXNlIEFSR19OUl9MT09QUzoKJiM0MzsJCWFyZ3MubnJfbG9vcHMgPSBzdHJ0b2woYXJnLCBOVUxMLCAxMCk7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBBUkdQX0VSUl9VTktOT1dOOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MzsvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi8KJiM0Mztjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3AgPSB7CiYjNDM7CS5vcHRpb25zID0gb3B0cywKJiM0MzsJLnBhcnNlciA9IHBhcnNlX2FyZywKJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7CiYjNDM7CQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtiZW5jaG1hcmsgZG9lc24mIzM5O3Qgc3VwcG9ydCBjb25zdW1lciFcbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgKnByb2R1Y2VyKHZvaWQgKmlucHV0KQomIzQzO3sKJiM0MzsJd2hpbGUgKHRydWUpCiYjNDM7CQkvKiB0cmlnZ2VyIHRoZSBicGYgcHJvZ3JhbSAqLwomIzQzOwkJc3lzY2FsbChfX05SX2dldHBnaWQpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpCiYjNDM7ewomIzQzOwlyZXMtJmd0O2hpdHMgPSBhdG9taWNfc3dhcCgmYW1wO2N0eC5za2VsLSZndDtic3MtJmd0O2hpdHMsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlzZXR1cF9saWJicGYoKTsKJiM0MzsKJiM0MzsJY3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghY3R4LnNrZWwpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O2ZhaWxlZCB0byBvcGVuIHNrZWxldG9uXG4mIzM0Oyk7CiYjNDM7CQlleGl0KDEpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLSZndDtwcm9ncy5iZW5jaG1hcmspOwomIzQzOwlpZiAoIWxpbmspIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O2ZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LnNrZWwtJmd0O2Jzcy0mZ3Q7bnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzOwomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvciA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O2JwZi1mb3ImIzM0OywKJiM0MzsJLmFyZ3AgPSAmYW1wO2JlbmNoX2JwZl9mb3JfYXJncCwKJiM0MzsJLnZhbGlkYXRlID0gdmFsaWRhdGUsCiYjNDM7CS5zZXR1cCA9IHNldHVwLAomIzQzOwkucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsCiYjNDM7CS5tZWFzdXJlID0gbWVhc3VyZSwKJiM0MzsJLnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsCiYjNDM7CS5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLAomIzQzO307CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwLi43ZGE2NDUzOTIwZGFiCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaApAQCAtMCwwICYjNDM7MSwxNSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOwomIzQzO3NvdXJjZSAuL2JlbmNocy9ydW5fY29tbW9uLnNoCiYjNDM7CiYjNDM7c2V0IC1ldWZvIHBpcGVmYWlsCiYjNDM7CiYjNDM7Zm9yIHQgaW4gMSA0IDggMTIgMTY7IGRvCiYjNDM7Zm9yIGkgaW4gMTAgMTAwIDUwMCAxMDAwIDUwMDAgMTAwMDAgNTAwMDAgMTAwMDAwIDUwMDAwMCAxMDAwMDAwOyBkbwomIzQzO3N1YnRpdGxlICYjMzQ7bnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdCYjMzQ7CiYjNDM7CXN1bW1hcml6ZV9vcHMgJiMzNDticGZfZm9yOiAmIzM0OyBcCiYjNDM7CSAgICAmIzM0OyQoJFJVTl9CRU5DSCAtcCAkdCAtLW5yX2xvb3BzICRpIGJwZi1mb3IpJiMzNDsKJiM0MzsJcHJpbnRmICYjMzQ7XG4mIzM0OwomIzQzO2RvbmUKJiM0Mztkb25lCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mOWM3MjMwNTFmYzc0Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYwpAQCAtMCwwICYjNDM7MSwzMiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7dm1saW51eC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDticGZfbWlzYy5oJiMzNDsKJiM0MzsKJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CiYjNDM7CiYjNDM7aW50IG5yX2xvb3BzOwomIzQzO2xvbmcgaGl0czsKJiM0MzsKJiM0MztzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlpbnQgaTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogRW1wdHkgYm9keTogdGhlIHdvcmsgYmVpbmcgbWVhc3VyZWQgaXMgdGhlIG9wZW4tY29kZWQgbnVtZXJpYyBpdGVyYXRvciBpdHNlbGYKJiM0MzsJICogKGJwZl9pdGVyX251bV9uZXcvbmV4dC9kZXN0cm95IGJlaGluZCBicGZfZm9yKCkpLgomIzQzOwkgKi8KJiM0MzsJYnBmX2ZvcihpLCAwLCBucl9sb29wcykKJiM0MzsJCTsKJiM0MzsJX19zeW5jX2FkZF9hbmRfZmV0Y2goJmFtcDtoaXRzLCBucl9sb29wcyk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkvJiMzNDsgU1lTX1BSRUZJWCAmIzM0O3N5c19nZXRwZ2lkJiMzNDspCiYjNDM7aW50IGJlbmNobWFyayh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwppbmRleCAwZmE3MGIxMzNkOTMyLi42MmQ3ZGY5ZTgwYmViIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYwpAQCAtODgsNiAmIzQzOzg4LDg5IEBAIGludCBpdGVyX2Vycl91bnNhZmVfYXNtX2xvb3AoY29uc3Qgdm9pZCAqY3R4KQogCXJldHVybiAwOwogfQogCiYjNDM7LyoKJiM0MzsgKiBOYWtlZCBmdW5jdGlvbiwgc28gdGhlcmUgaXMgbm8gY29tcGlsZXItZ2VuZXJhdGVkIGdsdWUgYW5kIHRoZSB3aG9sZSBpbmxpbmVkIHByb2dyYW0gY2FuIGJlCiYjNDM7ICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseQomIzQzOyAqIChicGZfaml0X25lZWRzX3pleHQoKSA9PSBmYWxzZSk7IG9uIGFyY2hlcyB0aGF0IG5lZWQgZXhwbGljaXQgemVyby1leHRlbnNpb24gdGhlIHZlcmlmaWVyCiYjNDM7ICogaW50ZXJsZWF2ZXMgJiMzNDt3TiA9IHdOJiMzNDsgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXMKJiM0MzsgKiBhcmNoIGluZGVwZW5kZW50LCBzbyBjaGVja2luZyBpdCBvbiB0aGVzZSBhcmNoZXMgaXMgc3VmZmljaWVudC4KJiM0MzsgKgomIzQzOyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kCiYjNDM7ICogLUUyQklHIGVycm9yIHBhdGhzKTsgYnBmX2l0ZXJfbnVtX25leHQoKSBhbmQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koKSBhcmUgaW5saW5lZCB0b28uCiYjNDM7ICovCiYjNDM7U0VDKCYjMzQ7cmF3X3RwJiMzNDspCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19fYXJjaF9hcm02NAomIzQzO19fc3VjY2VzcwomIzQzO19feGxhdGVkKCYjMzQ7cjYgPSByMTAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3I2ICYjNDM7PSAtOCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Y2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMyA9IHIwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMyAmYW1wOz0gNjU1MzUmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IxID0gcjYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IyID0gMCYjMzQ7KQomIzQzOy8qIGJwZl9pdGVyX251bV9uZXcoJmFtcDtpdCwgMCwgJmx0O25vbi1jb25zdCZndDspIHdpdGggdGhlIHJhbmdlIGNoZWNrIGtlcHQgKi8KJiM0MztfX3hsYXRlZCgmIzM0O2lmIHcyIHMmZ3Q7IHczIGdvdG8gcGMmIzQzOzgmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwID0gdzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwIC09IHcyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtpZiByMCAmZ3Q7IDB4ODAwMDAwIGdvdG8gcGMmIzQzOzgmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cyICYjNDM7PSAtMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Kih1MzIgKikocjEgJiM0MzswKSA9IHIyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHUzMiAqKShyMSAmIzQzOzQpID0gcjMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Z290byBwYyYjNDM7NSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7Kih1NjQgKikocjEgJiM0MzswKSA9IDAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gLTIyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtnb3RvIHBjJiM0MzsyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHU2NCAqKShyMSAmIzQzOzApID0gMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjAgPSAtNyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjEgPSByNiYjMzQ7KQomIzQzOy8qIGJwZl9pdGVyX251bV9uZXh0KCZhbXA7aXQpICovCiYjNDM7X194bGF0ZWQoJiMzNDtyMCA9ICoodTMyICopKHIxICYjNDM7MCkmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3cwICYjNDM7PSAxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMiA9ICoodTMyICopKHIxICYjNDM7NCkmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2lmIHcwIHMmZ3Q7PSB3MiBnb3RvIHBjJiM0MzszJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsqKHUzMiAqKShyMSAmIzQzOzApID0gcjAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O3IwID0gcjEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2dvdG8gcGMmIzQzOzImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OyoodTY0ICopKHIxICYjNDM7MCkgPSAwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMCA9IDAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0O2lmIHIwICE9IDB4MCBnb3RvIHBjLTExJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtyMSA9IHI2JiMzNDspCiYjNDM7LyogYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koJmFtcDtpdCkgaXMgaW5saW5lZCB0byBhIG5vcCAqLwomIzQzO19feGxhdGVkKCYjMzQ7Z290byBwYyYjNDM7MCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7cjAgPSAwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDtleGl0JiMzNDspCiYjNDM7aW50IF9fbmFrZWQgaXRlcl9udW1fbmV3X2lubGluZWQodm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoCiYjNDM7CQkvKiByNiBwb2ludHMgdG8gc3RydWN0IGJwZl9pdGVyX251bSBvbiB0aGUgc3RhY2sgKi8KJiM0MzsJCSYjMzQ7cjYgPSByMTA7JiMzNDsKJiM0MzsJCSYjMzQ7cjYgJiM0Mzs9IC04OyYjMzQ7CiYjNDM7CQkvKiBub24tY29uc3RhbnQgZW5kIHNvIHRoZSByYW5nZSBjaGVja3MgYXJlIGtlcHQgKi8KJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdOyYjMzQ7CiYjNDM7CQkmIzM0O3IzID0gcjA7JiMzNDsKJiM0MzsJCSYjMzQ7cjMgJmFtcDs9IDB4ZmZmZjsmIzM0OwomIzQzOwkJJiMzNDtyMSA9IHI2OyYjMzQ7CiYjNDM7CQkmIzM0O3IyID0gMDsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX25ld107JiMzNDsKJiM0MzsJJiMzNDsxOiYjMzQ7CiYjNDM7CQkmIzM0O3IxID0gcjY7JiMzNDsKJiM0MzsJCSYjMzQ7Y2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTsmIzM0OwomIzQzOwkJJiMzNDtpZiByMCAhPSAwIGdvdG8gMWI7JiMzNDsKJiM0MzsJCSYjMzQ7cjEgPSByNjsmIzM0OwomIzQzOwkJJiMzNDtjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldOyYjMzQ7CiYjNDM7CQkmIzM0O3IwID0gMDsmIzM0OwomIzQzOwkJJiMzNDtleGl0OyYjMzQ7CiYjNDM7CQk6CiYjNDM7CQk6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLAomIzQzOwkJICBfX2ltbShicGZfaXRlcl9udW1fbmV3KSwKJiM0MzsJCSAgX19pbW0oYnBmX2l0ZXJfbnVtX25leHQpLAomIzQzOwkJICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSkKJiM0MzsJCTogX19jbG9iYmVyX2NvbW1vbiwgJiMzNDtyNiYjMzQ7CiYjNDM7CSk7CiYjNDM7fQomIzQzOwogU0VDKCYjMzQ7cmF3X3RwJiMzNDspCiBfX3N1Y2Nlc3MKIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdG9yIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG9wdGltaXppbmcgdGhlIEJQRiBpdGVyYXRvciBsb2dpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgc2NhbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEhvd2V2ZXIsIHRoaXMgZ29lcyBkZWVwZXIsIGFzIGl0JiMzOTtzIGFsc28gdG91Y2hpbmcgdGhlIHZlcmlmaWVyIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50cmlndWluZy4gVGhleSYjMzk7cmUgaW5saW5pbmcgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCB3aXRoaW4gdGhlIHZlcmlmaWVyLiBBZGRpbmcgYmVuY2htYXJrcyBhbmQgdGVzdHMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGlzIGEgc21hcnQgbW92ZS4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBjaGFuZ2VzIGZpcnN0LiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveWAsIGFuZCB0aGVuIGNhbGxpbmcgdGhlbSBmcm9tIHdpdGhpbiBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgLiBSaWdodCwgc28gdGhpcyByZXBsYWNlcyBrZnVuYyBjYWxscyB3aXRoIGlubGluZSBCUEYgaW5zdHJ1Y3Rpb25zLCBlZmZlY3RpdmVseSBhbHRlcmluZyB0aGUgdmVyaWZpY2F0aW9uIGFuZCBKSVQgcHJvY2Vzcy4gVGhpcyBpcyBnb29kLgoKRnVuY3Rpb25hbGx5LCB0aGlzIHNob3VsZCBpbXBhY3QgaG93IEJQRiBwcm9ncmFtcyBhcmUgdmVyaWZpZWQgYW5kIEpJVHRlZCwgc2hpZnRpbmcgZnJvbSBrZnVuYyBjYWxscyB0byBpbmxpbmVkIEJQRiBpbnN0cnVjdGlvbnMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplIGhlcmUgYXJlIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIG9mIGNvdXJzZSB0aGUgb3JpZ2luYWxzIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBoZXJlLCBhcyB0aGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQuCgpMZXQmIzM5O3MgZmluZCBvdXQgaG93IHJlYWNoYWJsZSBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgIGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgQlBGIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIHRoZSBiYXNlIHJlcXVpcmVtZW50LiBUaGVuLCBJIG5lZWQgdG8gc2VhcmNoIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBkaXJlY3RseSBmb3IgdGhhdCBmdW5jdGlvbiB0byBncmFzcCBpdHMgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1NC1cdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MzcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqVHJhY2luZyB0aGUgQlBGIEZ1bmN0aW9uIENhbGwgRml4LVVwKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cgZm9yIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC4gSSYjMzk7bGwgbmVlZCB0byB1c2Ugc29tZSBjb2RlIG5hdmlnYXRpb24gdG9vbHMsIHByb2JhYmx5IGdyZXAgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoLCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsIHRvIHRyYWNpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBsYXJnZXIgZXhlY3V0aW9uIGNvbnRleHQgaXQgb3BlcmF0ZXMgd2l0aGluLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBCUEYgcHJvY2Vzc2luZyBwaXBlbGluZS4gT25jZSBJIGhhdmUgdGhhdCBsaXN0LCBJIGNhbiBzdGFydCBkaXZpbmcgZGVlcGVyIGludG8gZWFjaCBjYWxsIHNpdGUgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aG9zZSBjYWxscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvZml4dXBzLmM9MTQ4MD1pbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODI1LVx0XHRpZiAoaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xua2VybmVsL2JwZi9maXh1cHMuYzoxODI2Olx0XHRcdHJldCA9IGJwZl9maXh1cF9rZnVuY19jYWxsKGVudiwgaW5zbiwgaW5zbl9idWYsIGkgJiM0MzsgZGVsdGEsIFx1MDAyNmNudCk7XG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MjctXHRcdFx0aWYgKHJldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1NC1cdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIEJQRiBGdW5jdGlvbiBDYWxsIEZpeHVwcyoqCgpBbHJpZ2h0LCBzbyBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgIGlzIGJlaW5nIHRyaWdnZXJlZCBmcm9tIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgQlBGIHZlcmlmaWVyLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93LCBzaW5jZSB3ZSBhcmUgZXhhbWluaW5nIEJQRiBpdGVyYXRvcnMsIEkgc2hvdWxkIGNoZWNrIHRoZSBmdW5jdGlvbnMgdXNlZCB3aXRoIGBicGZfaXRlcmAgd2hpY2ggYXJlOiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIHdpdGhpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVzZSBhcmUgd29ya2luZyBhcyBleHBlY3RlZCBvciBpZiB0aGV5IG5lZWQgdG8gYmUgdXBkYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYnBmX2l0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2JwZl9pdGVyLmM9NzcwPV9fYnBmX2tmdW5jIGludCBicGZfaXRlcl9udW1fbmV3KHN0cnVjdCBicGZfaXRlcl9udW0gKml0LCBpbnQgc3RhcnQsIGludCBlbmQpXG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTc3Ny1cdC8qIHN0YXJ0ID09IGVuZCBpcyBsZWdpdCwgaXQmIzM5O3MgYW4gZW1wdHkgcmFuZ2UgYW5kIHdlJiMzOTtsbCBqdXN0IGdldCBOVUxMXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6Nzc4Olx0ICogb24gZmlyc3QgKGFuZCBhbnkgc3Vic2VxdWVudCkgYnBmX2l0ZXJfbnVtX25leHQoKSBjYWxsXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzc5LVx0ICovXG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTc5MC1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo3OTE6XHQvKiB1c2VyIHdpbGwgY2FsbCBicGZfaXRlcl9udW1fbmV4dCgpIGZpcnN0LFxua2VybmVsL2JwZi9icGZfaXRlci5jLTc5Mi1cdCAqIHdoaWNoIHdpbGwgc2V0IHMtXHUwMDNlY3VyIHRvIGV4YWN0bHkgc3RhcnQgdmFsdWU7XG4tLVxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMC1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo4MDE6X19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MDIte1xuLS1cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MDktXHQgKiBzLVx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6ODEwOlx0ICogdGhlIGlubGluZWQgYnBmX2l0ZXJfbnVtX25leHQoKSBlbWl0cy5cbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MTEtXHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA2MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdGlvbiBLZnVuYyBQYXRjaCoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRob3NlIGFzIGtmdW5jcyDigJMga2VybmVsIGZ1bmN0aW9ucyBleHBvc2VkIGZvciB1c2Ugd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQgQlBGIGl0ZXJhdGlvbiBvdmVyIG51bWVyaWMgZGF0YS4gR2l2ZW4gdGhhdCwgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIHJlcXVpcmVtZW50IG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgbWFrZXMgdGhlIGFiaWxpdHkgdG8gY2FsbCB0aGUga2Z1bmNzIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbXMuCgpOb3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHdvdWxkIGJlIHdpc2UgdG8gc2VlIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgcmVsaWVzIG9uIG90aGVyIEJQRi1yZWxhdGVkIGtlcm5lbCBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZXF1aXJlZC4gVGltZSB0byBkaWcgdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDQ6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA0OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDQ3CgkJCQkJCQlvdXRwdXQ6IDE5MQoJCQkJCQkJdGhvdWdodHM6IDczMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIEl0ZXJhdGlvbiBLZnVuYyBJbmxpbmluZyoqCgpPa2F5LCBzbyBgQlBGX1NZU0NBTExgIGlzIHRoZSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHdlIG5lZWQgdG8gYmUgYXdhcmUgb2YgaGVyZS4gTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUgYXJlIHRoZSBzdGF0aWMgaW5saW5lcywgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuCgpJJiMzOTttIGdvaW5nIHRvIGxpc3QgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBhcyB0aGUgZm9jdXMgc3ltYm9sOyBpdCYjMzk7cyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIEkgbmVlZCB0byBhZGQgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIEkgbmVlZCB0byBjb25maXJtIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgYXJlIG5vdCBzdGF0aWMsIGFuZCB0aGV5IGFyZW4mIzM5O3QhCgpTbywgdG8gc3VtbWFyaXplLCB0aGUgZXNzZW50aWFsIGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZToKCiogICBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgCiogICBgYnBmX2l0ZXJfbnVtX25leHRgCiogICBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgCgpUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYCBhbmQgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4KCmBicGZfZml4dXBfa2Z1bmNfY2FsbGAgaXMgY2FsbGVkIGR1cmluZyBldmVyeSBrZnVuYyBjYWxsIGR1cmluZyB2ZXJpZmljYXRpb24uIEl0IGlzIHNwZWNpZmljIHRvIGtmdW5jIGNhbGxzLiBgYnBmX2RvX21pc2NfZml4dXBzYCBpcyB0aGUgY2FsbGVyLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIHBhdGNoIGludHJvZHVjZXMgaW5saW5pbmcgZm9yIHRoZSBgYnBmX2l0ZXJfbnVtXypgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBCZWNhdXNlIG9mIHRoaXMsIGl0JiMzOTtzIGltcGFjdGluZyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuCgpIZXJlJiMzOTtzIHRoZSBkYXRhIGZvciB0aGUgdG9vbDoKCioqRm9jdXMgU3ltYm9sczoqKgoKKiAgIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAKKiAgIGBicGZfaXRlcl9udW1fbmV4dGAKKiAgIGBicGZfaXRlcl9udW1fZGVzdHJveWAKCioqQ29uZmlnczoqKgoKKiAgIGBCUEZfU1lTQ0FMTGAKCkZpbmFsbHksIGBicGZfaXRlcl9udW1fbmV4dGAgaXMgYSBrZnVuYywgc28sIGl0IGlzIGNhbGxhYmxlIGZyb20gQlBGIHByb2dyYW1zLiBUaW1lIHRvIHJ1biB0aGlzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZml4dXBfa2Z1bmNfY2FsbCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fbmV4dCYjMzQ7LAogICAgJiMzNDticGZfaXRlcl9udW1fZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM4OjM5LjQ2ODY1OTYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODIwMzk1MTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ZpeHVwX2tmdW5jX2NhbGxcIixcbiAgICBcImJwZl9pdGVyX251bV9uZXh0XCIsXG4gICAgXCJicGZfaXRlcl9udW1fZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gaW5saW5lIGBicGZfaXRlcl9udW1fbmV3YCwgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAga2Z1bmNzLiBJdCBhbHNvIHVwZGF0ZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIEJQRiB2ZXJpZmllciBhbmQgaXRlcmF0b3IgbG9naWMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODozOS40Njg2NjYzMjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzU0NDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE2NTkwYzgyMWU3MWU0M2Y3YjZjOTJmYjQ2ODMwMWYzNjc0MmE3ZWVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDQ6Mzg6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXFxuaW5kZXggZjVlYWViMjQ5M2Q0YS4uZmYyMDU1Mzk5ZjNjMCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcXG5AQCAtODAyLDEyICs4MDIsMTQgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX2l0ZXJfbnVtX2tlcm4gKnMgPSAodm9pZCAqKWl0O1xcbiBcXG4tXFx0LyogY2hlY2sgZmFpbGVkIGluaXRpYWxpemF0aW9uIG9yIGlmIHdlIGFyZSBkb25lIChzYW1lIGJlaGF2aW9yKTtcXG4tXFx0ICogbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IG92ZXJmbG93LCBzbyBjb252ZXJ0IHRvIHM2NCBmb3IgY2hlY2tzLFxcbi1cXHQgKiBlLmcuLCBpZiBzLVxcdTAwM2VjdXIgPT0gcy1cXHUwMDNlZW5kID09IElOVF9NQVgsIHdlIGNhbid0IGp1c3QgZG9cXG4tXFx0ICogcy1cXHUwMDNlY3VyICsgMSBcXHUwMDNlPSBzLVxcdTAwM2VlbmRcXG4rXFx0LyogRGV0ZWN0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBvciBhIGZhaWxlZC9lbXB0eSBpdGVyYXRvcjogYWxsIG9mIHRoZXNlXFxuK1xcdCAqIGxlYXZlIHMtXFx1MDAzZWN1ciArIDEgXFx1MDAzZT0gcy1cXHUwMDNlZW5kLiBicGZfaXRlcl9udW1fbmV3KCkgc2V0IHMtXFx1MDAzZWN1ciB0byBzdGFydCAtIDFcXG4rXFx0ICogKHdoaWNoIHdyYXBzIHRvIElOVF9NQVggd2hlbiBzdGFydCA9PSBJTlRfTUlOKSwgc28gdGhlIHMtXFx1MDAzZWN1ciArIDEgYmVsb3dcXG4rXFx0ICogaXMgYSBkZWxpYmVyYXRlIDMyLWJpdCB3cmFwYXJvdW5kIHRoYXQgcmVjb3ZlcnMgc3RhcnQuIEFzIHMtXFx1MDAzZWN1ciBhbmRcXG4rXFx0ICogcy1cXHUwMDNlZW5kIGFyZSBpbnQsIHRoaXMgaXMgYW4gb3JkaW5hcnkgc2lnbmVkIDMyLWJpdCBjb21wYXJlLCBleGFjdGx5IHdoYXRcXG4rXFx0ICogdGhlIGlubGluZWQgYnBmX2l0ZXJfbnVtX25leHQoKSBlbWl0cy5cXG4gXFx0ICovXFxuLVxcdGlmICgoczY0KShzLVxcdTAwM2VjdXIgKyAxKSBcXHUwMDNlPSBzLVxcdTAwM2VlbmQpIHtcXG4rXFx0aWYgKHMtXFx1MDAzZWN1ciArIDEgXFx1MDAzZT0gcy1cXHUwMDNlZW5kKSB7XFxuIFxcdFxcdHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuQEAgLTgxOSw5ICs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcXG4gXFxuIF9fYnBmX2tmdW5jIHZvaWQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pdGVyX251bSAqaXQpXFxuIHtcXG4tXFx0c3RydWN0IGJwZl9pdGVyX251bV9rZXJuICpzID0gKHZvaWQgKilpdDtcXG4tXFxuLVxcdHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7XFxuK1xcdC8qXFxuK1xcdCAqIE5vdGhpbmcgdG8gZG86IHRoZSBzdGFjayBzbG90IGJhY2tpbmcgdGhlIGl0ZXJhdG9yIGlzIG5vIGxvbmdlclxcbitcXHQgKiB0cmFja2VkIGFzIGl0ZXJhdG9yIHN0YXRlIG9uY2UgZGVzdHJveSgpIHJldHVybnMsIHNvIGl0cyBjb250ZW50cyBkb1xcbitcXHQgKiBub3QgbWF0dGVyLiBUaGUgdmVyaWZpZXIgaW5saW5lcyB0aGlzIGNhbGwgYXdheSBlbnRpcmVseS5cXG4rXFx0ICovXFxuIH1cXG4gXFxuIF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IGU2ZjM1ZjRlNzE1YjYuLjM2ZjNlODBkMmYwYjkgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTE5NzczLDYgKzE5NzczLDgzIEBAIHN0YXRpYyB2b2lkIF9fZml4dXBfY29sbGVjdGlvbl9pbnNlcnRfa2Z1bmMoc3RydWN0IGJwZl9pbnNuX2F1eF9kYXRhICppbnNuX2F1eCxcXG4gXFx0KmNudCA9IDQ7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIElubGluZSBicGZfaXRlcl9udW1fbmV3KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvciwgUjIgYW5kIFIzIGhvbGQgdGhlIChpbnQpXFxuKyAqIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBLZWVwIGluIHN5bmMgd2l0aCB0aGUga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxcbit7XFxuK1xcdGludCBpID0gMDtcXG4rXFxuK1xcdC8qIGlmIChzdGFydCBcXHUwMDNlIGVuZCkgZ290byBlaW52YWw7ICovXFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfSk1QMzJfUkVHKEJQRl9KU0dULCBCUEZfUkVHXzIsIEJQRl9SRUdfMywgOCk7XFxuK1xcdC8qXFxuK1xcdCAqIHN0YXJ0IFxcdTAwM2M9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdFxcbitcXHQgKiBzdWJ0cmFjdGlvbiB0aGF0IHplcm8tZXh0ZW5kcyBpbnRvIHIwIGFuZCByYW5nZS1jaGVjayBpdCBhcyB1bnNpZ25lZC5cXG4rXFx0ICovXFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WMzJfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18zKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9BTFUzMl9SRUcoQlBGX1NVQiwgQlBGX1JFR18wLCBCUEZfUkVHXzIpO1xcbitcXHQvKiBpZiAocjAgXFx1MDAzZSBCUEZfTUFYX0xPT1BTKSBnb3RvIGUyYmlnOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9JTU0oQlBGX0pHVCwgQlBGX1JFR18wLCBCUEZfTUFYX0xPT1BTLCA4KTtcXG4rXFx0Lyogcy1cXHUwMDNlY3VyID0gc3RhcnQgLSAxOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMiwgMCk7XFxuK1xcdC8qIHMtXFx1MDAzZWVuZCA9IGVuZDsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMywgNCk7XFxuK1xcdC8qIHJldHVybiAwOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDUpO1xcbitcXHQvKiBlaW52YWw6IHMtXFx1MDAzZWN1ciA9IHMtXFx1MDAzZWVuZCA9IDA7IHJldHVybiAtRUlOVkFMOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0EoMik7XFxuK1xcdC8qIGUyYmlnOiBzLVxcdTAwM2VjdXIgPSBzLVxcdTAwM2VlbmQgPSAwOyByZXR1cm4gLUUyQklHOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMSwgMCwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUUyQklHKTtcXG4rXFxuK1xcdHJldHVybiBpO1xcbit9XFxuK1xcbisvKlxcbisgKiBJbmxpbmUgYnBmX2l0ZXJfbnVtX25leHQoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLiBLZWVwIGluIHN5bmMgd2l0aCB0aGVcXG4rICoga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4re1xcbitcXHRpbnQgaSA9IDA7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBzLVxcdTAwM2VjdXIgYW5kIHMtXFx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMncyBzLVxcdTAwM2VjdXIgKyAxIFxcdTAwM2U9IHMtXFx1MDAzZWVuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXRcXG4rXFx0ICogY29tcGFyaXNvbiBvZiAocy1cXHUwMDNlY3VyICsgMSkgYWdhaW5zdCBzLVxcdTAwM2VlbmQgYW5kIG5lZWRzIG5vIHNpZ24gZXh0ZW5zaW9uLlxcbitcXHQgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9MRFhfTUVNKEJQRl9XLCBCUEZfUkVHXzAsIEJQRl9SRUdfMSwgMCk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfQUxVMzJfSU1NKEJQRl9BREQsIEJQRl9SRUdfMCwgMSk7XFxuK1xcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18yLCBCUEZfUkVHXzEsIDQpO1xcbitcXHQvKiBpZiAoKHMzMikocy1cXHUwMDNlY3VyICsgMSkgXFx1MDAzZT0gKHMzMilzLVxcdTAwM2VlbmQpIGdvdG8gZG9uZTsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR0UsIEJQRl9SRUdfMCwgQlBGX1JFR18yLCAzKTtcXG4rXFx0Lyogcy1cXHUwMDNlY3VyKys7IHJldHVybiBcXHUwMDI2cy1cXHUwMDNlY3VyOyAqL1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18wLCAwKTtcXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xcbitcXHQvKiBkb25lOiBzLVxcdTAwM2VjdXIgPSBzLVxcdTAwM2VlbmQgPSAwOyByZXR1cm4gTlVMTDsgKi9cXG4rXFx0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xcbitcXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHXzAsIDApO1xcbitcXG4rXFx0cmV0dXJuIGk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlclxcbisgKiBkZXN0cm95KCksIHNvIG5vdGhpbmcgaGFzIHRvIGJlIGRvbmUgdG8gaXQ7IGVtaXQgYSBub3AganVzdCB0byBkcm9wIHRoZSBjYWxsLiBLZWVwIGluIHN5bmNcXG4rICogd2l0aCB0aGUga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxcbisgKi9cXG4rc3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4re1xcbitcXHRpbnNuX2J1ZlswXSA9IEJQRl9KTVBfQSgwKTtcXG4rXFxuK1xcdHJldHVybiAxO1xcbit9XFxuK1xcbiBpbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbiBcXHRcXHQgICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYsIGludCBpbnNuX2lkeCwgaW50ICpjbnQpXFxuIHtcXG5AQCAtMTk5MDIsNiArMTk5NzksMTIgQEAgaW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4gXFx0XFx0aW5zbl9idWZbNF0gPSBCUEZfQUxVNjRfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcXG4gXFx0XFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9ORUcsIEJQRl9SRUdfMCwgMCk7XFxuIFxcdFxcdCpjbnQgPSA2O1xcbitcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddKSB7XFxuK1xcdFxcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XFxuK1xcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxuK1xcdFxcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoaW5zbl9idWYpO1xcbitcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xcbitcXHRcXHQqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KGluc25fYnVmKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGVudi1cXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0uYXJnX3Byb2cpIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuaW5kZXggNTVkMzk0NDM4NzA1YS4uMzE3NGMyZjE4ZTcxNSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5AQCAtOTY1LDYgKzk2NSw3IEBAICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcXFxcbiBcXHRcXHRcXHQgICAgJChPVVRQVVQpL3BlcmZidWZfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vOiAkKE9VVFBVVCkvYnBmX2xvb3BfYmVuY2guc2tlbC5oXFxuKyQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm86ICQoT1VUUFVUKS9icGZfZm9yX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm86ICQoT1VUUFVUKS9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubzogJChPVVRQVVQpL2xvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXFxuQEAgLTk5MCw2ICs5OTEsNyBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcXFxcbitcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuaW5kZXggM2Q5ZDJjZDc3NjRiZC4uYjg2YjczNDU2ZDNjYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuQEAgLTI3Niw2ICsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcXG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX3JpbmdidWZzX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9ibG9vbV9tYXBfYXJncDtcXG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XFxuK2V4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3A7XFxuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwO1xcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfc3RybmNtcF9hcmdwO1xcbkBAIC0yOTIsNiArMjkzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX2NoaWxkIGJlbmNoX3BhcnNlcnNbXSA9IHtcXG4gXFx0eyBcXHUwMDI2YmVuY2hfcmluZ2J1ZnNfYXJncCwgMCwgXFxcIlJpbmcgYnVmZmVycyBiZW5jaG1hcmtcXFwiLCAwIH0sXFxuIFxcdHsgXFx1MDAyNmJlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCBcXFwiQmxvb20gZmlsdGVyIG1hcCBiZW5jaG1hcmtcXFwiLCAwIH0sXFxuIFxcdHsgXFx1MDAyNmJlbmNoX2JwZl9sb29wX2FyZ3AsIDAsIFxcXCJicGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrXFxcIiwgMCB9LFxcbitcXHR7IFxcdTAwMjZiZW5jaF9icGZfZm9yX2FyZ3AsIDAsIFxcXCJicGZfZm9yIGxvb3AgYmVuY2htYXJrXFxcIiwgMCB9LFxcbiBcXHR7IFxcdTAwMjZiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3AsIDAsIFxcXCJsb2NhbF9zdG9yYWdlIGJlbmNobWFya1xcXCIsIDAgfSxcXG4gXFx0eyBcXHUwMDI2YmVuY2hfc3RybmNtcF9hcmdwLCAwLCBcXFwiYnBmX3N0cm5jbXAgaGVscGVyIGJlbmNobWFya1xcXCIsIDAgfSxcXG4gXFx0eyBcXHUwMDI2YmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYXJncCwgMCxcXG5AQCAtNTU3LDYgKzU1OSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYmxvb21fZmFsc2VfcG9zaXRpdmU7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2hhc2htYXBfd2l0aF9ibG9vbTtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfbG9vcDtcXG4rZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfbm9faGVscGVyO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfaGVscGVyO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlO1xcbkBAIC02NDAsNiArNjQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XFxuIFxcdFxcdTAwMjZiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb20sXFxuIFxcdFxcdTAwMjZiZW5jaF9oYXNobWFwX3dpdGhfYmxvb20sXFxuIFxcdFxcdTAwMjZiZW5jaF9icGZfbG9vcCxcXG4rXFx0XFx1MDAyNmJlbmNoX2JwZl9mb3IsXFxuIFxcdFxcdTAwMjZiZW5jaF9zdHJuY21wX25vX2hlbHBlcixcXG4gXFx0XFx1MDAyNmJlbmNoX3N0cm5jbXBfaGVscGVyLFxcbiBcXHRcXHUwMDI2YmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjczMGM1MWFkMmRlYzNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcXG5AQCAtMCwwICsxLDEwNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjYXJncC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXFwiYmVuY2guaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9mb3JfYmVuY2guc2tlbC5oXFxcIlxcbitcXG4rLyogQlBGIHRyaWdnZXJpbmcgYmVuY2htYXJrcyAqL1xcbitzdGF0aWMgc3RydWN0IGN0eCB7XFxuK1xcdHN0cnVjdCBicGZfZm9yX2JlbmNoICpza2VsO1xcbit9IGN0eDtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qge1xcbitcXHRfX3UzMiBucl9sb29wcztcXG4rfSBhcmdzID0ge1xcbitcXHQvKlxcbitcXHQgKiBEZWZhdWx0IHRvIGEgbGFyZ2UgbG9vcCBjb3VudCBzbyB0aGUgcGVyLWl0ZXJhdGlvbiBicGZfaXRlcl9udW1fbmV4dCgpIGNvc3QgZG9taW5hdGVzXFxuK1xcdCAqIHRoZSBvbmUtdGltZSBicGZfaXRlcl9udW1fbmV3KCkvZGVzdHJveSgpIHNldHVwIGFuZCB0ZWFyZG93bi5cXG4rXFx0ICovXFxuK1xcdC5ucl9sb29wcyA9IDEwMDAsXFxuK307XFxuK1xcbitlbnVtIHtcXG4rXFx0QVJHX05SX0xPT1BTID0gNDAwMCxcXG4rfTtcXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0c1tdID0ge1xcbitcXHR7IFxcXCJucl9sb29wc1xcXCIsIEFSR19OUl9MT09QUywgXFxcIm5yX2xvb3BzXFxcIiwgMCxcXG4rXFx0XFx0XFxcIlNldCBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIGJwZl9mb3IoKSBsb29wXFxcIn0sXFxuK1xcdHt9LFxcbit9O1xcbitcXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN3aXRjaCAoa2V5KSB7XFxuK1xcdGNhc2UgQVJHX05SX0xPT1BTOlxcbitcXHRcXHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbisvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi9cXG4rY29uc3Qgc3RydWN0IGFyZ3AgYmVuY2hfYnBmX2Zvcl9hcmdwID0ge1xcbitcXHQub3B0aW9ucyA9IG9wdHMsXFxuK1xcdC5wYXJzZXIgPSBwYXJzZV9hcmcsXFxuK307XFxuK1xcbitzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKVxcbit7XFxuK1xcdGlmIChlbnYuY29uc3VtZXJfY250ICE9IDApIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJiZW5jaG1hcmsgZG9lc24ndCBzdXBwb3J0IGNvbnN1bWVyIVxcXFxuXFxcIik7XFxuK1xcdFxcdGV4aXQoMSk7XFxuK1xcdH1cXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgKnByb2R1Y2VyKHZvaWQgKmlucHV0KVxcbit7XFxuK1xcdHdoaWxlICh0cnVlKVxcbitcXHRcXHQvKiB0cmlnZ2VyIHRoZSBicGYgcHJvZ3JhbSAqL1xcbitcXHRcXHRzeXNjYWxsKF9fTlJfZ2V0cGdpZCk7XFxuK1xcbitcXHRyZXR1cm4gTlVMTDtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpXFxuK3tcXG4rXFx0cmVzLVxcdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXFx1MDAyNmN0eC5za2VsLVxcdTAwM2Vic3MtXFx1MDAzZWhpdHMsIDApO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBicGZfbGluayAqbGluaztcXG4rXFxuK1xcdHNldHVwX2xpYmJwZigpO1xcbitcXG4rXFx0Y3R4LnNrZWwgPSBicGZfZm9yX2JlbmNoX19vcGVuX2FuZF9sb2FkKCk7XFxuK1xcdGlmICghY3R4LnNrZWwpIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcXFxuXFxcIik7XFxuK1xcdFxcdGV4aXQoMSk7XFxuK1xcdH1cXG4rXFxuK1xcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVxcdTAwM2Vwcm9ncy5iZW5jaG1hcmspO1xcbitcXHRpZiAoIWxpbmspIHtcXG4rXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJmYWlsZWQgdG8gYXR0YWNoIHByb2dyYW0hXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXhpdCgxKTtcXG4rXFx0fVxcbitcXG4rXFx0Y3R4LnNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlbnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzO1xcbit9XFxuK1xcbitjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2ZvciA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwiYnBmLWZvclxcXCIsXFxuK1xcdC5hcmdwID0gXFx1MDAyNmJlbmNoX2JwZl9mb3JfYXJncCxcXG4rXFx0LnZhbGlkYXRlID0gdmFsaWRhdGUsXFxuK1xcdC5zZXR1cCA9IHNldHVwLFxcbitcXHQucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsXFxuK1xcdC5tZWFzdXJlID0gbWVhc3VyZSxcXG4rXFx0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXFxuK1xcdC5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLFxcbit9O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uN2RhNjQ1MzkyMGRhYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoXFxuQEAgLTAsMCArMSwxNSBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbitzb3VyY2UgLi9iZW5jaHMvcnVuX2NvbW1vbi5zaFxcbitcXG4rc2V0IC1ldWZvIHBpcGVmYWlsXFxuK1xcbitmb3IgdCBpbiAxIDQgOCAxMiAxNjsgZG9cXG4rZm9yIGkgaW4gMTAgMTAwIDUwMCAxMDAwIDUwMDAgMTAwMDAgNTAwMDAgMTAwMDAwIDUwMDAwMCAxMDAwMDAwOyBkb1xcbitzdWJ0aXRsZSBcXFwibnJfbG9vcHM6ICRpLCBucl90aHJlYWRzOiAkdFxcXCJcXG4rXFx0c3VtbWFyaXplX29wcyBcXFwiYnBmX2ZvcjogXFxcIiBcXFxcXFxuK1xcdCAgICBcXFwiJCgkUlVOX0JFTkNIIC1wICR0IC0tbnJfbG9vcHMgJGkgYnBmLWZvcilcXFwiXFxuK1xcdHByaW50ZiBcXFwiXFxcXG5cXFwiXFxuK2RvbmVcXG4rZG9uZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjljNzIzMDUxZmM3NFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jXFxuQEAgLTAsMCArMSwzMiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJicGZfbWlzYy5oXFxcIlxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuK1xcbitpbnQgbnJfbG9vcHM7XFxuK2xvbmcgaGl0cztcXG4rXFxuK3N0YXRpYyBpbnQgb3V0ZXJfbG9vcChfX3UzMiBpbmRleCwgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEVtcHR5IGJvZHk6IHRoZSB3b3JrIGJlaW5nIG1lYXN1cmVkIGlzIHRoZSBvcGVuLWNvZGVkIG51bWVyaWMgaXRlcmF0b3IgaXRzZWxmXFxuK1xcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cXG4rXFx0ICovXFxuK1xcdGJwZl9mb3IoaSwgMCwgbnJfbG9vcHMpXFxuK1xcdFxcdDtcXG4rXFx0X19zeW5jX2FkZF9hbmRfZmV0Y2goXFx1MDAyNmhpdHMsIG5yX2xvb3BzKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiZmVudHJ5L1xcXCIgU1lTX1BSRUZJWCBcXFwic3lzX2dldHBnaWRcXFwiKVxcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcXG4re1xcbitcXHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbmluZGV4IDBmYTcwYjEzM2Q5MzIuLjYyZDdkZjllODBiZWIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuY1xcbkBAIC04OCw2ICs4OCw4OSBAQCBpbnQgaXRlcl9lcnJfdW5zYWZlX2FzbV9sb29wKGNvbnN0IHZvaWQgKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIE5ha2VkIGZ1bmN0aW9uLCBzbyB0aGVyZSBpcyBubyBjb21waWxlci1nZW5lcmF0ZWQgZ2x1ZSBhbmQgdGhlIHdob2xlIGlubGluZWQgcHJvZ3JhbSBjYW4gYmVcXG4rICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxcbisgKiAoYnBmX2ppdF9uZWVkc196ZXh0KCkgPT0gZmFsc2UpOyBvbiBhcmNoZXMgdGhhdCBuZWVkIGV4cGxpY2l0IHplcm8tZXh0ZW5zaW9uIHRoZSB2ZXJpZmllclxcbisgKiBpbnRlcmxlYXZlcyBcXFwid04gPSB3TlxcXCIgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXNcXG4rICogYXJjaCBpbmRlcGVuZGVudCwgc28gY2hlY2tpbmcgaXQgb24gdGhlc2UgYXJjaGVzIGlzIHN1ZmZpY2llbnQuXFxuKyAqXFxuKyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kXFxuKyAqIC1FMkJJRyBlcnJvciBwYXRocyk7IGJwZl9pdGVyX251bV9uZXh0KCkgYW5kIGJwZl9pdGVyX251bV9kZXN0cm95KCkgYXJlIGlubGluZWQgdG9vLlxcbisgKi9cXG4rU0VDKFxcXCJyYXdfdHBcXFwiKVxcbitfX2FyY2hfeDg2XzY0XFxuK19fYXJjaF9hcm02NFxcbitfX3N1Y2Nlc3NcXG4rX194bGF0ZWQoXFxcInI2ID0gcjEwXFxcIilcXG4rX194bGF0ZWQoXFxcInI2ICs9IC04XFxcIilcXG4rX194bGF0ZWQoXFxcImNhbGwgdW5rbm93blxcXCIpXFxuK19feGxhdGVkKFxcXCJyMyA9IHIwXFxcIilcXG4rX194bGF0ZWQoXFxcInIzIFxcdTAwMjY9IDY1NTM1XFxcIilcXG4rX194bGF0ZWQoXFxcInIxID0gcjZcXFwiKVxcbitfX3hsYXRlZChcXFwicjIgPSAwXFxcIilcXG4rLyogYnBmX2l0ZXJfbnVtX25ldyhcXHUwMDI2aXQsIDAsIFxcdTAwM2Nub24tY29uc3RcXHUwMDNlKSB3aXRoIHRoZSByYW5nZSBjaGVjayBrZXB0ICovXFxuK19feGxhdGVkKFxcXCJpZiB3MiBzXFx1MDAzZSB3MyBnb3RvIHBjKzhcXFwiKVxcbitfX3hsYXRlZChcXFwidzAgPSB3M1xcXCIpXFxuK19feGxhdGVkKFxcXCJ3MCAtPSB3MlxcXCIpXFxuK19feGxhdGVkKFxcXCJpZiByMCBcXHUwMDNlIDB4ODAwMDAwIGdvdG8gcGMrOFxcXCIpXFxuK19feGxhdGVkKFxcXCJ3MiArPSAtMVxcXCIpXFxuK19feGxhdGVkKFxcXCIqKHUzMiAqKShyMSArMCkgPSByMlxcXCIpXFxuK19feGxhdGVkKFxcXCIqKHUzMiAqKShyMSArNCkgPSByM1xcXCIpXFxuK19feGxhdGVkKFxcXCJyMCA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYys1XFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAtMjJcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYysyXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAtN1xcXCIpXFxuK19feGxhdGVkKFxcXCJyMSA9IHI2XFxcIilcXG4rLyogYnBmX2l0ZXJfbnVtX25leHQoXFx1MDAyNml0KSAqL1xcbitfX3hsYXRlZChcXFwicjAgPSAqKHUzMiAqKShyMSArMClcXFwiKVxcbitfX3hsYXRlZChcXFwidzAgKz0gMVxcXCIpXFxuK19feGxhdGVkKFxcXCJyMiA9ICoodTMyICopKHIxICs0KVxcXCIpXFxuK19feGxhdGVkKFxcXCJpZiB3MCBzXFx1MDAzZT0gdzIgZ290byBwYyszXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTMyICopKHIxICswKSA9IHIwXFxcIilcXG4rX194bGF0ZWQoXFxcInIwID0gcjFcXFwiKVxcbitfX3hsYXRlZChcXFwiZ290byBwYysyXFxcIilcXG4rX194bGF0ZWQoXFxcIioodTY0ICopKHIxICswKSA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwicjAgPSAwXFxcIilcXG4rX194bGF0ZWQoXFxcImlmIHIwICE9IDB4MCBnb3RvIHBjLTExXFxcIilcXG4rX194bGF0ZWQoXFxcInIxID0gcjZcXFwiKVxcbisvKiBicGZfaXRlcl9udW1fZGVzdHJveShcXHUwMDI2aXQpIGlzIGlubGluZWQgdG8gYSBub3AgKi9cXG4rX194bGF0ZWQoXFxcImdvdG8gcGMrMFxcXCIpXFxuK19feGxhdGVkKFxcXCJyMCA9IDBcXFwiKVxcbitfX3hsYXRlZChcXFwiZXhpdFxcXCIpXFxuK2ludCBfX25ha2VkIGl0ZXJfbnVtX25ld19pbmxpbmVkKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlIChcXG4rXFx0XFx0LyogcjYgcG9pbnRzIHRvIHN0cnVjdCBicGZfaXRlcl9udW0gb24gdGhlIHN0YWNrICovXFxuK1xcdFxcdFxcXCJyNiA9IHIxMDtcXFwiXFxuK1xcdFxcdFxcXCJyNiArPSAtODtcXFwiXFxuK1xcdFxcdC8qIG5vbi1jb25zdGFudCBlbmQgc28gdGhlIHJhbmdlIGNoZWNrcyBhcmUga2VwdCAqL1xcbitcXHRcXHRcXFwiY2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1xcXCJcXG4rXFx0XFx0XFxcInIzID0gcjA7XFxcIlxcbitcXHRcXHRcXFwicjMgXFx1MDAyNj0gMHhmZmZmO1xcXCJcXG4rXFx0XFx0XFxcInIxID0gcjY7XFxcIlxcbitcXHRcXHRcXFwicjIgPSAwO1xcXCJcXG4rXFx0XFx0XFxcImNhbGwgJVticGZfaXRlcl9udW1fbmV3XTtcXFwiXFxuK1xcdFxcXCIxOlxcXCJcXG4rXFx0XFx0XFxcInIxID0gcjY7XFxcIlxcbitcXHRcXHRcXFwiY2FsbCAlW2JwZl9pdGVyX251bV9uZXh0XTtcXFwiXFxuK1xcdFxcdFxcXCJpZiByMCAhPSAwIGdvdG8gMWI7XFxcIlxcbitcXHRcXHRcXFwicjEgPSByNjtcXFwiXFxuK1xcdFxcdFxcXCJjYWxsICVbYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldO1xcXCJcXG4rXFx0XFx0XFxcInIwID0gMDtcXFwiXFxuK1xcdFxcdFxcXCJleGl0O1xcXCJcXG4rXFx0XFx0OlxcbitcXHRcXHQ6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLFxcbitcXHRcXHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxcbitcXHRcXHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXh0KSxcXG4rXFx0XFx0ICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSlcXG4rXFx0XFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcXFwicjZcXFwiXFxuK1xcdCk7XFxuK31cXG4rXFxuIFNFQyhcXFwicmF3X3RwXFxcIilcXG4gX19zdWNjZXNzXFxuIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODozOS45MTMxNTk4MDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODM3NTg4Njk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9maXh1cF9rZnVuY19jYWxsXCIsXG4gICAgXCJicGZfaXRlcl9udW1fbmV4dFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGlubGluZSBgYnBmX2l0ZXJfbnVtX25ld2AsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGtmdW5jcy4gSXQgYWxzbyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnBmX2l0ZXJfbnVtX25leHRgIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTY1OTBjODIxZTcxZTQzZjdiNmM5MmZiNDY4MzAxZjM2NzQyYTdlZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDA0OjM4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfaXRlci5jIGIva2VybmVsL2JwZi9icGZfaXRlci5jXG5pbmRleCBmNWVhZWIyNDkzZDRhLi5mZjIwNTUzOTlmM2MwIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfaXRlci5jXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9pdGVyLmNcbkBAIC04MDIsMTIgKzgwMiwxNCBAQCBfX2JwZl9rZnVuYyBpbnQgKmJwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaXRlcl9udW0qIGl0KVxuIHtcbiBcdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4gXG4tXHQvKiBjaGVjayBmYWlsZWQgaW5pdGlhbGl6YXRpb24gb3IgaWYgd2UgYXJlIGRvbmUgKHNhbWUgYmVoYXZpb3IpO1xuLVx0ICogbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IG92ZXJmbG93LCBzbyBjb252ZXJ0IHRvIHM2NCBmb3IgY2hlY2tzLFxuLVx0ICogZS5nLiwgaWYgcy1cdTAwM2VjdXIgPT0gcy1cdTAwM2VlbmQgPT0gSU5UX01BWCwgd2UgY2FuJ3QganVzdCBkb1xuLVx0ICogcy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmRcbitcdC8qIERldGVjdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgb3IgYSBmYWlsZWQvZW1wdHkgaXRlcmF0b3I6IGFsbCBvZiB0aGVzZVxuK1x0ICogbGVhdmUgcy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQuIGJwZl9pdGVyX251bV9uZXcoKSBzZXQgcy1cdTAwM2VjdXIgdG8gc3RhcnQgLSAxXG4rXHQgKiAod2hpY2ggd3JhcHMgdG8gSU5UX01BWCB3aGVuIHN0YXJ0ID09IElOVF9NSU4pLCBzbyB0aGUgcy1cdTAwM2VjdXIgKyAxIGJlbG93XG4rXHQgKiBpcyBhIGRlbGliZXJhdGUgMzItYml0IHdyYXBhcm91bmQgdGhhdCByZWNvdmVycyBzdGFydC4gQXMgcy1cdTAwM2VjdXIgYW5kXG4rXHQgKiBzLVx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XG4rXHQgKiB0aGUgaW5saW5lZCBicGZfaXRlcl9udW1fbmV4dCgpIGVtaXRzLlxuIFx0ICovXG4tXHRpZiAoKHM2NCkocy1cdTAwM2VjdXIgKyAxKSBcdTAwM2U9IHMtXHUwMDNlZW5kKSB7XG4rXHRpZiAocy1cdTAwM2VjdXIgKyAxIFx1MDAzZT0gcy1cdTAwM2VlbmQpIHtcbiBcdFx0cy1cdTAwM2VjdXIgPSBzLVx1MDAzZWVuZCA9IDA7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuQEAgLTgxOSw5ICs4MjEsMTEgQEAgX19icGZfa2Z1bmMgaW50ICpicGZfaXRlcl9udW1fbmV4dChzdHJ1Y3QgYnBmX2l0ZXJfbnVtKiBpdClcbiBcbiBfX2JwZl9rZnVuYyB2b2lkIGJwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9udW0gKml0KVxuIHtcbi1cdHN0cnVjdCBicGZfaXRlcl9udW1fa2VybiAqcyA9ICh2b2lkICopaXQ7XG4tXG4tXHRzLVx1MDAzZWN1ciA9IHMtXHUwMDNlZW5kID0gMDtcbitcdC8qXG4rXHQgKiBOb3RoaW5nIHRvIGRvOiB0aGUgc3RhY2sgc2xvdCBiYWNraW5nIHRoZSBpdGVyYXRvciBpcyBubyBsb25nZXJcbitcdCAqIHRyYWNrZWQgYXMgaXRlcmF0b3Igc3RhdGUgb25jZSBkZXN0cm95KCkgcmV0dXJucywgc28gaXRzIGNvbnRlbnRzIGRvXG4rXHQgKiBub3QgbWF0dGVyLiBUaGUgdmVyaWZpZXIgaW5saW5lcyB0aGlzIGNhbGwgYXdheSBlbnRpcmVseS5cbitcdCAqL1xuIH1cbiBcbiBfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZTZmMzVmNGU3MTViNi4uMzZmM2U4MGQyZjBiOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk3NzMsNiArMTk3NzMsODMgQEAgc3RhdGljIHZvaWQgX19maXh1cF9jb2xsZWN0aW9uX2luc2VydF9rZnVuYyhzdHJ1Y3QgYnBmX2luc25fYXV4X2RhdGEgKmluc25fYXV4LFxuIFx0KmNudCA9IDQ7XG4gfVxuIFxuKy8qXG4rICogSW5saW5lIGJwZl9pdGVyX251bV9uZXcoKS4gUjEgaG9sZHMgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZXJhdG9yLCBSMiBhbmQgUjMgaG9sZCB0aGUgKGludClcbisgKiBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gS2VlcCBpbiBzeW5jIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbisgKi9cbitzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fbmV3KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4re1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0LyogaWYgKHN0YXJ0IFx1MDAzZSBlbmQpIGdvdG8gZWludmFsOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9KTVAzMl9SRUcoQlBGX0pTR1QsIEJQRl9SRUdfMiwgQlBGX1JFR18zLCA4KTtcbitcdC8qXG4rXHQgKiBzdGFydCBcdTAwM2M9IGVuZCBoZXJlLCBzbyB0aGUgcmFuZ2UgZW5kIC0gc3RhcnQgZml0cyBpbiBhIHUzMjsgY29tcHV0ZSBpdCBhcyBhIDMyLWJpdFxuK1x0ICogc3VidHJhY3Rpb24gdGhhdCB6ZXJvLWV4dGVuZHMgaW50byByMCBhbmQgcmFuZ2UtY2hlY2sgaXQgYXMgdW5zaWduZWQuXG4rXHQgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfTU9WMzJfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18zKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfQUxVMzJfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18yKTtcbitcdC8qIGlmIChyMCBcdTAwM2UgQlBGX01BWF9MT09QUykgZ290byBlMmJpZzsgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0lNTShCUEZfSkdULCBCUEZfUkVHXzAsIEJQRl9NQVhfTE9PUFMsIDgpO1xuK1x0Lyogcy1cdTAwM2VjdXIgPSBzdGFydCAtIDE7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0FMVTMyX0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC0xKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfU1RYX01FTShCUEZfVywgQlBGX1JFR18xLCBCUEZfUkVHXzIsIDApO1xuK1x0Lyogcy1cdTAwM2VlbmQgPSBlbmQ7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX1NUWF9NRU0oQlBGX1csIEJQRl9SRUdfMSwgQlBGX1JFR18zLCA0KTtcbitcdC8qIHJldHVybiAwOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfSk1QX0EoNSk7XG4rXHQvKiBlaW52YWw6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUVJTlZBTDsgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xLCAwLCAwKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfMCwgLUVJTlZBTCk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xuK1x0LyogZTJiaWc6IHMtXHUwMDNlY3VyID0gcy1cdTAwM2VlbmQgPSAwOyByZXR1cm4gLUUyQklHOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAtRTJCSUcpO1xuK1xuK1x0cmV0dXJuIGk7XG4rfVxuK1xuKy8qXG4rICogSW5saW5lIGJwZl9pdGVyX251bV9uZXh0KCkuIFIxIGhvbGRzIHRoZSBwb2ludGVyIHRvIHRoZSBpdGVyYXRvci4gS2VlcCBpbiBzeW5jIHdpdGggdGhlXG4rICoga2Z1bmMgaW4ga2VybmVsL2JwZi9icGZfaXRlci5jLlxuKyAqL1xuK3N0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9uZXh0KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4re1xuK1x0aW50IGkgPSAwO1xuK1xuK1x0LypcbitcdCAqIHMtXHUwMDNlY3VyIGFuZCBzLVx1MDAzZWVuZCBhcmUgaW50LCBzbyB0aGUga2Z1bmMncyBzLVx1MDAzZWN1ciArIDEgXHUwMDNlPSBzLVx1MDAzZWVuZCBjaGVjayBpcyBhIHNpZ25lZCAzMi1iaXRcbitcdCAqIGNvbXBhcmlzb24gb2YgKHMtXHUwMDNlY3VyICsgMSkgYWdhaW5zdCBzLVx1MDAzZWVuZCBhbmQgbmVlZHMgbm8gc2lnbiBleHRlbnNpb24uXG4rXHQgKi9cbitcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18wLCBCUEZfUkVHXzEsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9BTFUzMl9JTU0oQlBGX0FERCwgQlBGX1JFR18wLCAxKTtcbitcdGluc25fYnVmW2krK10gPSBCUEZfTERYX01FTShCUEZfVywgQlBGX1JFR18yLCBCUEZfUkVHXzEsIDQpO1xuK1x0LyogaWYgKChzMzIpKHMtXHUwMDNlY3VyICsgMSkgXHUwMDNlPSAoczMyKXMtXHUwMDNlZW5kKSBnb3RvIGRvbmU7ICovXG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUDMyX1JFRyhCUEZfSlNHRSwgQlBGX1JFR18wLCBCUEZfUkVHXzIsIDMpO1xuK1x0Lyogcy1cdTAwM2VjdXIrKzsgcmV0dXJuIFx1MDAyNnMtXHUwMDNlY3VyOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVFhfTUVNKEJQRl9XLCBCUEZfUkVHXzEsIEJQRl9SRUdfMCwgMCk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMSk7XG4rXHRpbnNuX2J1ZltpKytdID0gQlBGX0pNUF9BKDIpO1xuK1x0LyogZG9uZTogcy1cdTAwM2VjdXIgPSBzLVx1MDAzZWVuZCA9IDA7IHJldHVybiBOVUxMOyAqL1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEsIDAsIDApO1xuK1x0aW5zbl9idWZbaSsrXSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR18wLCAwKTtcbitcbitcdHJldHVybiBpO1xuK31cbitcbisvKlxuKyAqIElubGluZSBicGZfaXRlcl9udW1fZGVzdHJveSgpLiBUaGUgc3RhY2sgc2xvdCBpcyBubyBsb25nZXIgdHJhY2tlZCBhcyBpdGVyYXRvciBzdGF0ZSBhZnRlclxuKyAqIGRlc3Ryb3koKSwgc28gbm90aGluZyBoYXMgdG8gYmUgZG9uZSB0byBpdDsgZW1pdCBhIG5vcCBqdXN0IHRvIGRyb3AgdGhlIGNhbGwuIEtlZXAgaW4gc3luY1xuKyAqIHdpdGggdGhlIGtmdW5jIGluIGtlcm5lbC9icGYvYnBmX2l0ZXIuYy5cbisgKi9cbitzdGF0aWMgaW50IGlubGluZV9icGZfaXRlcl9udW1fZGVzdHJveShzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmKVxuK3tcbitcdGluc25fYnVmWzBdID0gQlBGX0pNUF9BKDApO1xuK1xuK1x0cmV0dXJuIDE7XG4rfVxuK1xuIGludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4gXHRcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcbiB7XG5AQCAtMTk5MDIsNiArMTk5NzksMTIgQEAgaW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbiBcdFx0aW5zbl9idWZbNF0gPSBCUEZfQUxVNjRfUkVHKEJQRl9TVUIsIEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcbiBcdFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9ORUcsIEJQRl9SRUdfMCwgMCk7XG4gXHRcdCpjbnQgPSA2O1xuK1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9uZXddKSB7XG4rXHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ldyhpbnNuX2J1Zik7XG4rXHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XG4rXHRcdCpjbnQgPSBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHQoaW5zbl9idWYpO1xuK1x0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xuK1x0XHQqY250ID0gaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KGluc25fYnVmKTtcbiBcdH1cbiBcbiBcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0uYXJnX3Byb2cpIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDU1ZDM5NDQzODcwNWEuLjMxNzRjMmYxOGU3MTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTk2NSw2ICs5NjUsNyBAQCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG4gXHRcdFx0ICAgICQoT1VUUFVUKS9wZXJmYnVmX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm86ICQoT1VUUFVUKS9ibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm86ICQoT1VUUFVUKS9icGZfbG9vcF9iZW5jaC5za2VsLmhcbiskKE9VVFBVVCkvYmVuY2hfYnBmX2Zvci5vOiAkKE9VVFBVVCkvYnBmX2Zvcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vOiAkKE9VVFBVVCkvc3RybmNtcF9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUubzogJChPVVRQVVQpL2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm86ICQoT1VUUFVUKS9sb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaFxuQEAgLTk5MCw2ICs5OTEsNyBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbitcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuaW5kZXggM2Q5ZDJjZDc3NjRiZC4uYjg2YjczNDU2ZDNjYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuQEAgLTI3Niw2ICsyNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfcmluZ2J1ZnNfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfYmxvb21fbWFwX2FyZ3A7XG4gZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9sb29wX2FyZ3A7XG4rZXh0ZXJuIHN0cnVjdCBhcmdwIGJlbmNoX2JwZl9mb3JfYXJncDtcbiBleHRlcm4gc3RydWN0IGFyZ3AgYmVuY2hfbG9jYWxfc3RvcmFnZV9hcmdwO1xuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9hcmdwO1xuIGV4dGVybiBzdHJ1Y3QgYXJncCBiZW5jaF9zdHJuY21wX2FyZ3A7XG5AQCAtMjkyLDYgKzI5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9jaGlsZCBiZW5jaF9wYXJzZXJzW10gPSB7XG4gXHR7IFx1MDAyNmJlbmNoX3JpbmdidWZzX2FyZ3AsIDAsIFwiUmluZyBidWZmZXJzIGJlbmNobWFya1wiLCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2Jsb29tX21hcF9hcmdwLCAwLCBcIkJsb29tIGZpbHRlciBtYXAgYmVuY2htYXJrXCIsIDAgfSxcbiBcdHsgXHUwMDI2YmVuY2hfYnBmX2xvb3BfYXJncCwgMCwgXCJicGZfbG9vcCBoZWxwZXIgYmVuY2htYXJrXCIsIDAgfSxcbitcdHsgXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLCAwLCBcImJwZl9mb3IgbG9vcCBiZW5jaG1hcmtcIiwgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9sb2NhbF9zdG9yYWdlX2FyZ3AsIDAsIFwibG9jYWxfc3RvcmFnZSBiZW5jaG1hcmtcIiwgMCB9LFxuIFx0eyBcdTAwMjZiZW5jaF9zdHJuY21wX2FyZ3AsIDAsIFwiYnBmX3N0cm5jbXAgaGVscGVyIGJlbmNobWFya1wiLCAwIH0sXG4gXHR7IFx1MDAyNmJlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2FyZ3AsIDAsXG5AQCAtNTU3LDYgKzU1OSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYmxvb21fZmFsc2VfcG9zaXRpdmU7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhvdXRfYmxvb207XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9oYXNobWFwX3dpdGhfYmxvb207XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfbG9vcDtcbitleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2JwZl9mb3I7XG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9zdHJuY21wX25vX2hlbHBlcjtcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX3N0cm5jbXBfaGVscGVyO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGU7XG5AQCAtNjQwLDYgKzY0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0ge1xuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRob3V0X2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfaGFzaG1hcF93aXRoX2Jsb29tLFxuIFx0XHUwMDI2YmVuY2hfYnBmX2xvb3AsXG4rXHRcdTAwMjZiZW5jaF9icGZfZm9yLFxuIFx0XHUwMDI2YmVuY2hfc3RybmNtcF9ub19oZWxwZXIsXG4gXHRcdTAwMjZiZW5jaF9zdHJuY21wX2hlbHBlcixcbiBcdFx1MDAyNmJlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2Zvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfZm9yLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzBjNTFhZDJkZWMzXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9mb3IuY1xuQEAgLTAsMCArMSwxMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbisjaW5jbHVkZSBcImJlbmNoLmhcIlxuKyNpbmNsdWRlIFwiYnBmX2Zvcl9iZW5jaC5za2VsLmhcIlxuK1xuKy8qIEJQRiB0cmlnZ2VyaW5nIGJlbmNobWFya3MgKi9cbitzdGF0aWMgc3RydWN0IGN0eCB7XG4rXHRzdHJ1Y3QgYnBmX2Zvcl9iZW5jaCAqc2tlbDtcbit9IGN0eDtcbitcbitzdGF0aWMgc3RydWN0IHtcbitcdF9fdTMyIG5yX2xvb3BzO1xuK30gYXJncyA9IHtcbitcdC8qXG4rXHQgKiBEZWZhdWx0IHRvIGEgbGFyZ2UgbG9vcCBjb3VudCBzbyB0aGUgcGVyLWl0ZXJhdGlvbiBicGZfaXRlcl9udW1fbmV4dCgpIGNvc3QgZG9taW5hdGVzXG4rXHQgKiB0aGUgb25lLXRpbWUgYnBmX2l0ZXJfbnVtX25ldygpL2Rlc3Ryb3koKSBzZXR1cCBhbmQgdGVhcmRvd24uXG4rXHQgKi9cbitcdC5ucl9sb29wcyA9IDEwMDAsXG4rfTtcbitcbitlbnVtIHtcbitcdEFSR19OUl9MT09QUyA9IDQwMDAsXG4rfTtcbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcbitcdHsgXCJucl9sb29wc1wiLCBBUkdfTlJfTE9PUFMsIFwibnJfbG9vcHNcIiwgMCxcbitcdFx0XCJTZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBicGZfZm9yKCkgbG9vcFwifSxcbitcdHt9LFxuK307XG4rXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxuK3tcbitcdHN3aXRjaCAoa2V5KSB7XG4rXHRjYXNlIEFSR19OUl9MT09QUzpcbitcdFx0YXJncy5ucl9sb29wcyA9IHN0cnRvbChhcmcsIE5VTEwsIDEwKTtcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbisvKiBleHBvcnRlZCBpbnRvIGJlbmNobWFyayBydW5uZXIgKi9cbitjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9icGZfZm9yX2FyZ3AgPSB7XG4rXHQub3B0aW9ucyA9IG9wdHMsXG4rXHQucGFyc2VyID0gcGFyc2VfYXJnLFxuK307XG4rXG4rc3RhdGljIHZvaWQgdmFsaWRhdGUodm9pZClcbit7XG4rXHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcImJlbmNobWFyayBkb2Vzbid0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCIpO1xuK1x0XHRleGl0KDEpO1xuK1x0fVxuK31cbitcbitzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4re1xuK1x0d2hpbGUgKHRydWUpXG4rXHRcdC8qIHRyaWdnZXIgdGhlIGJwZiBwcm9ncmFtICovXG4rXHRcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcbitcbitcdHJldHVybiBOVUxMO1xuK31cbitcbitzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcbit7XG4rXHRyZXMtXHUwMDNlaGl0cyA9IGF0b21pY19zd2FwKFx1MDAyNmN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2VoaXRzLCAwKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgc2V0dXAodm9pZClcbit7XG4rXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4rXG4rXHRzZXR1cF9saWJicGYoKTtcbitcbitcdGN0eC5za2VsID0gYnBmX2Zvcl9iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xuK1x0aWYgKCFjdHguc2tlbCkge1xuK1x0XHRmcHJpbnRmKHN0ZGVyciwgXCJmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4rXHRpZiAoIWxpbmspIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbitcbitcdGN0eC5za2VsLVx1MDAzZWJzcy1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4rfVxuK1xuK2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9icGZfZm9yID0ge1xuK1x0Lm5hbWUgPSBcImJwZi1mb3JcIixcbitcdC5hcmdwID0gXHUwMDI2YmVuY2hfYnBmX2Zvcl9hcmdwLFxuK1x0LnZhbGlkYXRlID0gdmFsaWRhdGUsXG4rXHQuc2V0dXAgPSBzZXR1cCxcbitcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcbitcdC5tZWFzdXJlID0gbWVhc3VyZSxcbitcdC5yZXBvcnRfcHJvZ3Jlc3MgPSBvcHNfcmVwb3J0X3Byb2dyZXNzLFxuK1x0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXG4rfTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL3J1bl9iZW5jaF9icGZfZm9yLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9ydW5fYmVuY2hfYnBmX2Zvci5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjdkYTY0NTM5MjBkYWJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvcnVuX2JlbmNoX2JwZl9mb3Iuc2hcbkBAIC0wLDAgKzEsMTUgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbitzb3VyY2UgLi9iZW5jaHMvcnVuX2NvbW1vbi5zaFxuK1xuK3NldCAtZXVmbyBwaXBlZmFpbFxuK1xuK2ZvciB0IGluIDEgNCA4IDEyIDE2OyBkb1xuK2ZvciBpIGluIDEwIDEwMCA1MDAgMTAwMCA1MDAwIDEwMDAwIDUwMDAwIDEwMDAwMCA1MDAwMDAgMTAwMDAwMDsgZG9cbitzdWJ0aXRsZSBcIm5yX2xvb3BzOiAkaSwgbnJfdGhyZWFkczogJHRcIlxuK1x0c3VtbWFyaXplX29wcyBcImJwZl9mb3I6IFwiIFxcXG4rXHQgICAgXCIkKCRSVU5fQkVOQ0ggLXAgJHQgLS1ucl9sb29wcyAkaSBicGYtZm9yKVwiXG4rXHRwcmludGYgXCJcXG5cIlxuK2RvbmVcbitkb25lXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9mb3JfYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfZm9yX2JlbmNoLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mOWM3MjMwNTFmYzc0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2Zvcl9iZW5jaC5jXG5AQCAtMCwwICsxLDMyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4rXG4rI2luY2x1ZGUgXCJ2bWxpbnV4LmhcIlxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rI2luY2x1ZGUgXCJicGZfbWlzYy5oXCJcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4raW50IG5yX2xvb3BzO1xuK2xvbmcgaGl0cztcbitcbitzdGF0aWMgaW50IG91dGVyX2xvb3AoX191MzIgaW5kZXgsIHZvaWQgKmRhdGEpXG4re1xuK1x0aW50IGk7XG4rXG4rXHQvKlxuK1x0ICogRW1wdHkgYm9keTogdGhlIHdvcmsgYmVpbmcgbWVhc3VyZWQgaXMgdGhlIG9wZW4tY29kZWQgbnVtZXJpYyBpdGVyYXRvciBpdHNlbGZcbitcdCAqIChicGZfaXRlcl9udW1fbmV3L25leHQvZGVzdHJveSBiZWhpbmQgYnBmX2ZvcigpKS5cbitcdCAqL1xuK1x0YnBmX2ZvcihpLCAwLCBucl9sb29wcylcbitcdFx0O1xuK1x0X19zeW5jX2FkZF9hbmRfZmV0Y2goXHUwMDI2aGl0cywgbnJfbG9vcHMpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK1NFQyhcImZlbnRyeS9cIiBTWVNfUFJFRklYIFwic3lzX2dldHBnaWRcIilcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcbit7XG4rXHRicGZfbG9vcCgxMDAwLCBvdXRlcl9sb29wLCBOVUxMLCAwKTtcbitcdHJldHVybiAwO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvaXRlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5pbmRleCAwZmE3MGIxMzNkOTMyLi42MmQ3ZGY5ZTgwYmViIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2l0ZXJzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9pdGVycy5jXG5AQCAtODgsNiArODgsODkgQEAgaW50IGl0ZXJfZXJyX3Vuc2FmZV9hc21fbG9vcChjb25zdCB2b2lkICpjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBOYWtlZCBmdW5jdGlvbiwgc28gdGhlcmUgaXMgbm8gY29tcGlsZXItZ2VuZXJhdGVkIGdsdWUgYW5kIHRoZSB3aG9sZSBpbmxpbmVkIHByb2dyYW0gY2FuIGJlXG4rICogbWF0Y2hlZC4gUGlubmVkIHRvIGFyY2hlcyB3aG9zZSBKSVRzIHplcm8tZXh0ZW5kIDMyLWJpdCB3cml0ZXMgaW1wbGljaXRseVxuKyAqIChicGZfaml0X25lZWRzX3pleHQoKSA9PSBmYWxzZSk7IG9uIGFyY2hlcyB0aGF0IG5lZWQgZXhwbGljaXQgemVyby1leHRlbnNpb24gdGhlIHZlcmlmaWVyXG4rICogaW50ZXJsZWF2ZXMgXCJ3TiA9IHdOXCIgaW5zbnMgYW5kIHRoZSBmaXhlZCBzaGFwZSBiZWxvdyB3b3VsZCBub3QgbWF0Y2guIFRoZSBpbmxpbmluZyBpdHNlbGYgaXNcbisgKiBhcmNoIGluZGVwZW5kZW50LCBzbyBjaGVja2luZyBpdCBvbiB0aGVzZSBhcmNoZXMgaXMgc3VmZmljaWVudC5cbisgKlxuKyAqIGJwZl9pdGVyX251bV9uZXcoKSBlbWl0cyB0aGUgZnVsbCByYW5nZSBjaGVjayAoZGlzdGFuY2UgY29tcHV0YXRpb24gYW5kIGJvdGggdGhlIC1FSU5WQUwgYW5kXG4rICogLUUyQklHIGVycm9yIHBhdGhzKTsgYnBmX2l0ZXJfbnVtX25leHQoKSBhbmQgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koKSBhcmUgaW5saW5lZCB0b28uXG4rICovXG4rU0VDKFwicmF3X3RwXCIpXG4rX19hcmNoX3g4Nl82NFxuK19fYXJjaF9hcm02NFxuK19fc3VjY2Vzc1xuK19feGxhdGVkKFwicjYgPSByMTBcIilcbitfX3hsYXRlZChcInI2ICs9IC04XCIpXG4rX194bGF0ZWQoXCJjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcInIzID0gcjBcIilcbitfX3hsYXRlZChcInIzIFx1MDAyNj0gNjU1MzVcIilcbitfX3hsYXRlZChcInIxID0gcjZcIilcbitfX3hsYXRlZChcInIyID0gMFwiKVxuKy8qIGJwZl9pdGVyX251bV9uZXcoXHUwMDI2aXQsIDAsIFx1MDAzY25vbi1jb25zdFx1MDAzZSkgd2l0aCB0aGUgcmFuZ2UgY2hlY2sga2VwdCAqL1xuK19feGxhdGVkKFwiaWYgdzIgc1x1MDAzZSB3MyBnb3RvIHBjKzhcIilcbitfX3hsYXRlZChcIncwID0gdzNcIilcbitfX3hsYXRlZChcIncwIC09IHcyXCIpXG4rX194bGF0ZWQoXCJpZiByMCBcdTAwM2UgMHg4MDAwMDAgZ290byBwYys4XCIpXG4rX194bGF0ZWQoXCJ3MiArPSAtMVwiKVxuK19feGxhdGVkKFwiKih1MzIgKikocjEgKzApID0gcjJcIilcbitfX3hsYXRlZChcIioodTMyICopKHIxICs0KSA9IHIzXCIpXG4rX194bGF0ZWQoXCJyMCA9IDBcIilcbitfX3hsYXRlZChcImdvdG8gcGMrNVwiKVxuK19feGxhdGVkKFwiKih1NjQgKikocjEgKzApID0gMFwiKVxuK19feGxhdGVkKFwicjAgPSAtMjJcIilcbitfX3hsYXRlZChcImdvdG8gcGMrMlwiKVxuK19feGxhdGVkKFwiKih1NjQgKikocjEgKzApID0gMFwiKVxuK19feGxhdGVkKFwicjAgPSAtN1wiKVxuK19feGxhdGVkKFwicjEgPSByNlwiKVxuKy8qIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KSAqL1xuK19feGxhdGVkKFwicjAgPSAqKHUzMiAqKShyMSArMClcIilcbitfX3hsYXRlZChcIncwICs9IDFcIilcbitfX3hsYXRlZChcInIyID0gKih1MzIgKikocjEgKzQpXCIpXG4rX194bGF0ZWQoXCJpZiB3MCBzXHUwMDNlPSB3MiBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIioodTMyICopKHIxICswKSA9IHIwXCIpXG4rX194bGF0ZWQoXCJyMCA9IHIxXCIpXG4rX194bGF0ZWQoXCJnb3RvIHBjKzJcIilcbitfX3hsYXRlZChcIioodTY0ICopKHIxICswKSA9IDBcIilcbitfX3hsYXRlZChcInIwID0gMFwiKVxuK19feGxhdGVkKFwiaWYgcjAgIT0gMHgwIGdvdG8gcGMtMTFcIilcbitfX3hsYXRlZChcInIxID0gcjZcIilcbisvKiBicGZfaXRlcl9udW1fZGVzdHJveShcdTAwMjZpdCkgaXMgaW5saW5lZCB0byBhIG5vcCAqL1xuK19feGxhdGVkKFwiZ290byBwYyswXCIpXG4rX194bGF0ZWQoXCJyMCA9IDBcIilcbitfX3hsYXRlZChcImV4aXRcIilcbitpbnQgX19uYWtlZCBpdGVyX251bV9uZXdfaW5saW5lZCh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXG4rXHRcdC8qIHI2IHBvaW50cyB0byBzdHJ1Y3QgYnBmX2l0ZXJfbnVtIG9uIHRoZSBzdGFjayAqL1xuK1x0XHRcInI2ID0gcjEwO1wiXG4rXHRcdFwicjYgKz0gLTg7XCJcbitcdFx0Lyogbm9uLWNvbnN0YW50IGVuZCBzbyB0aGUgcmFuZ2UgY2hlY2tzIGFyZSBrZXB0ICovXG4rXHRcdFwiY2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1wiXG4rXHRcdFwicjMgPSByMDtcIlxuK1x0XHRcInIzIFx1MDAyNj0gMHhmZmZmO1wiXG4rXHRcdFwicjEgPSByNjtcIlxuK1x0XHRcInIyID0gMDtcIlxuK1x0XHRcImNhbGwgJVticGZfaXRlcl9udW1fbmV3XTtcIlxuK1x0XCIxOlwiXG4rXHRcdFwicjEgPSByNjtcIlxuK1x0XHRcImNhbGwgJVticGZfaXRlcl9udW1fbmV4dF07XCJcbitcdFx0XCJpZiByMCAhPSAwIGdvdG8gMWI7XCJcbitcdFx0XCJyMSA9IHI2O1wiXG4rXHRcdFwiY2FsbCAlW2JwZl9pdGVyX251bV9kZXN0cm95XTtcIlxuK1x0XHRcInIwID0gMDtcIlxuK1x0XHRcImV4aXQ7XCJcbitcdFx0OlxuK1x0XHQ6IF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpLFxuK1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXcpLFxuK1x0XHQgIF9faW1tKGJwZl9pdGVyX251bV9uZXh0KSxcbitcdFx0ICBfX2ltbShicGZfaXRlcl9udW1fZGVzdHJveSlcbitcdFx0OiBfX2Nsb2JiZXJfY29tbW9uLCBcInI2XCJcbitcdCk7XG4rfVxuK1xuIFNFQyhcInJhd190cFwiKVxuIF9fc3VjY2Vzc1xuIGludCBpdGVyX3doaWxlX2xvb3AoY29uc3Qgdm9pZCAqY3R4KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6MzkuOTEzMTYxNjQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzMTEzMTE4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgSXRlcmF0b3IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG9wdGltaXppbmcgdGhlIEJQRiBpdGVyYXRvciBsb2dpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgc2NhbiB0ZWxscyBtZSB0aGF0IHRoZSBjb3JlIG1vZGlmaWNhdGlvbnMgYXJlIGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEhvd2V2ZXIsIHRoaXMgZ29lcyBkZWVwZXIsIGFzIGl0J3MgYWxzbyB0b3VjaGluZyB0aGUgdmVyaWZpZXIgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRyaWd1aW5nLiBUaGV5J3JlIGlubGluaW5nIGBicGZfaXRlcl9udW1fbmV3YCwgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgd2l0aGluIHRoZSB2ZXJpZmllci4gQWRkaW5nIGJlbmNobWFya3MgYW5kIHRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBpcyBhIHNtYXJ0IG1vdmUuXG5cbk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBga2VybmVsL2JwZi92ZXJpZmllci5jYCBjaGFuZ2VzIGZpcnN0LiBJdCBsb29rcyBsaWtlIHRoZXkncmUgaW50cm9kdWNpbmcgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIHRoZW4gY2FsbGluZyB0aGVtIGZyb20gd2l0aGluIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAuIFJpZ2h0LCBzbyB0aGlzIHJlcGxhY2VzIGtmdW5jIGNhbGxzIHdpdGggaW5saW5lIEJQRiBpbnN0cnVjdGlvbnMsIGVmZmVjdGl2ZWx5IGFsdGVyaW5nIHRoZSB2ZXJpZmljYXRpb24gYW5kIEpJVCBwcm9jZXNzLiBUaGlzIGlzIGdvb2QuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBzaG91bGQgaW1wYWN0IGhvdyBCUEYgcHJvZ3JhbXMgYXJlIHZlcmlmaWVkIGFuZCBKSVR0ZWQsIHNoaWZ0aW5nIGZyb20ga2Z1bmMgY2FsbHMgdG8gaW5saW5lZCBCUEYgaW5zdHJ1Y3Rpb25zLlxuXG5UaGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplIGhlcmUgYXJlIGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25ld2AsIGBpbmxpbmVfYnBmX2l0ZXJfbnVtX25leHRgLCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgYW5kIG9mIGNvdXJzZSB0aGUgb3JpZ2luYWxzIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSByZWdyZXNzaW9ucyBoZXJlLCBhcyB0aGlzIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB0aGluZ3MgYXJlIGhhbmRsZWQuXG5cbkxldCdzIGZpbmQgb3V0IGhvdyByZWFjaGFibGUgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgQlBGIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyB0aGF0J3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQuIFRoZW4sIEkgbmVlZCB0byBzZWFyY2ggd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGRpcmVjdGx5IGZvciB0aGF0IGZ1bmN0aW9uIHRvIGdyYXNwIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6NTAuMjI0NDc1NzQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMTgzOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9maXh1cF9rZnVuY19jYWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk4NDY9c3RhdGljIGludCBpbmxpbmVfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3koc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1Mi1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTM6aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTQtXFx0XFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc25fYnVmLCBpbnQgaW5zbl9pZHgsIGludCAqY250KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwNDozODo1MC4yOTQ2NjUyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTEwNzA2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBCUEYgRnVuY3Rpb24gQ2FsbCBGaXgtVXAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBmbG93IGZvciBgYnBmX2ZpeHVwX2tmdW5jX2NhbGxgLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuIEknbGwgbmVlZCB0byB1c2Ugc29tZSBjb2RlIG5hdmlnYXRpb24gdG9vbHMsIHByb2JhYmx5IGdyZXAgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgSURFLWludGVncmF0ZWQgc2VhcmNoLCB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgZm9yIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGVudHJ5IHBvaW50cyBpcyBjcnVjaWFsIHRvIHRyYWNpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBsYXJnZXIgZXhlY3V0aW9uIGNvbnRleHQgaXQgb3BlcmF0ZXMgd2l0aGluLiBUaGlzIHNob3VsZCBxdWlja2x5IGdpdmUgbWUgYSBoaWdoLWxldmVsIG92ZXJ2aWV3IG9mIGl0cyBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBCUEYgcHJvY2Vzc2luZyBwaXBlbGluZS4gT25jZSBJIGhhdmUgdGhhdCBsaXN0LCBJIGNhbiBzdGFydCBkaXZpbmcgZGVlcGVyIGludG8gZWFjaCBjYWxsIHNpdGUgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aG9zZSBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgzNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM4OjU1LjA0NTczODA4MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQxOTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2ZpeHVwcy5jPTE0ODA9aW50IGJwZl9kb19taXNjX2ZpeHVwcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODI1LVxcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkge1xcbmtlcm5lbC9icGYvZml4dXBzLmM6MTgyNjpcXHRcXHRcXHRyZXQgPSBicGZfZml4dXBfa2Z1bmNfY2FsbChlbnYsIGluc24sIGluc25fYnVmLCBpICsgZGVsdGEsIFxcdTAwMjZjbnQpO1xcbmtlcm5lbC9icGYvZml4dXBzLmMtMTgyNy1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5ODQ2PXN0YXRpYyBpbnQgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95KHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUzOmludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODU0LVxcdFxcdCAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZiwgaW50IGluc25faWR4LCBpbnQgKmNudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzg6NTUuMTA3MTcwMDFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDI4NTI2ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgQlBGIEZ1bmN0aW9uIENhbGwgRml4dXBzKipcblxuQWxyaWdodCwgc28gYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3IgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgQlBGIHZlcmlmaWVyLiBUaGF0J3MgZ29vZCB0byBrbm93LiBOb3csIHNpbmNlIHdlIGFyZSBleGFtaW5pbmcgQlBGIGl0ZXJhdG9ycywgSSBzaG91bGQgY2hlY2sgdGhlIGZ1bmN0aW9ucyB1c2VkIHdpdGggYGJwZl9pdGVyYCB3aGljaCBhcmU6IGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgd2l0aGluIGBrZXJuZWwvYnBmL2JwZl9pdGVyLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSB3b3JraW5nIGFzIGV4cGVjdGVkIG9yIGlmIHRoZXkgbmVlZCB0byBiZSB1cGRhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjAwLjUzNTY5OTYwOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTEwMTkwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl9udW1fbmV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2JwZl9pdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9icGZfaXRlci5jPTc3MD1fX2JwZl9rZnVuYyBpbnQgYnBmX2l0ZXJfbnVtX25ldyhzdHJ1Y3QgYnBmX2l0ZXJfbnVtICppdCwgaW50IHN0YXJ0LCBpbnQgZW5kKVxcbi0tXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTc3Ny1cXHQvKiBzdGFydCA9PSBlbmQgaXMgbGVnaXQsIGl0J3MgYW4gZW1wdHkgcmFuZ2UgYW5kIHdlJ2xsIGp1c3QgZ2V0IE5VTExcXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6Nzc4OlxcdCAqIG9uIGZpcnN0IChhbmQgYW55IHN1YnNlcXVlbnQpIGJwZl9pdGVyX251bV9uZXh0KCkgY2FsbFxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy03NzktXFx0ICovXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzkwLVxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYzo3OTE6XFx0LyogdXNlciB3aWxsIGNhbGwgYnBmX2l0ZXJfbnVtX25leHQoKSBmaXJzdCxcXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtNzkyLVxcdCAqIHdoaWNoIHdpbGwgc2V0IHMtXFx1MDAzZWN1ciB0byBleGFjdGx5IHN0YXJ0IHZhbHVlO1xcbi0tXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMC1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmM6ODAxOl9fYnBmX2tmdW5jIGludCAqYnBmX2l0ZXJfbnVtX25leHQoc3RydWN0IGJwZl9pdGVyX251bSogaXQpXFxua2VybmVsL2JwZi9icGZfaXRlci5jLTgwMi17XFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9pdGVyLmMtODA5LVxcdCAqIHMtXFx1MDAzZWVuZCBhcmUgaW50LCB0aGlzIGlzIGFuIG9yZGluYXJ5IHNpZ25lZCAzMi1iaXQgY29tcGFyZSwgZXhhY3RseSB3aGF0XFxua2VybmVsL2JwZi9icGZfaXRlci5jOjgxMDpcXHQgKiB0aGUgaW5saW5lZCBicGZfaXRlcl9udW1fbmV4dCgpIGVtaXRzLlxcbmtlcm5lbC9icGYvYnBmX2l0ZXIuYy04MTEtXFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjAwLjU5NjgwNzI5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODk5MTI3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQlBGIEl0ZXJhdGlvbiBLZnVuYyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YC4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhvc2UgYXMga2Z1bmNzIOKAkyBrZXJuZWwgZnVuY3Rpb25zIGV4cG9zZWQgZm9yIHVzZSB3aXRoaW4gQlBGIHByb2dyYW1zLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIEJQRiBpdGVyYXRpb24gb3ZlciBudW1lcmljIGRhdGEuIEdpdmVuIHRoYXQsIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCByZXF1aXJlbWVudCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBUaGlzIG1ha2VzIHRoZSBhYmlsaXR5IHRvIGNhbGwgdGhlIGtmdW5jcyBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW1zLlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHdvdWxkIGJlIHdpc2UgdG8gc2VlIGlmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGFueSBuZXcgZmVhdHVyZXMgb3IgcG90ZW50aWFsbHkgcmVsaWVzIG9uIG90aGVyIEJQRi1yZWxhdGVkIGtlcm5lbCBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZXF1aXJlZC4gVGltZSB0byBkaWcgdGhyb3VnaCB0aGUgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHN1YnN5c3RlbSB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzLiBJdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA2MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjA0LjQ4NjcyMjY4NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NDUyMTI5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDQ6Mzk6MDYuNjcxMjUyNjM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDg4Njk3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBCUEYgSXRlcmF0aW9uIEtmdW5jIElubGluaW5nKipcblxuT2theSwgc28gYEJQRl9TWVNDQUxMYCBpcyB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbiB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhlcmUuIE5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBrZXkgZnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAsIGBicGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUgYXJlIHRoZSBzdGF0aWMgaW5saW5lcywgYGlubGluZV9icGZfaXRlcl9udW1fbmV3YCwgYGlubGluZV9icGZfaXRlcl9udW1fbmV4dGAsIGFuZCBgaW5saW5lX2JwZl9pdGVyX251bV9kZXN0cm95YCwgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuXG5cbkknbSBnb2luZyB0byBsaXN0IGBicGZfZml4dXBfa2Z1bmNfY2FsbGAgYXMgdGhlIGZvY3VzIHN5bWJvbDsgaXQncyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIEkgbmVlZCB0byBhZGQgYGJwZl9pdGVyX251bV9uZXh0YCwgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgaW4gYGtlcm5lbC9icGYvYnBmX2l0ZXIuY2AuIEkgbmVlZCB0byBjb25maXJtIGBicGZfaXRlcl9udW1fbmV4dGAgYW5kIGBicGZfaXRlcl9udW1fZGVzdHJveWAgYXJlIG5vdCBzdGF0aWMsIGFuZCB0aGV5IGFyZW4ndCFcblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIGVzc2VudGlhbCBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZTpcblxuKiAgIGBicGZfZml4dXBfa2Z1bmNfY2FsbGBcbiogICBgYnBmX2l0ZXJfbnVtX25leHRgXG4qICAgYGJwZl9pdGVyX251bV9kZXN0cm95YFxuXG5UaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYCBhbmQgYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuYGJwZl9maXh1cF9rZnVuY19jYWxsYCBpcyBjYWxsZWQgZHVyaW5nIGV2ZXJ5IGtmdW5jIGNhbGwgZHVyaW5nIHZlcmlmaWNhdGlvbi4gSXQgaXMgc3BlY2lmaWMgdG8ga2Z1bmMgY2FsbHMuIGBicGZfZG9fbWlzY19maXh1cHNgIGlzIHRoZSBjYWxsZXIuXG5cblRoZSByZWFzb25pbmcgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGlubGluaW5nIGZvciB0aGUgYGJwZl9pdGVyX251bV8qYCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YC4gQmVjYXVzZSBvZiB0aGlzLCBpdCdzIGltcGFjdGluZyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgYW5kIGl0ZXJhdG9yIGxvZ2ljLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwuXG5cbkhlcmUncyB0aGUgZGF0YSBmb3IgdGhlIHRvb2w6XG5cbioqRm9jdXMgU3ltYm9sczoqKlxuXG4qICAgYGJwZl9maXh1cF9rZnVuY19jYWxsYFxuKiAgIGBicGZfaXRlcl9udW1fbmV4dGBcbiogICBgYnBmX2l0ZXJfbnVtX2Rlc3Ryb3lgXG5cbioqQ29uZmlnczoqKlxuXG4qICAgYEJQRl9TWVNDQUxMYFxuXG5GaW5hbGx5LCBgYnBmX2l0ZXJfbnVtX25leHRgIGlzIGEga2Z1bmMsIHNvLCBpdCBpcyBjYWxsYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4gVGltZSB0byBydW4gdGhpcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE0NDcsIk91dHB1dFRva2VucyI6MTkxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA0OjM5OjE4LjE1OTk1Mjk4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTA5MDgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX25leHRcIixcbiAgICBcImJwZl9pdGVyX251bV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfZml4dXBfa2Z1bmNfY2FsbFwiLFxuICAgIFwiYnBmX2l0ZXJfbnVtX25leHRcIixcbiAgICBcImJwZl9pdGVyX251bV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBpbmxpbmUgYGJwZl9pdGVyX251bV9uZXdgLCBgYnBmX2l0ZXJfbnVtX25leHRgLCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBrZnVuY3MuIEl0IGFsc28gdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGJwZl9pdGVyX251bV9uZXh0YCBhbmQgYGJwZl9pdGVyX251bV9kZXN0cm95YCBpbiBga2VybmVsL2JwZi9icGZfaXRlci5jYC4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGFuZCBpdGVyYXRvciBsb2dpYywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBgYnBmKClgIHN5c2NhbGwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[1] Phase: Succeeded StartedAt: 2026-07-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2] Phase: Succeeded StartedAt: 2026-07-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 04:39:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:30 +0000 UTC FinishedAt: 2026-07-31 04:39:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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-workflowzjlbx/series-workflowzjlbx-convert-artifact-439503442/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:40 +0000 UTC FinishedAt: 2026-07-31 05:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:40 +0000 UTC FinishedAt: 2026-07-31 05:05:10 +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:*8fb7ebdd-c6ce-4de1-bb49-b7f0f9031da3,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-workflowzjlbx/series-workflowzjlbx-convert-artifact-439503442/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": "e54e5a18-ab8e-403b-ad34-2c2578dfa232", "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-workflowzjlbx/series-workflowzjlbx-build-action-357678800/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 04:39:40 +0000 UTC FinishedAt: 2026-07-31 05:05:00 +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:*8fb7ebdd-c6ce-4de1-bb49-b7f0f9031da3,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-workflowzjlbx/series-workflowzjlbx-convert-artifact-439503442/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": "e54e5a18-ab8e-403b-ad34-2c2578dfa232", "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-workflowzjlbx/series-workflowzjlbx-build-action-357678800/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:10 +0000 UTC FinishedAt: 2026-07-31 05:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:10 +0000 UTC FinishedAt: 2026-07-31 05:05:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:10 +0000 UTC FinishedAt: 2026-07-31 05:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:10 +0000 UTC FinishedAt: 2026-07-31 05:05:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-workflowzjlbx/series-workflowzjlbx-convert-artifact-3451876717/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:32 +0000 UTC FinishedAt: 2026-07-31 05:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:05:32 +0000 UTC FinishedAt: 2026-07-31 05:07:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e54e5a18-ab8e-403b-ad34-2c2578dfa232,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-workflowzjlbx/series-workflowzjlbx-build-action-357678800/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-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:07:34 +0000 UTC FinishedAt: 2026-07-31 05:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:07:34 +0000 UTC FinishedAt: 2026-07-31 05:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:07:34 +0000 UTC FinishedAt: 2026-07-31 05:28:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:07:34 +0000 UTC FinishedAt: 2026-07-31 05:28:12 +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:*8fb7ebdd-c6ce-4de1-bb49-b7f0f9031da3,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-workflowzjlbx/series-workflowzjlbx-convert-artifact-3451876717/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": "9fa904fb-03ea-45f1-a283-cf4a9cf352e1", "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-workflowzjlbx/series-workflowzjlbx-build-action-572925641/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:07:34 +0000 UTC FinishedAt: 2026-07-31 05:28:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8fb7ebdd-c6ce-4de1-bb49-b7f0f9031da3,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-workflowzjlbx/series-workflowzjlbx-convert-artifact-3451876717/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": "9fa904fb-03ea-45f1-a283-cf4a9cf352e1", "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-workflowzjlbx/series-workflowzjlbx-build-action-572925641/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:28:12 +0000 UTC FinishedAt: 2026-07-31 05:28:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:28:12 +0000 UTC FinishedAt: 2026-07-31 05:28:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:28:12 +0000 UTC FinishedAt: 2026-07-31 05:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:28:12 +0000 UTC FinishedAt: 2026-07-31 05:30:01 +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:*9fa904fb-03ea-45f1-a283-cf4a9cf352e1,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-workflowzjlbx/series-workflowzjlbx-build-action-572925641/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-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"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:*e54e5a18-ab8e-403b-ad34-2c2578dfa232,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9fa904fb-03ea-45f1-a283-cf4a9cf352e1,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-workflowzjlbx/series-workflowzjlbx-build-action-357678800/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-workflowzjlbx/series-workflowzjlbx-build-action-572925641/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 05:30:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 05:30:15 +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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"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-workflowzjlbx/series-workflowzjlbx-convert-artifact-838656978/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 05:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 05:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:11 +0000 UTC FinishedAt: 2026-07-31 05:30:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:21 +0000 UTC FinishedAt: 2026-07-31 08:32:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzjlbx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["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_fixup_kfunc_call","bpf_iter_num_next","bpf_iter_num_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdec474c65fd35d5a6e1497ed50a9f98c07192f0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"08dbeb84-0de4-4aea-a198-c0c49629a34d","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-31 05:30:21 +0000 UTC FinishedAt: 2026-07-31 08:32:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e54e5a18-ab8e-403b-ad34-2c2578dfa232,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9fa904fb-03ea-45f1-a283-cf4a9cf352e1,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-workflowzjlbx/series-workflowzjlbx-build-action-357678800/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-workflowzjlbx/series-workflowzjlbx-build-action-572925641/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-workflowzjlbx/series-workflowzjlbx-convert-artifact-838656978/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,}