Name: series-workflowrshwc Phase: Succeeded StartedAt: 2026-07-07 17:01:39 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[0] Phase: Succeeded StartedAt: 2026-07-07 17:01:39 +0000 UTC FinishedAt: 2026-07-07 17:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 17:01:39 +0000 UTC FinishedAt: 2026-07-07 17:15:59 +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": "e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "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": "e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "b45ea43f-46a4-4575-8a3d-b95ac1965fcc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "prepare_bpf_tail_call_cnt", "build_prologue", "__build_epilogue", "emit_bpf_tail_call" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250JiMzNDssCiAgICAmIzM0O2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O19fYnVpbGRfZXBpbG9ndWUmIzM0OywKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byBvcHRpbWl6ZSB0YWlsIGNhbGwgY291bnQgaGFuZGxpbmcgdXNpbmcgYnJhbmNobGVzcyBpbnN0cnVjdGlvbnMuIEl0IGFsdGVycyB0aGUgcHJvbG9ndWUsIGVwaWxvZ3VlLCBhbmQgdGFpbCBjYWxsIGVtaXNzaW9uIGxvZ2ljLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBjb2RlIGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MTMzOWRiZTU5ODY1NDQ2M2VmNTFiMmI2ZmRmYTgzYjlhZjFiMmMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNzoxNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li4xOWZlYWUxNjZlMWMxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtOTcsNiAmIzQzOzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbiYjNDM7XHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7XG4gXHRhZGRkX29wXHRcdD0gMHgyMSxcbiBcdHN1Yndfb3BcdFx0PSAweDIyLFxuIFx0c3ViZF9vcFx0XHQ9IDB4MjMsXG4mIzQzO1x0bWFza2Vxel9vcFx0PSAweDI2LFxuJiM0MztcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcdFxcXG4gXHRpbnNuLVx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XHRcdFx0XHRcdFxcXG4gfVxuIFxuJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiAmIzQzOzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjllOWQ5OGIyMTgxMjc3IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICYjNDM7NTIsMjkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4mIzQzO1x0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRpZiAoaXNfbWFpbl9wcm9nKSB7XG4tXHRcdC8qXG4tXHRcdCAqIExPT05HQVJDSF9HUFJfVDMgPSBNQVhfVEFJTF9DQUxMX0NOVFxuLVx0XHQgKiBpZiAoUkVHX1RDQyBcdTAwM2UgVDMgKVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogc3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4mIzQzO1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuJiM0MztcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovXG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuJiM0MztcdFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XG4mIzQzO1x0XHQgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKVxuJiM0MztcdFx0ICogYW5kIGEga2VybmVsIHBvaW50ZXIgYWRkcmVzcyB3aXRob3V0IHJ1bnRpbWUgYnJhbmNoaW5nLlxuIFx0XHQgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxKTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XG4gXHR9IGVsc2Uge1xuLVx0XHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XHRcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cbiYjNDM7XHQvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgKi9cbiBcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiB9XG5AQCAtMTI0LDYgJiM0MzsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHRjYyAgICAgICAgICAgfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfFxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyBcdTAwM2MtLUJQRl9SRUdfRlBcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8XG5AQCAtMTQ1LDcgJiM0MzsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZykgKiAyO1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbi1cdFx0c3RhY2tfYWRqdXN0ICYjNDM7PSA4O1xuJiM0MztcdFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZyk7XG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbkBAIC0xOTQsMTMgJiM0MzsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXG4mIzQzO1x0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4mIzQzO1xuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcdTAwMjZzdG9yZV9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfRlAsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbkBAIC0yNDEsMjEgJiM0MzsyMjMsMTggQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGlzX3RhaWxfY2FsbClcbiBcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFxuJiM0MztcdC8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqL1xuJiM0MztcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiYjNDM7XG4mIzQzO1x0LyogU2tpcCB0aGUgdW51c2VkIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xuJiM0MztcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci5cbi1cdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cbi1cdCAqL1xuLVx0bG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuLVx0bG9hZF9vZmZzZXQgJiM0Mzs9IHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoIWlzX3RhaWxfY2FsbCkge1xuQEAgLTI5MCwxNyAmIzQzOzI2OSwxMyBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwodm9pZClcbiBcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiB7XG4tXHRpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7XG4mIzQzO1x0aW50IG9mZiwgam1wX29mZnNldDtcbiBcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVx1MDAzZXN0YWNrX3NpemUpO1xuIFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xuIFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xuIFx0dTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxO1xuIFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xuIFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xuLVx0Y29uc3QgaW50IGlkeDAgPSBjdHgtXHUwMDNlaWR4O1xuLVxuLSNkZWZpbmUgY3VyX29mZnNldCAoY3R4LVx1MDAzZWlkeCAtIGlkeDApXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcbiBcbiBcdC8qXG4gXHQgKiBhMDogXHUwMDI2Y3R4XG5AQCAtMzEwLDEyICYjNDM7Mjg1LDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ICogaWYgKGluZGV4IFx1MDAzZT0gYXJyYXktXHUwMDNlbWFwLm1heF9lbnRyaWVzKVxuIFx0ICpcdCBnb3RvIG91dDtcbiBcdCAqL1xuLVx0dGNfbmluc24gPSBpbnNuID8gY3R4LVx1MDAzZW9mZnNldFtpbnNuJiM0MzsxXSAtIGN0eC1cdTAwM2VvZmZzZXRbaW5zbl0gOiBjdHgtXHUwMDNlb2Zmc2V0WzBdO1xuIFx0ZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpO1xuIFxuIFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkd3UsIHQxLCBhMSwgb2ZmKTtcbiBcdC8qIGJnZXUgJGEyLCAkdDEsIGptcF9vZmZzZXQgKi9cbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTMyNiw2ICYjNDM7MzAxLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIHRjY19wdHJfb2ZmKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApO1xuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNDAsNiAmIzQzOzMxNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIHQyLCB0Miwgb2ZmKTtcbiBcdC8qIGJlcSAkdDIsICR6ZXJvLCBqbXBfb2Zmc2V0ICovXG4mIzQzO1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gJiM0MzsgMV0gLSBjdHgtXHUwMDNlaWR4KSA6IDA7XG4gXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzU1LDggJiM0MzszMzIsNiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiB0b29mYXI6XG4gXHRwcl9pbmZvX29uY2UoXCYjMzQ7dGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXG5cJiMzNDspO1xuIFx0cmV0dXJuIC0xO1xuLSN1bmRlZiBjdXJfb2Zmc2V0XG4tI3VuZGVmIGptcF9vZmZzZXRcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIG9wdGltaXplIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyB1c2luZyBicmFuY2hsZXNzIGluc3RydWN0aW9ucy4gSXQgYWx0ZXJzIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24gbG9naWMsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzEzMzlkYmU1OTg2NTQ0NjNlZjUxYjJiNmZkZmE4M2I5YWYxYjJjMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTc6MTU6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZDcuLjE5ZmVhZTE2NmUxYzE4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCkBAIC05Nyw2ICYjNDM7OTcsNyBAQCBlbnVtIHJlZzJpNl9vcCB7CiB9OwogCiBlbnVtIHJlZzJpMTJfb3AgewomIzQzOwlzbHR1aV9vcAk9IDB4MDksCiAJYWRkaXdfb3AJPSAweDBhLAogCWFkZGlkX29wCT0gMHgwYiwKIAlsdTUyaWRfb3AJPSAweDBjLApAQCAtMTUzLDYgJiM0MzsxNTQsOCBAQCBlbnVtIHJlZzNfb3AgewogCWFkZGRfb3AJCT0gMHgyMSwKIAlzdWJ3X29wCQk9IDB4MjIsCiAJc3ViZF9vcAkJPSAweDIzLAomIzQzOwltYXNrZXF6X29wCT0gMHgyNiwKJiM0MzsJbWFza25lel9vcAk9IDB4MjcsCiAJbm9yX29wCQk9IDB4MjgsCiAJYW5kX29wCQk9IDB4MjksCiAJb3Jfb3AJCT0gMHgyYSwKQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbiwJXAogCWluc24tJmd0O3JlZzJpMTJfZm9ybWF0LnJqID0gcmo7CQkJCQlcCiB9CiAKJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpdywgYWRkaXdfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpZCwgYWRkaWRfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcCkKQEAgLTc0OSw2ICYjNDM7NzUzLDggQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoZGl2ZCwgZGl2ZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkdSwgbW9kZHVfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQobWFza2VxeiwgbWFza2Vxel9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQoYW5kLCBhbmRfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChvciwgb3Jfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcCkKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCmluZGV4IDI3MzhiNGRiMTE2NTMzLi45ZTlkOThiMjE4MTI3NyAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCkBAIC01Miw1MCAmIzQzOzUyLDI5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpCiAJY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nID0gY3R4LSZndDtwcm9nOwogCWNvbnN0IGJvb2wgaXNfbWFpbl9wcm9nID0gIWJwZl9pc19zdWJwcm9nKHByb2cpOwogCiYjNDM7CSpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWlmIChpc19tYWluX3Byb2cpIHsKLQkJLyoKLQkJICogTE9PTkdBUkNIX0dQUl9UMyA9IE1BWF9UQUlMX0NBTExfQ05UCi0JCSAqIGlmIChSRUdfVENDICZndDsgVDMgKQotCQkgKglzdGQgUkVHX1RDQyAtJmd0OyBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKiBlbHNlCi0JCSAqCXN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCVJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKgotCQkgKiBzdGQgUkVHX1RDQyAtJmd0OyBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKgotCQkgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssCi0JCSAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suCi0JCSAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLAotCQkgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLAotCQkgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS4KLQkJICovCi0JCWVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTsKLQkJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7Ci0KLQkJZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpOwotCi0JCS8qCi0JCSAqIElmIFJFR19UQ0MgJmx0OyBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYSBjb3VudCwKLQkJICogcHVzaCB0Y2MgaW50byBzdGFjawotCQkgKi8KJiM0MzsJCS8qIFNhdmUgZW50cmFuY2UgVENDIHN0YXRlIChzY2FsYXIgY291bnQgb3Iga2VybmVsIHBvaW50ZXIpIHRvIGxvY2FsICYjMzk7dGNjJiMzOTsgc2xvdCAqLwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogCi0JCS8qIFB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gdGhlIFJFR19UQ0MgKi8KLQkJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwotCi0JCWVtaXRfdW5jb25kX2ptcChjdHgsIDIpOwomIzQzOwkJLyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovCiYjNDM7CQllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiAKIAkJLyoKLQkJICogSWYgUkVHX1RDQyAmZ3Q7IE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLAotCQkgKiBwdXNoIHRjY19wdHIgaW50byBzdGFjawomIzQzOwkJICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6CiYjNDM7CQkgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKQomIzQzOwkJICogYW5kIGEga2VybmVsIHBvaW50ZXIgYWRkcmVzcyB3aXRob3V0IHJ1bnRpbWUgYnJhbmNoaW5nLgogCQkgKi8KLQkJZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxKTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7CiYjNDM7CQllbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7CiAJfSBlbHNlIHsKLQkJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CQkvKiBTdWJwcm9ncmFtczogYmFja3VwIHRoZSB2ZXJpZmllZCBUQ0MgcG9pbnRlciBpbmhlcml0ZWQgdmlhIFJFR19UQ0MgKi8KIAkJZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKIAl9CiAKLQkvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqLwomIzQzOwkvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgKi8KIAkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogfQpAQCAtMTI0LDYgJiM0MzsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8CiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBhcmVuYSAgICAgICAgIHwKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICZsdDstLUJQRl9SRUdfRlAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctJmd0O2F1eC0mZ3Q7c3RhY2tfZGVwdGggfAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8CkBAIC0xNDUsNyAmIzQzOzEyNyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZykgKiAyOwogCiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpCi0JCXN0YWNrX2FkanVzdCAmIzQzOz0gODsKJiM0MzsJCXN0YWNrX2FkanVzdCAmIzQzOz0gc2l6ZW9mKGxvbmcpOwogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCAxNik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwpAQCAtMTk0LDEzICYjNDM7MTc2LDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7CiAKJiM0MzsJcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsICZhbXA7c3RvcmVfb2Zmc2V0KTsKJiM0MzsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQlzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTsKIAl9CiAKLQlwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgJmFtcDtzdG9yZV9vZmZzZXQpOwotCiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfRlAsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKQEAgLTI0MSwyMSAmIzQzOzIyMywxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKQogCWxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBsZGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKIAomIzQzOwkvKiBPbmx5IHJlc3RvcmUgdGhlIFRDQyBzdGF0ZSBpbnRvIFJFR19UQ0MgZnJvbSB0aGUgaGlnaGVyIHNsb3QgKi8KJiM0MzsJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwomIzQzOwllbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKJiM0MzsKJiM0MzsJLyogU2tpcCB0aGUgdW51c2VkIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqLwomIzQzOwlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpIHsKIAkJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCQllbWl0X2luc24oY3R4LCBsZGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwogCX0KIAotCS8qCi0JICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuCi0JICogV2hlbiBwb3AgZnJvbSB0aGUgc3RhY2ssIGZpcnN0IHBvcCB0Y2NfcHRyIHRoZW4gZm9sbG93ZWQgYnkgdGNjLgotCSAqLwotCWxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7Ci0JZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7Ci0KLQlsb2FkX29mZnNldCAmIzQzOz0gc2l6ZW9mKGxvbmcpOwotCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwotCiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7CiAKIAlpZiAoIWlzX3RhaWxfY2FsbCkgewpAQCAtMjkwLDE3ICYjNDM7MjY5LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKQogCiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIHsKLQlpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7CiYjNDM7CWludCBvZmYsIGptcF9vZmZzZXQ7CiAJaW50IHRjY19wdHJfb2ZmID0gQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihjdHgtJmd0O3N0YWNrX3NpemUpOwogCXU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTsKIAl1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7CiAJdTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxOwogCXU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjsKIAl1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7Ci0JY29uc3QgaW50IGlkeDAgPSBjdHgtJmd0O2lkeDsKLQotI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtJmd0O2lkeCAtIGlkeDApCi0jZGVmaW5lIGptcF9vZmZzZXQgKHRjX25pbnNuIC0gKGN1cl9vZmZzZXQpKQogCiAJLyoKIAkgKiBhMDogJmFtcDtjdHgKQEAgLTMxMCwxMiAmIzQzOzI4NSwxMiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIAkgKiBpZiAoaW5kZXggJmd0Oz0gYXJyYXktJmd0O21hcC5tYXhfZW50cmllcykKIAkgKgkgZ290byBvdXQ7CiAJICovCi0JdGNfbmluc24gPSBpbnNuID8gY3R4LSZndDtvZmZzZXRbaW5zbiYjNDM7MV0gLSBjdHgtJmd0O29mZnNldFtpbnNuXSA6IGN0eC0mZ3Q7b2Zmc2V0WzBdOwogCWVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTsKIAogCW9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7CiAJZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpOwogCS8qIGJnZXUgJGEyLCAkdDEsIGptcF9vZmZzZXQgKi8KJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSAmbHQ7IDApCiAJCWdvdG8gdG9vZmFyOwogCkBAIC0zMjYsNiAmIzQzOzMwMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpOwogCWVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApOwogCWVtaXRfaW5zbihjdHgsIGFkZGlkLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7CiYjNDM7CWptcF9vZmZzZXQgPSBjdHgtJmd0O2ltYWdlID8gKGN0eC0mZ3Q7b2Zmc2V0W2luc24gJiM0MzsgMV0gLSBjdHgtJmd0O2lkeCkgOiAwOwogCWlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpICZsdDsgMCkKIAkJZ290byB0b29mYXI7CiAKQEAgLTM0MCw2ICYjNDM7MzE2LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pCiAJb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7CiAJZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7CiAJLyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi8KJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pFUSwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgam1wX29mZnNldCkgJmx0OyAwKQogCQlnb3RvIHRvb2ZhcjsKIApAQCAtMzU1LDggJiM0MzszMzIsNiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIHRvb2ZhcjoKIAlwcl9pbmZvX29uY2UoJiMzNDt0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxuJiMzNDspOwogCXJldHVybiAtMTsKLSN1bmRlZiBjdXJfb2Zmc2V0Ci0jdW5kZWYgam1wX29mZnNldAogfQogCiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oYCBhbmQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBJdCBsb29rcyBsaWtlIG5ldyBpbnN0cnVjdGlvbiBmb3JtYXRzLCBgc2x0dWlgLCBgbWFza2VxemAsIGFuZCBgbWFza25lemAsIGhhdmUgYmVlbiBhZGRlZCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoaXMgbWVhbnMgdGhleSYjMzk7dmUgYWxzbyBnb25lIGluIGFuZCB0b3VjaGVkIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyOiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpbXBhY3RzIHRoZSBCUEYgSklUIG9uIExvb25nQXJjaC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBCUEYgSklULCBnZW5lcmFsbHkgc3BlYWtpbmcsIGlzIGNlcnRhaW5seSByZWFjaGFibGUsIHNvIHRoYXQmIzM5O3Mgbm90IGEgY29uY2Vybi4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBpcyBMb29uZ0FyY2gsIHRoZSBxdWVzdGlvbiBzaGlmdHMgdG8gd2hldGhlciBvdXIgZnV6emluZyBzZXR1cCBjYW4gdGVzdCB0aGlzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBmb2N1cyBvbiBMb29uZ0FyY2ggaW4gaXRzIG1haW4gaW5zdGFuY2VzLCBidXQsIGl0ICpjYW4qIGJlIGNvbmZpZ3VyZWQgZm9yIExvb25nQXJjaC4gSXTigJlzIHdvcnRoIGNoZWNraW5nIGlmIHdlJiMzOTtyZSBjb25maWd1cmVkLgoKTmV4dCwgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCwgc28gZnV6emluZyBzaG91bGQgYmUgY29uc2lkZXJlZC4gTGV0JiMzOTtzIGxpc3QgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCBqdXN0IHRvIGRvdWJsZS1jaGVjazogYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3Qgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlbS4gSSBleHBlY3QgaXQmIzM5O3MgbGlrZWx5IGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9KSVRgICh3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpZiBCUEYgaXMgZW5hYmxlZCksIGFuZCwgb2YgY291cnNlLCBgQ09ORklHX0xPT05HQVJDSGAuIFNvLCBJJiMzOTtsbCBxdWlja2x5IGdyZXAgZm9yIGBDT05GSUdfQlBGX0pJVGAgaW4gYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIG9yIGBhcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL0tjb25maWc9Mj1jb25maWcgTE9PTkdBUkNIXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy03OS1cdHNlbGVjdCBBUkNIX1VTRV9RVUVVRURfU1BJTkxPQ0tTXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjgwOlx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgaWYgSEFWRV9FQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MS1cdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9UT1BET1dOX01NQVBfTEFZT1VUXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDMtXHRzZWxlY3QgSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6MTQ0Olx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgNjRCSVRcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQ1LVx0c2VsZWN0IEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1MgaWYgIUFSQ0hfU1RSSUNUX0FMSUdOXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz03PUNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MjY9ZG8ge1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzQtXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6MzU6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItfVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQzOiNlbmRpZiAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUtNi0jXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXQub1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NjI4PXN0YXRpYyBpbnQgYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2MS1cdCAqIFNpbmNlIHRoZSBleHRhYmxlIGZvbGxvd3MgdGhlIHByb2dyYW0sIHRoZSBmaXh1cCBvZmZzZXQgaXMgYWx3YXlzXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjY2MjpcdCAqIG5lZ2F0aXZlIGFuZCBsaW1pdGVkIHRvIEJQRl9KSVRfUkVHSU9OX1NJWkUuIFN0b3JlIGEgcG9zaXRpdmUgdmFsdWVcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNjYzLVx0ICogdG8ga2VlcCB0aGluZ3Mgc2ltcGxlLCBhbmQgcHV0IHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB0aGUgdXBwZXJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDg5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYSBzcGVjaWZpYyBzZXQgb2YgZnVuY3Rpb25zOiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBIbW1tLCB0aGVzZSBhbGwgc2VlbSB0byBiZSBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIFRoYXQgZ2l2ZXMgbWUgc29tZSBjb250ZXh0IGFuZCB0ZWxscyBtZSB0aGV5JiMzOTtyZSBsaWtlbHkgaW50ZXJuYWwgdG8gdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzIGZvciB0aGF0IGFyY2hpdGVjdHVyZS4gSSBub3cgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29tcGlsYXRpb24gaXMgaW52b2tlZC4gSSBrbm93IHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgYW5kIG15IGV4cGVyaWVuY2Ugc2F5cyB0aGUgZW50cnkgcG9pbnQgaXMgdHlwaWNhbGx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBsb29rIGZvciwgYW5kIHRoZW4gSSBjYW4gZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGF0IG92ZXJhbGwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxNTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxNzEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxNzI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwNAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBMb29uZ0FyY2ggQlBGIEpJVCBjb2RlIG1vZGlmaWNhdGlvbi4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIGlzIGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhpcyBwYXRjaCBzZWVtcyBmdW5jdGlvbmFsLCBhbmQgZ2l2ZW4gaXRzIG5hdHVyZSwgZnV6emluZyBpdCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBpZGVhLiBJIGNhbiBpbW1lZGlhdGVseSBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24uIFdoaWxlIEkgY291bGQgc3BlY2lmaWNhbGx5IGxpc3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBzeXprYWxsZXIgY292ZXJhZ2Ugc2hvdWxkIGF1dG9tYXRpY2FsbHkgcGljayB1cCBvbiB0aGUgY2hhbmdlcyBpZiB0aGV5JiMzOTtyZSBoaXQuCgpUbyBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZSwgbGV0JiMzOTtzIGxpc3QgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQgaW4gdGhlIHBhdGNoLiBJJiMzOTt2ZSBnb3Q6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuCgpIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBXYXNuJiMzOTt0IGBfX2J1aWxkX2VwaWxvZ3VlYCBhIHN0YXRpYyBmdW5jdGlvbj8gWWVzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgc3RhdGljIG5hdHVyZS4gQmV0dGVyIHRvIGJlIHByZWNpc2Ugd2hlbiBvdXRsaW5pbmcgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhcHByb2FjaCB0ZXN0aW5nIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnR8YnVpbGRfcHJvbG9ndWV8X19idWlsZF9lcGlsb2d1ZXxlbWl0X2JwZl90YWlsX2NhbGwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTMwPXN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NTA6c3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTE0LSAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTU6c3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTE2LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3OC1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc5Olx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE4MC1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5Ni1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTk3OnN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5OC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNTU9c3RhdGljIHZvaWQgYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjU2LXtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjU3Olx0X19idWlsZF9lcGlsb2d1ZShjdHgsIGZhbHNlKTtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjU4LX1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTI2NT1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI2OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjcwOnN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNzEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzI3LVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgdDIsIG9mZik7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjMyODpcdF9fYnVpbGRfZXBpbG9ndWUoY3R4LCB0cnVlKTtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzI5LVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NjkwPXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExODgtXHRjYXNlIEJQRl9KTVAgfCBCUEZfVEFJTF9DQUxMOlxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTg5Olx0XHRpZiAoZW1pdF9icGZfdGFpbF9jYWxsKGN0eCwgaSkgXHUwMDNjIDApXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExOTAtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTcyPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjE2LVx0LyogMS4gSW5pdGlhbCBmYWtlIHBhc3MgdG8gY29tcHV0ZSBjdHgtXHUwMDNlaWR4IGFuZCBzZXQgY3R4LVx1MDAzZWZsYWdzICovXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTc6XHRidWlsZF9wcm9sb2d1ZShcdTAwMjZjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjE4LVx0aWYgKGJ1aWxkX2JvZHkoXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNTY6XHRidWlsZF9wcm9sb2d1ZShcdTAwMjZjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjU3LVx0aWYgKGJ1aWxkX2JvZHkoXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU2CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBoZXJlIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHRhaWwgY2FsbCBvcHRpbWl6YXRpb24gd2l0aGluIHRoZSBCUEYgSklULiBUaGUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgaGVyZSBpcyBjbGVhcmx5IGBCUEZfSklUYCwgZ2l2ZW4gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucy4KCldhaXQgYSBtaW51dGUsIGl0IGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIEFoLCBidXQgdGhhdCYjMzk7cyBqdXN0IGFkZGluZyBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucywgbm90IGNvcmUgbG9naWMuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2VzIGlzIGRlZmluaXRlbHkgaW4gYGJwZl9qaXQuY2AuIFNvIHllYWgsIGBCUEZfSklUYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIGBDT05GSUdfTE9PTkdBUkNIYCBpcyBpbXBsaWVkLCBzbyBubyBuZWVkIHRvIGxpc3QgdGhhdC4gVGhlIHByb21wdCBzYWlkIG5vdCB0byBsaXN0IG92ZXJseSBnZW5lcmljIGNvbmZpZ3MuIE9ubHkgdGhvc2UgdGhhdCAqc3BlY2lmaWNhbGx5KiBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gVGhhdCBtZWFucyBgQlBGX0pJVGAgaXMgdGhlIG9ubHkgY29uZmlnIHRvIGxpc3QgaGVyZS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgb3B0aW1pemluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgZm9yIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyBieSBsZXZlcmFnaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zIGxpa2UgYHNsdHVpYCwgYG1hc2tlcXpgLCBhbmQgYG1hc2tuZXpgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24uIFRoYXQmIzM5O3MgKmZ1bmN0aW9uYWwqLCAqY29yZSoga2VybmVsIGxvZ2ljLiBUaGlzIG5lZWRzIGZ1enppbmcsIHdpdGhvdXQgYSBkb3VidCwgdG8gbWFrZSBzdXJlIHRoZSBKSVQgY29tcGlsZXIgaXMgZ2VuZXJhdGluZyBjb3JyZWN0IGNvZGUgYW5kIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmFzdHkgdnVsbmVyYWJpbGl0aWVzLgoKUmlnaHQsIHRpbWUgdG8gY29uc3RydWN0IHRoZSBvdXRwdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTc6MTU6MTUuMTU1ODQ5ODUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyODI4MjM4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToxNS4xNTU4NjY4ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcyODAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDcxMzM5ZGJlNTk4NjU0NDYzZWY1MWIyYjZmZGZhODNiOWFmMWIyYzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNzoxNToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xcbiB9O1xcbiBcXG4gZW51bSByZWcyaTEyX29wIHtcXG4rXFx0c2x0dWlfb3BcXHQ9IDB4MDksXFxuIFxcdGFkZGl3X29wXFx0PSAweDBhLFxcbiBcXHRhZGRpZF9vcFxcdD0gMHgwYixcXG4gXFx0bHU1MmlkX29wXFx0PSAweDBjLFxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcXG4gXFx0YWRkZF9vcFxcdFxcdD0gMHgyMSxcXG4gXFx0c3Vid19vcFxcdFxcdD0gMHgyMixcXG4gXFx0c3ViZF9vcFxcdFxcdD0gMHgyMyxcXG4rXFx0bWFza2Vxel9vcFxcdD0gMHgyNixcXG4rXFx0bWFza25lel9vcFxcdD0gMHgyNyxcXG4gXFx0bm9yX29wXFx0XFx0PSAweDI4LFxcbiBcXHRhbmRfb3BcXHRcXHQ9IDB4MjksXFxuIFxcdG9yX29wXFx0XFx0PSAweDJhLFxcbkBAIC02NDQsNiArNjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuIFxcdGluc24tXFx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXFxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaWQsIGFkZGlkX29wKVxcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQob3IsIG9yX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5pbmRleCAyNzM4YjRkYjExNjUzMy4uOWU5ZDk4YjIxODEyNzcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNTIsNTAgKzUyLDI5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuIFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cXHUwMDNlcHJvZztcXG4gXFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XFxuIFxcbitcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0aWYgKGlzX21haW5fcHJvZykge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcXG4tXFx0XFx0ICogaWYgKFJFR19UQ0MgXFx1MDAzZSBUMyApXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKiBlbHNlXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKlxcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XFxuLVxcdFxcdCAqXFxuLVxcdFxcdCAqIHN0ZCBSRUdfVENDIC1cXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcXG4tXFx0XFx0ICpcXG4tXFx0XFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxcbi1cXHRcXHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxcbi1cXHRcXHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcXG4tXFx0XFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbi1cXG4tXFx0XFx0ZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSWYgUkVHX1RDQyBcXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxcbi1cXHRcXHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXFxuLVxcdFxcdCAqL1xcbitcXHRcXHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuIFxcbi1cXHRcXHQvKiBQdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHRoZSBSRUdfVENDICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4tXFxuLVxcdFxcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xcbitcXHRcXHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIElmIFJFR19UQ0MgXFx1MDAzZSBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogcHVzaCB0Y2NfcHRyIGludG8gc3RhY2tcXG4rXFx0XFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XFxuK1xcdFxcdCAqIENvbWJpbmUgaW50ZXJsZWF2ZWQgaW5wdXRzIGJldHdlZW4gYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpXFxuK1xcdFxcdCAqIGFuZCBhIGtlcm5lbCBwb2ludGVyIGFkZHJlc3Mgd2l0aG91dCBydW50aW1lIGJyYW5jaGluZy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCArIDEpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBtYXNrZXF6LCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1Q4KTtcXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuK1xcdFxcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xcbiBcXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xcbitcXHQvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICd0Y2NfcHRyJyBzbG90ICovXFxuIFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbiBcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbiB9XFxuQEAgLTEyNCw2ICsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHRjY19wdHIgICAgICAgfFxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XFxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfFxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgXFx1MDAzYy0tQlBGX1JFR19GUFxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8XFxuQEAgLTE0NSw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRzdGFja19hZGp1c3QgKz0gc2l6ZW9mKGxvbmcpICogMjtcXG4gXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbi1cXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4rXFx0XFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKTtcXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG5AQCAtMTk0LDEzICsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xcbiBcXG4rXFx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFxcdTAwMjZzdG9yZV9vZmZzZXQpO1xcbitcXG4gXFx0aWYgKGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcXG4gXFx0XFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XFxuIFxcdH1cXG4gXFxuLVxcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcXHUwMDI2c3RvcmVfb2Zmc2V0KTtcXG4tXFxuIFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX0ZQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xcbiBcXG4gXFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXFxuQEAgLTI0MSwyMSArMjIzLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXFxuIFxcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuIFxcbitcXHQvKiBPbmx5IHJlc3RvcmUgdGhlIFRDQyBzdGF0ZSBpbnRvIFJFR19UQ0MgZnJvbSB0aGUgaGlnaGVyIHNsb3QgKi9cXG4rXFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbitcXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4rXFxuK1xcdC8qIFNraXAgdGhlIHVudXNlZCBsb2NhbCAndGNjX3B0cicgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXFxuK1xcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4rXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XFxuIFxcdFxcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4gXFx0fVxcbiBcXG4tXFx0LypcXG4tXFx0ICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuXFxuLVxcdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cXG4tXFx0ICovXFxuLVxcdGxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7XFxuLVxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xcbi1cXG4tXFx0bG9hZF9vZmZzZXQgKz0gc2l6ZW9mKGxvbmcpO1xcbi1cXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4tXFxuIFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1NQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xcbiBcXG4gXFx0aWYgKCFpc190YWlsX2NhbGwpIHtcXG5AQCAtMjkwLDE3ICsyNjksMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuIFxcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4ge1xcbi1cXHRpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7XFxuK1xcdGludCBvZmYsIGptcF9vZmZzZXQ7XFxuIFxcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVxcdTAwM2VzdGFja19zaXplKTtcXG4gXFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xcbiBcXHR1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7XFxuIFxcdHU4IHQxID0gTE9PTkdBUkNIX0dQUl9UMTtcXG4gXFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xcbiBcXHR1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7XFxuLVxcdGNvbnN0IGludCBpZHgwID0gY3R4LVxcdTAwM2VpZHg7XFxuLVxcbi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC1cXHUwMDNlaWR4IC0gaWR4MClcXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIGEwOiBcXHUwMDI2Y3R4XFxuQEAgLTMxMCwxMiArMjg1LDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiBcXHQgKiBpZiAoaW5kZXggXFx1MDAzZT0gYXJyYXktXFx1MDAzZW1hcC5tYXhfZW50cmllcylcXG4gXFx0ICpcXHQgZ290byBvdXQ7XFxuIFxcdCAqL1xcbi1cXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXFx1MDAzZW9mZnNldFtpbnNuKzFdIC0gY3R4LVxcdTAwM2VvZmZzZXRbaW5zbl0gOiBjdHgtXFx1MDAzZW9mZnNldFswXTtcXG4gXFx0ZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpO1xcbiBcXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xcbiBcXHQvKiBiZ2V1ICRhMiwgJHQxLCBqbXBfb2Zmc2V0ICovXFxuK1xcdGptcF9vZmZzZXQgPSBjdHgtXFx1MDAzZWltYWdlID8gKGN0eC1cXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cXHUwMDNlaWR4KSA6IDA7XFxuIFxcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHRvb2ZhcjtcXG4gXFxuQEAgLTMyNiw2ICszMDEsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApO1xcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSlNHRSwgdDMsIHQyLCBqbXBfb2Zmc2V0KSBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gdG9vZmFyO1xcbiBcXG5AQCAtMzQwLDYgKzMxNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiBcXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7XFxuIFxcdC8qIGJlcSAkdDIsICR6ZXJvLCBqbXBfb2Zmc2V0ICovXFxuK1xcdGptcF9vZmZzZXQgPSBjdHgtXFx1MDAzZWltYWdlID8gKGN0eC1cXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cXHUwMDNlaWR4KSA6IDA7XFxuIFxcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0b29mYXI7XFxuIFxcbkBAIC0zNTUsOCArMzMyLDYgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIHRvb2ZhcjpcXG4gXFx0cHJfaW5mb19vbmNlKFxcXCJ0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxcXFxuXFxcIik7XFxuIFxcdHJldHVybiAtMTtcXG4tI3VuZGVmIGN1cl9vZmZzZXRcXG4tI3VuZGVmIGptcF9vZmZzZXRcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjE1Ljk2NzcyODI4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0NzA5MzA0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxMzM5ZGJlNTk4NjU0NDYzZWY1MWIyYjZmZGZhODNiOWFmMWIyYzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE3OjE1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbitcdHNsdHVpX29wXHQ9IDB4MDksXG4gXHRhZGRpd19vcFx0PSAweDBhLFxuIFx0YWRkaWRfb3BcdD0gMHgwYixcbiBcdGx1NTJpZF9vcFx0PSAweDBjLFxuQEAgLTE1Myw2ICsxNTQsOCBAQCBlbnVtIHJlZzNfb3Age1xuIFx0YWRkZF9vcFx0XHQ9IDB4MjEsXG4gXHRzdWJ3X29wXHRcdD0gMHgyMixcbiBcdHN1YmRfb3BcdFx0PSAweDIzLFxuK1x0bWFza2Vxel9vcFx0PSAweDI2LFxuK1x0bWFza25lel9vcFx0PSAweDI3LFxuIFx0bm9yX29wXHRcdD0gMHgyOCxcbiBcdGFuZF9vcFx0XHQ9IDB4MjksXG4gXHRvcl9vcFx0XHQ9IDB4MmEsXG5AQCAtNjQ0LDYgKzY0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuIFx0aW5zbi1cdTAwM2VyZWcyaTEyX2Zvcm1hdC5yaiA9IHJqO1x0XHRcdFx0XHRcXFxuIH1cbiBcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiArNzUzLDggQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoZGl2ZCwgZGl2ZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkLCBtb2RkX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkdSwgbW9kZHVfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQobWFza2VxeiwgbWFza2Vxel9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjllOWQ5OGIyMTgxMjc3IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICs1MiwyOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxuIFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nID0gY3R4LVx1MDAzZXByb2c7XG4gXHRjb25zdCBib29sIGlzX21haW5fcHJvZyA9ICFicGZfaXNfc3VicHJvZyhwcm9nKTtcbiBcbitcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0aWYgKGlzX21haW5fcHJvZykge1xuLVx0XHQvKlxuLVx0XHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcbi1cdFx0ICogaWYgKFJFR19UQ0MgXHUwMDNlIFQzIClcbi1cdFx0ICpcdHN0ZCBSRUdfVENDIC1cdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXG4tXHRcdCAqIHN0ZCBSRUdfVENDIC1cdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4rXHRcdC8qIFNhdmUgZW50cmFuY2UgVENDIHN0YXRlIChzY2FsYXIgY291bnQgb3Iga2VybmVsIHBvaW50ZXIpIHRvIGxvY2FsICd0Y2MnIHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuK1x0XHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXG4rXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbiBcdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2UgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGFuIGFkZHJlc3MsXG4tXHRcdCAqIHB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrXG4rXHRcdCAqIEJyYW5jaGxlc3MgY2xhc3NpZmljYXRpb24gYW5kIGJsZW5kaW5nOlxuK1x0XHQgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKVxuK1x0XHQgKiBhbmQgYSBrZXJuZWwgcG9pbnRlciBhZGRyZXNzIHdpdGhvdXQgcnVudGltZSBicmFuY2hpbmcuXG4gXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBzbHR1aSwgTE9PTkdBUkNIX0dQUl9UOCwgUkVHX1RDQywgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxKTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XG4rXHRcdGVtaXRfaW5zbihjdHgsIG1hc2tuZXosIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDgpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XG4gXHR9IGVsc2Uge1xuLVx0XHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbitcdFx0LyogU3VicHJvZ3JhbXM6IGJhY2t1cCB0aGUgdmVyaWZpZWQgVENDIHBvaW50ZXIgaW5oZXJpdGVkIHZpYSBSRUdfVENDICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xuK1x0LyogU3RvcmUgdGhlIGZpbmFsaXplZCBUQ0MgcG9pbnRlciB2YWx1ZSBzZWN1cmVseSBpbnRvIHRoZSBsb2NhbCAndGNjX3B0cicgc2xvdCAqL1xuIFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIH1cbkBAIC0xMjQsNiArMTAzLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBhcmVuYSAgICAgICAgIHxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgXHUwMDNjLS1CUEZfUkVHX0ZQXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGggfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIChvcHRpb25hbCkgICAgICAgfFxuQEAgLTE0NSw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKSAqIDI7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuLVx0XHRzdGFja19hZGp1c3QgKz0gODtcbitcdFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKTtcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xuIFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XG5AQCAtMTk0LDEzICsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXG4rXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbitcbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbi1cbiBcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX0ZQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG5AQCAtMjQxLDIxICsyMjMsMTggQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGlzX3RhaWxfY2FsbClcbiBcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFxuK1x0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXG4rXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbitcbitcdC8qIFNraXAgdGhlIHVudXNlZCBsb2NhbCAndGNjX3B0cicgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXG4rXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci5cbi1cdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cbi1cdCAqL1xuLVx0bG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuLVx0bG9hZF9vZmZzZXQgKz0gc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmICghaXNfdGFpbF9jYWxsKSB7XG5AQCAtMjkwLDE3ICsyNjksMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXG4gXG4gc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4ge1xuLVx0aW50IG9mZiwgdGNfbmluc24gPSAwO1xuK1x0aW50IG9mZiwgam1wX29mZnNldDtcbiBcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVx1MDAzZXN0YWNrX3NpemUpO1xuIFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xuIFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xuIFx0dTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxO1xuIFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xuIFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xuLVx0Y29uc3QgaW50IGlkeDAgPSBjdHgtXHUwMDNlaWR4O1xuLVxuLSNkZWZpbmUgY3VyX29mZnNldCAoY3R4LVx1MDAzZWlkeCAtIGlkeDApXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcbiBcbiBcdC8qXG4gXHQgKiBhMDogXHUwMDI2Y3R4XG5AQCAtMzEwLDEyICsyODUsMTIgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHQgKiBpZiAoaW5kZXggXHUwMDNlPSBhcnJheS1cdTAwM2VtYXAubWF4X2VudHJpZXMpXG4gXHQgKlx0IGdvdG8gb3V0O1xuIFx0ICovXG4tXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXHUwMDNlb2Zmc2V0W2luc24rMV0gLSBjdHgtXHUwMDNlb2Zmc2V0W2luc25dIDogY3R4LVx1MDAzZW9mZnNldFswXTtcbiBcdGVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTtcbiBcbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZHd1LCB0MSwgYTEsIG9mZik7XG4gXHQvKiBiZ2V1ICRhMiwgJHQxLCBqbXBfb2Zmc2V0ICovXG4rXHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzI2LDYgKzMwMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCBSRUdfVENDLCAwKTtcbiBcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XG4rXHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTM0MCw2ICszMTYsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIHB0cnMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7XG4gXHQvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqL1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNTUsOCArMzMyLDYgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gdG9vZmFyOlxuIFx0cHJfaW5mb19vbmNlKFwidGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXG5cIik7XG4gXHRyZXR1cm4gLTE7XG4tI3VuZGVmIGN1cl9vZmZzZXRcbi0jdW5kZWYgam1wX29mZnNldFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjE1Ljk2NzczMDgxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjI5OTE3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2ggQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgIGFuZCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIEl0IGxvb2tzIGxpa2UgbmV3IGluc3RydWN0aW9uIGZvcm1hdHMsIGBzbHR1aWAsIGBtYXNrZXF6YCwgYW5kIGBtYXNrbmV6YCwgaGF2ZSBiZWVuIGFkZGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhpcyBtZWFucyB0aGV5J3ZlIGFsc28gZ29uZSBpbiBhbmQgdG91Y2hlZCBzZXZlcmFsIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlcjogYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaW1wYWN0cyB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2guXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBCUEYgSklULCBnZW5lcmFsbHkgc3BlYWtpbmcsIGlzIGNlcnRhaW5seSByZWFjaGFibGUsIHNvIHRoYXQncyBub3QgYSBjb25jZXJuLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIGlzIExvb25nQXJjaCwgdGhlIHF1ZXN0aW9uIHNoaWZ0cyB0byB3aGV0aGVyIG91ciBmdXp6aW5nIHNldHVwIGNhbiB0ZXN0IHRoaXMuIFN5emthbGxlciBkb2Vzbid0IHVzdWFsbHkgZm9jdXMgb24gTG9vbmdBcmNoIGluIGl0cyBtYWluIGluc3RhbmNlcywgYnV0LCBpdCAqY2FuKiBiZSBjb25maWd1cmVkIGZvciBMb29uZ0FyY2guIEl04oCZcyB3b3J0aCBjaGVja2luZyBpZiB3ZSdyZSBjb25maWd1cmVkLlxuXG5OZXh0LCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIHRoZSBCUEYgSklULCBzbyBmdXp6aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLiBMZXQncyBsaXN0IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQganVzdCB0byBkb3VibGUtY2hlY2s6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3Qgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlbS4gSSBleHBlY3QgaXQncyBsaWtlbHkgZGVwZW5kZW50IG9uIGBDT05GSUdfQlBGX0pJVGAgKHdoaWNoIGlzIHR5cGljYWxseSBlbmFibGVkIGlmIEJQRiBpcyBlbmFibGVkKSwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9PTkdBUkNIYC4gU28sIEknbGwgcXVpY2tseSBncmVwIGZvciBgQ09ORklHX0JQRl9KSVRgIGluIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBvciBgYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToyMy4zMzA3MjU3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTQ2NTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL0tjb25maWc9Mj1jb25maWcgTE9PTkdBUkNIXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc5LVxcdHNlbGVjdCBBUkNIX1VTRV9RVUVVRURfU1BJTkxPQ0tTXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo4MDpcXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCBpZiBIQVZFX0VCUEZfSklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MS1cXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfVE9QRE9XTl9NTUFQX0xBWU9VVFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDMtXFx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzoxNDQ6XFx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgNjRCSVRcXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTE0NS1cXHRzZWxlY3QgSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTUyBpZiAhQVJDSF9TVFJJQ1RfQUxJR05cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTYyOD1zdGF0aWMgaW50IGFkZF9leGNlcHRpb25faGFuZGxlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2MS1cXHQgKiBTaW5jZSB0aGUgZXh0YWJsZSBmb2xsb3dzIHRoZSBwcm9ncmFtLCB0aGUgZml4dXAgb2Zmc2V0IGlzIGFsd2F5c1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NjYyOlxcdCAqIG5lZ2F0aXZlIGFuZCBsaW1pdGVkIHRvIEJQRl9KSVRfUkVHSU9OX1NJWkUuIFN0b3JlIGEgcG9zaXRpdmUgdmFsdWVcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2My1cXHQgKiB0byBrZWVwIHRoaW5ncyBzaW1wbGUsIGFuZCBwdXQgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIGluIHRoZSB1cHBlclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToyMy40MzgyODM5NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY0NjQwNzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIEpJVCBDb21waWxhdGlvbiBmb3IgTG9vbmdBcmNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiwgYW5kIG15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIHNldCBvZiBmdW5jdGlvbnM6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIEhtbW0sIHRoZXNlIGFsbCBzZWVtIHRvIGJlIHN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gVGhhdCBnaXZlcyBtZSBzb21lIGNvbnRleHQgYW5kIHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGludGVybmFsIHRvIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIEkgbm93IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbXBpbGF0aW9uIGlzIGludm9rZWQuIEkga25vdyB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUsIGFuZCBteSBleHBlcmllbmNlIHNheXMgdGhlIGVudHJ5IHBvaW50IGlzIHR5cGljYWxseSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIExldCdzIGNvbmZpcm0gdGhhdCdzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLCBhbmQgdGhlbiBJIGNhbiBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQgd2l0aGluIHRoYXQgb3ZlcmFsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjM0LjA4NDY5MjkyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI1NzQ3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE1Nz1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTcxLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE3MjpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE3My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjM0LjE4NzI3Mjg4OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDEwMDMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIExvb25nQXJjaCBCUEYgSklUIGNvZGUgbW9kaWZpY2F0aW9uLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBUaGlzIHBhdGNoIHNlZW1zIGZ1bmN0aW9uYWwsIGFuZCBnaXZlbiBpdHMgbmF0dXJlLCBmdXp6aW5nIGl0IGlzIGRlZmluaXRlbHkgYSBnb29kIGlkZWEuIEkgY2FuIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbi4gV2hpbGUgSSBjb3VsZCBzcGVjaWZpY2FsbHkgbGlzdCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIHN5emthbGxlciBjb3ZlcmFnZSBzaG91bGQgYXV0b21hdGljYWxseSBwaWNrIHVwIG9uIHRoZSBjaGFuZ2VzIGlmIHRoZXkncmUgaGl0LlxuXG5UbyBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZSwgbGV0J3MgbGlzdCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHRoYXQgd2VyZSBhY3R1YWxseSBtb2RpZmllZCBpbiB0aGUgcGF0Y2guIEkndmUgZ290OiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLlxuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBXYXNuJ3QgYF9fYnVpbGRfZXBpbG9ndWVgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIEkgbmVlZCB0byBjb25maXJtIGl0cyBzdGF0aWMgbmF0dXJlLiBCZXR0ZXIgdG8gYmUgcHJlY2lzZSB3aGVuIG91dGxpbmluZyB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGlzIHdpbGwgYWZmZWN0IGhvdyBJIGFwcHJvYWNoIHRlc3RpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYwNCwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNTo0MC4yMjgyNzg0MTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNDEzNzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250fGJ1aWxkX3Byb2xvZ3VlfF9fYnVpbGRfZXBpbG9ndWV8ZW1pdF9icGZfdGFpbF9jYWxsKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzA9c3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNDktXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzo1MDpzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xMTQtICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTU6c3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExNi17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3OC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE3OTpcXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXFx1MDAyNnN0b3JlX29mZnNldCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xODAtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5Ni1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5NzpzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk4LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjU1PXN0YXRpYyB2b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNTYte1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjU3OlxcdF9fYnVpbGRfZXBpbG9ndWUoY3R4LCBmYWxzZSk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNTgtfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNjU9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI2OS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI3MDpzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI3MS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTMyNy1cXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCB0Miwgb2ZmKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjMyODpcXHRfX2J1aWxkX2VwaWxvZ3VlKGN0eCwgdHJ1ZSk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zMjktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTY5MD1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExODgtXFx0Y2FzZSBCUEZfSk1QIHwgQlBGX1RBSUxfQ0FMTDpcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjExODk6XFx0XFx0aWYgKGVtaXRfYnBmX3RhaWxfY2FsbChjdHgsIGkpIFxcdTAwM2MgMClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExOTAtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxNzI9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxNi1cXHQvKiAxLiBJbml0aWFsIGZha2UgcGFzcyB0byBjb21wdXRlIGN0eC1cXHUwMDNlaWR4IGFuZCBzZXQgY3R4LVxcdTAwM2VmbGFncyAqL1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjIxNzpcXHRidWlsZF9wcm9sb2d1ZShcXHUwMDI2Y3R4KTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTgtXFx0aWYgKGJ1aWxkX2JvZHkoXFx1MDAyNmN0eCwgZXh0cmFfcGFzcykpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjU2OlxcdGJ1aWxkX3Byb2xvZ3VlKFxcdTAwMjZjdHgpO1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cXHRpZiAoYnVpbGRfYm9keShcXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTc6MTU6NDAuMzc5NzAxNTg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg5MTQyNzEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gaGVyZSBhcmUgYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgQlBGIEpJVC4gVGhlIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGhlcmUgaXMgY2xlYXJseSBgQlBGX0pJVGAsIGdpdmVuIHRoZSBmaWxlIG1vZGlmaWNhdGlvbnMuXG5cbldhaXQgYSBtaW51dGUsIGl0IGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIEFoLCBidXQgdGhhdCdzIGp1c3QgYWRkaW5nIGluc3RydWN0aW9uIGRlZmluaXRpb25zLCBub3QgY29yZSBsb2dpYy4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgaXMgZGVmaW5pdGVseSBpbiBgYnBmX2ppdC5jYC4gU28geWVhaCwgYEJQRl9KSVRgIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaCwgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBgQ09ORklHX0xPT05HQVJDSGAgaXMgaW1wbGllZCwgc28gbm8gbmVlZCB0byBsaXN0IHRoYXQuIFRoZSBwcm9tcHQgc2FpZCBub3QgdG8gbGlzdCBvdmVybHkgZ2VuZXJpYyBjb25maWdzLiBPbmx5IHRob3NlIHRoYXQgKnNwZWNpZmljYWxseSogY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIFRoYXQgbWVhbnMgYEJQRl9KSVRgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byBsaXN0IGhlcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgb3B0aW1pemluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgZm9yIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyBieSBsZXZlcmFnaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zIGxpa2UgYHNsdHVpYCwgYG1hc2tlcXpgLCBhbmQgYG1hc2tuZXpgLiBFc3NlbnRpYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbi4gVGhhdCdzICpmdW5jdGlvbmFsKiwgKmNvcmUqIGtlcm5lbCBsb2dpYy4gVGhpcyBuZWVkcyBmdXp6aW5nLCB3aXRob3V0IGEgZG91YnQsIHRvIG1ha2Ugc3VyZSB0aGUgSklUIGNvbXBpbGVyIGlzIGdlbmVyYXRpbmcgY29ycmVjdCBjb2RlIGFuZCBub3QgaW50cm9kdWNpbmcgYW55IG5hc3R5IHZ1bG5lcmFiaWxpdGllcy5cblxuUmlnaHQsIHRpbWUgdG8gY29uc3RydWN0IHRoZSBvdXRwdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTYsIk91dHB1dFRva2VucyI6MTMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjQ4LjI3MTEzMDU2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzUyMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250XCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIG9wdGltaXplIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyB1c2luZyBicmFuY2hsZXNzIGluc3RydWN0aW9ucy4gSXQgYWx0ZXJzIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24gbG9naWMsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 17:01:39 +0000 UTC FinishedAt: 2026-07-07 17:15:49 +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": "e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "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": "e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "b45ea43f-46a4-4575-8a3d-b95ac1965fcc" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "prepare_bpf_tail_call_cnt", "build_prologue", "__build_epilogue", "emit_bpf_tail_call" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250JiMzNDssCiAgICAmIzM0O2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O19fYnVpbGRfZXBpbG9ndWUmIzM0OywKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byBvcHRpbWl6ZSB0YWlsIGNhbGwgY291bnQgaGFuZGxpbmcgdXNpbmcgYnJhbmNobGVzcyBpbnN0cnVjdGlvbnMuIEl0IGFsdGVycyB0aGUgcHJvbG9ndWUsIGVwaWxvZ3VlLCBhbmQgdGFpbCBjYWxsIGVtaXNzaW9uIGxvZ2ljLCB3aGljaCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBjb2RlIGdlbmVyYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MTMzOWRiZTU5ODY1NDQ2M2VmNTFiMmI2ZmRmYTgzYjlhZjFiMmMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNzoxNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li4xOWZlYWUxNjZlMWMxOCAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtOTcsNiAmIzQzOzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbiYjNDM7XHRzbHR1aV9vcFx0PSAweDA5LFxuIFx0YWRkaXdfb3BcdD0gMHgwYSxcbiBcdGFkZGlkX29wXHQ9IDB4MGIsXG4gXHRsdTUyaWRfb3BcdD0gMHgwYyxcbkBAIC0xNTMsNiAmIzQzOzE1NCw4IEBAIGVudW0gcmVnM19vcCB7XG4gXHRhZGRkX29wXHRcdD0gMHgyMSxcbiBcdHN1Yndfb3BcdFx0PSAweDIyLFxuIFx0c3ViZF9vcFx0XHQ9IDB4MjMsXG4mIzQzO1x0bWFza2Vxel9vcFx0PSAweDI2LFxuJiM0MztcdG1hc2tuZXpfb3BcdD0gMHgyNyxcbiBcdG5vcl9vcFx0XHQ9IDB4MjgsXG4gXHRhbmRfb3BcdFx0PSAweDI5LFxuIFx0b3Jfb3BcdFx0PSAweDJhLFxuQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcdFxcXG4gXHRpbnNuLVx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XHRcdFx0XHRcdFxcXG4gfVxuIFxuJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiAmIzQzOzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZCwgbW9kZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjllOWQ5OGIyMTgxMjc3IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICYjNDM7NTIsMjkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiBcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cdTAwM2Vwcm9nO1xuIFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XG4gXG4mIzQzO1x0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRpZiAoaXNfbWFpbl9wcm9nKSB7XG4tXHRcdC8qXG4tXHRcdCAqIExPT05HQVJDSF9HUFJfVDMgPSBNQVhfVEFJTF9DQUxMX0NOVFxuLVx0XHQgKiBpZiAoUkVHX1RDQyBcdTAwM2UgVDMgKVxuLVx0XHQgKlx0c3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXHRSRUdfVENDID0gTE9PTkdBUkNIX0dQUl9TUCAmIzQzOyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcbi1cdFx0ICogc3RkIFJFR19UQ0MgLVx1MDAzZSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4mIzQzO1x0XHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAmIzM5O3RjYyYjMzk7IHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuJiM0MztcdFx0LyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovXG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIElmIFJFR19UQ0MgXHUwMDNlIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLFxuLVx0XHQgKiBwdXNoIHRjY19wdHIgaW50byBzdGFja1xuJiM0MztcdFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XG4mIzQzO1x0XHQgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKVxuJiM0MztcdFx0ICogYW5kIGEga2VybmVsIHBvaW50ZXIgYWRkcmVzcyB3aXRob3V0IHJ1bnRpbWUgYnJhbmNoaW5nLlxuIFx0XHQgKi9cbi1cdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxKTtcbiYjNDM7XHRcdGVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpO1xuJiM0MztcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XG4gXHR9IGVsc2Uge1xuLVx0XHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XHRcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIFx0fVxuIFxuLVx0LyogUHVzaCB0Y2NfcHRyIGludG8gc3RhY2sgKi9cbiYjNDM7XHQvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgKi9cbiBcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiB9XG5AQCAtMTI0LDYgJiM0MzsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHRjYyAgICAgICAgICAgfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7XG4mIzQzOyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZW5hICAgICAgICAgfFxuJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyBcdTAwM2MtLUJQRl9SRUdfRlBcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBwcm9nLVx1MDAzZWF1eC1cdTAwM2VzdGFja19kZXB0aCB8XG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8XG5AQCAtMTQ1LDcgJiM0MzsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZykgKiAyO1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbi1cdFx0c3RhY2tfYWRqdXN0ICYjNDM7PSA4O1xuJiM0MztcdFx0c3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZyk7XG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIDE2KTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbkBAIC0xOTQsMTMgJiM0MzsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXG4mIzQzO1x0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG4mIzQzO1xuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcdTAwMjZzdG9yZV9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfRlAsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbkBAIC0yNDEsMjEgJiM0MzsyMjMsMTggQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGlzX3RhaWxfY2FsbClcbiBcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFxuJiM0MztcdC8qIE9ubHkgcmVzdG9yZSB0aGUgVENDIHN0YXRlIGludG8gUkVHX1RDQyBmcm9tIHRoZSBoaWdoZXIgc2xvdCAqL1xuJiM0MztcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiYjNDM7XG4mIzQzO1x0LyogU2tpcCB0aGUgdW51c2VkIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqL1xuJiM0MztcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiYjNDM7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci5cbi1cdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cbi1cdCAqL1xuLVx0bG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuLVx0bG9hZF9vZmZzZXQgJiM0Mzs9IHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7XG4gXG4gXHRpZiAoIWlzX3RhaWxfY2FsbCkge1xuQEAgLTI5MCwxNyAmIzQzOzI2OSwxMyBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwodm9pZClcbiBcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiB7XG4tXHRpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7XG4mIzQzO1x0aW50IG9mZiwgam1wX29mZnNldDtcbiBcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVx1MDAzZXN0YWNrX3NpemUpO1xuIFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xuIFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xuIFx0dTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxO1xuIFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xuIFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xuLVx0Y29uc3QgaW50IGlkeDAgPSBjdHgtXHUwMDNlaWR4O1xuLVxuLSNkZWZpbmUgY3VyX29mZnNldCAoY3R4LVx1MDAzZWlkeCAtIGlkeDApXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcbiBcbiBcdC8qXG4gXHQgKiBhMDogXHUwMDI2Y3R4XG5AQCAtMzEwLDEyICYjNDM7Mjg1LDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ICogaWYgKGluZGV4IFx1MDAzZT0gYXJyYXktXHUwMDNlbWFwLm1heF9lbnRyaWVzKVxuIFx0ICpcdCBnb3RvIG91dDtcbiBcdCAqL1xuLVx0dGNfbmluc24gPSBpbnNuID8gY3R4LVx1MDAzZW9mZnNldFtpbnNuJiM0MzsxXSAtIGN0eC1cdTAwM2VvZmZzZXRbaW5zbl0gOiBjdHgtXHUwMDNlb2Zmc2V0WzBdO1xuIFx0ZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpO1xuIFxuIFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkd3UsIHQxLCBhMSwgb2ZmKTtcbiBcdC8qIGJnZXUgJGEyLCAkdDEsIGptcF9vZmZzZXQgKi9cbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTMyNiw2ICYjNDM7MzAxLDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIHRjY19wdHJfb2ZmKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApO1xuIFx0ZW1pdF9pbnNuKGN0eCwgYWRkaWQsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbiYjNDM7XHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNDAsNiAmIzQzOzMxNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIHQyLCB0Miwgb2ZmKTtcbiBcdC8qIGJlcSAkdDIsICR6ZXJvLCBqbXBfb2Zmc2V0ICovXG4mIzQzO1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gJiM0MzsgMV0gLSBjdHgtXHUwMDNlaWR4KSA6IDA7XG4gXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSkVRLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzU1LDggJiM0MzszMzIsNiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiB0b29mYXI6XG4gXHRwcl9pbmZvX29uY2UoXCYjMzQ7dGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXG5cJiMzNDspO1xuIFx0cmV0dXJuIC0xO1xuLSN1bmRlZiBjdXJfb2Zmc2V0XG4tI3VuZGVmIGptcF9vZmZzZXRcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQmIzM0OywKICAgICYjMzQ7YnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7LAogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIG9wdGltaXplIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyB1c2luZyBicmFuY2hsZXNzIGluc3RydWN0aW9ucy4gSXQgYWx0ZXJzIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24gbG9naWMsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzEzMzlkYmU1OTg2NTQ0NjNlZjUxYjJiNmZkZmE4M2I5YWYxYjJjMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMTc6MTU6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZDcuLjE5ZmVhZTE2NmUxYzE4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCkBAIC05Nyw2ICYjNDM7OTcsNyBAQCBlbnVtIHJlZzJpNl9vcCB7CiB9OwogCiBlbnVtIHJlZzJpMTJfb3AgewomIzQzOwlzbHR1aV9vcAk9IDB4MDksCiAJYWRkaXdfb3AJPSAweDBhLAogCWFkZGlkX29wCT0gMHgwYiwKIAlsdTUyaWRfb3AJPSAweDBjLApAQCAtMTUzLDYgJiM0MzsxNTQsOCBAQCBlbnVtIHJlZzNfb3AgewogCWFkZGRfb3AJCT0gMHgyMSwKIAlzdWJ3X29wCQk9IDB4MjIsCiAJc3ViZF9vcAkJPSAweDIzLAomIzQzOwltYXNrZXF6X29wCT0gMHgyNiwKJiM0MzsJbWFza25lel9vcAk9IDB4MjcsCiAJbm9yX29wCQk9IDB4MjgsCiAJYW5kX29wCQk9IDB4MjksCiAJb3Jfb3AJCT0gMHgyYSwKQEAgLTY0NCw2ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbiwJXAogCWluc24tJmd0O3JlZzJpMTJfZm9ybWF0LnJqID0gcmo7CQkJCQlcCiB9CiAKJiM0MztERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpdywgYWRkaXdfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChhZGRpZCwgYWRkaWRfb3ApCiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcCkKQEAgLTc0OSw2ICYjNDM7NzUzLDggQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoZGl2ZCwgZGl2ZF9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChkaXZkdSwgZGl2ZHVfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkdSwgbW9kZHVfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQobWFza2VxeiwgbWFza2Vxel9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQoYW5kLCBhbmRfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChvciwgb3Jfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcCkKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCmluZGV4IDI3MzhiNGRiMTE2NTMzLi45ZTlkOThiMjE4MTI3NyAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCkBAIC01Miw1MCAmIzQzOzUyLDI5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpCiAJY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nID0gY3R4LSZndDtwcm9nOwogCWNvbnN0IGJvb2wgaXNfbWFpbl9wcm9nID0gIWJwZl9pc19zdWJwcm9nKHByb2cpOwogCiYjNDM7CSpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCWlmIChpc19tYWluX3Byb2cpIHsKLQkJLyoKLQkJICogTE9PTkdBUkNIX0dQUl9UMyA9IE1BWF9UQUlMX0NBTExfQ05UCi0JCSAqIGlmIChSRUdfVENDICZndDsgVDMgKQotCQkgKglzdGQgUkVHX1RDQyAtJmd0OyBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKiBlbHNlCi0JCSAqCXN0ZCBSRUdfVENDIC0mZ3Q7IExPT05HQVJDSF9HUFJfU1AgJiM0Mzsgc3RvcmVfb2Zmc2V0Ci0JCSAqCVJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKgotCQkgKiBzdGQgUkVHX1RDQyAtJmd0OyBMT09OR0FSQ0hfR1BSX1NQICYjNDM7IHN0b3JlX29mZnNldAotCQkgKgotCQkgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssCi0JCSAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suCi0JCSAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLAotCQkgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLAotCQkgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS4KLQkJICovCi0JCWVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTsKLQkJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7Ci0KLQkJZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpOwotCi0JCS8qCi0JCSAqIElmIFJFR19UQ0MgJmx0OyBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYSBjb3VudCwKLQkJICogcHVzaCB0Y2MgaW50byBzdGFjawotCQkgKi8KJiM0MzsJCS8qIFNhdmUgZW50cmFuY2UgVENDIHN0YXRlIChzY2FsYXIgY291bnQgb3Iga2VybmVsIHBvaW50ZXIpIHRvIGxvY2FsICYjMzk7dGNjJiMzOTsgc2xvdCAqLwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogCi0JCS8qIFB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gdGhlIFJFR19UQ0MgKi8KLQkJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwotCi0JCWVtaXRfdW5jb25kX2ptcChjdHgsIDIpOwomIzQzOwkJLyogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgcG9pbnRlciB0byB0aGUgbG9jYWwgJiMzOTt0Y2MmIzM5OyBzbG90ICovCiYjNDM7CQllbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7CiAKIAkJLyoKLQkJICogSWYgUkVHX1RDQyAmZ3Q7IE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhbiBhZGRyZXNzLAotCQkgKiBwdXNoIHRjY19wdHIgaW50byBzdGFjawomIzQzOwkJICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6CiYjNDM7CQkgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKQomIzQzOwkJICogYW5kIGEga2VybmVsIHBvaW50ZXIgYWRkcmVzcyB3aXRob3V0IHJ1bnRpbWUgYnJhbmNoaW5nLgogCQkgKi8KLQkJZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCAmIzQzOyAxKTsKJiM0MzsJCWVtaXRfaW5zbihjdHgsIG1hc2tlcXosIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDcsIExPT05HQVJDSF9HUFJfVDgpOwomIzQzOwkJZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7CiYjNDM7CQllbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7CiAJfSBlbHNlIHsKLQkJKnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CQkvKiBTdWJwcm9ncmFtczogYmFja3VwIHRoZSB2ZXJpZmllZCBUQ0MgcG9pbnRlciBpbmhlcml0ZWQgdmlhIFJFR19UQ0MgKi8KIAkJZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTsKIAl9CiAKLQkvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqLwomIzQzOwkvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgKi8KIAkqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpOwogfQpAQCAtMTI0LDYgJiM0MzsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjICAgICAgICAgICB8CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGNjX3B0ciAgICAgICB8CiYjNDM7ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBhcmVuYSAgICAgICAgIHwKJiM0MzsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjNDM7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSYjNDM7ICZsdDstLUJQRl9SRUdfRlAKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHByb2ctJmd0O2F1eC0mZ3Q7c3RhY2tfZGVwdGggfAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8CkBAIC0xNDUsNyAmIzQzOzEyNyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBzaXplb2YobG9uZykgKiAyOwogCiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpCi0JCXN0YWNrX2FkanVzdCAmIzQzOz0gODsKJiM0MzsJCXN0YWNrX2FkanVzdCAmIzQzOz0gc2l6ZW9mKGxvbmcpOwogCiAJc3RhY2tfYWRqdXN0ID0gcm91bmRfdXAoc3RhY2tfYWRqdXN0LCAxNik7CiAJc3RhY2tfYWRqdXN0ICYjNDM7PSBicGZfc3RhY2tfYWRqdXN0OwpAQCAtMTk0LDEzICYjNDM7MTc2LDEzIEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7CiAKJiM0MzsJcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsICZhbXA7c3RvcmVfb2Zmc2V0KTsKJiM0MzsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQlzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCQllbWl0X2luc24oY3R4LCBzdGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgc3RvcmVfb2Zmc2V0KTsKIAl9CiAKLQlwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgJmFtcDtzdG9yZV9vZmZzZXQpOwotCiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfRlAsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7CiAKIAlpZiAoYnBmX3N0YWNrX2FkanVzdCkKQEAgLTI0MSwyMSAmIzQzOzIyMywxOCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKQogCWxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTsKIAllbWl0X2luc24oY3R4LCBsZGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKIAomIzQzOwkvKiBPbmx5IHJlc3RvcmUgdGhlIFRDQyBzdGF0ZSBpbnRvIFJFR19UQ0MgZnJvbSB0aGUgaGlnaGVyIHNsb3QgKi8KJiM0MzsJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwomIzQzOwllbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTsKJiM0MzsKJiM0MzsJLyogU2tpcCB0aGUgdW51c2VkIGxvY2FsICYjMzk7dGNjX3B0ciYjMzk7IHNsb3QgdG8gYWxpZ24gd2l0aCBhcmVuYSAqLwomIzQzOwlsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7CiYjNDM7CiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpIHsKIAkJbG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpOwogCQllbWl0X2luc24oY3R4LCBsZGQsIFJFR19BUkVOQSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwogCX0KIAotCS8qCi0JICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuCi0JICogV2hlbiBwb3AgZnJvbSB0aGUgc3RhY2ssIGZpcnN0IHBvcCB0Y2NfcHRyIHRoZW4gZm9sbG93ZWQgYnkgdGNjLgotCSAqLwotCWxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7Ci0JZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7Ci0KLQlsb2FkX29mZnNldCAmIzQzOz0gc2l6ZW9mKGxvbmcpOwotCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpOwotCiAJZW1pdF9pbnNuKGN0eCwgYWRkaWQsIExPT05HQVJDSF9HUFJfU1AsIExPT05HQVJDSF9HUFJfU1AsIHN0YWNrX2FkanVzdCk7CiAKIAlpZiAoIWlzX3RhaWxfY2FsbCkgewpAQCAtMjkwLDE3ICYjNDM7MjY5LDEzIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mYXJfa2Z1bmNfY2FsbCh2b2lkKQogCiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIHsKLQlpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7CiYjNDM7CWludCBvZmYsIGptcF9vZmZzZXQ7CiAJaW50IHRjY19wdHJfb2ZmID0gQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihjdHgtJmd0O3N0YWNrX3NpemUpOwogCXU4IGExID0gTE9PTkdBUkNIX0dQUl9BMTsKIAl1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7CiAJdTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxOwogCXU4IHQyID0gTE9PTkdBUkNIX0dQUl9UMjsKIAl1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7Ci0JY29uc3QgaW50IGlkeDAgPSBjdHgtJmd0O2lkeDsKLQotI2RlZmluZSBjdXJfb2Zmc2V0IChjdHgtJmd0O2lkeCAtIGlkeDApCi0jZGVmaW5lIGptcF9vZmZzZXQgKHRjX25pbnNuIC0gKGN1cl9vZmZzZXQpKQogCiAJLyoKIAkgKiBhMDogJmFtcDtjdHgKQEAgLTMxMCwxMiAmIzQzOzI4NSwxMiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIAkgKiBpZiAoaW5kZXggJmd0Oz0gYXJyYXktJmd0O21hcC5tYXhfZW50cmllcykKIAkgKgkgZ290byBvdXQ7CiAJICovCi0JdGNfbmluc24gPSBpbnNuID8gY3R4LSZndDtvZmZzZXRbaW5zbiYjNDM7MV0gLSBjdHgtJmd0O29mZnNldFtpbnNuXSA6IGN0eC0mZ3Q7b2Zmc2V0WzBdOwogCWVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTsKIAogCW9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7CiAJZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpOwogCS8qIGJnZXUgJGEyLCAkdDEsIGptcF9vZmZzZXQgKi8KJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSAmbHQ7IDApCiAJCWdvdG8gdG9vZmFyOwogCkBAIC0zMjYsNiAmIzQzOzMwMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKQogCWVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgdGNjX3B0cl9vZmYpOwogCWVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApOwogCWVtaXRfaW5zbihjdHgsIGFkZGlkLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7CiYjNDM7CWptcF9vZmZzZXQgPSBjdHgtJmd0O2ltYWdlID8gKGN0eC0mZ3Q7b2Zmc2V0W2luc24gJiM0MzsgMV0gLSBjdHgtJmd0O2lkeCkgOiAwOwogCWlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KU0dFLCB0MywgdDIsIGptcF9vZmZzZXQpICZsdDsgMCkKIAkJZ290byB0b29mYXI7CiAKQEAgLTM0MCw2ICYjNDM7MzE2LDcgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pCiAJb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgcHRycyk7CiAJZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7CiAJLyogYmVxICR0MiwgJHplcm8sIGptcF9vZmZzZXQgKi8KJiM0MzsJam1wX29mZnNldCA9IGN0eC0mZ3Q7aW1hZ2UgPyAoY3R4LSZndDtvZmZzZXRbaW5zbiAmIzQzOyAxXSAtIGN0eC0mZ3Q7aWR4KSA6IDA7CiAJaWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pFUSwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgam1wX29mZnNldCkgJmx0OyAwKQogCQlnb3RvIHRvb2ZhcjsKIApAQCAtMzU1LDggJiM0MzszMzIsNiBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbikKIHRvb2ZhcjoKIAlwcl9pbmZvX29uY2UoJiMzNDt0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxuJiMzNDspOwogCXJldHVybiAtMTsKLSN1bmRlZiBjdXJfb2Zmc2V0Ci0jdW5kZWYgam1wX29mZnNldAogfQogCiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyBgYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oYCBhbmQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBJdCBsb29rcyBsaWtlIG5ldyBpbnN0cnVjdGlvbiBmb3JtYXRzLCBgc2x0dWlgLCBgbWFza2VxemAsIGFuZCBgbWFza25lemAsIGhhdmUgYmVlbiBhZGRlZCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoaXMgbWVhbnMgdGhleSYjMzk7dmUgYWxzbyBnb25lIGluIGFuZCB0b3VjaGVkIHNldmVyYWwga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyOiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpbXBhY3RzIHRoZSBCUEYgSklUIG9uIExvb25nQXJjaC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBCUEYgSklULCBnZW5lcmFsbHkgc3BlYWtpbmcsIGlzIGNlcnRhaW5seSByZWFjaGFibGUsIHNvIHRoYXQmIzM5O3Mgbm90IGEgY29uY2Vybi4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBpcyBMb29uZ0FyY2gsIHRoZSBxdWVzdGlvbiBzaGlmdHMgdG8gd2hldGhlciBvdXIgZnV6emluZyBzZXR1cCBjYW4gdGVzdCB0aGlzLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBmb2N1cyBvbiBMb29uZ0FyY2ggaW4gaXRzIG1haW4gaW5zdGFuY2VzLCBidXQsIGl0ICpjYW4qIGJlIGNvbmZpZ3VyZWQgZm9yIExvb25nQXJjaC4gSXTigJlzIHdvcnRoIGNoZWNraW5nIGlmIHdlJiMzOTtyZSBjb25maWd1cmVkLgoKTmV4dCwgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgQlBGIEpJVCwgc28gZnV6emluZyBzaG91bGQgYmUgY29uc2lkZXJlZC4gTGV0JiMzOTtzIGxpc3QgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCBqdXN0IHRvIGRvdWJsZS1jaGVjazogYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4KCkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3Qgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlbS4gSSBleHBlY3QgaXQmIzM5O3MgbGlrZWx5IGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9KSVRgICh3aGljaCBpcyB0eXBpY2FsbHkgZW5hYmxlZCBpZiBCUEYgaXMgZW5hYmxlZCksIGFuZCwgb2YgY291cnNlLCBgQ09ORklHX0xPT05HQVJDSGAuIFNvLCBJJiMzOTtsbCBxdWlja2x5IGdyZXAgZm9yIGBDT05GSUdfQlBGX0pJVGAgaW4gYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIG9yIGBhcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL0tjb25maWc9Mj1jb25maWcgTE9PTkdBUkNIXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy03OS1cdHNlbGVjdCBBUkNIX1VTRV9RVUVVRURfU1BJTkxPQ0tTXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjgwOlx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgaWYgSEFWRV9FQlBGX0pJVFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MS1cdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9UT1BET1dOX01NQVBfTEFZT1VUXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDMtXHRzZWxlY3QgSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1NcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6MTQ0Olx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgNjRCSVRcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQ1LVx0c2VsZWN0IEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1MgaWYgIUFSQ0hfU1RSSUNUX0FMSUdOXG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz03PUNPTkZJR19CUEZfU1lTQ0FMTD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjg6Q09ORklHX0JQRl9KSVQ9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg9MjY9ZG8ge1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzQtXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6MzU6I2lmZGVmIENPTkZJR19CUEZfSklUXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOT1ib29sIGV4X2hhbmRsZXJfYnBmKGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4LCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItfVxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQzOiNlbmRpZiAvKiAhQ09ORklHX0JQRl9KSVQgKi9cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUtNi0jXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXQub1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NjI4PXN0YXRpYyBpbnQgYWRkX2V4Y2VwdGlvbl9oYW5kbGVyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2MS1cdCAqIFNpbmNlIHRoZSBleHRhYmxlIGZvbGxvd3MgdGhlIHByb2dyYW0sIHRoZSBmaXh1cCBvZmZzZXQgaXMgYWx3YXlzXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjY2MjpcdCAqIG5lZ2F0aXZlIGFuZCBsaW1pdGVkIHRvIEJQRl9KSVRfUkVHSU9OX1NJWkUuIFN0b3JlIGEgcG9zaXRpdmUgdmFsdWVcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNjYzLVx0ICogdG8ga2VlcCB0aGluZ3Mgc2ltcGxlLCBhbmQgcHV0IHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciBpbiB0aGUgdXBwZXJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDg5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgSklUIENvbXBpbGF0aW9uIGZvciBMb29uZ0FyY2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBhdHRlbnRpb24gaXMgaW1tZWRpYXRlbHkgZHJhd24gdG8gYSBzcGVjaWZpYyBzZXQgb2YgZnVuY3Rpb25zOiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBIbW1tLCB0aGVzZSBhbGwgc2VlbSB0byBiZSBzdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIFRoYXQgZ2l2ZXMgbWUgc29tZSBjb250ZXh0IGFuZCB0ZWxscyBtZSB0aGV5JiMzOTtyZSBsaWtlbHkgaW50ZXJuYWwgdG8gdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzIGZvciB0aGF0IGFyY2hpdGVjdHVyZS4gSSBub3cgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29tcGlsYXRpb24gaXMgaW52b2tlZC4gSSBrbm93IHRoZSBnZW5lcmFsIHN0cnVjdHVyZSwgYW5kIG15IGV4cGVyaWVuY2Ugc2F5cyB0aGUgZW50cnkgcG9pbnQgaXMgdHlwaWNhbGx5IGBicGZfaW50X2ppdF9jb21waWxlYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCYjMzk7cyB0aGUgb25lIEkgbmVlZCB0byBsb29rIGZvciwgYW5kIHRoZW4gSSBjYW4gZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSB1c2VkIHdpdGhpbiB0aGF0IG92ZXJhbGwgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxNTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxNzEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxNzI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYwNAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipMb29uZ0FyY2ggQlBGIEpJVCBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBMb29uZ0FyY2ggQlBGIEpJVCBjb2RlIG1vZGlmaWNhdGlvbi4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIGlzIGBicGZfaW50X2ppdF9jb21waWxlYC4gVGhpcyBwYXRjaCBzZWVtcyBmdW5jdGlvbmFsLCBhbmQgZ2l2ZW4gaXRzIG5hdHVyZSwgZnV6emluZyBpdCBpcyBkZWZpbml0ZWx5IGEgZ29vZCBpZGVhLiBJIGNhbiBpbW1lZGlhdGVseSBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24uIFdoaWxlIEkgY291bGQgc3BlY2lmaWNhbGx5IGxpc3QgYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBzeXprYWxsZXIgY292ZXJhZ2Ugc2hvdWxkIGF1dG9tYXRpY2FsbHkgcGljayB1cCBvbiB0aGUgY2hhbmdlcyBpZiB0aGV5JiMzOTtyZSBoaXQuCgpUbyBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZSwgbGV0JiMzOTtzIGxpc3QgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGF0IHdlcmUgYWN0dWFsbHkgbW9kaWZpZWQgaW4gdGhlIHBhdGNoLiBJJiMzOTt2ZSBnb3Q6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuCgpIb2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBXYXNuJiMzOTt0IGBfX2J1aWxkX2VwaWxvZ3VlYCBhIHN0YXRpYyBmdW5jdGlvbj8gWWVzLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgc3RhdGljIG5hdHVyZS4gQmV0dGVyIHRvIGJlIHByZWNpc2Ugd2hlbiBvdXRsaW5pbmcgdGFyZ2V0cyBmb3IgZnV6emluZy4gVGhpcyB3aWxsIGFmZmVjdCBob3cgSSBhcHByb2FjaCB0ZXN0aW5nIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7KHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnR8YnVpbGRfcHJvbG9ndWV8X19idWlsZF9lcGlsb2d1ZXxlbWl0X2JwZl90YWlsX2NhbGwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTMwPXN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy00OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NTA6c3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTE0LSAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTU6c3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTE2LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3OC1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTc5Olx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFx1MDAyNnN0b3JlX29mZnNldCk7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE4MC1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5Ni1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTk3OnN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5OC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNTU9c3RhdGljIHZvaWQgYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjU2LXtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjU3Olx0X19idWlsZF9lcGlsb2d1ZShjdHgsIGZhbHNlKTtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjU4LX1cbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTI2NT1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZmFyX2tmdW5jX2NhbGwodm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI2OS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjcwOnN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNzEte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzI3LVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MywgdDIsIG9mZik7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjMyODpcdF9fYnVpbGRfZXBpbG9ndWUoY3R4LCB0cnVlKTtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzI5LVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NjkwPXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExODgtXHRjYXNlIEJQRl9KTVAgfCBCUEZfVEFJTF9DQUxMOlxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTg5Olx0XHRpZiAoZW1pdF9icGZfdGFpbF9jYWxsKGN0eCwgaSkgXHUwMDNjIDApXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExOTAtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTcyPXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjE2LVx0LyogMS4gSW5pdGlhbCBmYWtlIHBhc3MgdG8gY29tcHV0ZSBjdHgtXHUwMDNlaWR4IGFuZCBzZXQgY3R4LVx1MDAzZWZsYWdzICovXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTc6XHRidWlsZF9wcm9sb2d1ZShcdTAwMjZjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjE4LVx0aWYgKGJ1aWxkX2JvZHkoXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNTY6XHRidWlsZF9wcm9sb2d1ZShcdTAwMjZjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjU3LVx0aWYgKGJ1aWxkX2JvZHkoXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU2CgkJCQkJCQlvdXRwdXQ6IDEzMgoJCQkJCQkJdGhvdWdodHM6IDQ2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBoZXJlIGFyZSBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLiBUaGVzZSBzZWVtIGxpa2UgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGlzIHRhaWwgY2FsbCBvcHRpbWl6YXRpb24gd2l0aGluIHRoZSBCUEYgSklULiBUaGUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgaGVyZSBpcyBjbGVhcmx5IGBCUEZfSklUYCwgZ2l2ZW4gdGhlIGZpbGUgbW9kaWZpY2F0aW9ucy4KCldhaXQgYSBtaW51dGUsIGl0IGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIEFoLCBidXQgdGhhdCYjMzk7cyBqdXN0IGFkZGluZyBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucywgbm90IGNvcmUgbG9naWMuIFRoZSBtZWF0IG9mIHRoZSBjaGFuZ2VzIGlzIGRlZmluaXRlbHkgaW4gYGJwZl9qaXQuY2AuIFNvIHllYWgsIGBCUEZfSklUYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoLCBmb3IgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIGBDT05GSUdfTE9PTkdBUkNIYCBpcyBpbXBsaWVkLCBzbyBubyBuZWVkIHRvIGxpc3QgdGhhdC4gVGhlIHByb21wdCBzYWlkIG5vdCB0byBsaXN0IG92ZXJseSBnZW5lcmljIGNvbmZpZ3MuIE9ubHkgdGhvc2UgdGhhdCAqc3BlY2lmaWNhbGx5KiBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gVGhhdCBtZWFucyBgQlBGX0pJVGAgaXMgdGhlIG9ubHkgY29uZmlnIHRvIGxpc3QgaGVyZS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgb3B0aW1pemluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgZm9yIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyBieSBsZXZlcmFnaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zIGxpa2UgYHNsdHVpYCwgYG1hc2tlcXpgLCBhbmQgYG1hc2tuZXpgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24uIFRoYXQmIzM5O3MgKmZ1bmN0aW9uYWwqLCAqY29yZSoga2VybmVsIGxvZ2ljLiBUaGlzIG5lZWRzIGZ1enppbmcsIHdpdGhvdXQgYSBkb3VidCwgdG8gbWFrZSBzdXJlIHRoZSBKSVQgY29tcGlsZXIgaXMgZ2VuZXJhdGluZyBjb3JyZWN0IGNvZGUgYW5kIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmFzdHkgdnVsbmVyYWJpbGl0aWVzLgoKUmlnaHQsIHRpbWUgdG8gY29uc3RydWN0IHRoZSBvdXRwdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudCYjMzQ7LAogICAgJiMzNDtidWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDssCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDdUMTc6MTU6MTUuMTU1ODQ5ODUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMyODI4MjM4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToxNS4xNTU4NjY4ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDcyODAwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDcxMzM5ZGJlNTk4NjU0NDYzZWY1MWIyYjZmZGZhODNiOWFmMWIyYzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgNyAxNzoxNToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xcbiB9O1xcbiBcXG4gZW51bSByZWcyaTEyX29wIHtcXG4rXFx0c2x0dWlfb3BcXHQ9IDB4MDksXFxuIFxcdGFkZGl3X29wXFx0PSAweDBhLFxcbiBcXHRhZGRpZF9vcFxcdD0gMHgwYixcXG4gXFx0bHU1MmlkX29wXFx0PSAweDBjLFxcbkBAIC0xNTMsNiArMTU0LDggQEAgZW51bSByZWczX29wIHtcXG4gXFx0YWRkZF9vcFxcdFxcdD0gMHgyMSxcXG4gXFx0c3Vid19vcFxcdFxcdD0gMHgyMixcXG4gXFx0c3ViZF9vcFxcdFxcdD0gMHgyMyxcXG4rXFx0bWFza2Vxel9vcFxcdD0gMHgyNixcXG4rXFx0bWFza25lel9vcFxcdD0gMHgyNyxcXG4gXFx0bm9yX29wXFx0XFx0PSAweDI4LFxcbiBcXHRhbmRfb3BcXHRcXHQ9IDB4MjksXFxuIFxcdG9yX29wXFx0XFx0PSAweDJhLFxcbkBAIC02NDQsNiArNjQ3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuIFxcdGluc24tXFx1MDAzZXJlZzJpMTJfZm9ybWF0LnJqID0gcmo7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFxuIFxcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXFxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGl3LCBhZGRpd19vcClcXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaWQsIGFkZGlkX29wKVxcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcXG5AQCAtNzQ5LDYgKzc1Myw4IEBAIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmQsIGRpdmRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG1vZGQsIG1vZGRfb3ApXFxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQobW9kZHUsIG1vZGR1X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrZXF6LCBtYXNrZXF6X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbmQsIGFuZF9vcClcXG4gREVGX0VNSVRfUkVHM19GT1JNQVQob3IsIG9yX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5pbmRleCAyNzM4YjRkYjExNjUzMy4uOWU5ZDk4YjIxODEyNzcgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNTIsNTAgKzUyLDI5IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50ICpzdG9yZV9vZmZzZXQpXFxuIFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IGN0eC1cXHUwMDNlcHJvZztcXG4gXFx0Y29uc3QgYm9vbCBpc19tYWluX3Byb2cgPSAhYnBmX2lzX3N1YnByb2cocHJvZyk7XFxuIFxcbitcXHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0aWYgKGlzX21haW5fcHJvZykge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcXG4tXFx0XFx0ICogaWYgKFJFR19UQ0MgXFx1MDAzZSBUMyApXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKiBlbHNlXFxuLVxcdFxcdCAqXFx0c3RkIFJFR19UQ0MgLVxcdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxcbi1cXHRcXHQgKlxcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XFxuLVxcdFxcdCAqXFxuLVxcdFxcdCAqIHN0ZCBSRUdfVENDIC1cXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcXG4tXFx0XFx0ICpcXG4tXFx0XFx0ICogVGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlIGlzIHRvIGZpcnN0IHB1c2ggdGhlIFRDQyBpbnRvIHN0YWNrLFxcbi1cXHRcXHQgKiBhbmQgdGhlbiBwdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHN0YWNrLlxcbi1cXHRcXHQgKiBJbiBjYXNlcyB3aGVyZSBicGYyYnBmIGFuZCB0YWlsY2FsbCBhcmUgdXNlZCBpbiBjb21iaW5hdGlvbixcXG4tXFx0XFx0ICogdGhlIHZhbHVlIGluIFJFR19UQ0MgbWF5IGJlIGEgY291bnQgb3IgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogdGhlc2UgdHdvIGNhc2VzIG5lZWQgdG8gYmUganVkZ2VkIGFuZCBoYW5kbGVkIHNlcGFyYXRlbHkuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9UMywgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XFxuLVxcdFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbi1cXG4tXFx0XFx0ZW1pdF9jb25kX2ptcChjdHgsIEJQRl9KR1QsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDMsIDQpO1xcbi1cXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSWYgUkVHX1RDQyBcXHUwMDNjIE1BWF9UQUlMX0NBTExfQ05ULCB0aGUgdmFsdWUgaW4gUkVHX1RDQyBpcyBhIGNvdW50LFxcbi1cXHRcXHQgKiBwdXNoIHRjYyBpbnRvIHN0YWNrXFxuLVxcdFxcdCAqL1xcbitcXHRcXHQvKiBTYXZlIGVudHJhbmNlIFRDQyBzdGF0ZSAoc2NhbGFyIGNvdW50IG9yIGtlcm5lbCBwb2ludGVyKSB0byBsb2NhbCAndGNjJyBzbG90ICovXFxuIFxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuIFxcbi1cXHRcXHQvKiBQdXNoIHRoZSBhZGRyZXNzIG9mIFRDQyBpbnRvIHRoZSBSRUdfVENDICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4tXFxuLVxcdFxcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xcbitcXHRcXHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcXG4gXFxuIFxcdFxcdC8qXFxuLVxcdFxcdCAqIElmIFJFR19UQ0MgXFx1MDAzZSBNQVhfVEFJTF9DQUxMX0NOVCwgdGhlIHZhbHVlIGluIFJFR19UQ0MgaXMgYW4gYWRkcmVzcyxcXG4tXFx0XFx0ICogcHVzaCB0Y2NfcHRyIGludG8gc3RhY2tcXG4rXFx0XFx0ICogQnJhbmNobGVzcyBjbGFzc2lmaWNhdGlvbiBhbmQgYmxlbmRpbmc6XFxuK1xcdFxcdCAqIENvbWJpbmUgaW50ZXJsZWF2ZWQgaW5wdXRzIGJldHdlZW4gYSBzY2FsYXIgY291bnQgKDAgdG8gMzMpXFxuK1xcdFxcdCAqIGFuZCBhIGtlcm5lbCBwb2ludGVyIGFkZHJlc3Mgd2l0aG91dCBydW50aW1lIGJyYW5jaGluZy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIHNsdHVpLCBMT09OR0FSQ0hfR1BSX1Q4LCBSRUdfVENDLCBNQVhfVEFJTF9DQUxMX0NOVCArIDEpO1xcbitcXHRcXHRlbWl0X2luc24oY3R4LCBtYXNrZXF6LCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1Q4KTtcXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbWFza25leiwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UOCk7XFxuK1xcdFxcdGVtaXRfaW5zbihjdHgsIG9yLCBSRUdfVENDLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1Q3KTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XFxuK1xcdFxcdC8qIFN1YnByb2dyYW1zOiBiYWNrdXAgdGhlIHZlcmlmaWVkIFRDQyBwb2ludGVyIGluaGVyaXRlZCB2aWEgUkVHX1RDQyAqL1xcbiBcXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xcbitcXHQvKiBTdG9yZSB0aGUgZmluYWxpemVkIFRDQyBwb2ludGVyIHZhbHVlIHNlY3VyZWx5IGludG8gdGhlIGxvY2FsICd0Y2NfcHRyJyBzbG90ICovXFxuIFxcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbiBcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xcbiB9XFxuQEAgLTEyNCw2ICsxMDMsOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHRjY19wdHIgICAgICAgfFxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcXG4rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJlbmEgICAgICAgICB8XFxuKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAob3B0aW9uYWwpICAgICAgfFxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgXFx1MDAzYy0tQlBGX1JFR19GUFxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZXN0YWNrX2RlcHRoIHxcXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgKG9wdGlvbmFsKSAgICAgICB8XFxuQEAgLTE0NSw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRzdGFja19hZGp1c3QgKz0gc2l6ZW9mKGxvbmcpICogMjtcXG4gXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbi1cXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4rXFx0XFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKTtcXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG5AQCAtMTk0LDEzICsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBzdG9yZV9vZmZzZXQpO1xcbiBcXG4rXFx0cHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChjdHgsIFxcdTAwMjZzdG9yZV9vZmZzZXQpO1xcbitcXG4gXFx0aWYgKGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcXG4gXFx0XFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XFxuIFxcdH1cXG4gXFxuLVxcdHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnQoY3R4LCBcXHUwMDI2c3RvcmVfb2Zmc2V0KTtcXG4tXFxuIFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX0ZQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xcbiBcXG4gXFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXFxuQEAgLTI0MSwyMSArMjIzLDE4IEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBpc190YWlsX2NhbGwpXFxuIFxcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBMT09OR0FSQ0hfR1BSX1M1LCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XFxuIFxcbitcXHQvKiBPbmx5IHJlc3RvcmUgdGhlIFRDQyBzdGF0ZSBpbnRvIFJFR19UQ0MgZnJvbSB0aGUgaGlnaGVyIHNsb3QgKi9cXG4rXFx0bG9hZF9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xcbitcXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4rXFxuK1xcdC8qIFNraXAgdGhlIHVudXNlZCBsb2NhbCAndGNjX3B0cicgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXFxuK1xcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4rXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XFxuIFxcdFxcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcXG4gXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4gXFx0fVxcbiBcXG4tXFx0LypcXG4tXFx0ICogV2hlbiBwdXNoIGludG8gdGhlIHN0YWNrLCBmb2xsb3cgdGhlIG9yZGVyIG9mIHRjYyB0aGVuIHRjY19wdHIuXFxuLVxcdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cXG4tXFx0ICovXFxuLVxcdGxvYWRfb2Zmc2V0IC09IDIgKiBzaXplb2YobG9uZyk7XFxuLVxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xcbi1cXG4tXFx0bG9hZF9vZmZzZXQgKz0gc2l6ZW9mKGxvbmcpO1xcbi1cXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcXG4tXFxuIFxcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1NQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xcbiBcXG4gXFx0aWYgKCFpc190YWlsX2NhbGwpIHtcXG5AQCAtMjkwLDE3ICsyNjksMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuIFxcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4ge1xcbi1cXHRpbnQgb2ZmLCB0Y19uaW5zbiA9IDA7XFxuK1xcdGludCBvZmYsIGptcF9vZmZzZXQ7XFxuIFxcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVxcdTAwM2VzdGFja19zaXplKTtcXG4gXFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xcbiBcXHR1OCBhMiA9IExPT05HQVJDSF9HUFJfQTI7XFxuIFxcdHU4IHQxID0gTE9PTkdBUkNIX0dQUl9UMTtcXG4gXFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xcbiBcXHR1OCB0MyA9IExPT05HQVJDSF9HUFJfVDM7XFxuLVxcdGNvbnN0IGludCBpZHgwID0gY3R4LVxcdTAwM2VpZHg7XFxuLVxcbi0jZGVmaW5lIGN1cl9vZmZzZXQgKGN0eC1cXHUwMDNlaWR4IC0gaWR4MClcXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIGEwOiBcXHUwMDI2Y3R4XFxuQEAgLTMxMCwxMiArMjg1LDEyIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiBcXHQgKiBpZiAoaW5kZXggXFx1MDAzZT0gYXJyYXktXFx1MDAzZW1hcC5tYXhfZW50cmllcylcXG4gXFx0ICpcXHQgZ290byBvdXQ7XFxuIFxcdCAqL1xcbi1cXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXFx1MDAzZW9mZnNldFtpbnNuKzFdIC0gY3R4LVxcdTAwM2VvZmZzZXRbaW5zbl0gOiBjdHgtXFx1MDAzZW9mZnNldFswXTtcXG4gXFx0ZW1pdF96ZXh0XzMyKGN0eCwgYTIsIHRydWUpO1xcbiBcXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9hcnJheSwgbWFwLm1heF9lbnRyaWVzKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGR3dSwgdDEsIGExLCBvZmYpO1xcbiBcXHQvKiBiZ2V1ICRhMiwgJHQxLCBqbXBfb2Zmc2V0ICovXFxuK1xcdGptcF9vZmZzZXQgPSBjdHgtXFx1MDAzZWltYWdlID8gKGN0eC1cXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cXHUwMDNlaWR4KSA6IDA7XFxuIFxcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KR0UsIGEyLCB0MSwgam1wX29mZnNldCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHRvb2ZhcjtcXG4gXFxuQEAgLTMyNiw2ICszMDEsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7XFxuIFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgdDMsIFJFR19UQ0MsIDApO1xcbiBcXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgdDIsIExPT05HQVJDSF9HUFJfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpO1xcbitcXHRqbXBfb2Zmc2V0ID0gY3R4LVxcdTAwM2VpbWFnZSA/IChjdHgtXFx1MDAzZW9mZnNldFtpbnNuICsgMV0gLSBjdHgtXFx1MDAzZWlkeCkgOiAwO1xcbiBcXHRpZiAoZW1pdF90YWlsY2FsbF9qbXAoY3R4LCBCUEZfSlNHRSwgdDMsIHQyLCBqbXBfb2Zmc2V0KSBcXHUwMDNjIDApXFxuIFxcdFxcdGdvdG8gdG9vZmFyO1xcbiBcXG5AQCAtMzQwLDYgKzMxNiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxcbiBcXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX2FycmF5LCBwdHJzKTtcXG4gXFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7XFxuIFxcdC8qIGJlcSAkdDIsICR6ZXJvLCBqbXBfb2Zmc2V0ICovXFxuK1xcdGptcF9vZmZzZXQgPSBjdHgtXFx1MDAzZWltYWdlID8gKGN0eC1cXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cXHUwMDNlaWR4KSA6IDA7XFxuIFxcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0b29mYXI7XFxuIFxcbkBAIC0zNTUsOCArMzMyLDYgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXFxuIHRvb2ZhcjpcXG4gXFx0cHJfaW5mb19vbmNlKFxcXCJ0YWlsX2NhbGw6IGp1bXAgdG9vIGZhclxcXFxuXFxcIik7XFxuIFxcdHJldHVybiAtMTtcXG4tI3VuZGVmIGN1cl9vZmZzZXRcXG4tI3VuZGVmIGptcF9vZmZzZXRcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjE1Ljk2NzcyODI4M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0NzA5MzA0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcxMzM5ZGJlNTk4NjU0NDYzZWY1MWIyYjZmZGZhODNiOWFmMWIyYzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDE3OjE1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uMTlmZWFlMTY2ZTFjMTggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTk3LDYgKzk3LDcgQEAgZW51bSByZWcyaTZfb3Age1xuIH07XG4gXG4gZW51bSByZWcyaTEyX29wIHtcbitcdHNsdHVpX29wXHQ9IDB4MDksXG4gXHRhZGRpd19vcFx0PSAweDBhLFxuIFx0YWRkaWRfb3BcdD0gMHgwYixcbiBcdGx1NTJpZF9vcFx0PSAweDBjLFxuQEAgLTE1Myw2ICsxNTQsOCBAQCBlbnVtIHJlZzNfb3Age1xuIFx0YWRkZF9vcFx0XHQ9IDB4MjEsXG4gXHRzdWJ3X29wXHRcdD0gMHgyMixcbiBcdHN1YmRfb3BcdFx0PSAweDIzLFxuK1x0bWFza2Vxel9vcFx0PSAweDI2LFxuK1x0bWFza25lel9vcFx0PSAweDI3LFxuIFx0bm9yX29wXHRcdD0gMHgyOCxcbiBcdGFuZF9vcFx0XHQ9IDB4MjksXG4gXHRvcl9vcFx0XHQ9IDB4MmEsXG5AQCAtNjQ0LDYgKzY0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuIFx0aW5zbi1cdTAwM2VyZWcyaTEyX2Zvcm1hdC5yaiA9IHJqO1x0XHRcdFx0XHRcXFxuIH1cbiBcbitERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChzbHR1aSwgc2x0dWlfb3ApXG4gREVGX0VNSVRfUkVHMkkxMl9GT1JNQVQoYWRkaXcsIGFkZGl3X29wKVxuIERFRl9FTUlUX1JFRzJJMTJfRk9STUFUKGFkZGlkLCBhZGRpZF9vcClcbiBERUZfRU1JVF9SRUcySTEyX0ZPUk1BVChsdTUyaWQsIGx1NTJpZF9vcClcbkBAIC03NDksNiArNzUzLDggQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoZGl2ZCwgZGl2ZF9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkLCBtb2RkX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGRpdmR1LCBkaXZkdV9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChtb2RkdSwgbW9kZHVfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQobWFza2VxeiwgbWFza2Vxel9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChtYXNrbmV6LCBtYXNrbmV6X29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFuZCwgYW5kX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKG9yLCBvcl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVCh4b3IsIHhvcl9vcClcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjllOWQ5OGIyMTgxMjc3IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuKysrIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTUyLDUwICs1MiwyOSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxuIFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nID0gY3R4LVx1MDAzZXByb2c7XG4gXHRjb25zdCBib29sIGlzX21haW5fcHJvZyA9ICFicGZfaXNfc3VicHJvZyhwcm9nKTtcbiBcbitcdCpzdG9yZV9vZmZzZXQgLT0gc2l6ZW9mKGxvbmcpO1xuIFx0aWYgKGlzX21haW5fcHJvZykge1xuLVx0XHQvKlxuLVx0XHQgKiBMT09OR0FSQ0hfR1BSX1QzID0gTUFYX1RBSUxfQ0FMTF9DTlRcbi1cdFx0ICogaWYgKFJFR19UQ0MgXHUwMDNlIFQzIClcbi1cdFx0ICpcdHN0ZCBSRUdfVENDIC1cdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKiBlbHNlXG4tXHRcdCAqXHRzdGQgUkVHX1RDQyAtXHUwMDNlIExPT05HQVJDSF9HUFJfU1AgKyBzdG9yZV9vZmZzZXRcbi1cdFx0ICpcdFJFR19UQ0MgPSBMT09OR0FSQ0hfR1BSX1NQICsgc3RvcmVfb2Zmc2V0XG4tXHRcdCAqXG4tXHRcdCAqIHN0ZCBSRUdfVENDIC1cdTAwM2UgTE9PTkdBUkNIX0dQUl9TUCArIHN0b3JlX29mZnNldFxuLVx0XHQgKlxuLVx0XHQgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvZGUgaXMgdG8gZmlyc3QgcHVzaCB0aGUgVENDIGludG8gc3RhY2ssXG4tXHRcdCAqIGFuZCB0aGVuIHB1c2ggdGhlIGFkZHJlc3Mgb2YgVENDIGludG8gc3RhY2suXG4tXHRcdCAqIEluIGNhc2VzIHdoZXJlIGJwZjJicGYgYW5kIHRhaWxjYWxsIGFyZSB1c2VkIGluIGNvbWJpbmF0aW9uLFxuLVx0XHQgKiB0aGUgdmFsdWUgaW4gUkVHX1RDQyBtYXkgYmUgYSBjb3VudCBvciBhbiBhZGRyZXNzLFxuLVx0XHQgKiB0aGVzZSB0d28gY2FzZXMgbmVlZCB0byBiZSBqdWRnZWQgYW5kIGhhbmRsZWQgc2VwYXJhdGVseS5cbi1cdFx0ICovXG4tXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1QzLCBMT09OR0FSQ0hfR1BSX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKTtcbi1cdFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4tXG4tXHRcdGVtaXRfY29uZF9qbXAoY3R4LCBCUEZfSkdULCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1QzLCA0KTtcbi1cbi1cdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2MgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGEgY291bnQsXG4tXHRcdCAqIHB1c2ggdGNjIGludG8gc3RhY2tcbi1cdFx0ICovXG4rXHRcdC8qIFNhdmUgZW50cmFuY2UgVENDIHN0YXRlIChzY2FsYXIgY291bnQgb3Iga2VybmVsIHBvaW50ZXIpIHRvIGxvY2FsICd0Y2MnIHNsb3QgKi9cbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbi1cdFx0LyogUHVzaCB0aGUgYWRkcmVzcyBvZiBUQ0MgaW50byB0aGUgUkVHX1RDQyAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBhZGRpZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4tXG4tXHRcdGVtaXRfdW5jb25kX2ptcChjdHgsIDIpO1xuK1x0XHQvKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSBwb2ludGVyIHRvIHRoZSBsb2NhbCAndGNjJyBzbG90ICovXG4rXHRcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX1Q3LCBMT09OR0FSQ0hfR1BSX1NQLCAqc3RvcmVfb2Zmc2V0KTtcbiBcbiBcdFx0Lypcbi1cdFx0ICogSWYgUkVHX1RDQyBcdTAwM2UgTUFYX1RBSUxfQ0FMTF9DTlQsIHRoZSB2YWx1ZSBpbiBSRUdfVENDIGlzIGFuIGFkZHJlc3MsXG4tXHRcdCAqIHB1c2ggdGNjX3B0ciBpbnRvIHN0YWNrXG4rXHRcdCAqIEJyYW5jaGxlc3MgY2xhc3NpZmljYXRpb24gYW5kIGJsZW5kaW5nOlxuK1x0XHQgKiBDb21iaW5lIGludGVybGVhdmVkIGlucHV0cyBiZXR3ZWVuIGEgc2NhbGFyIGNvdW50ICgwIHRvIDMzKVxuK1x0XHQgKiBhbmQgYSBrZXJuZWwgcG9pbnRlciBhZGRyZXNzIHdpdGhvdXQgcnVudGltZSBicmFuY2hpbmcuXG4gXHRcdCAqL1xuLVx0XHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBzbHR1aSwgTE9PTkdBUkNIX0dQUl9UOCwgUkVHX1RDQywgTUFYX1RBSUxfQ0FMTF9DTlQgKyAxKTtcbitcdFx0ZW1pdF9pbnNuKGN0eCwgbWFza2VxeiwgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UNywgTE9PTkdBUkNIX0dQUl9UOCk7XG4rXHRcdGVtaXRfaW5zbihjdHgsIG1hc2tuZXosIFJFR19UQ0MsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfVDgpO1xuK1x0XHRlbWl0X2luc24oY3R4LCBvciwgUkVHX1RDQywgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9UNyk7XG4gXHR9IGVsc2Uge1xuLVx0XHQqc3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbitcdFx0LyogU3VicHJvZ3JhbXM6IGJhY2t1cCB0aGUgdmVyaWZpZWQgVENDIHBvaW50ZXIgaW5oZXJpdGVkIHZpYSBSRUdfVENDICovXG4gXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgKnN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHQvKiBQdXNoIHRjY19wdHIgaW50byBzdGFjayAqL1xuK1x0LyogU3RvcmUgdGhlIGZpbmFsaXplZCBUQ0MgcG9pbnRlciB2YWx1ZSBzZWN1cmVseSBpbnRvIHRoZSBsb2NhbCAndGNjX3B0cicgc2xvdCAqL1xuIFx0KnN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsICpzdG9yZV9vZmZzZXQpO1xuIH1cbkBAIC0xMjQsNiArMTAzLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgKnN0b3JlX29mZnNldClcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2MgICAgICAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0Y2NfcHRyICAgICAgIHxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBhcmVuYSAgICAgICAgIHxcbisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgKG9wdGlvbmFsKSAgICAgIHxcbiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgXHUwMDNjLS1CUEZfUkVHX0ZQXG4gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcHJvZy1cdTAwM2VhdXgtXHUwMDNlc3RhY2tfZGVwdGggfFxuICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIChvcHRpb25hbCkgICAgICAgfFxuQEAgLTE0NSw3ICsxMjcsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKSAqIDI7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuLVx0XHRzdGFja19hZGp1c3QgKz0gODtcbitcdFx0c3RhY2tfYWRqdXN0ICs9IHNpemVvZihsb25nKTtcbiBcbiBcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgMTYpO1xuIFx0c3RhY2tfYWRqdXN0ICs9IGJwZl9zdGFja19hZGp1c3Q7XG5AQCAtMTk0LDEzICsxNzYsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcbiBcdHN0b3JlX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4gXHRlbWl0X2luc24oY3R4LCBzdGQsIExPT05HQVJDSF9HUFJfUzUsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXG4rXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbitcbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0c3RvcmVfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgc3RkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIHN0b3JlX29mZnNldCk7XG4gXHR9XG4gXG4tXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXHUwMDI2c3RvcmVfb2Zmc2V0KTtcbi1cbiBcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCBMT09OR0FSQ0hfR1BSX0ZQLCBMT09OR0FSQ0hfR1BSX1NQLCBzdGFja19hZGp1c3QpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG5AQCAtMjQxLDIxICsyMjMsMTggQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGlzX3RhaWxfY2FsbClcbiBcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdGVtaXRfaW5zbihjdHgsIGxkZCwgTE9PTkdBUkNIX0dQUl9TNSwgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuIFxuK1x0LyogT25seSByZXN0b3JlIHRoZSBUQ0Mgc3RhdGUgaW50byBSRUdfVENDIGZyb20gdGhlIGhpZ2hlciBzbG90ICovXG4rXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbitcbitcdC8qIFNraXAgdGhlIHVudXNlZCBsb2NhbCAndGNjX3B0cicgc2xvdCB0byBhbGlnbiB3aXRoIGFyZW5hICovXG4rXHRsb2FkX29mZnNldCAtPSBzaXplb2YobG9uZyk7XG4rXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KSB7XG4gXHRcdGxvYWRfb2Zmc2V0IC09IHNpemVvZihsb25nKTtcbiBcdFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfQVJFTkEsIExPT05HQVJDSF9HUFJfU1AsIGxvYWRfb2Zmc2V0KTtcbiBcdH1cbiBcbi1cdC8qXG4tXHQgKiBXaGVuIHB1c2ggaW50byB0aGUgc3RhY2ssIGZvbGxvdyB0aGUgb3JkZXIgb2YgdGNjIHRoZW4gdGNjX3B0ci5cbi1cdCAqIFdoZW4gcG9wIGZyb20gdGhlIHN0YWNrLCBmaXJzdCBwb3AgdGNjX3B0ciB0aGVuIGZvbGxvd2VkIGJ5IHRjYy5cbi1cdCAqL1xuLVx0bG9hZF9vZmZzZXQgLT0gMiAqIHNpemVvZihsb25nKTtcbi1cdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9TUCwgbG9hZF9vZmZzZXQpO1xuLVxuLVx0bG9hZF9vZmZzZXQgKz0gc2l6ZW9mKGxvbmcpO1xuLVx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCBsb2FkX29mZnNldCk7XG4tXG4gXHRlbWl0X2luc24oY3R4LCBhZGRpZCwgTE9PTkdBUkNIX0dQUl9TUCwgTE9PTkdBUkNIX0dQUl9TUCwgc3RhY2tfYWRqdXN0KTtcbiBcbiBcdGlmICghaXNfdGFpbF9jYWxsKSB7XG5AQCAtMjkwLDE3ICsyNjksMTMgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXG4gXG4gc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4ge1xuLVx0aW50IG9mZiwgdGNfbmluc24gPSAwO1xuK1x0aW50IG9mZiwgam1wX29mZnNldDtcbiBcdGludCB0Y2NfcHRyX29mZiA9IEJQRl9UQUlMX0NBTExfQ05UX1BUUl9TVEFDS19PRkYoY3R4LVx1MDAzZXN0YWNrX3NpemUpO1xuIFx0dTggYTEgPSBMT09OR0FSQ0hfR1BSX0ExO1xuIFx0dTggYTIgPSBMT09OR0FSQ0hfR1BSX0EyO1xuIFx0dTggdDEgPSBMT09OR0FSQ0hfR1BSX1QxO1xuIFx0dTggdDIgPSBMT09OR0FSQ0hfR1BSX1QyO1xuIFx0dTggdDMgPSBMT09OR0FSQ0hfR1BSX1QzO1xuLVx0Y29uc3QgaW50IGlkeDAgPSBjdHgtXHUwMDNlaWR4O1xuLVxuLSNkZWZpbmUgY3VyX29mZnNldCAoY3R4LVx1MDAzZWlkeCAtIGlkeDApXG4tI2RlZmluZSBqbXBfb2Zmc2V0ICh0Y19uaW5zbiAtIChjdXJfb2Zmc2V0KSlcbiBcbiBcdC8qXG4gXHQgKiBhMDogXHUwMDI2Y3R4XG5AQCAtMzEwLDEyICsyODUsMTIgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gXHQgKiBpZiAoaW5kZXggXHUwMDNlPSBhcnJheS1cdTAwM2VtYXAubWF4X2VudHJpZXMpXG4gXHQgKlx0IGdvdG8gb3V0O1xuIFx0ICovXG4tXHR0Y19uaW5zbiA9IGluc24gPyBjdHgtXHUwMDNlb2Zmc2V0W2luc24rMV0gLSBjdHgtXHUwMDNlb2Zmc2V0W2luc25dIDogY3R4LVx1MDAzZW9mZnNldFswXTtcbiBcdGVtaXRfemV4dF8zMihjdHgsIGEyLCB0cnVlKTtcbiBcbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIG1hcC5tYXhfZW50cmllcyk7XG4gXHRlbWl0X2luc24oY3R4LCBsZHd1LCB0MSwgYTEsIG9mZik7XG4gXHQvKiBiZ2V1ICRhMiwgJHQxLCBqbXBfb2Zmc2V0ICovXG4rXHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pHRSwgYTIsIHQxLCBqbXBfb2Zmc2V0KSBcdTAwM2MgMClcbiBcdFx0Z290byB0b29mYXI7XG4gXG5AQCAtMzI2LDYgKzMwMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBpbnNuKVxuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX1NQLCB0Y2NfcHRyX29mZik7XG4gXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCBSRUdfVENDLCAwKTtcbiBcdGVtaXRfaW5zbihjdHgsIGFkZGlkLCB0MiwgTE9PTkdBUkNIX0dQUl9aRVJPLCBNQVhfVEFJTF9DQUxMX0NOVCk7XG4rXHRqbXBfb2Zmc2V0ID0gY3R4LVx1MDAzZWltYWdlID8gKGN0eC1cdTAwM2VvZmZzZXRbaW5zbiArIDFdIC0gY3R4LVx1MDAzZWlkeCkgOiAwO1xuIFx0aWYgKGVtaXRfdGFpbGNhbGxfam1wKGN0eCwgQlBGX0pTR0UsIHQzLCB0Miwgam1wX29mZnNldCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdG9vZmFyO1xuIFxuQEAgLTM0MCw2ICszMTYsNyBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfYXJyYXksIHB0cnMpO1xuIFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCB0MiwgdDIsIG9mZik7XG4gXHQvKiBiZXEgJHQyLCAkemVybywgam1wX29mZnNldCAqL1xuK1x0am1wX29mZnNldCA9IGN0eC1cdTAwM2VpbWFnZSA/IChjdHgtXHUwMDNlb2Zmc2V0W2luc24gKyAxXSAtIGN0eC1cdTAwM2VpZHgpIDogMDtcbiBcdGlmIChlbWl0X3RhaWxjYWxsX2ptcChjdHgsIEJQRl9KRVEsIHQyLCBMT09OR0FSQ0hfR1BSX1pFUk8sIGptcF9vZmZzZXQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHRvb2ZhcjtcbiBcbkBAIC0zNTUsOCArMzMyLDYgQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGluc24pXG4gdG9vZmFyOlxuIFx0cHJfaW5mb19vbmNlKFwidGFpbF9jYWxsOiBqdW1wIHRvbyBmYXJcXG5cIik7XG4gXHRyZXR1cm4gLTE7XG4tI3VuZGVmIGN1cl9vZmZzZXRcbi0jdW5kZWYgam1wX29mZnNldFxuIH1cbiBcbiBzdGF0aWMgdm9pZCBlbWl0X3N0b3JlX3N0YWNrX2ltbTY0KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCByZWcsIGludCBzdGFja19vZmYsIHU2NCBpbW02NClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjE1Ljk2NzczMDgxM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjI5OTE3NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2ggQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgIGFuZCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIEl0IGxvb2tzIGxpa2UgbmV3IGluc3RydWN0aW9uIGZvcm1hdHMsIGBzbHR1aWAsIGBtYXNrZXF6YCwgYW5kIGBtYXNrbmV6YCwgaGF2ZSBiZWVuIGFkZGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhpcyBtZWFucyB0aGV5J3ZlIGFsc28gZ29uZSBpbiBhbmQgdG91Y2hlZCBzZXZlcmFsIGtleSBmdW5jdGlvbnMgd2l0aGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlcjogYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaW1wYWN0cyB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2guXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGlzIGNvZGUgcmVhY2hhYmxlPyBCUEYgSklULCBnZW5lcmFsbHkgc3BlYWtpbmcsIGlzIGNlcnRhaW5seSByZWFjaGFibGUsIHNvIHRoYXQncyBub3QgYSBjb25jZXJuLiBHaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIGlzIExvb25nQXJjaCwgdGhlIHF1ZXN0aW9uIHNoaWZ0cyB0byB3aGV0aGVyIG91ciBmdXp6aW5nIHNldHVwIGNhbiB0ZXN0IHRoaXMuIFN5emthbGxlciBkb2Vzbid0IHVzdWFsbHkgZm9jdXMgb24gTG9vbmdBcmNoIGluIGl0cyBtYWluIGluc3RhbmNlcywgYnV0LCBpdCAqY2FuKiBiZSBjb25maWd1cmVkIGZvciBMb29uZ0FyY2guIEl04oCZcyB3b3J0aCBjaGVja2luZyBpZiB3ZSdyZSBjb25maWd1cmVkLlxuXG5OZXh0LCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIHRoZSBCUEYgSklULCBzbyBmdXp6aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLiBMZXQncyBsaXN0IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQganVzdCB0byBkb3VibGUtY2hlY2s6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYyBvciBub3Qgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgd2hhdCBjb25maWdzIGFyZSBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlbS4gSSBleHBlY3QgaXQncyBsaWtlbHkgZGVwZW5kZW50IG9uIGBDT05GSUdfQlBGX0pJVGAgKHdoaWNoIGlzIHR5cGljYWxseSBlbmFibGVkIGlmIEJQRiBpcyBlbmFibGVkKSwgYW5kLCBvZiBjb3Vyc2UsIGBDT05GSUdfTE9PTkdBUkNIYC4gU28sIEknbGwgcXVpY2tseSBncmVwIGZvciBgQ09ORklHX0JQRl9KSVRgIGluIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBvciBgYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToyMy4zMzA3MjU3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTQ2NTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL0tjb25maWc9Mj1jb25maWcgTE9PTkdBUkNIXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTc5LVxcdHNlbGVjdCBBUkNIX1VTRV9RVUVVRURfU1BJTkxPQ0tTXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo4MDpcXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCBpZiBIQVZFX0VCUEZfSklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy04MS1cXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfVE9QRE9XTl9NTUFQX0xBWU9VVFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDMtXFx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzoxNDQ6XFx0c2VsZWN0IEhBVkVfRUJQRl9KSVQgaWYgNjRCSVRcXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTE0NS1cXHRzZWxlY3QgSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTUyBpZiAhQVJDSF9TVFJJQ1RfQUxJR05cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9Nz1DT05GSUdfQlBGX1NZU0NBTEw9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6ODpDT05GSUdfQlBGX0pJVD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy05LUNPTkZJR19QUkVFTVBUPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaD0yNj1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTM0LVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaDozNTojaWZkZWYgQ09ORklHX0JQRl9KSVRcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmgtMzYtYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oPTM5PWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLX1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDM6I2VuZGlmIC8qICFDT05GSUdfQlBGX0pJVCAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2V4dGFibGUuaC00NC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZS02LSNcXG5hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTYyOD1zdGF0aWMgaW50IGFkZF9leGNlcHRpb25faGFuZGxlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2MS1cXHQgKiBTaW5jZSB0aGUgZXh0YWJsZSBmb2xsb3dzIHRoZSBwcm9ncmFtLCB0aGUgZml4dXAgb2Zmc2V0IGlzIGFsd2F5c1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6NjYyOlxcdCAqIG5lZ2F0aXZlIGFuZCBsaW1pdGVkIHRvIEJQRl9KSVRfUkVHSU9OX1NJWkUuIFN0b3JlIGEgcG9zaXRpdmUgdmFsdWVcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTY2My1cXHQgKiB0byBrZWVwIHRoaW5ncyBzaW1wbGUsIGFuZCBwdXQgdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIGluIHRoZSB1cHBlclxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNToyMy40MzgyODM5NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY0NjQwNzI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIEpJVCBDb21waWxhdGlvbiBmb3IgTG9vbmdBcmNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiwgYW5kIG15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byBhIHNwZWNpZmljIHNldCBvZiBmdW5jdGlvbnM6IGBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250YCwgYGJ1aWxkX3Byb2xvZ3VlYCwgYF9fYnVpbGRfZXBpbG9ndWVgLCBhbmQgYGVtaXRfYnBmX3RhaWxfY2FsbGAuIEhtbW0sIHRoZXNlIGFsbCBzZWVtIHRvIGJlIHN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gVGhhdCBnaXZlcyBtZSBzb21lIGNvbnRleHQgYW5kIHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGludGVybmFsIHRvIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2VzcyBmb3IgdGhhdCBhcmNoaXRlY3R1cmUuIEkgbm93IG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNvbXBpbGF0aW9uIGlzIGludm9rZWQuIEkga25vdyB0aGUgZ2VuZXJhbCBzdHJ1Y3R1cmUsIGFuZCBteSBleHBlcmllbmNlIHNheXMgdGhlIGVudHJ5IHBvaW50IGlzIHR5cGljYWxseSBgYnBmX2ludF9qaXRfY29tcGlsZWAuIExldCdzIGNvbmZpcm0gdGhhdCdzIHRoZSBvbmUgSSBuZWVkIHRvIGxvb2sgZm9yLCBhbmQgdGhlbiBJIGNhbiBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIHVzZWQgd2l0aGluIHRoYXQgb3ZlcmFsbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDg5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjM0LjA4NDY5MjkyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI1NzQ3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE1Nz1pbnQgYXJjaF9icGZfdHJhbXBvbGluZV9zaXplKGNvbnN0IHN0cnVjdCBidGZfZnVuY19tb2RlbCAqbSwgdTMyIGZsYWdzLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTcxLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjE3MjpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjE3My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjM0LjE4NzI3Mjg4OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDEwMDMwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2ggQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIExvb25nQXJjaCBCUEYgSklUIGNvZGUgbW9kaWZpY2F0aW9uLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgYXMgZmFyIGFzIEkgY2FuIHNlZSwgaXMgYGJwZl9pbnRfaml0X2NvbXBpbGVgLiBUaGlzIHBhdGNoIHNlZW1zIGZ1bmN0aW9uYWwsIGFuZCBnaXZlbiBpdHMgbmF0dXJlLCBmdXp6aW5nIGl0IGlzIGRlZmluaXRlbHkgYSBnb29kIGlkZWEuIEkgY2FuIGltbWVkaWF0ZWx5IGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbi4gV2hpbGUgSSBjb3VsZCBzcGVjaWZpY2FsbHkgbGlzdCBgYnBmX2ludF9qaXRfY29tcGlsZWAsIHN5emthbGxlciBjb3ZlcmFnZSBzaG91bGQgYXV0b21hdGljYWxseSBwaWNrIHVwIG9uIHRoZSBjaGFuZ2VzIGlmIHRoZXkncmUgaGl0LlxuXG5UbyBlbnN1cmUgbXkgdW5kZXJzdGFuZGluZyBpcyBjb21wbGV0ZSwgbGV0J3MgbGlzdCB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zIHRoYXQgd2VyZSBhY3R1YWxseSBtb2RpZmllZCBpbiB0aGUgcGF0Y2guIEkndmUgZ290OiBgcHJlcGFyZV9icGZfdGFpbF9jYWxsX2NudGAsIGBidWlsZF9wcm9sb2d1ZWAsIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYW5kIGBlbWl0X2JwZl90YWlsX2NhbGxgLlxuXG5Ib2xkIG9uLi4uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBXYXNuJ3QgYF9fYnVpbGRfZXBpbG9ndWVgIGEgc3RhdGljIGZ1bmN0aW9uPyBZZXMsIEkgbmVlZCB0byBjb25maXJtIGl0cyBzdGF0aWMgbmF0dXJlLiBCZXR0ZXIgdG8gYmUgcHJlY2lzZSB3aGVuIG91dGxpbmluZyB0YXJnZXRzIGZvciBmdXp6aW5nLiBUaGlzIHdpbGwgYWZmZWN0IGhvdyBJIGFwcHJvYWNoIHRlc3RpbmcgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYwNCwiT3V0cHV0VG9rZW5zIjo2NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QxNzoxNTo0MC4yMjgyNzg0MTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNDEzNzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIihwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250fGJ1aWxkX3Byb2xvZ3VlfF9fYnVpbGRfZXBpbG9ndWV8ZW1pdF9icGZfdGFpbF9jYWxsKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzA9c3RhdGljIGNvbnN0IGludCByZWdtYXBbXSA9IHtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNDktXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzo1MDpzdGF0aWMgdm9pZCBwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCAqc3RvcmVfb2Zmc2V0KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtNTEte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xMTQtICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxMTU6c3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExNi17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE3OC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE3OTpcXHRwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250KGN0eCwgXFx1MDAyNnN0b3JlX29mZnNldCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xODAtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5Ni1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5NzpzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgaXNfdGFpbF9jYWxsKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk4LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjU1PXN0YXRpYyB2b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNTYte1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjU3OlxcdF9fYnVpbGRfZXBpbG9ndWUoY3R4LCBmYWxzZSk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNTgtfVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNjU9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI2OS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI3MDpzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgaW5zbilcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI3MS17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTMyNy1cXHRlbWl0X2luc24oY3R4LCBsZGQsIHQzLCB0Miwgb2ZmKTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjMyODpcXHRfX2J1aWxkX2VwaWxvZ3VlKGN0eCwgdHJ1ZSk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zMjktXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTY5MD1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dHJhX3Bhc3MpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExODgtXFx0Y2FzZSBCUEZfSk1QIHwgQlBGX1RBSUxfQ0FMTDpcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjExODk6XFx0XFx0aWYgKGVtaXRfYnBmX3RhaWxfY2FsbChjdHgsIGkpIFxcdTAwM2MgMClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTExOTAtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxNzI9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxNi1cXHQvKiAxLiBJbml0aWFsIGZha2UgcGFzcyB0byBjb21wdXRlIGN0eC1cXHUwMDNlaWR4IGFuZCBzZXQgY3R4LVxcdTAwM2VmbGFncyAqL1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjIxNzpcXHRidWlsZF9wcm9sb2d1ZShcXHUwMDI2Y3R4KTtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTgtXFx0aWYgKGJ1aWxkX2JvZHkoXFx1MDAyNmN0eCwgZXh0cmFfcGFzcykpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjU2OlxcdGJ1aWxkX3Byb2xvZ3VlKFxcdTAwMjZjdHgpO1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cXHRpZiAoYnVpbGRfYm9keShcXHUwMDI2Y3R4LCBleHRyYV9wYXNzKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMTc6MTU6NDAuMzc5NzAxNTg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg5MTQyNzEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gaGVyZSBhcmUgYHByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRgLCBgYnVpbGRfcHJvbG9ndWVgLCBgX19idWlsZF9lcGlsb2d1ZWAsIGFuZCBgZW1pdF9icGZfdGFpbF9jYWxsYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgdGhpcyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgQlBGIEpJVC4gVGhlIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGhlcmUgaXMgY2xlYXJseSBgQlBGX0pJVGAsIGdpdmVuIHRoZSBmaWxlIG1vZGlmaWNhdGlvbnMuXG5cbldhaXQgYSBtaW51dGUsIGl0IGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIEFoLCBidXQgdGhhdCdzIGp1c3QgYWRkaW5nIGluc3RydWN0aW9uIGRlZmluaXRpb25zLCBub3QgY29yZSBsb2dpYy4gVGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgaXMgZGVmaW5pdGVseSBpbiBgYnBmX2ppdC5jYC4gU28geWVhaCwgYEJQRl9KSVRgIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIHRob3VnaCwgZm9yIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLiBgQ09ORklHX0xPT05HQVJDSGAgaXMgaW1wbGllZCwgc28gbm8gbmVlZCB0byBsaXN0IHRoYXQuIFRoZSBwcm9tcHQgc2FpZCBub3QgdG8gbGlzdCBvdmVybHkgZ2VuZXJpYyBjb25maWdzLiBPbmx5IHRob3NlIHRoYXQgKnNwZWNpZmljYWxseSogY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIFRoYXQgbWVhbnMgYEJQRl9KSVRgIGlzIHRoZSBvbmx5IGNvbmZpZyB0byBsaXN0IGhlcmUuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgb3B0aW1pemluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgZm9yIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyBieSBsZXZlcmFnaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zIGxpa2UgYHNsdHVpYCwgYG1hc2tlcXpgLCBhbmQgYG1hc2tuZXpgLiBFc3NlbnRpYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbi4gVGhhdCdzICpmdW5jdGlvbmFsKiwgKmNvcmUqIGtlcm5lbCBsb2dpYy4gVGhpcyBuZWVkcyBmdXp6aW5nLCB3aXRob3V0IGEgZG91YnQsIHRvIG1ha2Ugc3VyZSB0aGUgSklUIGNvbXBpbGVyIGlzIGdlbmVyYXRpbmcgY29ycmVjdCBjb2RlIGFuZCBub3QgaW50cm9kdWNpbmcgYW55IG5hc3R5IHZ1bG5lcmFiaWxpdGllcy5cblxuUmlnaHQsIHRpbWUgdG8gY29uc3RydWN0IHRoZSBvdXRwdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTYsIk91dHB1dFRva2VucyI6MTMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDE3OjE1OjQ4LjI3MTEzMDU2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzUyMTIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfYnBmX3RhaWxfY2FsbF9jbnRcIixcbiAgICBcImJ1aWxkX3Byb2xvZ3VlXCIsXG4gICAgXCJfX2J1aWxkX2VwaWxvZ3VlXCIsXG4gICAgXCJlbWl0X2JwZl90YWlsX2NhbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gb3B0aW1pemUgdGFpbCBjYWxsIGNvdW50IGhhbmRsaW5nIHVzaW5nIGJyYW5jaGxlc3MgaW5zdHJ1Y3Rpb25zLiBJdCBhbHRlcnMgdGhlIHByb2xvZ3VlLCBlcGlsb2d1ZSwgYW5kIHRhaWwgY2FsbCBlbWlzc2lvbiBsb2dpYywgd2hpY2ggaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgY29kZSBnZW5lcmF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX2JwZl90YWlsX2NhbGxfY250XCIsXG4gICAgXCJidWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiLFxuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIG9wdGltaXplIHRhaWwgY2FsbCBjb3VudCBoYW5kbGluZyB1c2luZyBicmFuY2hsZXNzIGluc3RydWN0aW9ucy4gSXQgYWx0ZXJzIHRoZSBwcm9sb2d1ZSwgZXBpbG9ndWUsIGFuZCB0YWlsIGNhbGwgZW1pc3Npb24gbG9naWMsIHdoaWNoIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IGNvZGUgZ2VuZXJhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[1] Phase: Succeeded StartedAt: 2026-07-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 17:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 17:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2] Phase: Succeeded StartedAt: 2026-07-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 17:16:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:15:59 +0000 UTC FinishedAt: 2026-07-07 17:16:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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-workflowrshwc/series-workflowrshwc-convert-artifact-1744719428/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:16:19 +0000 UTC FinishedAt: 2026-07-07 17:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:16:19 +0000 UTC FinishedAt: 2026-07-07 17:57:49 +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:*0bcfdc56-f1e3-4e3b-b512-61df6ff7367a,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-workflowrshwc/series-workflowrshwc-convert-artifact-1744719428/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": "b4e480bb-374e-4aa1-b4f4-26209dc11484", "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-workflowrshwc/series-workflowrshwc-build-action-1398051202/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:16:19 +0000 UTC FinishedAt: 2026-07-07 17:57:39 +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:*0bcfdc56-f1e3-4e3b-b512-61df6ff7367a,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-workflowrshwc/series-workflowrshwc-convert-artifact-1744719428/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": "b4e480bb-374e-4aa1-b4f4-26209dc11484", "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-workflowrshwc/series-workflowrshwc-build-action-1398051202/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:57:49 +0000 UTC FinishedAt: 2026-07-07 17:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:57:49 +0000 UTC FinishedAt: 2026-07-07 17:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:57:49 +0000 UTC FinishedAt: 2026-07-07 17:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:57:49 +0000 UTC FinishedAt: 2026-07-07 17:57:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-workflowrshwc/series-workflowrshwc-convert-artifact-2100515011/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:58:10 +0000 UTC FinishedAt: 2026-07-07 18:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 17:58:10 +0000 UTC FinishedAt: 2026-07-07 18:00:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b4e480bb-374e-4aa1-b4f4-26209dc11484,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-workflowrshwc/series-workflowrshwc-build-action-1398051202/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-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:00:11 +0000 UTC FinishedAt: 2026-07-07 18:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:00:11 +0000 UTC FinishedAt: 2026-07-07 18:00:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:00:11 +0000 UTC FinishedAt: 2026-07-07 18:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:00:11 +0000 UTC FinishedAt: 2026-07-07 18:38:00 +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:*0bcfdc56-f1e3-4e3b-b512-61df6ff7367a,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-workflowrshwc/series-workflowrshwc-convert-artifact-2100515011/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": "9e491f11-e997-442c-8b3e-8fd3dc371f44", "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-workflowrshwc/series-workflowrshwc-build-action-3455236983/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:00:11 +0000 UTC FinishedAt: 2026-07-07 18:37:50 +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:*0bcfdc56-f1e3-4e3b-b512-61df6ff7367a,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-workflowrshwc/series-workflowrshwc-convert-artifact-2100515011/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": "9e491f11-e997-442c-8b3e-8fd3dc371f44", "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-workflowrshwc/series-workflowrshwc-build-action-3455236983/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:38:00 +0000 UTC FinishedAt: 2026-07-07 18:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:38:00 +0000 UTC FinishedAt: 2026-07-07 18:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:38:00 +0000 UTC FinishedAt: 2026-07-07 18:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:38:00 +0000 UTC FinishedAt: 2026-07-07 18:39:54 +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:*9e491f11-e997-442c-8b3e-8fd3dc371f44,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-workflowrshwc/series-workflowrshwc-build-action-3455236983/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-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"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:*b4e480bb-374e-4aa1-b4f4-26209dc11484,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e491f11-e997-442c-8b3e-8fd3dc371f44,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-workflowrshwc/series-workflowrshwc-build-action-1398051202/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-workflowrshwc/series-workflowrshwc-build-action-3455236983/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:40:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:40:09 +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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"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-workflowrshwc/series-workflowrshwc-convert-artifact-1874350556/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:04 +0000 UTC FinishedAt: 2026-07-07 18:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:14 +0000 UTC FinishedAt: 2026-07-07 18:42:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrshwc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"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":["prepare_bpf_tail_call_cnt","build_prologue","__build_epilogue","emit_bpf_tail_call"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e4efcc887f8f97c2601f23be5afe5e7f5ec52bdd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"b45ea43f-46a4-4575-8a3d-b95ac1965fcc","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-07 18:40:14 +0000 UTC FinishedAt: 2026-07-07 18:42:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b4e480bb-374e-4aa1-b4f4-26209dc11484,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e491f11-e997-442c-8b3e-8fd3dc371f44,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-workflowrshwc/series-workflowrshwc-build-action-1398051202/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-workflowrshwc/series-workflowrshwc-build-action-3455236983/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-workflowrshwc/series-workflowrshwc-convert-artifact-1874350556/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,}