Name: series-workflowjcsg2 Phase: Succeeded StartedAt: 2026-07-17 10:03:28 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[0] Phase: Succeeded StartedAt: 2026-07-17 10:03:28 +0000 UTC FinishedAt: 2026-07-17 10:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 10:03:28 +0000 UTC FinishedAt: 2026-07-17 10:17:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "series_id": "0f9054db-98de-4fee-a654-219c204b5c32" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_reqsk_send_challenge_ack", "tcp_challenge_ack_allowed", "tcp_check_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmI5ZTZjNzI5MWJkNmI1MGU3YTMzN2NkOWU3Y2UyNTMxZTRkOTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTA6MTY6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTk3NCw2ICYjNDM7MTk3NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZmFzdF9wYXRoX2NoZWNrKHN0cnVjdCBzb2NrICpzaylcbiBcbiBib29sIHRjcF9vb3dfcmF0ZV9saW1pdGVkKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgIGludCBtaWJfaWR4LCB1MzIgKmxhc3Rfb293X2Fja190aW1lKTtcbiYjNDM7dm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHRjcF9taWJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IDYxMDQ1YTg4ODZlNDg1Li5kYWZmOTNkNTEzNDI4NyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTQwMzgsMjQgJiM0Mzs0MDM4LDE3IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbiBcdF9fdGNwX3NlbmRfYWNrKHNrLCB0cC1cdTAwM2VyY3Zfbnh0LCBmbGFncyk7XG4gfVxuIFxuLS8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqL1xuLXN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4mIzQzOy8qIENvbnN1bWUgb25lIHNsb3QgZnJvbSB0aGUgcGVyLW5ldG5zIFJGQyA1OTYxIGNoYWxsZW5nZSBBQ0sgcXVvdGEuXG4mIzQzOyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkKHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbi1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiBcdHUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7XG4gXG4tXHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cbi1cdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCxcbi1cdFx0XHRcdCAgIExJTlVYX01JQl9UQ1BBQ0tTS0lQUEVEQ0hBTExFTkdFLFxuLVx0XHRcdFx0ICAgXHUwMDI2dHAtXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRhY2tfbGltaXQgPSBSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9jaGFsbGVuZ2VfYWNrX2xpbWl0KTtcbiBcdGlmIChhY2tfbGltaXQgPT0gSU5UX01BWClcbi1cdFx0Z290byBzZW5kX2FjaztcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuIFxuLVx0LyogVGhlbiBjaGVjayBob3N0LXdpZGUgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiBcdG5vdyA9IGppZmZpZXMgLyBIWjtcbiBcdGlmIChub3cgIT0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xuIFx0XHR1MzIgaGFsZiA9IChhY2tfbGltaXQgJiM0MzsgMSkgXHUwMDNlXHUwMDNlIDE7XG5AQCAtNDA2NywxMiAmIzQzOzQwNjAsNDkgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbiBcdGNvdW50ID0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfY291bnQpO1xuIFx0aWYgKGNvdW50IFx1MDAzZSAwKSB7XG4gXHRcdFdSSVRFX09OQ0UobmV0LVx1MDAzZWlwdjQudGNwX2NoYWxsZW5nZV9jb3VudCwgY291bnQgLSAxKTtcbi1zZW5kX2FjazpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqL1xuJiM0MztzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG4mIzQzO1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuJiM0MztcbiYjNDM7XHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cbiYjNDM7XHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4mIzQzO1x0XHRcdFx0ICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2dHAtXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiYjNDM7XHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XG4gXHRcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcbiBcdFx0dGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHNrLCBhY2NlY25fcmVmbGVjdG9yKTtcbiBcdH1cbiB9XG4gXG4mIzQzOy8qIFNlbmQgYSBjaGFsbGVuZ2UgQUNLIGZyb20gYSBTWU4tUkVDRUlWRUQgcmVxdWVzdCBzb2NrZXQuIFVzZXNcbiYjNDM7ICogX190Y3Bfb293X3JhdGVfbGltaXRlZCgpIGRpcmVjdGx5IHNvIHRoYXQgYW4gUlNUIGNhcnJ5aW5nIHBheWxvYWRcbiYjNDM7ICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG4mIzQzO1xuJiM0MztcdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCwgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2dGNwX3JzayhyZXEpLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkge1xuJiM0MztcdFx0TkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spO1xuJiM0MztcdFx0cmVxLVx1MDAzZXJza19vcHMtXHUwMDNlc2VuZF9hY2soc2ssIHNrYiwgcmVxKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGNwX3N0b3JlX3RzX3JlY2VudChzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIHtcbiBcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9taW5pc29ja3MuYyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuY1xuaW5kZXggZGRjNGIxN2E4MjZiNTIuLjZhYjNlM2EwYjQzMTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcbkBAIC04MzMsNyAmIzQzOzgzMyw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIGVsc2V3aGVyZSBhbmQgaXMgY2hlY2tlZCBkaXJlY3RseSBhZ2FpbnN0IHRoZSBjaGlsZCBzb2NrZXQgcmF0aGVyXG4gXHQgKiB0aGFuIHJlcSBiZWNhdXNlIHVzZXIgZGF0YSBtYXkgaGF2ZSBiZWVuIHNlbnQgb3V0LlxuIFx0ICovXG4tXHRpZiAoKGZsZyBcdTAwMjYgVENQX0ZMQUdfQUNLKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19BQ0spIFx1MDAyNlx1MDAyNiAhKGZsZyBcdTAwMjYgVENQX0ZMQUdfUlNUKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSAhPVxuIFx0ICAgICB0Y3BfcnNrKHJlcSktXHUwMDNlc250X2lzbiAmIzQzOyAxKSlcbiBcdFx0cmV0dXJuIHNrO1xuQEAgLTg3Miw2ICYjNDM7ODcyLDE2IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZmxnIFx1MDAyNj0gflRDUF9GTEFHX1NZTjtcbiBcdH1cbiBcbiYjNDM7XHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cbiYjNDM7XHQgKiAzLjEwLjcuNCwgcmVxdWlyZXMgYSBjaGFsbGVuZ2UgQUNLIGZvciBhIG5vbi1leGFjdFxuJiM0MztcdCAqIGluLXdpbmRvdyBSU1QgaW4gU1lOLVJFQ0VJVkVELlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19SU1QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxICE9IHRjcF9yc2socmVxKS1cdTAwM2VyY3Zfbnh0KSB7XG4mIzQzO1x0XHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogUkZDNzkzOiBcJiMzNDtzZWNvbmQgY2hlY2sgdGhlIFJTVCBiaXRcJiMzNDsgYW5kXG4gXHQgKlx0ICAgXCYjMzQ7Zm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdFwmIzM0O1xuIFx0ICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zZmMyZGUwMzY1OGFmMFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3RcbkBAIC0wLDAgJiM0MzsxLDYxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8vXG4mIzQzOy8vIFJGQyA5MjkzIFNlY3Rpb24gMy4xMC43LjQ6IGluIFNZTi1SRUNFSVZFRCwgYW4gZXhhY3QgUlNUIHJlc2V0c1xuJiM0MzsvLyB0aGUgY29ubmVjdGlvbi4gIEEgbm9uLWV4YWN0IGluLXdpbmRvdyBSU1QgZWxpY2l0cyBhIGNoYWxsZW5nZSBBQ0ssXG4mIzQzOy8vIHdoaWxlIGFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudGx5IGRpc2NhcmRlZC5cbiYjNDM7XG4mIzQzO2AuL2RlZmF1bHRzLnNoYFxuJiM0MztcbiYjNDM7Ly8gQW4gZXhhY3QgUlNUIHJlbW92ZXMgdGhlIHJlcXVlc3Qgc29ja2V0LlxuJiM0MzsgICAwIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIgMToxKDApIHdpbiAxMDAwXG4mIzQzOyAmIzQzOy4xIFx1MDAzYyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMFxuJiM0MzsgICYjNDM7MCBcdTAwM2UgUiAxOjEoMClcbiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwXG4mIzQzO1xuJiM0MzsvLyBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGdldHMgYSBjaGFsbGVuZ2UgQUNLIGFuZCB0aGUgcmVxdWVzdCBzdXJ2aXZlcy5cbiYjNDM7ICAmIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xuJiM0MzsgICYjNDM7MCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcbiYjNDM7ICAmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4mIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDBcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFx1MDAzZVxuJiM0MzsgICYjNDM7MCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuJiM0MzsgICYjNDM7MCBcdTAwM2MgUiAyOjIoMCkgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIC4gMToxKDApIGFjayAxXG4mIzQzOyAgJiM0MzswIFx1MDAzYyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMFxuJiM0MzsgICYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuJiM0MzsgICYjNDM7MCBjbG9zZSg0KSA9IDBcbiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwXG4mIzQzO1xuJiM0MzsvLyBSU1Qgc2VxdWVuY2UgdmFsaWRhdGlvbiBwcmVjZWRlcyBBQ0sgdmFsaWRhdGlvbi4gIEV2ZW4gYW4gUlNUfEFDS1xuJiM0MzsvLyB3aXRoIGFuIHVuYWNjZXB0YWJsZSBBQ0sgdmFsdWUgZ2V0cyBhIGNoYWxsZW5nZSBBQ0suXG4mIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIuIDI6MigwKSBhY2sgMTAwIHdpbiAxMDAwXG4mIzQzOyAgJiM0MzswIFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxuJiM0MzsgICYjNDM7MCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwXG4mIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMFxuJiM0MztcbiYjNDM7Ly8gQW4gb3V0LW9mLXdpbmRvdyBSU1QgaXMgc2lsZW50IGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIHJlcXVlc3QuXG4mIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIgMTAwMDAxOjEwMDAwMSgwKSB3aW4gMTAwMFxuJiM0MzsgJiM0MzsuMSBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwXG4mIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViYjllNmM3MjkxYmQ2YjUwZTdhMzM3Y2Q5ZTdjZTI1MzFlNGQ5NjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAxMDoxNjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtMTk3NCw2ICYjNDM7MTk3NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZmFzdF9wYXRoX2NoZWNrKHN0cnVjdCBzb2NrICpzaykKIAogYm9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIGludCBtaWJfaWR4LCB1MzIgKmxhc3Rfb293X2Fja190aW1lKTsKJiM0Mzt2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfbWliX2luaXQoc3RydWN0IG5ldCAqbmV0KQogewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCA2MTA0NWE4ODg2ZTQ4NS4uZGFmZjkzZDUxMzQyODcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC00MDM4LDI0ICYjNDM7NDAzOCwxNyBAQCBzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9hY2tfcmVmbGVjdF9lY3Qoc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpCiAJX190Y3Bfc2VuZF9hY2soc2ssIHRwLSZndDtyY3Zfbnh0LCBmbGFncyk7CiB9CiAKLS8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqLwotc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcikKJiM0MzsvKiBDb25zdW1lIG9uZSBzbG90IGZyb20gdGhlIHBlci1uZXRucyBSRkMgNTk2MSBjaGFsbGVuZ2UgQUNLIHF1b3RhLgomIzQzOyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChzdHJ1Y3QgbmV0ICpuZXQpCiB7Ci0Jc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7Ci0Jc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spOwogCXUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7CiAKLQkvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi8KLQlpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsCi0JCQkJICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsCi0JCQkJICAgJmFtcDt0cC0mZ3Q7bGFzdF9vb3dfYWNrX3RpbWUpKQotCQlyZXR1cm47Ci0KIAlhY2tfbGltaXQgPSBSRUFEX09OQ0UobmV0LSZndDtpcHY0LnN5c2N0bF90Y3BfY2hhbGxlbmdlX2Fja19saW1pdCk7CiAJaWYgKGFja19saW1pdCA9PSBJTlRfTUFYKQotCQlnb3RvIHNlbmRfYWNrOwomIzQzOwkJcmV0dXJuIHRydWU7CiAKLQkvKiBUaGVuIGNoZWNrIGhvc3Qtd2lkZSBSRkMgNTk2MSByYXRlIGxpbWl0LiAqLwogCW5vdyA9IGppZmZpZXMgLyBIWjsKIAlpZiAobm93ICE9IFJFQURfT05DRShuZXQtJmd0O2lwdjQudGNwX2NoYWxsZW5nZV90aW1lc3RhbXApKSB7CiAJCXUzMiBoYWxmID0gKGFja19saW1pdCAmIzQzOyAxKSAmZ3Q7Jmd0OyAxOwpAQCAtNDA2NywxMiAmIzQzOzQwNjAsNDkgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcikKIAljb3VudCA9IFJFQURfT05DRShuZXQtJmd0O2lwdjQudGNwX2NoYWxsZW5nZV9jb3VudCk7CiAJaWYgKGNvdW50ICZndDsgMCkgewogCQlXUklURV9PTkNFKG5ldC0mZ3Q7aXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50LCBjb3VudCAtIDEpOwotc2VuZF9hY2s6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJfQomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqLwomIzQzO3N0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKJiM0MzsJc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spOwomIzQzOwomIzQzOwkvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi8KJiM0MzsJaWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LAomIzQzOwkJCQkgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSwKJiM0MzsJCQkJICAgJmFtcDt0cC0mZ3Q7bGFzdF9vb3dfYWNrX3RpbWUpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi8KJiM0MzsJaWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkgewogCQlORVRfSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1RDUENIQUxMRU5HRUFDSyk7CiAJCXRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzaywgYWNjZWNuX3JlZmxlY3Rvcik7CiAJfQogfQogCiYjNDM7LyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlcwomIzQzOyAqIF9fdGNwX29vd19yYXRlX2xpbWl0ZWQoKSBkaXJlY3RseSBzbyB0aGF0IGFuIFJTVCBjYXJyeWluZyBwYXlsb2FkCiYjNDM7ICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC4KJiM0MzsgKi8KJiM0Mzt2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTsKJiM0MzsKJiM0MzsJaWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSwKJiM0MzsJCQkJICAgJmFtcDt0Y3BfcnNrKHJlcSktJmd0O2xhc3Rfb293X2Fja190aW1lKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkgewomIzQzOwkJTkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spOwomIzQzOwkJcmVxLSZndDtyc2tfb3BzLSZndDtzZW5kX2Fjayhzaywgc2tiLCByZXEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGNwX3N0b3JlX3RzX3JlY2VudChzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogewogCXRwLSZndDtyeF9vcHQudHNfcmVjZW50ID0gdHAtJmd0O3J4X29wdC5yY3ZfdHN2YWw7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKaW5kZXggZGRjNGIxN2E4MjZiNTIuLjZhYjNlM2EwYjQzMTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCkBAIC04MzMsNyAmIzQzOzgzMyw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBlbHNld2hlcmUgYW5kIGlzIGNoZWNrZWQgZGlyZWN0bHkgYWdhaW5zdCB0aGUgY2hpbGQgc29ja2V0IHJhdGhlcgogCSAqIHRoYW4gcmVxIGJlY2F1c2UgdXNlciBkYXRhIG1heSBoYXZlIGJlZW4gc2VudCBvdXQuCiAJICovCi0JaWYgKChmbGcgJmFtcDsgVENQX0ZMQUdfQUNLKSAmYW1wOyZhbXA7ICFmYXN0b3BlbiAmYW1wOyZhbXA7CiYjNDM7CWlmICgoZmxnICZhbXA7IFRDUF9GTEFHX0FDSykgJmFtcDsmYW1wOyAhKGZsZyAmYW1wOyBUQ1BfRkxBR19SU1QpICZhbXA7JmFtcDsgIWZhc3RvcGVuICZhbXA7JmFtcDsKIAkgICAgKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSAhPQogCSAgICAgdGNwX3JzayhyZXEpLSZndDtzbnRfaXNuICYjNDM7IDEpKQogCQlyZXR1cm4gc2s7CkBAIC04NzIsNiAmIzQzOzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCWZsZyAmYW1wOz0gflRDUF9GTEFHX1NZTjsKIAl9CiAKJiM0MzsJLyogUkZDIDU5NjEgc2VjdGlvbiAzLjIsIGFzIGNsYXJpZmllZCBieSBSRkMgOTI5MyBzZWN0aW9uCiYjNDM7CSAqIDMuMTAuNy40LCByZXF1aXJlcyBhIGNoYWxsZW5nZSBBQ0sgZm9yIGEgbm9uLWV4YWN0CiYjNDM7CSAqIGluLXdpbmRvdyBSU1QgaW4gU1lOLVJFQ0VJVkVELgomIzQzOwkgKi8KJiM0MzsJaWYgKChmbGcgJmFtcDsgVENQX0ZMQUdfUlNUKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBUQ1BfU0tCX0NCKHNrYiktJmd0O3NlcSAhPSB0Y3BfcnNrKHJlcSktJmd0O3Jjdl9ueHQpIHsKJiM0MzsJCXRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc2ssIHNrYiwgcmVxKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiAJLyogUkZDNzkzOiAmIzM0O3NlY29uZCBjaGVjayB0aGUgUlNUIGJpdCYjMzQ7IGFuZAogCSAqCSAgICYjMzQ7Zm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdCYjMzQ7CiAJICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zZmMyZGUwMzY1OGFmMAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0CkBAIC0wLDAgJiM0MzsxLDYxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvLwomIzQzOy8vIFJGQyA5MjkzIFNlY3Rpb24gMy4xMC43LjQ6IGluIFNZTi1SRUNFSVZFRCwgYW4gZXhhY3QgUlNUIHJlc2V0cwomIzQzOy8vIHRoZSBjb25uZWN0aW9uLiAgQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBlbGljaXRzIGEgY2hhbGxlbmdlIEFDSywKJiM0MzsvLyB3aGlsZSBhbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnRseSBkaXNjYXJkZWQuCiYjNDM7CiYjNDM7YC4vZGVmYXVsdHMuc2hgCiYjNDM7CiYjNDM7Ly8gQW4gZXhhY3QgUlNUIHJlbW92ZXMgdGhlIHJlcXVlc3Qgc29ja2V0LgomIzQzOyAgIDAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gMwomIzQzOyAgJiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDAKJiM0MzsgICYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiAxMDAwICZsdDttc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDAmZ3Q7CiYjNDM7ICAmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsgICYjNDM7MCAmbHQ7IFIgMToxKDApIHdpbiAxMDAwCiYjNDM7ICYjNDM7LjEgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMAomIzQzOyAgJiM0MzswICZndDsgUiAxOjEoMCkKJiM0MzsgICYjNDM7MCBjbG9zZSgzKSA9IDAKJiM0MzsKJiM0MzsvLyBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGdldHMgYSBjaGFsbGVuZ2UgQUNLIGFuZCB0aGUgcmVxdWVzdCBzdXJ2aXZlcy4KJiM0MzsgICYjNDM7MCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzCiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwCiYjNDM7ICAmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwCiYjNDM7ICAmIzQzOzAgbGlzdGVuKDMsIDEpID0gMAomIzQzOyAgJiM0MzswICZsdDsgUyAwOjAoMCkgd2luIDEwMDAgJmx0O21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMCZndDsKJiM0MzsgICYjNDM7MCAmZ3Q7IFMuIDA6MCgwKSBhY2sgMSAmbHQ7Li4uJmd0OwomIzQzOyAgJiM0MzswICZsdDsgUiAyOjIoMCkgd2luIDEwMDAKJiM0MzsgICYjNDM7MCAmZ3Q7IC4gMToxKDApIGFjayAxCiYjNDM7ICAmIzQzOzAgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMAomIzQzOyAgJiM0MzswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0CiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwCiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwCiYjNDM7CiYjNDM7Ly8gUlNUIHNlcXVlbmNlIHZhbGlkYXRpb24gcHJlY2VkZXMgQUNLIHZhbGlkYXRpb24uICBFdmVuIGFuIFJTVHxBQ0sKJiM0MzsvLyB3aXRoIGFuIHVuYWNjZXB0YWJsZSBBQ0sgdmFsdWUgZ2V0cyBhIGNoYWxsZW5nZSBBQ0suCiYjNDM7ICAmIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gMwomIzQzOyAgJiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDAKJiM0MzsgICYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiAxMDAwICZsdDttc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDAmZ3Q7CiYjNDM7ICAmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsgICYjNDM7MCAmbHQ7IFIuIDI6MigwKSBhY2sgMTAwIHdpbiAxMDAwCiYjNDM7ICAmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgMQomIzQzOyAgJiM0MzswICZsdDsgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDAKJiM0MzsgICYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNAomIzQzOyAgJiM0MzswIGNsb3NlKDQpID0gMAomIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMAomIzQzOwomIzQzOy8vIEFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudCBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSByZXF1ZXN0LgomIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDMKJiM0MzsgICYjNDM7MCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDAKJiM0MzsgICYjNDM7MCBiaW5kKDMsIC4uLiwgLi4uKSA9IDAKJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwCiYjNDM7ICAmIzQzOzAgJmx0OyBTIDA6MCgwKSB3aW4gMTAwMCAmbHQ7bXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwJmd0OwomIzQzOyAgJiM0MzswICZndDsgUy4gMDowKDApIGFjayAxICZsdDsuLi4mZ3Q7CiYjNDM7ICAmIzQzOzAgJmx0OyBSIDEwMDAwMToxMDAwMDEoMCkgd2luIDEwMDAKJiM0MzsgJiM0MzsuMSAmbHQ7IC4gMToxKDApIGFjayAxIHdpbiAxMDAwCiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDQKJiM0MzsgICYjNDM7MCBjbG9zZSg0KSA9IDAKJiM0MzsgICYjNDM7MCBjbG9zZSgzKSA9IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEtlcm5lbCBUQ1AgTG9naWM6IFBhdGNoIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHN1bW1hcnkgc2F5cyBpdCBtb2RpZmllcyBgaW5jbHVkZS9uZXQvdGNwLmhgLCBgbmV0L2lwdjQvdGNwX2lucHV0LmNgLCBgbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdGAuIFRoYXQmIzM5O3MgYSBkZWNlbnQgc3ByZWFkLiBSZWFkaW5nIHRocm91Z2ggdGhlIGRldGFpbHMsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW1wYWN0aW5nIGNvcmUgVENQIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBSU1QgcGFja2V0cyBpbiB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UhIFdlIG5lZWQgdG8gZnV6eiB0aGlzLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja2AsIGB0Y3BfY2hlY2tfcmVxYCwgYW5kIGB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkYCBhcmUgdGhlIHByaW1hcnkgY2FuZGlkYXRlcy4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgYW5kIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGNvcmUgVENQL0lQdjQgY29kZS4gVHlwaWNhbGx5LCB0aGF0IG1lYW5zIGBDT05GSUdfSU5FVGAgaXMgc3VmZmljaWVudC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGVzLCBJIGRvbiYjMzk7dCBzZWUgYW55IHNwZWNpYWwgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIGBDT05GSUdfSU5FVGAgaXMgdGhlIGJyb2FkZXN0LCBhbmQgdGhlIG1vcmUgc3BlY2lmaWMgYENPTkZJR19UQ1BfQ09OR19DVUJJQ2AgaXMgdW5yZWxhdGVkLgoKQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhpcyB3aXRoIHRoZSB0b29scy4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZnV6emluZyBjYW1wYWlnbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTE5NzU9Ym9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL25ldC90Y3AuaC0xOTc2LVx0XHRcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xuaW5jbHVkZS9uZXQvdGNwLmg6MTk3Nzp2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9uZXQvdGNwLmgtMTk3OC1cdFx0XHRcdCAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKTtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00MDY5PXN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5MC0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjQwOTE6dm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQwOTItXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtODgwLVx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgIT0gdGNwX3JzayhyZXEpLVx1MDAzZXJjdl9ueHQpIHtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo4ODE6XHRcdHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc2ssIHNrYiwgcmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy04ODItXHRcdHJldHVybiBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlJiMzOTtzIFJlYWNoYWJpbGl0eSBhbmQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgdGhlIGNvZGUgSSYjMzk7bSBsb29raW5nIGF0IGlzIGJvdGggcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLiBOb3csIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzeW1ib2xzIGZvciB0aGlzIHNwZWNpZmljIGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZXNlOiBgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja2AsIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFdoaWxlIGB0Y3BfY2hlY2tfcmVxYCBoYXMgc2VlbiBzb21lIG1vZGlmaWNhdGlvbnMsIGl0JiMzOTtzIHBvdGVudGlhbGx5IHRvbyBicm9hZCBmb3IgdGhlIGltbWVkaWF0ZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLiBUaG9zZSBmaXJzdCB0d28gc2VlbSBmYXIgbW9yZSB0YXJnZXRlZCBhbmQgcGVydGluZW50LgoKUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZGVmaW5pdGlvbiBvZiBgdGNwX2NoZWNrX3JlcWAgaW4gYG5ldC9pcHY0L3RjcF9taW5pc29ja3MuY2AgdG8gc2VlIGhvdyBpdCBtaWdodCBiZSByZWxhdGVkIHRvIHRoZXNlIGtleSBmdW5jdGlvbnMuIEkmIzM5O2xsIHJldmlldyBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhvc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9jaGVja19yZXEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9NDc2PWVudW0gdGNwX3R3X3N0YXR1cyB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dyxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC00ODAtXHRcdFx0XHRcdCAgICAgIGVudW0gc2tiX2Ryb3BfcmVhc29uICpkcm9wX3JlYXNvbik7XG5pbmNsdWRlL25ldC90Y3AuaDo0ODE6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9uZXQvdGNwLmgtNDgyLVx0XHRcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSwgYm9vbCBmYXN0b3Blbixcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIxOC1cdFx0U0tCX0RSX1NFVChyZWFzb24sIFRDUF9GQVNUT1BFTik7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjE5Olx0XHRpZiAoIXRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCB0cnVlLCBcdTAwMjZyZXFfc3RvbGVuLCBcdTAwMjZyZWFzb24pKVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyMC1cdFx0XHRnb3RvIGRpc2NhcmQ7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTYyLVx0XHRcdHRjcF92NF9maWxsX2NiKHNrYiwgaXBoLCB0aCk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxNjM6XHRcdFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcdTAwMjZyZXFfc3RvbGVuLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTY0LVx0XHRcdFx0XHQgICAgXHUwMDI2ZHJvcF9yZWFzb24pO1xuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4Ni1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2ODc6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4OC1cdFx0XHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODE5LVx0XHRcdHRjcF92Nl9maWxsX2NiKHNrYiwgaGRyLCB0aCk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4MjA6XHRcdFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcdTAwMjZyZXFfc3RvbGVuLFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODIxLVx0XHRcdFx0XHQgICAgXHUwMDI2ZHJvcF9yZWFzb24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTYKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIENoYWxsZW5nZSBBQ0sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gRnJvbSB3aGF0IEkgY2FuIGdhdGhlciwgYHRjcF9jaGVja19yZXFgIGdldHMgY2FsbGVkIGZyb20gYm90aCBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCB3aGVuIGRlYWxpbmcgd2l0aCBTWU4tUkVDRUlWRUQgc3RhdGUsIHNwZWNpZmljYWxseSB0aHJvdWdoIHJlcXVlc3Qgc29ja2V0cy4gSXQgc2VlbXMgcmVsYXRpdmVseSBhY3RpdmUsIHRob3VnaCBub3QgYXMgaW50ZW5zZSBhcyBgdGNwX3Y0X3JjdmAgaXRzZWxmLgoKVGhlIGtleSBwbGF5ZXJzIGhlcmUgYXJlIGRlZmluaXRlbHkgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFRob3NlIGFyZSBzeW1ib2xzIEkgc2hvdWxkIHJlYWxseSBmb2N1cyBvbi4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgb2YgdGhvc2UuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBIbW0sIGp1c3QgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vIHNwZWNpYWxpemVkIHNldHRpbmdzIG5lZWRlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIEl0JiMzOTtzIGNsZWFuLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBtb2RpZnlpbmcgY29yZSBUQ1AgYmVoYXZpb3IuIEl0JiMzOTtzIGFib3V0IHNlbmRpbmcgY2hhbGxlbmdlIEFDS3MgaW4gU1lOLVJFQ0VJVkVEIGZvciBSU1QgcGFja2V0cyB0aGF0IGRvbiYjMzk7dCBwZXJmZWN0bHkgYWxpZ24gd2l0aCB0aGUgd2luZG93LiBCYXNpY2FsbHksIGl0JiMzOTtzIGltcGxlbWVudGluZyBSRkMgNTk2MS4gVGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZywgc28gaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LgoKSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkIHdpdGggdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjozMC41NjE0Nzc3NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU0OTU2Mzg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjMwLjU2MTQ4Njc5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4NzYyNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJiOWU2YzcyOTFiZDZiNTBlN2EzMzdjZDllN2NlMjUzMWU0ZDk2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAxMDoxNjoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTk3NCw2ICsxOTc0LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHRjcF9mYXN0X3BhdGhfY2hlY2soc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gYm9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xcbit2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgdGNwX21pYl9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXFxuaW5kZXggNjEwNDVhODg4NmU0ODUuLmRhZmY5M2Q1MTM0Mjg3IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG5AQCAtNDAzOCwyNCArNDAzOCwxNyBAQCBzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9hY2tfcmVmbGVjdF9lY3Qoc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXFxuIFxcdF9fdGNwX3NlbmRfYWNrKHNrLCB0cC1cXHUwMDNlcmN2X254dCwgZmxhZ3MpO1xcbiB9XFxuIFxcbi0vKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cXG4tc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcXG4rLyogQ29uc3VtZSBvbmUgc2xvdCBmcm9tIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgY2hhbGxlbmdlIEFDSyBxdW90YS5cXG4rICogUmV0dXJucyB0cnVlIGlmIGEgY2hhbGxlbmdlIEFDSyBtYXkgYmUgc2VudC5cXG4rICovXFxuK3N0YXRpYyBib29sIHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQoc3RydWN0IG5ldCAqbmV0KVxcbiB7XFxuLVxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbi1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIFxcdHUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7XFxuIFxcbi1cXHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cXG4tXFx0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LFxcbi1cXHRcXHRcXHRcXHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcXG4tXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRwLVxcdTAwM2VsYXN0X29vd19hY2tfdGltZSkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdGFja19saW1pdCA9IFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9jaGFsbGVuZ2VfYWNrX2xpbWl0KTtcXG4gXFx0aWYgKGFja19saW1pdCA9PSBJTlRfTUFYKVxcbi1cXHRcXHRnb3RvIHNlbmRfYWNrO1xcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuLVxcdC8qIFRoZW4gY2hlY2sgaG9zdC13aWRlIFJGQyA1OTYxIHJhdGUgbGltaXQuICovXFxuIFxcdG5vdyA9IGppZmZpZXMgLyBIWjtcXG4gXFx0aWYgKG5vdyAhPSBSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xcbiBcXHRcXHR1MzIgaGFsZiA9IChhY2tfbGltaXQgKyAxKSBcXHUwMDNlXFx1MDAzZSAxO1xcbkBAIC00MDY3LDEyICs0MDYwLDQ5IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXFxuIFxcdGNvdW50ID0gUkVBRF9PTkNFKG5ldC1cXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50KTtcXG4gXFx0aWYgKGNvdW50IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50LCBjb3VudCAtIDEpO1xcbi1zZW5kX2FjazpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cXG4rc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcXG4re1xcbitcXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4rXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbitcXG4rXFx0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXFxuK1xcdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCxcXG4rXFx0XFx0XFx0XFx0ICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZ0cC1cXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cXG4rXFx0aWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkge1xcbiBcXHRcXHRORVRfSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1RDUENIQUxMRU5HRUFDSyk7XFxuIFxcdFxcdHRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzaywgYWNjZWNuX3JlZmxlY3Rvcik7XFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlc1xcbisgKiBfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKCkgZGlyZWN0bHkgc28gdGhhdCBhbiBSU1QgY2FycnlpbmcgcGF5bG9hZFxcbisgKiBjYW5ub3QgYnlwYXNzIHRoZSBwZXItcmVxdWVzdCByYXRlIGxpbWl0LlxcbisgKi9cXG4rdm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbitcXG4rXFx0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRjcF9yc2socmVxKS1cXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XFxuK1xcdFxcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcXG4rXFx0XFx0cmVxLVxcdTAwM2Vyc2tfb3BzLVxcdTAwM2VzZW5kX2Fjayhzaywgc2tiLCByZXEpO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRjcF9zdG9yZV90c19yZWNlbnQoc3RydWN0IHRjcF9zb2NrICp0cClcXG4ge1xcbiBcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudCA9IHRwLVxcdTAwM2VyeF9vcHQucmN2X3RzdmFsO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcXG5pbmRleCBkZGM0YjE3YTgyNmI1Mi4uNmFiM2UzYTBiNDMxNzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXFxuQEAgLTgzMyw3ICs4MzMsNyBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqIGVsc2V3aGVyZSBhbmQgaXMgY2hlY2tlZCBkaXJlY3RseSBhZ2FpbnN0IHRoZSBjaGlsZCBzb2NrZXQgcmF0aGVyXFxuIFxcdCAqIHRoYW4gcmVxIGJlY2F1c2UgdXNlciBkYXRhIG1heSBoYXZlIGJlZW4gc2VudCBvdXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoKGZsZyBcXHUwMDI2IFRDUF9GTEFHX0FDSykgXFx1MDAyNlxcdTAwMjYgIWZhc3RvcGVuIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmICgoZmxnIFxcdTAwMjYgVENQX0ZMQUdfQUNLKSBcXHUwMDI2XFx1MDAyNiAhKGZsZyBcXHUwMDI2IFRDUF9GTEFHX1JTVCkgXFx1MDAyNlxcdTAwMjYgIWZhc3RvcGVuIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoVENQX1NLQl9DQihza2IpLVxcdTAwM2VhY2tfc2VxICE9XFxuIFxcdCAgICAgdGNwX3JzayhyZXEpLVxcdTAwM2VzbnRfaXNuICsgMSkpXFxuIFxcdFxcdHJldHVybiBzaztcXG5AQCAtODcyLDYgKzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGZsZyBcXHUwMDI2PSB+VENQX0ZMQUdfU1lOO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cXG4rXFx0ICogMy4xMC43LjQsIHJlcXVpcmVzIGEgY2hhbGxlbmdlIEFDSyBmb3IgYSBub24tZXhhY3RcXG4rXFx0ICogaW4td2luZG93IFJTVCBpbiBTWU4tUkVDRUlWRUQuXFxuK1xcdCAqL1xcbitcXHRpZiAoKGZsZyBcXHUwMDI2IFRDUF9GTEFHX1JTVCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxICE9IHRjcF9yc2socmVxKS1cXHUwMDNlcmN2X254dCkge1xcbitcXHRcXHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBSRkM3OTM6IFxcXCJzZWNvbmQgY2hlY2sgdGhlIFJTVCBiaXRcXFwiIGFuZFxcbiBcXHQgKlxcdCAgIFxcXCJmb3VydGgsIGNoZWNrIHRoZSBTWU4gYml0XFxcIlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNmYzJkZTAzNjU4YWYwXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0XFxuQEAgLTAsMCArMSw2MSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvL1xcbisvLyBSRkMgOTI5MyBTZWN0aW9uIDMuMTAuNy40OiBpbiBTWU4tUkVDRUlWRUQsIGFuIGV4YWN0IFJTVCByZXNldHNcXG4rLy8gdGhlIGNvbm5lY3Rpb24uICBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGVsaWNpdHMgYSBjaGFsbGVuZ2UgQUNLLFxcbisvLyB3aGlsZSBhbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnRseSBkaXNjYXJkZWQuXFxuK1xcbitgLi9kZWZhdWx0cy5zaGBcXG4rXFxuKy8vIEFuIGV4YWN0IFJTVCByZW1vdmVzIHRoZSByZXF1ZXN0IHNvY2tldC5cXG4rICAgMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzXFxuKyAgKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXFxuKyAgKzAgbGlzdGVuKDMsIDEpID0gMFxcbisgICswIFxcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFxcdTAwM2VcXG4rICArMCBcXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcXHUwMDNjLi4uXFx1MDAzZVxcbisgICswIFxcdTAwM2MgUiAxOjEoMCkgd2luIDEwMDBcXG4rICsuMSBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgXFx1MDAzZSBSIDE6MSgwKVxcbisgICswIGNsb3NlKDMpID0gMFxcbitcXG4rLy8gQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBnZXRzIGEgY2hhbGxlbmdlIEFDSyBhbmQgdGhlIHJlcXVlc3Qgc3Vydml2ZXMuXFxuKyAgKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxcbisgICswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxcbisgICswIGxpc3RlbigzLCAxKSA9IDBcXG4rICArMCBcXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFxcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcXHUwMDNlXFxuKyAgKzAgXFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXFx1MDAzYy4uLlxcdTAwM2VcXG4rICArMCBcXHUwMDNjIFIgMjoyKDApIHdpbiAxMDAwXFxuKyAgKzAgXFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxcbisgICswIFxcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxcbisgICswIGNsb3NlKDQpID0gMFxcbisgICswIGNsb3NlKDMpID0gMFxcbitcXG4rLy8gUlNUIHNlcXVlbmNlIHZhbGlkYXRpb24gcHJlY2VkZXMgQUNLIHZhbGlkYXRpb24uICBFdmVuIGFuIFJTVHxBQ0tcXG4rLy8gd2l0aCBhbiB1bmFjY2VwdGFibGUgQUNLIHZhbHVlIGdldHMgYSBjaGFsbGVuZ2UgQUNLLlxcbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXFxuKyAgKzAgXFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXFx1MDAzZVxcbisgICswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyAgKzAgXFx1MDAzYyBSLiAyOjIoMCkgYWNrIDEwMCB3aW4gMTAwMFxcbisgICswIFxcdTAwM2UgLiAxOjEoMCkgYWNrIDFcXG4rICArMCBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcXG4rICArMCBjbG9zZSg0KSA9IDBcXG4rICArMCBjbG9zZSgzKSA9IDBcXG4rXFxuKy8vIEFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudCBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSByZXF1ZXN0LlxcbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXFxuKyAgKzAgXFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXFx1MDAzZVxcbisgICswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyAgKzAgXFx1MDAzYyBSIDEwMDAwMToxMDAwMDEoMCkgd2luIDEwMDBcXG4rICsuMSBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcXG4rICArMCBjbG9zZSg0KSA9IDBcXG4rICArMCBjbG9zZSgzKSA9IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6MzEuNDkxMjgwNTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYxOTc1MjYxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWJiOWU2YzcyOTFiZDZiNTBlN2EzMzdjZDllN2NlMjUzMWU0ZDk2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDEwOjE2OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbisrKyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTk3NCw2ICsxOTc0LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHRjcF9mYXN0X3BhdGhfY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIFxuIGJvb2wgdGNwX29vd19yYXRlX2xpbWl0ZWQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xuK3ZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHRjcF9taWJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IDYxMDQ1YTg4ODZlNDg1Li5kYWZmOTNkNTEzNDI4NyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTQwMzgsMjQgKzQwMzgsMTcgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuIFx0X190Y3Bfc2VuZF9hY2soc2ssIHRwLVx1MDAzZXJjdl9ueHQsIGZsYWdzKTtcbiB9XG4gXG4tLyogUkZDIDU5NjEgNyBbQUNLIFRocm90dGxpbmddICovXG4tc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbisvKiBDb25zdW1lIG9uZSBzbG90IGZyb20gdGhlIHBlci1uZXRucyBSRkMgNTk2MSBjaGFsbGVuZ2UgQUNLIHF1b3RhLlxuKyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuXG4rICovXG4rc3RhdGljIGJvb2wgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuLVx0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG4gXHR1MzIgY291bnQsIG5vdywgYWNrX2xpbWl0O1xuIFxuLVx0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXG4tXHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4tXHRcdFx0XHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbi1cdFx0XHRcdCAgIFx1MDAyNnRwLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0YWNrX2xpbWl0ID0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3BfY2hhbGxlbmdlX2Fja19saW1pdCk7XG4gXHRpZiAoYWNrX2xpbWl0ID09IElOVF9NQVgpXG4tXHRcdGdvdG8gc2VuZF9hY2s7XG4rXHRcdHJldHVybiB0cnVlO1xuIFxuLVx0LyogVGhlbiBjaGVjayBob3N0LXdpZGUgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiBcdG5vdyA9IGppZmZpZXMgLyBIWjtcbiBcdGlmIChub3cgIT0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xuIFx0XHR1MzIgaGFsZiA9IChhY2tfbGltaXQgKyAxKSBcdTAwM2VcdTAwM2UgMTtcbkBAIC00MDY3LDEyICs0MDYwLDQ5IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4gXHRjb3VudCA9IFJFQURfT05DRShuZXQtXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50KTtcbiBcdGlmIChjb3VudCBcdTAwM2UgMCkge1xuIFx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfY291bnQsIGNvdW50IC0gMSk7XG4tc2VuZF9hY2s6XG4rXHRcdHJldHVybiB0cnVlO1xuK1x0fVxuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cbitzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuK3tcbitcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuK1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuK1xuK1x0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXG4rXHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4rXHRcdFx0XHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbitcdFx0XHRcdCAgIFx1MDAyNnRwLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0LyogVGhlbiBjaGVjayB0aGUgcGVyLW5ldG5zIFJGQyA1OTYxIHJhdGUgbGltaXQuICovXG4rXHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XG4gXHRcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcbiBcdFx0dGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHNrLCBhY2NlY25fcmVmbGVjdG9yKTtcbiBcdH1cbiB9XG4gXG4rLyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlc1xuKyAqIF9fdGNwX29vd19yYXRlX2xpbWl0ZWQoKSBkaXJlY3RseSBzbyB0aGF0IGFuIFJTVCBjYXJyeWluZyBwYXlsb2FkXG4rICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC5cbisgKi9cbit2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4re1xuK1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuK1xuK1x0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbitcdFx0XHRcdCAgIFx1MDAyNnRjcF9yc2socmVxKS1cdTAwM2VsYXN0X29vd19hY2tfdGltZSkpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkKG5ldCkpIHtcbitcdFx0TkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spO1xuK1x0XHRyZXEtXHUwMDNlcnNrX29wcy1cdTAwM2VzZW5kX2Fjayhzaywgc2tiLCByZXEpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdm9pZCB0Y3Bfc3RvcmVfdHNfcmVjZW50KHN0cnVjdCB0Y3Bfc29jayAqdHApXG4ge1xuIFx0dHAtXHUwMDNlcnhfb3B0LnRzX3JlY2VudCA9IHRwLVx1MDAzZXJ4X29wdC5yY3ZfdHN2YWw7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jIGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXG5pbmRleCBkZGM0YjE3YTgyNmI1Mi4uNmFiM2UzYTBiNDMxNzMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcbisrKyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuY1xuQEAgLTgzMyw3ICs4MzMsNyBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBlbHNld2hlcmUgYW5kIGlzIGNoZWNrZWQgZGlyZWN0bHkgYWdhaW5zdCB0aGUgY2hpbGQgc29ja2V0IHJhdGhlclxuIFx0ICogdGhhbiByZXEgYmVjYXVzZSB1c2VyIGRhdGEgbWF5IGhhdmUgYmVlbiBzZW50IG91dC5cbiBcdCAqL1xuLVx0aWYgKChmbGcgXHUwMDI2IFRDUF9GTEFHX0FDSykgXHUwMDI2XHUwMDI2ICFmYXN0b3BlbiBcdTAwMjZcdTAwMjZcbitcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19BQ0spIFx1MDAyNlx1MDAyNiAhKGZsZyBcdTAwMjYgVENQX0ZMQUdfUlNUKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSAhPVxuIFx0ICAgICB0Y3BfcnNrKHJlcSktXHUwMDNlc250X2lzbiArIDEpKVxuIFx0XHRyZXR1cm4gc2s7XG5AQCAtODcyLDYgKzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGZsZyBcdTAwMjY9IH5UQ1BfRkxBR19TWU47XG4gXHR9XG4gXG4rXHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cbitcdCAqIDMuMTAuNy40LCByZXF1aXJlcyBhIGNoYWxsZW5nZSBBQ0sgZm9yIGEgbm9uLWV4YWN0XG4rXHQgKiBpbi13aW5kb3cgUlNUIGluIFNZTi1SRUNFSVZFRC5cbitcdCAqL1xuK1x0aWYgKChmbGcgXHUwMDI2IFRDUF9GTEFHX1JTVCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSAhPSB0Y3BfcnNrKHJlcSktXHUwMDNlcmN2X254dCkge1xuK1x0XHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1xuIFx0LyogUkZDNzkzOiBcInNlY29uZCBjaGVjayB0aGUgUlNUIGJpdFwiIGFuZFxuIFx0ICpcdCAgIFwiZm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdFwiXG4gXHQgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNmYzJkZTAzNjU4YWYwXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxuQEAgLTAsMCArMSw2MSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLy9cbisvLyBSRkMgOTI5MyBTZWN0aW9uIDMuMTAuNy40OiBpbiBTWU4tUkVDRUlWRUQsIGFuIGV4YWN0IFJTVCByZXNldHNcbisvLyB0aGUgY29ubmVjdGlvbi4gIEEgbm9uLWV4YWN0IGluLXdpbmRvdyBSU1QgZWxpY2l0cyBhIGNoYWxsZW5nZSBBQ0ssXG4rLy8gd2hpbGUgYW4gb3V0LW9mLXdpbmRvdyBSU1QgaXMgc2lsZW50bHkgZGlzY2FyZGVkLlxuK1xuK2AuL2RlZmF1bHRzLnNoYFxuK1xuKy8vIEFuIGV4YWN0IFJTVCByZW1vdmVzIHRoZSByZXF1ZXN0IHNvY2tldC5cbisgICAwIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXG4rICArMCBcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXHUwMDNlXG4rICArMCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuKyAgKzAgXHUwMDNjIFIgMToxKDApIHdpbiAxMDAwXG4rICsuMSBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbisgICswIFx1MDAzZSBSIDE6MSgwKVxuKyAgKzAgY2xvc2UoMykgPSAwXG4rXG4rLy8gQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBnZXRzIGEgY2hhbGxlbmdlIEFDSyBhbmQgdGhlIHJlcXVlc3Qgc3Vydml2ZXMuXG4rICArMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcbisgICswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuKyAgKzAgbGlzdGVuKDMsIDEpID0gMFxuKyAgKzAgXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFx1MDAzZVxuKyAgKzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbisgICswIFx1MDAzYyBSIDI6MigwKSB3aW4gMTAwMFxuKyAgKzAgXHUwMDNlIC4gMToxKDApIGFjayAxXG4rICArMCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbisgICswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XG4rICArMCBjbG9zZSg0KSA9IDBcbisgICswIGNsb3NlKDMpID0gMFxuK1xuKy8vIFJTVCBzZXF1ZW5jZSB2YWxpZGF0aW9uIHByZWNlZGVzIEFDSyB2YWxpZGF0aW9uLiAgRXZlbiBhbiBSU1R8QUNLXG4rLy8gd2l0aCBhbiB1bmFjY2VwdGFibGUgQUNLIHZhbHVlIGdldHMgYSBjaGFsbGVuZ2UgQUNLLlxuKyAgKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xuKyAgKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcbisgICswIGxpc3RlbigzLCAxKSA9IDBcbisgICswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbisgICswIFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXHUwMDNjLi4uXHUwMDNlXG4rICArMCBcdTAwM2MgUi4gMjoyKDApIGFjayAxMDAgd2luIDEwMDBcbisgICswIFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxuKyAgKzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuKyAgKzAgY2xvc2UoNCkgPSAwXG4rICArMCBjbG9zZSgzKSA9IDBcbitcbisvLyBBbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnQgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgcmVxdWVzdC5cbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXG4rICArMCBcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXHUwMDNlXG4rICArMCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuKyAgKzAgXHUwMDNjIFIgMTAwMDAxOjEwMDAwMSgwKSB3aW4gMTAwMFxuKyArLjEgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuKyAgKzAgY2xvc2UoNCkgPSAwXG4rICArMCBjbG9zZSgzKSA9IDBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjMxLjQ5MTI4MzE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzIxNTI3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBLZXJuZWwgVENQIExvZ2ljOiBQYXRjaCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG8gcmV2aWV3LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIGl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgc3VtbWFyeSBzYXlzIGl0IG1vZGlmaWVzIGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0YC4gVGhhdCdzIGEgZGVjZW50IHNwcmVhZC4gUmVhZGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLCBpdCBsb29rcyBsaWtlIGl0J3MgaW1wYWN0aW5nIGNvcmUgVENQIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBSU1QgcGFja2V0cyBpbiB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UhIFdlIG5lZWQgdG8gZnV6eiB0aGlzLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldC4gQmFzZWQgb24gdGhlIGNoYW5nZXMsIGl0IGxvb2tzIGxpa2UgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgLCBgdGNwX2NoZWNrX3JlcWAsIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAgYXJlIHRoZSBwcmltYXJ5IGNhbmRpZGF0ZXMuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgYW5kIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGNvcmUgVENQL0lQdjQgY29kZS4gVHlwaWNhbGx5LCB0aGF0IG1lYW5zIGBDT05GSUdfSU5FVGAgaXMgc3VmZmljaWVudC4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIEtjb25maWcgZmlsZXMsIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWFsIG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBmZWF0dXJlLiBgQ09ORklHX0lORVRgIGlzIHRoZSBicm9hZGVzdCwgYW5kIHRoZSBtb3JlIHNwZWNpZmljIGBDT05GSUdfVENQX0NPTkdfQ1VCSUNgIGlzIHVucmVsYXRlZC5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGlzIHdpdGggdGhlIHRvb2xzLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6aW5nIGNhbXBhaWduIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6MzguNDIzNDM5MTY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Njg1MTYzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC90Y3AuaD0xOTc1PWJvb2wgdGNwX29vd19yYXRlX2xpbWl0ZWQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTE5NzYtXFx0XFx0XFx0ICBpbnQgbWliX2lkeCwgdTMyICpsYXN0X29vd19hY2tfdGltZSk7XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTk3Nzp2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTE5NzgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9NDA2OT1zdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5MC0gKi9cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0MDkxOnZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz02ODc9c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTg4MC1cXHQgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgIT0gdGNwX3JzayhyZXEpLVxcdTAwM2VyY3Zfbnh0KSB7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjg4MTpcXHRcXHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTg4Mi1cXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6NDQuODkxOTY1MzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNDUwNzM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvZGUncyBSZWFjaGFiaWxpdHkgYW5kIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGUgY29kZSBJJ20gbG9va2luZyBhdCBpcyBib3RoIHJlYWNoYWJsZSBhbmQgd29ya2luZyBhcyBleHBlY3RlZC4gTm93LCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc3ltYm9scyBmb3IgdGhpcyBzcGVjaWZpYyBhbmFseXNpcy4gTGV0J3Mgc2VlLi4uIEknbGwgZm9jdXMgb24gdGhlc2U6IGB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrYCwgYW5kIGB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkYC4gV2hpbGUgYHRjcF9jaGVja19yZXFgIGhhcyBzZWVuIHNvbWUgbW9kaWZpY2F0aW9ucywgaXQncyBwb3RlbnRpYWxseSB0b28gYnJvYWQgZm9yIHRoZSBpbW1lZGlhdGUgc2NvcGUgb2YgbXkgaW52ZXN0aWdhdGlvbi4gVGhvc2UgZmlyc3QgdHdvIHNlZW0gZmFyIG1vcmUgdGFyZ2V0ZWQgYW5kIHBlcnRpbmVudC5cblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9uIG9mIGB0Y3BfY2hlY2tfcmVxYCBpbiBgbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jYCB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gdGhlc2Uga2V5IGZ1bmN0aW9ucy4gSSdsbCByZXZpZXcgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAwNSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjo0OC40MTY0NzcyMjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDY5NjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfY2hlY2tfcmVxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTQ3Nj1lbnVtIHRjcF90d19zdGF0dXMgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC00ODAtXFx0XFx0XFx0XFx0XFx0ICAgICAgZW51bSBza2JfZHJvcF9yZWFzb24gKmRyb3BfcmVhc29uKTtcXG5pbmNsdWRlL25ldC90Y3AuaDo0ODE6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4Mi1cXHRcXHRcXHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgZmFzdG9wZW4sXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjE4LVxcdFxcdFNLQl9EUl9TRVQocmVhc29uLCBUQ1BfRkFTVE9QRU4pO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcyMTk6XFx0XFx0aWYgKCF0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgdHJ1ZSwgXFx1MDAyNnJlcV9zdG9sZW4sIFxcdTAwMjZyZWFzb24pKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMjAtXFx0XFx0XFx0Z290byBkaXNjYXJkO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxNjItXFx0XFx0XFx0dGNwX3Y0X2ZpbGxfY2Ioc2tiLCBpcGgsIHRoKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxNjM6XFx0XFx0XFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcXHUwMDI2cmVxX3N0b2xlbixcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxNjQtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkcm9wX3JlYXNvbik7XFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4Ni1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6Njg3OnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjg4LVxcdFxcdFxcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTcyOD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODE5LVxcdFxcdFxcdHRjcF92Nl9maWxsX2NiKHNrYiwgaGRyLCB0aCk7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxODIwOlxcdFxcdFxcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXFx1MDAyNnJlcV9zdG9sZW4sXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODIxLVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZHJvcF9yZWFzb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjo1Mi43MTExODQ4MjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzk5Nzg2Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIENoYWxsZW5nZSBBQ0sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIGB0Y3BfY2hlY2tfcmVxYCBnZXRzIGNhbGxlZCBmcm9tIGJvdGggYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgd2hlbiBkZWFsaW5nIHdpdGggU1lOLVJFQ0VJVkVEIHN0YXRlLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCByZXF1ZXN0IHNvY2tldHMuIEl0IHNlZW1zIHJlbGF0aXZlbHkgYWN0aXZlLCB0aG91Z2ggbm90IGFzIGludGVuc2UgYXMgYHRjcF92NF9yY3ZgIGl0c2VsZi5cblxuVGhlIGtleSBwbGF5ZXJzIGhlcmUgYXJlIGRlZmluaXRlbHkgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFRob3NlIGFyZSBzeW1ib2xzIEkgc2hvdWxkIHJlYWxseSBmb2N1cyBvbi4gSSdsbCBtYWtlIGEgbm90ZSBvZiB0aG9zZS5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBIbW0sIGp1c3QgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vIHNwZWNpYWxpemVkIHNldHRpbmdzIG5lZWRlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIEl0J3MgY2xlYW4uXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGNvcmUgVENQIGJlaGF2aW9yLiBJdCdzIGFib3V0IHNlbmRpbmcgY2hhbGxlbmdlIEFDS3MgaW4gU1lOLVJFQ0VJVkVEIGZvciBSU1QgcGFja2V0cyB0aGF0IGRvbid0IHBlcmZlY3RseSBhbGlnbiB3aXRoIHRoZSB3aW5kb3cuIEJhc2ljYWxseSwgaXQncyBpbXBsZW1lbnRpbmcgUkZDIDU5NjEuIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LlxuXG5JJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTYsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjU4LjExMDk3NDQ3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja1wiLFxuICAgIFwidGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZFwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVENQIGxvZ2ljIHRvIHNlbmQgY2hhbGxlbmdlIEFDS3MgZm9yIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUcyBpbiBTWU4tUkVDRUlWRUQgc3RhdGUsIGltcGxlbWVudGluZyBSRkMgNTk2MS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjcsg2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 10:03:28 +0000 UTC FinishedAt: 2026-07-17 10:17:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "series_id": "0f9054db-98de-4fee-a654-219c204b5c32" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tcp_reqsk_send_challenge_ack", "tcp_challenge_ack_allowed", "tcp_check_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlYmI5ZTZjNzI5MWJkNmI1MGU3YTMzN2NkOWU3Y2UyNTMxZTRkOTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTA6MTY6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTk3NCw2ICYjNDM7MTk3NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZmFzdF9wYXRoX2NoZWNrKHN0cnVjdCBzb2NrICpzaylcbiBcbiBib29sIHRjcF9vb3dfcmF0ZV9saW1pdGVkKHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgIGludCBtaWJfaWR4LCB1MzIgKmxhc3Rfb293X2Fja190aW1lKTtcbiYjNDM7dm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHRjcF9taWJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IDYxMDQ1YTg4ODZlNDg1Li5kYWZmOTNkNTEzNDI4NyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTQwMzgsMjQgJiM0Mzs0MDM4LDE3IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbiBcdF9fdGNwX3NlbmRfYWNrKHNrLCB0cC1cdTAwM2VyY3Zfbnh0LCBmbGFncyk7XG4gfVxuIFxuLS8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqL1xuLXN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4mIzQzOy8qIENvbnN1bWUgb25lIHNsb3QgZnJvbSB0aGUgcGVyLW5ldG5zIFJGQyA1OTYxIGNoYWxsZW5nZSBBQ0sgcXVvdGEuXG4mIzQzOyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkKHN0cnVjdCBuZXQgKm5ldClcbiB7XG4tXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbi1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiBcdHUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7XG4gXG4tXHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cbi1cdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCxcbi1cdFx0XHRcdCAgIExJTlVYX01JQl9UQ1BBQ0tTS0lQUEVEQ0hBTExFTkdFLFxuLVx0XHRcdFx0ICAgXHUwMDI2dHAtXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRhY2tfbGltaXQgPSBSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9jaGFsbGVuZ2VfYWNrX2xpbWl0KTtcbiBcdGlmIChhY2tfbGltaXQgPT0gSU5UX01BWClcbi1cdFx0Z290byBzZW5kX2FjaztcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuIFxuLVx0LyogVGhlbiBjaGVjayBob3N0LXdpZGUgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiBcdG5vdyA9IGppZmZpZXMgLyBIWjtcbiBcdGlmIChub3cgIT0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xuIFx0XHR1MzIgaGFsZiA9IChhY2tfbGltaXQgJiM0MzsgMSkgXHUwMDNlXHUwMDNlIDE7XG5AQCAtNDA2NywxMiAmIzQzOzQwNjAsNDkgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbiBcdGNvdW50ID0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfY291bnQpO1xuIFx0aWYgKGNvdW50IFx1MDAzZSAwKSB7XG4gXHRcdFdSSVRFX09OQ0UobmV0LVx1MDAzZWlwdjQudGNwX2NoYWxsZW5nZV9jb3VudCwgY291bnQgLSAxKTtcbi1zZW5kX2FjazpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqL1xuJiM0MztzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG4mIzQzO1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuJiM0MztcbiYjNDM7XHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cbiYjNDM7XHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4mIzQzO1x0XHRcdFx0ICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2dHAtXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiYjNDM7XHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XG4gXHRcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcbiBcdFx0dGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHNrLCBhY2NlY25fcmVmbGVjdG9yKTtcbiBcdH1cbiB9XG4gXG4mIzQzOy8qIFNlbmQgYSBjaGFsbGVuZ2UgQUNLIGZyb20gYSBTWU4tUkVDRUlWRUQgcmVxdWVzdCBzb2NrZXQuIFVzZXNcbiYjNDM7ICogX190Y3Bfb293X3JhdGVfbGltaXRlZCgpIGRpcmVjdGx5IHNvIHRoYXQgYW4gUlNUIGNhcnJ5aW5nIHBheWxvYWRcbiYjNDM7ICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG4mIzQzO1xuJiM0MztcdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCwgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXG4mIzQzO1x0XHRcdFx0ICAgXHUwMDI2dGNwX3JzayhyZXEpLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0aWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkge1xuJiM0MztcdFx0TkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spO1xuJiM0MztcdFx0cmVxLVx1MDAzZXJza19vcHMtXHUwMDNlc2VuZF9hY2soc2ssIHNrYiwgcmVxKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgdGNwX3N0b3JlX3RzX3JlY2VudChzdHJ1Y3QgdGNwX3NvY2sgKnRwKVxuIHtcbiBcdHRwLVx1MDAzZXJ4X29wdC50c19yZWNlbnQgPSB0cC1cdTAwM2VyeF9vcHQucmN2X3RzdmFsO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9taW5pc29ja3MuYyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuY1xuaW5kZXggZGRjNGIxN2E4MjZiNTIuLjZhYjNlM2EwYjQzMTczIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcbkBAIC04MzMsNyAmIzQzOzgzMyw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdCAqIGVsc2V3aGVyZSBhbmQgaXMgY2hlY2tlZCBkaXJlY3RseSBhZ2FpbnN0IHRoZSBjaGlsZCBzb2NrZXQgcmF0aGVyXG4gXHQgKiB0aGFuIHJlcSBiZWNhdXNlIHVzZXIgZGF0YSBtYXkgaGF2ZSBiZWVuIHNlbnQgb3V0LlxuIFx0ICovXG4tXHRpZiAoKGZsZyBcdTAwMjYgVENQX0ZMQUdfQUNLKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19BQ0spIFx1MDAyNlx1MDAyNiAhKGZsZyBcdTAwMjYgVENQX0ZMQUdfUlNUKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSAhPVxuIFx0ICAgICB0Y3BfcnNrKHJlcSktXHUwMDNlc250X2lzbiAmIzQzOyAxKSlcbiBcdFx0cmV0dXJuIHNrO1xuQEAgLTg3Miw2ICYjNDM7ODcyLDE2IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0ZmxnIFx1MDAyNj0gflRDUF9GTEFHX1NZTjtcbiBcdH1cbiBcbiYjNDM7XHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cbiYjNDM7XHQgKiAzLjEwLjcuNCwgcmVxdWlyZXMgYSBjaGFsbGVuZ2UgQUNLIGZvciBhIG5vbi1leGFjdFxuJiM0MztcdCAqIGluLXdpbmRvdyBSU1QgaW4gU1lOLVJFQ0VJVkVELlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19SU1QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxICE9IHRjcF9yc2socmVxKS1cdTAwM2VyY3Zfbnh0KSB7XG4mIzQzO1x0XHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogUkZDNzkzOiBcJiMzNDtzZWNvbmQgY2hlY2sgdGhlIFJTVCBiaXRcJiMzNDsgYW5kXG4gXHQgKlx0ICAgXCYjMzQ7Zm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdFwmIzM0O1xuIFx0ICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zZmMyZGUwMzY1OGFmMFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3RcbkBAIC0wLDAgJiM0MzsxLDYxIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8vXG4mIzQzOy8vIFJGQyA5MjkzIFNlY3Rpb24gMy4xMC43LjQ6IGluIFNZTi1SRUNFSVZFRCwgYW4gZXhhY3QgUlNUIHJlc2V0c1xuJiM0MzsvLyB0aGUgY29ubmVjdGlvbi4gIEEgbm9uLWV4YWN0IGluLXdpbmRvdyBSU1QgZWxpY2l0cyBhIGNoYWxsZW5nZSBBQ0ssXG4mIzQzOy8vIHdoaWxlIGFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudGx5IGRpc2NhcmRlZC5cbiYjNDM7XG4mIzQzO2AuL2RlZmF1bHRzLnNoYFxuJiM0MztcbiYjNDM7Ly8gQW4gZXhhY3QgUlNUIHJlbW92ZXMgdGhlIHJlcXVlc3Qgc29ja2V0LlxuJiM0MzsgICAwIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIgMToxKDApIHdpbiAxMDAwXG4mIzQzOyAmIzQzOy4xIFx1MDAzYyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMFxuJiM0MzsgICYjNDM7MCBcdTAwM2UgUiAxOjEoMClcbiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwXG4mIzQzO1xuJiM0MzsvLyBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGdldHMgYSBjaGFsbGVuZ2UgQUNLIGFuZCB0aGUgcmVxdWVzdCBzdXJ2aXZlcy5cbiYjNDM7ICAmIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xuJiM0MzsgICYjNDM7MCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcbiYjNDM7ICAmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4mIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDBcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFx1MDAzZVxuJiM0MzsgICYjNDM7MCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuJiM0MzsgICYjNDM7MCBcdTAwM2MgUiAyOjIoMCkgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIC4gMToxKDApIGFjayAxXG4mIzQzOyAgJiM0MzswIFx1MDAzYyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMFxuJiM0MzsgICYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuJiM0MzsgICYjNDM7MCBjbG9zZSg0KSA9IDBcbiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwXG4mIzQzO1xuJiM0MzsvLyBSU1Qgc2VxdWVuY2UgdmFsaWRhdGlvbiBwcmVjZWRlcyBBQ0sgdmFsaWRhdGlvbi4gIEV2ZW4gYW4gUlNUfEFDS1xuJiM0MzsvLyB3aXRoIGFuIHVuYWNjZXB0YWJsZSBBQ0sgdmFsdWUgZ2V0cyBhIGNoYWxsZW5nZSBBQ0suXG4mIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIuIDI6MigwKSBhY2sgMTAwIHdpbiAxMDAwXG4mIzQzOyAgJiM0MzswIFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxuJiM0MzsgICYjNDM7MCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwXG4mIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMFxuJiM0MztcbiYjNDM7Ly8gQW4gb3V0LW9mLXdpbmRvdyBSU1QgaXMgc2lsZW50IGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIHJlcXVlc3QuXG4mIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4mIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwXG4mIzQzOyAgJiM0MzswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbiYjNDM7ICAmIzQzOzAgXHUwMDNjIFIgMTAwMDAxOjEwMDAwMSgwKSB3aW4gMTAwMFxuJiM0MzsgJiM0MzsuMSBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcbiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwXG4mIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGViYjllNmM3MjkxYmQ2YjUwZTdhMzM3Y2Q5ZTdjZTI1MzFlNGQ5NjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAxMDoxNjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmgKaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC90Y3AuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC90Y3AuaApAQCAtMTk3NCw2ICYjNDM7MTk3NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfZmFzdF9wYXRoX2NoZWNrKHN0cnVjdCBzb2NrICpzaykKIAogYm9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgIGludCBtaWJfaWR4LCB1MzIgKmxhc3Rfb293X2Fja190aW1lKTsKJiM0Mzt2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB0Y3BfbWliX2luaXQoc3RydWN0IG5ldCAqbmV0KQogewpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCA2MTA0NWE4ODg2ZTQ4NS4uZGFmZjkzZDUxMzQyODcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC00MDM4LDI0ICYjNDM7NDAzOCwxNyBAQCBzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9hY2tfcmVmbGVjdF9lY3Qoc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpCiAJX190Y3Bfc2VuZF9hY2soc2ssIHRwLSZndDtyY3Zfbnh0LCBmbGFncyk7CiB9CiAKLS8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqLwotc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcikKJiM0MzsvKiBDb25zdW1lIG9uZSBzbG90IGZyb20gdGhlIHBlci1uZXRucyBSRkMgNTk2MSBjaGFsbGVuZ2UgQUNLIHF1b3RhLgomIzQzOyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuCiYjNDM7ICovCiYjNDM7c3RhdGljIGJvb2wgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChzdHJ1Y3QgbmV0ICpuZXQpCiB7Ci0Jc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7Ci0Jc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spOwogCXUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7CiAKLQkvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi8KLQlpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsCi0JCQkJICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsCi0JCQkJICAgJmFtcDt0cC0mZ3Q7bGFzdF9vb3dfYWNrX3RpbWUpKQotCQlyZXR1cm47Ci0KIAlhY2tfbGltaXQgPSBSRUFEX09OQ0UobmV0LSZndDtpcHY0LnN5c2N0bF90Y3BfY2hhbGxlbmdlX2Fja19saW1pdCk7CiAJaWYgKGFja19saW1pdCA9PSBJTlRfTUFYKQotCQlnb3RvIHNlbmRfYWNrOwomIzQzOwkJcmV0dXJuIHRydWU7CiAKLQkvKiBUaGVuIGNoZWNrIGhvc3Qtd2lkZSBSRkMgNTk2MSByYXRlIGxpbWl0LiAqLwogCW5vdyA9IGppZmZpZXMgLyBIWjsKIAlpZiAobm93ICE9IFJFQURfT05DRShuZXQtJmd0O2lwdjQudGNwX2NoYWxsZW5nZV90aW1lc3RhbXApKSB7CiAJCXUzMiBoYWxmID0gKGFja19saW1pdCAmIzQzOyAxKSAmZ3Q7Jmd0OyAxOwpAQCAtNDA2NywxMiAmIzQzOzQwNjAsNDkgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcikKIAljb3VudCA9IFJFQURfT05DRShuZXQtJmd0O2lwdjQudGNwX2NoYWxsZW5nZV9jb3VudCk7CiAJaWYgKGNvdW50ICZndDsgMCkgewogCQlXUklURV9PTkNFKG5ldC0mZ3Q7aXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50LCBjb3VudCAtIDEpOwotc2VuZF9hY2s6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJfQomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOwomIzQzOy8qIFJGQyA1OTYxIDcgW0FDSyBUaHJvdHRsaW5nXSAqLwomIzQzO3N0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKJiM0MzsJc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spOwomIzQzOwomIzQzOwkvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi8KJiM0MzsJaWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LAomIzQzOwkJCQkgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSwKJiM0MzsJCQkJICAgJmFtcDt0cC0mZ3Q7bGFzdF9vb3dfYWNrX3RpbWUpKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwkvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi8KJiM0MzsJaWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkgewogCQlORVRfSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1RDUENIQUxMRU5HRUFDSyk7CiAJCXRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzaywgYWNjZWNuX3JlZmxlY3Rvcik7CiAJfQogfQogCiYjNDM7LyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlcwomIzQzOyAqIF9fdGNwX29vd19yYXRlX2xpbWl0ZWQoKSBkaXJlY3RseSBzbyB0aGF0IGFuIFJTVCBjYXJyeWluZyBwYXlsb2FkCiYjNDM7ICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC4KJiM0MzsgKi8KJiM0Mzt2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTsKJiM0MzsKJiM0MzsJaWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSwKJiM0MzsJCQkJICAgJmFtcDt0Y3BfcnNrKHJlcSktJmd0O2xhc3Rfb293X2Fja190aW1lKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkgewomIzQzOwkJTkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spOwomIzQzOwkJcmVxLSZndDtyc2tfb3BzLSZndDtzZW5kX2Fjayhzaywgc2tiLCByZXEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgdGNwX3N0b3JlX3RzX3JlY2VudChzdHJ1Y3QgdGNwX3NvY2sgKnRwKQogewogCXRwLSZndDtyeF9vcHQudHNfcmVjZW50ID0gdHAtJmd0O3J4X29wdC5yY3ZfdHN2YWw7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKaW5kZXggZGRjNGIxN2E4MjZiNTIuLjZhYjNlM2EwYjQzMTczIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCkBAIC04MzMsNyAmIzQzOzgzMyw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKiBlbHNld2hlcmUgYW5kIGlzIGNoZWNrZWQgZGlyZWN0bHkgYWdhaW5zdCB0aGUgY2hpbGQgc29ja2V0IHJhdGhlcgogCSAqIHRoYW4gcmVxIGJlY2F1c2UgdXNlciBkYXRhIG1heSBoYXZlIGJlZW4gc2VudCBvdXQuCiAJICovCi0JaWYgKChmbGcgJmFtcDsgVENQX0ZMQUdfQUNLKSAmYW1wOyZhbXA7ICFmYXN0b3BlbiAmYW1wOyZhbXA7CiYjNDM7CWlmICgoZmxnICZhbXA7IFRDUF9GTEFHX0FDSykgJmFtcDsmYW1wOyAhKGZsZyAmYW1wOyBUQ1BfRkxBR19SU1QpICZhbXA7JmFtcDsgIWZhc3RvcGVuICZhbXA7JmFtcDsKIAkgICAgKFRDUF9TS0JfQ0Ioc2tiKS0mZ3Q7YWNrX3NlcSAhPQogCSAgICAgdGNwX3JzayhyZXEpLSZndDtzbnRfaXNuICYjNDM7IDEpKQogCQlyZXR1cm4gc2s7CkBAIC04NzIsNiAmIzQzOzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCWZsZyAmYW1wOz0gflRDUF9GTEFHX1NZTjsKIAl9CiAKJiM0MzsJLyogUkZDIDU5NjEgc2VjdGlvbiAzLjIsIGFzIGNsYXJpZmllZCBieSBSRkMgOTI5MyBzZWN0aW9uCiYjNDM7CSAqIDMuMTAuNy40LCByZXF1aXJlcyBhIGNoYWxsZW5nZSBBQ0sgZm9yIGEgbm9uLWV4YWN0CiYjNDM7CSAqIGluLXdpbmRvdyBSU1QgaW4gU1lOLVJFQ0VJVkVELgomIzQzOwkgKi8KJiM0MzsJaWYgKChmbGcgJmFtcDsgVENQX0ZMQUdfUlNUKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBUQ1BfU0tCX0NCKHNrYiktJmd0O3NlcSAhPSB0Y3BfcnNrKHJlcSktJmd0O3Jjdl9ueHQpIHsKJiM0MzsJCXRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc2ssIHNrYiwgcmVxKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiAJLyogUkZDNzkzOiAmIzM0O3NlY29uZCBjaGVjayB0aGUgUlNUIGJpdCYjMzQ7IGFuZAogCSAqCSAgICYjMzQ7Zm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdCYjMzQ7CiAJICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zZmMyZGUwMzY1OGFmMAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0CkBAIC0wLDAgJiM0MzsxLDYxIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvLwomIzQzOy8vIFJGQyA5MjkzIFNlY3Rpb24gMy4xMC43LjQ6IGluIFNZTi1SRUNFSVZFRCwgYW4gZXhhY3QgUlNUIHJlc2V0cwomIzQzOy8vIHRoZSBjb25uZWN0aW9uLiAgQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBlbGljaXRzIGEgY2hhbGxlbmdlIEFDSywKJiM0MzsvLyB3aGlsZSBhbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnRseSBkaXNjYXJkZWQuCiYjNDM7CiYjNDM7YC4vZGVmYXVsdHMuc2hgCiYjNDM7CiYjNDM7Ly8gQW4gZXhhY3QgUlNUIHJlbW92ZXMgdGhlIHJlcXVlc3Qgc29ja2V0LgomIzQzOyAgIDAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gMwomIzQzOyAgJiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDAKJiM0MzsgICYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiAxMDAwICZsdDttc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDAmZ3Q7CiYjNDM7ICAmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsgICYjNDM7MCAmbHQ7IFIgMToxKDApIHdpbiAxMDAwCiYjNDM7ICYjNDM7LjEgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMAomIzQzOyAgJiM0MzswICZndDsgUiAxOjEoMCkKJiM0MzsgICYjNDM7MCBjbG9zZSgzKSA9IDAKJiM0MzsKJiM0MzsvLyBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGdldHMgYSBjaGFsbGVuZ2UgQUNLIGFuZCB0aGUgcmVxdWVzdCBzdXJ2aXZlcy4KJiM0MzsgICYjNDM7MCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzCiYjNDM7ICAmIzQzOzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwCiYjNDM7ICAmIzQzOzAgYmluZCgzLCAuLi4sIC4uLikgPSAwCiYjNDM7ICAmIzQzOzAgbGlzdGVuKDMsIDEpID0gMAomIzQzOyAgJiM0MzswICZsdDsgUyAwOjAoMCkgd2luIDEwMDAgJmx0O21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMCZndDsKJiM0MzsgICYjNDM7MCAmZ3Q7IFMuIDA6MCgwKSBhY2sgMSAmbHQ7Li4uJmd0OwomIzQzOyAgJiM0MzswICZsdDsgUiAyOjIoMCkgd2luIDEwMDAKJiM0MzsgICYjNDM7MCAmZ3Q7IC4gMToxKDApIGFjayAxCiYjNDM7ICAmIzQzOzAgJmx0OyAuIDE6MSgwKSBhY2sgMSB3aW4gMTAwMAomIzQzOyAgJiM0MzswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0CiYjNDM7ICAmIzQzOzAgY2xvc2UoNCkgPSAwCiYjNDM7ICAmIzQzOzAgY2xvc2UoMykgPSAwCiYjNDM7CiYjNDM7Ly8gUlNUIHNlcXVlbmNlIHZhbGlkYXRpb24gcHJlY2VkZXMgQUNLIHZhbGlkYXRpb24uICBFdmVuIGFuIFJTVHxBQ0sKJiM0MzsvLyB3aXRoIGFuIHVuYWNjZXB0YWJsZSBBQ0sgdmFsdWUgZ2V0cyBhIGNoYWxsZW5nZSBBQ0suCiYjNDM7ICAmIzQzOzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gMwomIzQzOyAgJiM0MzswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMAomIzQzOyAgJiM0MzswIGJpbmQoMywgLi4uLCAuLi4pID0gMAomIzQzOyAgJiM0MzswIGxpc3RlbigzLCAxKSA9IDAKJiM0MzsgICYjNDM7MCAmbHQ7IFMgMDowKDApIHdpbiAxMDAwICZsdDttc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDAmZ3Q7CiYjNDM7ICAmIzQzOzAgJmd0OyBTLiAwOjAoMCkgYWNrIDEgJmx0Oy4uLiZndDsKJiM0MzsgICYjNDM7MCAmbHQ7IFIuIDI6MigwKSBhY2sgMTAwIHdpbiAxMDAwCiYjNDM7ICAmIzQzOzAgJmd0OyAuIDE6MSgwKSBhY2sgMQomIzQzOyAgJiM0MzswICZsdDsgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDAKJiM0MzsgICYjNDM7MCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNAomIzQzOyAgJiM0MzswIGNsb3NlKDQpID0gMAomIzQzOyAgJiM0MzswIGNsb3NlKDMpID0gMAomIzQzOwomIzQzOy8vIEFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudCBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSByZXF1ZXN0LgomIzQzOyAgJiM0MzswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDMKJiM0MzsgICYjNDM7MCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDAKJiM0MzsgICYjNDM7MCBiaW5kKDMsIC4uLiwgLi4uKSA9IDAKJiM0MzsgICYjNDM7MCBsaXN0ZW4oMywgMSkgPSAwCiYjNDM7ICAmIzQzOzAgJmx0OyBTIDA6MCgwKSB3aW4gMTAwMCAmbHQ7bXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwJmd0OwomIzQzOyAgJiM0MzswICZndDsgUy4gMDowKDApIGFjayAxICZsdDsuLi4mZ3Q7CiYjNDM7ICAmIzQzOzAgJmx0OyBSIDEwMDAwMToxMDAwMDEoMCkgd2luIDEwMDAKJiM0MzsgJiM0MzsuMSAmbHQ7IC4gMToxKDApIGFjayAxIHdpbiAxMDAwCiYjNDM7ICAmIzQzOzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDQKJiM0MzsgICYjNDM7MCBjbG9zZSg0KSA9IDAKJiM0MzsgICYjNDM7MCBjbG9zZSgzKSA9IDAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MwoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEtlcm5lbCBUQ1AgTG9naWM6IFBhdGNoIEV2YWx1YXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2hldGhlciBpdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIHN1bW1hcnkgc2F5cyBpdCBtb2RpZmllcyBgaW5jbHVkZS9uZXQvdGNwLmhgLCBgbmV0L2lwdjQvdGNwX2lucHV0LmNgLCBgbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdGAuIFRoYXQmIzM5O3MgYSBkZWNlbnQgc3ByZWFkLiBSZWFkaW5nIHRocm91Z2ggdGhlIGRldGFpbHMsIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW1wYWN0aW5nIGNvcmUgVENQIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBSU1QgcGFja2V0cyBpbiB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UhIFdlIG5lZWQgdG8gZnV6eiB0aGlzLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBCYXNlZCBvbiB0aGUgY2hhbmdlcywgaXQgbG9va3MgbGlrZSBgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja2AsIGB0Y3BfY2hlY2tfcmVxYCwgYW5kIGB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkYCBhcmUgdGhlIHByaW1hcnkgY2FuZGlkYXRlcy4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgYW5kIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGNvcmUgVENQL0lQdjQgY29kZS4gVHlwaWNhbGx5LCB0aGF0IG1lYW5zIGBDT05GSUdfSU5FVGAgaXMgc3VmZmljaWVudC4gTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGVzLCBJIGRvbiYjMzk7dCBzZWUgYW55IHNwZWNpYWwgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIGZlYXR1cmUuIGBDT05GSUdfSU5FVGAgaXMgdGhlIGJyb2FkZXN0LCBhbmQgdGhlIG1vcmUgc3BlY2lmaWMgYENPTkZJR19UQ1BfQ09OR19DVUJJQ2AgaXMgdW5yZWxhdGVkLgoKQWxyaWdodCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhpcyB3aXRoIHRoZSB0b29scy4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZnV6emluZyBjYW1wYWlnbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3RjcC5oPTE5NzU9Ym9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL25ldC90Y3AuaC0xOTc2LVx0XHRcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xuaW5jbHVkZS9uZXQvdGNwLmg6MTk3Nzp2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9uZXQvdGNwLmgtMTk3OC1cdFx0XHRcdCAgc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxKTtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz00MDY5PXN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5MC0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjQwOTE6dm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQwOTItXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9Njg3PXN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtODgwLVx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgIT0gdGNwX3JzayhyZXEpLVx1MDAzZXJjdl9ueHQpIHtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo4ODE6XHRcdHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc2ssIHNrYiwgcmVxKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy04ODItXHRcdHJldHVybiBOVUxMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlJiMzOTtzIFJlYWNoYWJpbGl0eSBhbmQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBjb25maWRlbnQgdGhlIGNvZGUgSSYjMzk7bSBsb29raW5nIGF0IGlzIGJvdGggcmVhY2hhYmxlIGFuZCB3b3JraW5nIGFzIGV4cGVjdGVkLiBOb3csIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBzeW1ib2xzIGZvciB0aGlzIHNwZWNpZmljIGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZXNlOiBgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja2AsIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFdoaWxlIGB0Y3BfY2hlY2tfcmVxYCBoYXMgc2VlbiBzb21lIG1vZGlmaWNhdGlvbnMsIGl0JiMzOTtzIHBvdGVudGlhbGx5IHRvbyBicm9hZCBmb3IgdGhlIGltbWVkaWF0ZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLiBUaG9zZSBmaXJzdCB0d28gc2VlbSBmYXIgbW9yZSB0YXJnZXRlZCBhbmQgcGVydGluZW50LgoKUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZGVmaW5pdGlvbiBvZiBgdGNwX2NoZWNrX3JlcWAgaW4gYG5ldC9pcHY0L3RjcF9taW5pc29ja3MuY2AgdG8gc2VlIGhvdyBpdCBtaWdodCBiZSByZWxhdGVkIHRvIHRoZXNlIGtleSBmdW5jdGlvbnMuIEkmIzM5O2xsIHJldmlldyBpdHMgaW50ZXJhY3Rpb25zIHdpdGggdGhvc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9jaGVja19yZXEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdGNwLmg9NDc2PWVudW0gdGNwX3R3X3N0YXR1cyB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dyxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC00ODAtXHRcdFx0XHRcdCAgICAgIGVudW0gc2tiX2Ryb3BfcmVhc29uICpkcm9wX3JlYXNvbik7XG5pbmNsdWRlL25ldC90Y3AuaDo0ODE6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9uZXQvdGNwLmgtNDgyLVx0XHRcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSwgYm9vbCBmYXN0b3Blbixcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIxOC1cdFx0U0tCX0RSX1NFVChyZWFzb24sIFRDUF9GQVNUT1BFTik7XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjE5Olx0XHRpZiAoIXRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCB0cnVlLCBcdTAwMjZyZXFfc3RvbGVuLCBcdTAwMjZyZWFzb24pKVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyMC1cdFx0XHRnb3RvIGRpc2NhcmQ7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTYyLVx0XHRcdHRjcF92NF9maWxsX2NiKHNrYiwgaXBoLCB0aCk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxNjM6XHRcdFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcdTAwMjZyZXFfc3RvbGVuLFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMTY0LVx0XHRcdFx0XHQgICAgXHUwMDI2ZHJvcF9yZWFzb24pO1xuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz01NDY9c3RydWN0IHNvY2sgKnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4Ni1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzo2ODc6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4OC1cdFx0XHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODE5LVx0XHRcdHRjcF92Nl9maWxsX2NiKHNrYiwgaGRyLCB0aCk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE4MjA6XHRcdFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcdTAwMjZyZXFfc3RvbGVuLFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODIxLVx0XHRcdFx0XHQgICAgXHUwMDI2ZHJvcF9yZWFzb24pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTYKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVENQIENoYWxsZW5nZSBBQ0sgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gRnJvbSB3aGF0IEkgY2FuIGdhdGhlciwgYHRjcF9jaGVja19yZXFgIGdldHMgY2FsbGVkIGZyb20gYm90aCBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCB3aGVuIGRlYWxpbmcgd2l0aCBTWU4tUkVDRUlWRUQgc3RhdGUsIHNwZWNpZmljYWxseSB0aHJvdWdoIHJlcXVlc3Qgc29ja2V0cy4gSXQgc2VlbXMgcmVsYXRpdmVseSBhY3RpdmUsIHRob3VnaCBub3QgYXMgaW50ZW5zZSBhcyBgdGNwX3Y0X3JjdmAgaXRzZWxmLgoKVGhlIGtleSBwbGF5ZXJzIGhlcmUgYXJlIGRlZmluaXRlbHkgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFRob3NlIGFyZSBzeW1ib2xzIEkgc2hvdWxkIHJlYWxseSBmb2N1cyBvbi4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgb2YgdGhvc2UuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBIbW0sIGp1c3QgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vIHNwZWNpYWxpemVkIHNldHRpbmdzIG5lZWRlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIEl0JiMzOTtzIGNsZWFuLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhYm91dCBtb2RpZnlpbmcgY29yZSBUQ1AgYmVoYXZpb3IuIEl0JiMzOTtzIGFib3V0IHNlbmRpbmcgY2hhbGxlbmdlIEFDS3MgaW4gU1lOLVJFQ0VJVkVEIGZvciBSU1QgcGFja2V0cyB0aGF0IGRvbiYjMzk7dCBwZXJmZWN0bHkgYWxpZ24gd2l0aCB0aGUgd2luZG93LiBCYXNpY2FsbHksIGl0JiMzOTtzIGltcGxlbWVudGluZyBSRkMgNTk2MS4gVGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZywgc28gaXQmIzM5O3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LgoKSSYjMzk7bSByZWFkeSB0byBwcm9jZWVkIHdpdGggdXNpbmcgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayYjMzQ7LAogICAgJiMzNDt0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkJiMzNDssCiAgICAmIzM0O3RjcF9jaGVja19yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjozMC41NjE0Nzc3NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU0OTU2Mzg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjMwLjU2MTQ4Njc5OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4NzYyNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWJiOWU2YzcyOTFiZDZiNTBlN2EzMzdjZDllN2NlMjUzMWU0ZDk2MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAxMDoxNjoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oXFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtMTk3NCw2ICsxOTc0LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHRjcF9mYXN0X3BhdGhfY2hlY2soc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gYm9vbCB0Y3Bfb293X3JhdGVfbGltaXRlZChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xcbit2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgdGNwX21pYl9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jXFxuaW5kZXggNjEwNDVhODg4NmU0ODUuLmRhZmY5M2Q1MTM0Mjg3IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG5AQCAtNDAzOCwyNCArNDAzOCwxNyBAQCBzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9hY2tfcmVmbGVjdF9lY3Qoc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXFxuIFxcdF9fdGNwX3NlbmRfYWNrKHNrLCB0cC1cXHUwMDNlcmN2X254dCwgZmxhZ3MpO1xcbiB9XFxuIFxcbi0vKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cXG4tc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcXG4rLyogQ29uc3VtZSBvbmUgc2xvdCBmcm9tIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgY2hhbGxlbmdlIEFDSyBxdW90YS5cXG4rICogUmV0dXJucyB0cnVlIGlmIGEgY2hhbGxlbmdlIEFDSyBtYXkgYmUgc2VudC5cXG4rICovXFxuK3N0YXRpYyBib29sIHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQoc3RydWN0IG5ldCAqbmV0KVxcbiB7XFxuLVxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbi1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIFxcdHUzMiBjb3VudCwgbm93LCBhY2tfbGltaXQ7XFxuIFxcbi1cXHQvKiBGaXJzdCBjaGVjayBvdXIgcGVyLXNvY2tldCBkdXBhY2sgcmF0ZSBsaW1pdC4gKi9cXG4tXFx0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LFxcbi1cXHRcXHRcXHRcXHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcXG4tXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRwLVxcdTAwM2VsYXN0X29vd19hY2tfdGltZSkpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuIFxcdGFja19saW1pdCA9IFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9jaGFsbGVuZ2VfYWNrX2xpbWl0KTtcXG4gXFx0aWYgKGFja19saW1pdCA9PSBJTlRfTUFYKVxcbi1cXHRcXHRnb3RvIHNlbmRfYWNrO1xcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuLVxcdC8qIFRoZW4gY2hlY2sgaG9zdC13aWRlIFJGQyA1OTYxIHJhdGUgbGltaXQuICovXFxuIFxcdG5vdyA9IGppZmZpZXMgLyBIWjtcXG4gXFx0aWYgKG5vdyAhPSBSRUFEX09OQ0UobmV0LVxcdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xcbiBcXHRcXHR1MzIgaGFsZiA9IChhY2tfbGltaXQgKyAxKSBcXHUwMDNlXFx1MDAzZSAxO1xcbkBAIC00MDY3LDEyICs0MDYwLDQ5IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXFxuIFxcdGNvdW50ID0gUkVBRF9PTkNFKG5ldC1cXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50KTtcXG4gXFx0aWYgKGNvdW50IFxcdTAwM2UgMCkge1xcbiBcXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50LCBjb3VudCAtIDEpO1xcbi1zZW5kX2FjazpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cXG4rc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcXG4re1xcbitcXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4rXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbitcXG4rXFx0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXFxuK1xcdGlmIChfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKG5ldCxcXG4rXFx0XFx0XFx0XFx0ICAgTElOVVhfTUlCX1RDUEFDS1NLSVBQRURDSEFMTEVOR0UsXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZ0cC1cXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHQvKiBUaGVuIGNoZWNrIHRoZSBwZXItbmV0bnMgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cXG4rXFx0aWYgKHRjcF9jaGFsbGVuZ2VfYWNrX2FsbG93ZWQobmV0KSkge1xcbiBcXHRcXHRORVRfSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1RDUENIQUxMRU5HRUFDSyk7XFxuIFxcdFxcdHRjcF9zZW5kX2Fja19yZWZsZWN0X2VjdChzaywgYWNjZWNuX3JlZmxlY3Rvcik7XFxuIFxcdH1cXG4gfVxcbiBcXG4rLyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlc1xcbisgKiBfX3RjcF9vb3dfcmF0ZV9saW1pdGVkKCkgZGlyZWN0bHkgc28gdGhhdCBhbiBSU1QgY2FycnlpbmcgcGF5bG9hZFxcbisgKiBjYW5ub3QgYnlwYXNzIHRoZSBwZXItcmVxdWVzdCByYXRlIGxpbWl0LlxcbisgKi9cXG4rdm9pZCB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4rXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXFxuK3tcXG4rXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xcbitcXG4rXFx0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcXG4rXFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRjcF9yc2socmVxKS1cXHUwMDNlbGFzdF9vb3dfYWNrX3RpbWUpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XFxuK1xcdFxcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcXG4rXFx0XFx0cmVxLVxcdTAwM2Vyc2tfb3BzLVxcdTAwM2VzZW5kX2Fjayhzaywgc2tiLCByZXEpO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHRjcF9zdG9yZV90c19yZWNlbnQoc3RydWN0IHRjcF9zb2NrICp0cClcXG4ge1xcbiBcXHR0cC1cXHUwMDNlcnhfb3B0LnRzX3JlY2VudCA9IHRwLVxcdTAwM2VyeF9vcHQucmN2X3RzdmFsO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcXG5pbmRleCBkZGM0YjE3YTgyNmI1Mi4uNmFiM2UzYTBiNDMxNzMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXFxuKysrIGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXFxuQEAgLTgzMyw3ICs4MzMsNyBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdCAqIGVsc2V3aGVyZSBhbmQgaXMgY2hlY2tlZCBkaXJlY3RseSBhZ2FpbnN0IHRoZSBjaGlsZCBzb2NrZXQgcmF0aGVyXFxuIFxcdCAqIHRoYW4gcmVxIGJlY2F1c2UgdXNlciBkYXRhIG1heSBoYXZlIGJlZW4gc2VudCBvdXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoKGZsZyBcXHUwMDI2IFRDUF9GTEFHX0FDSykgXFx1MDAyNlxcdTAwMjYgIWZhc3RvcGVuIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmICgoZmxnIFxcdTAwMjYgVENQX0ZMQUdfQUNLKSBcXHUwMDI2XFx1MDAyNiAhKGZsZyBcXHUwMDI2IFRDUF9GTEFHX1JTVCkgXFx1MDAyNlxcdTAwMjYgIWZhc3RvcGVuIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoVENQX1NLQl9DQihza2IpLVxcdTAwM2VhY2tfc2VxICE9XFxuIFxcdCAgICAgdGNwX3JzayhyZXEpLVxcdTAwM2VzbnRfaXNuICsgMSkpXFxuIFxcdFxcdHJldHVybiBzaztcXG5AQCAtODcyLDYgKzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGZsZyBcXHUwMDI2PSB+VENQX0ZMQUdfU1lOO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cXG4rXFx0ICogMy4xMC43LjQsIHJlcXVpcmVzIGEgY2hhbGxlbmdlIEFDSyBmb3IgYSBub24tZXhhY3RcXG4rXFx0ICogaW4td2luZG93IFJTVCBpbiBTWU4tUkVDRUlWRUQuXFxuK1xcdCAqL1xcbitcXHRpZiAoKGZsZyBcXHUwMDI2IFRDUF9GTEFHX1JTVCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxICE9IHRjcF9yc2socmVxKS1cXHUwMDNlcmN2X254dCkge1xcbitcXHRcXHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuK1xcbiBcXHQvKiBSRkM3OTM6IFxcXCJzZWNvbmQgY2hlY2sgdGhlIFJTVCBiaXRcXFwiIGFuZFxcbiBcXHQgKlxcdCAgIFxcXCJmb3VydGgsIGNoZWNrIHRoZSBTWU4gYml0XFxcIlxcbiBcXHQgKi9cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3BhY2tldGRyaWxsL3RjcF9yZmM1OTYxX3JzdC1zeW4tcmVjdi5wa3QgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNmYzJkZTAzNjU4YWYwXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0XFxuQEAgLTAsMCArMSw2MSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvL1xcbisvLyBSRkMgOTI5MyBTZWN0aW9uIDMuMTAuNy40OiBpbiBTWU4tUkVDRUlWRUQsIGFuIGV4YWN0IFJTVCByZXNldHNcXG4rLy8gdGhlIGNvbm5lY3Rpb24uICBBIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUIGVsaWNpdHMgYSBjaGFsbGVuZ2UgQUNLLFxcbisvLyB3aGlsZSBhbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnRseSBkaXNjYXJkZWQuXFxuK1xcbitgLi9kZWZhdWx0cy5zaGBcXG4rXFxuKy8vIEFuIGV4YWN0IFJTVCByZW1vdmVzIHRoZSByZXF1ZXN0IHNvY2tldC5cXG4rICAgMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzXFxuKyAgKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXFxuKyAgKzAgbGlzdGVuKDMsIDEpID0gMFxcbisgICswIFxcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFxcdTAwM2VcXG4rICArMCBcXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcXHUwMDNjLi4uXFx1MDAzZVxcbisgICswIFxcdTAwM2MgUiAxOjEoMCkgd2luIDEwMDBcXG4rICsuMSBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgXFx1MDAzZSBSIDE6MSgwKVxcbisgICswIGNsb3NlKDMpID0gMFxcbitcXG4rLy8gQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBnZXRzIGEgY2hhbGxlbmdlIEFDSyBhbmQgdGhlIHJlcXVlc3Qgc3Vydml2ZXMuXFxuKyAgKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxcbisgICswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxcbisgICswIGxpc3RlbigzLCAxKSA9IDBcXG4rICArMCBcXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFxcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcXHUwMDNlXFxuKyAgKzAgXFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXFx1MDAzYy4uLlxcdTAwM2VcXG4rICArMCBcXHUwMDNjIFIgMjoyKDApIHdpbiAxMDAwXFxuKyAgKzAgXFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxcbisgICswIFxcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxcbisgICswIGNsb3NlKDQpID0gMFxcbisgICswIGNsb3NlKDMpID0gMFxcbitcXG4rLy8gUlNUIHNlcXVlbmNlIHZhbGlkYXRpb24gcHJlY2VkZXMgQUNLIHZhbGlkYXRpb24uICBFdmVuIGFuIFJTVHxBQ0tcXG4rLy8gd2l0aCBhbiB1bmFjY2VwdGFibGUgQUNLIHZhbHVlIGdldHMgYSBjaGFsbGVuZ2UgQUNLLlxcbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXFxuKyAgKzAgXFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXFx1MDAzZVxcbisgICswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyAgKzAgXFx1MDAzYyBSLiAyOjIoMCkgYWNrIDEwMCB3aW4gMTAwMFxcbisgICswIFxcdTAwM2UgLiAxOjEoMCkgYWNrIDFcXG4rICArMCBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcXG4rICArMCBjbG9zZSg0KSA9IDBcXG4rICArMCBjbG9zZSgzKSA9IDBcXG4rXFxuKy8vIEFuIG91dC1vZi13aW5kb3cgUlNUIGlzIHNpbGVudCBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSByZXF1ZXN0LlxcbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXFxuKyAgKzAgXFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXFx1MDAzZVxcbisgICswIFxcdTAwM2UgUy4gMDowKDApIGFjayAxIFxcdTAwM2MuLi5cXHUwMDNlXFxuKyAgKzAgXFx1MDAzYyBSIDEwMDAwMToxMDAwMDEoMCkgd2luIDEwMDBcXG4rICsuMSBcXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXFxuKyAgKzAgYWNjZXB0KDMsIC4uLiwgLi4uKSA9IDRcXG4rICArMCBjbG9zZSg0KSA9IDBcXG4rICArMCBjbG9zZSgzKSA9IDBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6MzEuNDkxMjgwNTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYxOTc1MjYxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWJiOWU2YzcyOTFiZDZiNTBlN2EzMzdjZDllN2NlMjUzMWU0ZDk2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDEwOjE2OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdGNwLmggYi9pbmNsdWRlL25ldC90Y3AuaFxuaW5kZXggNmQzNzZlYTRkMWMwMWQuLjJjNWI4ODk1MzBiNTU2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvdGNwLmhcbisrKyBiL2luY2x1ZGUvbmV0L3RjcC5oXG5AQCAtMTk3NCw2ICsxOTc0LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHRjcF9mYXN0X3BhdGhfY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIFxuIGJvb2wgdGNwX29vd19yYXRlX2xpbWl0ZWQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgaW50IG1pYl9pZHgsIHUzMiAqbGFzdF9vb3dfYWNrX3RpbWUpO1xuK3ZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4rXHRcdFx0XHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHRjcF9taWJfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IDYxMDQ1YTg4ODZlNDg1Li5kYWZmOTNkNTEzNDI4NyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuQEAgLTQwMzgsMjQgKzQwMzgsMTcgQEAgc3RhdGljIHZvaWQgdGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuIFx0X190Y3Bfc2VuZF9hY2soc2ssIHRwLVx1MDAzZXJjdl9ueHQsIGZsYWdzKTtcbiB9XG4gXG4tLyogUkZDIDU5NjEgNyBbQUNLIFRocm90dGxpbmddICovXG4tc3RhdGljIHZvaWQgdGNwX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgYWNjZWNuX3JlZmxlY3RvcilcbisvKiBDb25zdW1lIG9uZSBzbG90IGZyb20gdGhlIHBlci1uZXRucyBSRkMgNTk2MSBjaGFsbGVuZ2UgQUNLIHF1b3RhLlxuKyAqIFJldHVybnMgdHJ1ZSBpZiBhIGNoYWxsZW5nZSBBQ0sgbWF5IGJlIHNlbnQuXG4rICovXG4rc3RhdGljIGJvb2wgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuLVx0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG4tXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG4gXHR1MzIgY291bnQsIG5vdywgYWNrX2xpbWl0O1xuIFxuLVx0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXG4tXHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4tXHRcdFx0XHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbi1cdFx0XHRcdCAgIFx1MDAyNnRwLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbi1cdFx0cmV0dXJuO1xuLVxuIFx0YWNrX2xpbWl0ID0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF90Y3BfY2hhbGxlbmdlX2Fja19saW1pdCk7XG4gXHRpZiAoYWNrX2xpbWl0ID09IElOVF9NQVgpXG4tXHRcdGdvdG8gc2VuZF9hY2s7XG4rXHRcdHJldHVybiB0cnVlO1xuIFxuLVx0LyogVGhlbiBjaGVjayBob3N0LXdpZGUgUkZDIDU5NjEgcmF0ZSBsaW1pdC4gKi9cbiBcdG5vdyA9IGppZmZpZXMgLyBIWjtcbiBcdGlmIChub3cgIT0gUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfdGltZXN0YW1wKSkge1xuIFx0XHR1MzIgaGFsZiA9IChhY2tfbGltaXQgKyAxKSBcdTAwM2VcdTAwM2UgMTtcbkBAIC00MDY3LDEyICs0MDYwLDQ5IEBAIHN0YXRpYyB2b2lkIHRjcF9zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBib29sIGFjY2Vjbl9yZWZsZWN0b3IpXG4gXHRjb3VudCA9IFJFQURfT05DRShuZXQtXHUwMDNlaXB2NC50Y3BfY2hhbGxlbmdlX2NvdW50KTtcbiBcdGlmIChjb3VudCBcdTAwM2UgMCkge1xuIFx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2VpcHY0LnRjcF9jaGFsbGVuZ2VfY291bnQsIGNvdW50IC0gMSk7XG4tc2VuZF9hY2s6XG4rXHRcdHJldHVybiB0cnVlO1xuK1x0fVxuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKiBSRkMgNTk2MSA3IFtBQ0sgVGhyb3R0bGluZ10gKi9cbitzdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxuK3tcbitcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuK1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuK1xuK1x0LyogRmlyc3QgY2hlY2sgb3VyIHBlci1zb2NrZXQgZHVwYWNrIHJhdGUgbGltaXQuICovXG4rXHRpZiAoX190Y3Bfb293X3JhdGVfbGltaXRlZChuZXQsXG4rXHRcdFx0XHQgICBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbitcdFx0XHRcdCAgIFx1MDAyNnRwLVx1MDAzZWxhc3Rfb293X2Fja190aW1lKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0LyogVGhlbiBjaGVjayB0aGUgcGVyLW5ldG5zIFJGQyA1OTYxIHJhdGUgbGltaXQuICovXG4rXHRpZiAodGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZChuZXQpKSB7XG4gXHRcdE5FVF9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfVENQQ0hBTExFTkdFQUNLKTtcbiBcdFx0dGNwX3NlbmRfYWNrX3JlZmxlY3RfZWN0KHNrLCBhY2NlY25fcmVmbGVjdG9yKTtcbiBcdH1cbiB9XG4gXG4rLyogU2VuZCBhIGNoYWxsZW5nZSBBQ0sgZnJvbSBhIFNZTi1SRUNFSVZFRCByZXF1ZXN0IHNvY2tldC4gVXNlc1xuKyAqIF9fdGNwX29vd19yYXRlX2xpbWl0ZWQoKSBkaXJlY3RseSBzbyB0aGF0IGFuIFJTVCBjYXJyeWluZyBwYXlsb2FkXG4rICogY2Fubm90IGJ5cGFzcyB0aGUgcGVyLXJlcXVlc3QgcmF0ZSBsaW1pdC5cbisgKi9cbit2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpXG4re1xuK1x0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuK1xuK1x0aWYgKF9fdGNwX29vd19yYXRlX2xpbWl0ZWQobmV0LCBMSU5VWF9NSUJfVENQQUNLU0tJUFBFRENIQUxMRU5HRSxcbitcdFx0XHRcdCAgIFx1MDAyNnRjcF9yc2socmVxKS1cdTAwM2VsYXN0X29vd19hY2tfdGltZSkpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkKG5ldCkpIHtcbitcdFx0TkVUX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9UQ1BDSEFMTEVOR0VBQ0spO1xuK1x0XHRyZXEtXHUwMDNlcnNrX29wcy1cdTAwM2VzZW5kX2Fjayhzaywgc2tiLCByZXEpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdm9pZCB0Y3Bfc3RvcmVfdHNfcmVjZW50KHN0cnVjdCB0Y3Bfc29jayAqdHApXG4ge1xuIFx0dHAtXHUwMDNlcnhfb3B0LnRzX3JlY2VudCA9IHRwLVx1MDAzZXJ4X29wdC5yY3ZfdHN2YWw7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jIGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXG5pbmRleCBkZGM0YjE3YTgyNmI1Mi4uNmFiM2UzYTBiNDMxNzMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNcbisrKyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuY1xuQEAgLTgzMyw3ICs4MzMsNyBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgKiBlbHNld2hlcmUgYW5kIGlzIGNoZWNrZWQgZGlyZWN0bHkgYWdhaW5zdCB0aGUgY2hpbGQgc29ja2V0IHJhdGhlclxuIFx0ICogdGhhbiByZXEgYmVjYXVzZSB1c2VyIGRhdGEgbWF5IGhhdmUgYmVlbiBzZW50IG91dC5cbiBcdCAqL1xuLVx0aWYgKChmbGcgXHUwMDI2IFRDUF9GTEFHX0FDSykgXHUwMDI2XHUwMDI2ICFmYXN0b3BlbiBcdTAwMjZcdTAwMjZcbitcdGlmICgoZmxnIFx1MDAyNiBUQ1BfRkxBR19BQ0spIFx1MDAyNlx1MDAyNiAhKGZsZyBcdTAwMjYgVENQX0ZMQUdfUlNUKSBcdTAwMjZcdTAwMjYgIWZhc3RvcGVuIFx1MDAyNlx1MDAyNlxuIFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlYWNrX3NlcSAhPVxuIFx0ICAgICB0Y3BfcnNrKHJlcSktXHUwMDNlc250X2lzbiArIDEpKVxuIFx0XHRyZXR1cm4gc2s7XG5AQCAtODcyLDYgKzg3MiwxNiBAQCBzdHJ1Y3Qgc29jayAqdGNwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGZsZyBcdTAwMjY9IH5UQ1BfRkxBR19TWU47XG4gXHR9XG4gXG4rXHQvKiBSRkMgNTk2MSBzZWN0aW9uIDMuMiwgYXMgY2xhcmlmaWVkIGJ5IFJGQyA5MjkzIHNlY3Rpb25cbitcdCAqIDMuMTAuNy40LCByZXF1aXJlcyBhIGNoYWxsZW5nZSBBQ0sgZm9yIGEgbm9uLWV4YWN0XG4rXHQgKiBpbi13aW5kb3cgUlNUIGluIFNZTi1SRUNFSVZFRC5cbitcdCAqL1xuK1x0aWYgKChmbGcgXHUwMDI2IFRDUF9GTEFHX1JTVCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgVENQX1NLQl9DQihza2IpLVx1MDAzZXNlcSAhPSB0Y3BfcnNrKHJlcSktXHUwMDNlcmN2X254dCkge1xuK1x0XHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1xuIFx0LyogUkZDNzkzOiBcInNlY29uZCBjaGVjayB0aGUgUlNUIGJpdFwiIGFuZFxuIFx0ICpcdCAgIFwiZm91cnRoLCBjaGVjayB0aGUgU1lOIGJpdFwiXG4gXHQgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNmYzJkZTAzNjU4YWYwXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvcGFja2V0ZHJpbGwvdGNwX3JmYzU5NjFfcnN0LXN5bi1yZWN2LnBrdFxuQEAgLTAsMCArMSw2MSBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLy9cbisvLyBSRkMgOTI5MyBTZWN0aW9uIDMuMTAuNy40OiBpbiBTWU4tUkVDRUlWRUQsIGFuIGV4YWN0IFJTVCByZXNldHNcbisvLyB0aGUgY29ubmVjdGlvbi4gIEEgbm9uLWV4YWN0IGluLXdpbmRvdyBSU1QgZWxpY2l0cyBhIGNoYWxsZW5nZSBBQ0ssXG4rLy8gd2hpbGUgYW4gb3V0LW9mLXdpbmRvdyBSU1QgaXMgc2lsZW50bHkgZGlzY2FyZGVkLlxuK1xuK2AuL2RlZmF1bHRzLnNoYFxuK1xuKy8vIEFuIGV4YWN0IFJTVCByZW1vdmVzIHRoZSByZXF1ZXN0IHNvY2tldC5cbisgICAwIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXG4rICArMCBcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXHUwMDNlXG4rICArMCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuKyAgKzAgXHUwMDNjIFIgMToxKDApIHdpbiAxMDAwXG4rICsuMSBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbisgICswIFx1MDAzZSBSIDE6MSgwKVxuKyAgKzAgY2xvc2UoMykgPSAwXG4rXG4rLy8gQSBub24tZXhhY3QgaW4td2luZG93IFJTVCBnZXRzIGEgY2hhbGxlbmdlIEFDSyBhbmQgdGhlIHJlcXVlc3Qgc3Vydml2ZXMuXG4rICArMCBzb2NrZXQoLi4uLCBTT0NLX1NUUkVBTXxTT0NLX05PTkJMT0NLLCBJUFBST1RPX1RDUCkgPSAzXG4rICArMCBzZXRzb2Nrb3B0KDMsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgWzFdLCA0KSA9IDBcbisgICswIGJpbmQoMywgLi4uLCAuLi4pID0gMFxuKyAgKzAgbGlzdGVuKDMsIDEpID0gMFxuKyAgKzAgXHUwMDNjIFMgMDowKDApIHdpbiAxMDAwIFx1MDAzY21zcyAxMDAwLHNhY2tPSyxub3Asbm9wLG5vcCx3c2NhbGUgMFx1MDAzZVxuKyAgKzAgXHUwMDNlIFMuIDA6MCgwKSBhY2sgMSBcdTAwM2MuLi5cdTAwM2VcbisgICswIFx1MDAzYyBSIDI6MigwKSB3aW4gMTAwMFxuKyAgKzAgXHUwMDNlIC4gMToxKDApIGFjayAxXG4rICArMCBcdTAwM2MgLiAxOjEoMCkgYWNrIDEgd2luIDEwMDBcbisgICswIGFjY2VwdCgzLCAuLi4sIC4uLikgPSA0XG4rICArMCBjbG9zZSg0KSA9IDBcbisgICswIGNsb3NlKDMpID0gMFxuK1xuKy8vIFJTVCBzZXF1ZW5jZSB2YWxpZGF0aW9uIHByZWNlZGVzIEFDSyB2YWxpZGF0aW9uLiAgRXZlbiBhbiBSU1R8QUNLXG4rLy8gd2l0aCBhbiB1bmFjY2VwdGFibGUgQUNLIHZhbHVlIGdldHMgYSBjaGFsbGVuZ2UgQUNLLlxuKyAgKzAgc29ja2V0KC4uLiwgU09DS19TVFJFQU18U09DS19OT05CTE9DSywgSVBQUk9UT19UQ1ApID0gM1xuKyAgKzAgc2V0c29ja29wdCgzLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIFsxXSwgNCkgPSAwXG4rICArMCBiaW5kKDMsIC4uLiwgLi4uKSA9IDBcbisgICswIGxpc3RlbigzLCAxKSA9IDBcbisgICswIFx1MDAzYyBTIDA6MCgwKSB3aW4gMTAwMCBcdTAwM2Ntc3MgMTAwMCxzYWNrT0ssbm9wLG5vcCxub3Asd3NjYWxlIDBcdTAwM2VcbisgICswIFx1MDAzZSBTLiAwOjAoMCkgYWNrIDEgXHUwMDNjLi4uXHUwMDNlXG4rICArMCBcdTAwM2MgUi4gMjoyKDApIGFjayAxMDAgd2luIDEwMDBcbisgICswIFx1MDAzZSAuIDE6MSgwKSBhY2sgMVxuKyAgKzAgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuKyAgKzAgY2xvc2UoNCkgPSAwXG4rICArMCBjbG9zZSgzKSA9IDBcbitcbisvLyBBbiBvdXQtb2Ytd2luZG93IFJTVCBpcyBzaWxlbnQgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgcmVxdWVzdC5cbisgICswIHNvY2tldCguLi4sIFNPQ0tfU1RSRUFNfFNPQ0tfTk9OQkxPQ0ssIElQUFJPVE9fVENQKSA9IDNcbisgICswIHNldHNvY2tvcHQoMywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCBbMV0sIDQpID0gMFxuKyAgKzAgYmluZCgzLCAuLi4sIC4uLikgPSAwXG4rICArMCBsaXN0ZW4oMywgMSkgPSAwXG4rICArMCBcdTAwM2MgUyAwOjAoMCkgd2luIDEwMDAgXHUwMDNjbXNzIDEwMDAsc2Fja09LLG5vcCxub3Asbm9wLHdzY2FsZSAwXHUwMDNlXG4rICArMCBcdTAwM2UgUy4gMDowKDApIGFjayAxIFx1MDAzYy4uLlx1MDAzZVxuKyAgKzAgXHUwMDNjIFIgMTAwMDAxOjEwMDAwMSgwKSB3aW4gMTAwMFxuKyArLjEgXHUwMDNjIC4gMToxKDApIGFjayAxIHdpbiAxMDAwXG4rICArMCBhY2NlcHQoMywgLi4uLCAuLi4pID0gNFxuKyAgKzAgY2xvc2UoNCkgPSAwXG4rICArMCBjbG9zZSgzKSA9IDBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjMxLjQ5MTI4MzE0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzIxNTI3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBLZXJuZWwgVENQIExvZ2ljOiBQYXRjaCBFdmFsdWF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgdG8gcmV2aWV3LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIGl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgc3VtbWFyeSBzYXlzIGl0IG1vZGlmaWVzIGBpbmNsdWRlL25ldC90Y3AuaGAsIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9wYWNrZXRkcmlsbC90Y3BfcmZjNTk2MV9yc3Qtc3luLXJlY3YucGt0YC4gVGhhdCdzIGEgZGVjZW50IHNwcmVhZC4gUmVhZGluZyB0aHJvdWdoIHRoZSBkZXRhaWxzLCBpdCBsb29rcyBsaWtlIGl0J3MgaW1wYWN0aW5nIGNvcmUgVENQIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBSU1QgcGFja2V0cyBpbiB0aGUgU1lOLVJFQ0VJVkVEIHN0YXRlLiBEZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UhIFdlIG5lZWQgdG8gZnV6eiB0aGlzLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldC4gQmFzZWQgb24gdGhlIGNoYW5nZXMsIGl0IGxvb2tzIGxpa2UgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgLCBgdGNwX2NoZWNrX3JlcWAsIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAgYXJlIHRoZSBwcmltYXJ5IGNhbmRpZGF0ZXMuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLlxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgYW5kIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGNvcmUgVENQL0lQdjQgY29kZS4gVHlwaWNhbGx5LCB0aGF0IG1lYW5zIGBDT05GSUdfSU5FVGAgaXMgc3VmZmljaWVudC4gTGV0J3Mgc2VlLi4uIGxvb2tpbmcgYXQgdGhlIEtjb25maWcgZmlsZXMsIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWFsIG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBmZWF0dXJlLiBgQ09ORklHX0lORVRgIGlzIHRoZSBicm9hZGVzdCwgYW5kIHRoZSBtb3JlIHNwZWNpZmljIGBDT05GSUdfVENQX0NPTkdfQ1VCSUNgIGlzIHVucmVsYXRlZC5cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGlzIHdpdGggdGhlIHRvb2xzLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6aW5nIGNhbXBhaWduIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6MzguNDIzNDM5MTY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Njg1MTYzMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC90Y3AuaD0xOTc1PWJvb2wgdGNwX29vd19yYXRlX2xpbWl0ZWQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTE5NzYtXFx0XFx0XFx0ICBpbnQgbWliX2lkeCwgdTMyICpsYXN0X29vd19hY2tfdGltZSk7XFxuaW5jbHVkZS9uZXQvdGNwLmg6MTk3Nzp2b2lkIHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTE5NzgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEpO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmM9NDA2OT1zdGF0aWMgdm9pZCB0Y3Bfc2VuZF9jaGFsbGVuZ2VfYWNrKHN0cnVjdCBzb2NrICpzaywgYm9vbCBhY2NlY25fcmVmbGVjdG9yKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5MC0gKi9cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0MDkxOnZvaWQgdGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2FjayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDA5Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYz02ODc9c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTg4MC1cXHQgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgIT0gdGNwX3JzayhyZXEpLVxcdTAwM2VyY3Zfbnh0KSB7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjg4MTpcXHRcXHR0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrKHNrLCBza2IsIHJlcSk7XFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTg4Mi1cXHRcXHRyZXR1cm4gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6MTY6NDQuODkxOTY1MzY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNDUwNzM2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvZGUncyBSZWFjaGFiaWxpdHkgYW5kIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGUgY29kZSBJJ20gbG9va2luZyBhdCBpcyBib3RoIHJlYWNoYWJsZSBhbmQgd29ya2luZyBhcyBleHBlY3RlZC4gTm93LCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgc3ltYm9scyBmb3IgdGhpcyBzcGVjaWZpYyBhbmFseXNpcy4gTGV0J3Mgc2VlLi4uIEknbGwgZm9jdXMgb24gdGhlc2U6IGB0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrYCwgYW5kIGB0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkYC4gV2hpbGUgYHRjcF9jaGVja19yZXFgIGhhcyBzZWVuIHNvbWUgbW9kaWZpY2F0aW9ucywgaXQncyBwb3RlbnRpYWxseSB0b28gYnJvYWQgZm9yIHRoZSBpbW1lZGlhdGUgc2NvcGUgb2YgbXkgaW52ZXN0aWdhdGlvbi4gVGhvc2UgZmlyc3QgdHdvIHNlZW0gZmFyIG1vcmUgdGFyZ2V0ZWQgYW5kIHBlcnRpbmVudC5cblxuUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBkZWZpbml0aW9uIG9mIGB0Y3BfY2hlY2tfcmVxYCBpbiBgbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jYCB0byBzZWUgaG93IGl0IG1pZ2h0IGJlIHJlbGF0ZWQgdG8gdGhlc2Uga2V5IGZ1bmN0aW9ucy4gSSdsbCByZXZpZXcgaXRzIGludGVyYWN0aW9ucyB3aXRoIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjAwNSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjo0OC40MTY0NzcyMjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDY5NjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfY2hlY2tfcmVxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3RjcC5oPTQ3Nj1lbnVtIHRjcF90d19zdGF0dXMgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsXFxuLS1cXG5pbmNsdWRlL25ldC90Y3AuaC00ODAtXFx0XFx0XFx0XFx0XFx0ICAgICAgZW51bSBza2JfZHJvcF9yZWFzb24gKmRyb3BfcmVhc29uKTtcXG5pbmNsdWRlL25ldC90Y3AuaDo0ODE6c3RydWN0IHNvY2sgKnRjcF9jaGVja19yZXEoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbmV0L3RjcC5oLTQ4Mi1cXHRcXHRcXHQgICBzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsIGJvb2wgZmFzdG9wZW4sXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjE4LVxcdFxcdFNLQl9EUl9TRVQocmVhc29uLCBUQ1BfRkFTVE9QRU4pO1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcyMTk6XFx0XFx0aWYgKCF0Y3BfY2hlY2tfcmVxKHNrLCBza2IsIHJlcSwgdHJ1ZSwgXFx1MDAyNnJlcV9zdG9sZW4sIFxcdTAwMjZyZWFzb24pKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcyMjAtXFx0XFx0XFx0Z290byBkaXNjYXJkO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxNjItXFx0XFx0XFx0dGNwX3Y0X2ZpbGxfY2Ioc2tiLCBpcGgsIHRoKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjIxNjM6XFx0XFx0XFx0bnNrID0gdGNwX2NoZWNrX3JlcShzaywgc2tiLCByZXEsIGZhbHNlLCBcXHUwMDI2cmVxX3N0b2xlbixcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIxNjQtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZkcm9wX3JlYXNvbik7XFxuLS1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9NTQ2PXN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jLTY4Ni1cXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM6Njg3OnN0cnVjdCBzb2NrICp0Y3BfY2hlY2tfcmVxKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtNjg4LVxcdFxcdFxcdCAgIHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSxcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTcyOD1JTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODE5LVxcdFxcdFxcdHRjcF92Nl9maWxsX2NiKHNrYiwgaGRyLCB0aCk7XFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxODIwOlxcdFxcdFxcdG5zayA9IHRjcF9jaGVja19yZXEoc2ssIHNrYiwgcmVxLCBmYWxzZSwgXFx1MDAyNnJlcV9zdG9sZW4sXFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xODIxLVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2ZHJvcF9yZWFzb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDoxNjo1Mi43MTExODQ4MjVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzk5Nzg2Mjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVENQIENoYWxsZW5nZSBBQ0sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgcGF0Y2guIEZyb20gd2hhdCBJIGNhbiBnYXRoZXIsIGB0Y3BfY2hlY2tfcmVxYCBnZXRzIGNhbGxlZCBmcm9tIGJvdGggYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgd2hlbiBkZWFsaW5nIHdpdGggU1lOLVJFQ0VJVkVEIHN0YXRlLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCByZXF1ZXN0IHNvY2tldHMuIEl0IHNlZW1zIHJlbGF0aXZlbHkgYWN0aXZlLCB0aG91Z2ggbm90IGFzIGludGVuc2UgYXMgYHRjcF92NF9yY3ZgIGl0c2VsZi5cblxuVGhlIGtleSBwbGF5ZXJzIGhlcmUgYXJlIGRlZmluaXRlbHkgYHRjcF9yZXFza19zZW5kX2NoYWxsZW5nZV9hY2tgIGFuZCBgdGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZGAuIFRob3NlIGFyZSBzeW1ib2xzIEkgc2hvdWxkIHJlYWxseSBmb2N1cyBvbi4gSSdsbCBtYWtlIGEgbm90ZSBvZiB0aG9zZS5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBIbW0sIGp1c3QgYENPTkZJR19JTkVUYCwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vIHNwZWNpYWxpemVkIHNldHRpbmdzIG5lZWRlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIEl0J3MgY2xlYW4uXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGNvcmUgVENQIGJlaGF2aW9yLiBJdCdzIGFib3V0IHNlbmRpbmcgY2hhbGxlbmdlIEFDS3MgaW4gU1lOLVJFQ0VJVkVEIGZvciBSU1QgcGFja2V0cyB0aGF0IGRvbid0IHBlcmZlY3RseSBhbGlnbiB3aXRoIHRoZSB3aW5kb3cuIEJhc2ljYWxseSwgaXQncyBpbXBsZW1lbnRpbmcgUkZDIDU5NjEuIFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcsIHNvIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0LlxuXG5JJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHVzaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTYsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjE2OjU4LjExMDk3NDQ3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfcmVxc2tfc2VuZF9jaGFsbGVuZ2VfYWNrXCIsXG4gICAgXCJ0Y3BfY2hhbGxlbmdlX2Fja19hbGxvd2VkXCIsXG4gICAgXCJ0Y3BfY2hlY2tfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBUQ1AgbG9naWMgdG8gc2VuZCBjaGFsbGVuZ2UgQUNLcyBmb3Igbm9uLWV4YWN0IGluLXdpbmRvdyBSU1RzIGluIFNZTi1SRUNFSVZFRCBzdGF0ZSwgaW1wbGVtZW50aW5nIFJGQyA1OTYxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gbmV0d29yayBwcm90b2NvbCBoYW5kbGluZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3JlcXNrX3NlbmRfY2hhbGxlbmdlX2Fja1wiLFxuICAgIFwidGNwX2NoYWxsZW5nZV9hY2tfYWxsb3dlZFwiLFxuICAgIFwidGNwX2NoZWNrX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgVENQIGxvZ2ljIHRvIHNlbmQgY2hhbGxlbmdlIEFDS3MgZm9yIG5vbi1leGFjdCBpbi13aW5kb3cgUlNUcyBpbiBTWU4tUkVDRUlWRUQgc3RhdGUsIGltcGxlbWVudGluZyBSRkMgNTk2MS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIG5ldHdvcmsgcHJvdG9jb2wgaGFuZGxpbmcgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowjcsg2[1] Phase: Succeeded StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 10:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 10:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2] Phase: Succeeded StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 10:19:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 10:17:35 +0000 UTC FinishedAt: 2026-07-17 10:18:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjcsg2/series-workflowjcsg2-convert-artifact-1888510500/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 10:19:41 +0000 UTC FinishedAt: 2026-07-17 11:01:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 10:19:41 +0000 UTC FinishedAt: 2026-07-17 11:01:31 +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:*81d1df57-0bc7-445d-b46f-9c640f2fb8b4,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-workflowjcsg2/series-workflowjcsg2-convert-artifact-1888510500/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": "efcedd3e-0830-4495-bbec-a32c686e8b8c", "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-workflowjcsg2/series-workflowjcsg2-build-action-3910136930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 10:19:41 +0000 UTC FinishedAt: 2026-07-17 11:01:21 +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:*81d1df57-0bc7-445d-b46f-9c640f2fb8b4,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-workflowjcsg2/series-workflowjcsg2-convert-artifact-1888510500/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": "efcedd3e-0830-4495-bbec-a32c686e8b8c", "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-workflowjcsg2/series-workflowjcsg2-build-action-3910136930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 11:01:31 +0000 UTC FinishedAt: 2026-07-17 11:01:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 11:01:31 +0000 UTC FinishedAt: 2026-07-17 11:01:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 11:01:31 +0000 UTC FinishedAt: 2026-07-17 11:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 11:01:31 +0000 UTC FinishedAt: 2026-07-17 11:01:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjcsg2/series-workflowjcsg2-convert-artifact-2231234851/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 11:01:52 +0000 UTC FinishedAt: 2026-07-17 11:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 11:01:52 +0000 UTC FinishedAt: 2026-07-17 11:03:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*efcedd3e-0830-4495-bbec-a32c686e8b8c,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-workflowjcsg2/series-workflowjcsg2-build-action-3910136930/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-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 11:03:52 +0000 UTC FinishedAt: 2026-07-17 11:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 11:03:52 +0000 UTC FinishedAt: 2026-07-17 11:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 11:03:52 +0000 UTC FinishedAt: 2026-07-17 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 11:03:52 +0000 UTC FinishedAt: 2026-07-17 11:40:28 +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:*81d1df57-0bc7-445d-b46f-9c640f2fb8b4,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-workflowjcsg2/series-workflowjcsg2-convert-artifact-2231234851/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": "31c4a71f-036d-475a-b056-a631cd613d6c", "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-workflowjcsg2/series-workflowjcsg2-build-action-2901997015/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 11:03:52 +0000 UTC FinishedAt: 2026-07-17 11:40:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*81d1df57-0bc7-445d-b46f-9c640f2fb8b4,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-workflowjcsg2/series-workflowjcsg2-convert-artifact-2231234851/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": "31c4a71f-036d-475a-b056-a631cd613d6c", "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-workflowjcsg2/series-workflowjcsg2-build-action-2901997015/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 11:40:28 +0000 UTC FinishedAt: 2026-07-17 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 11:40:28 +0000 UTC FinishedAt: 2026-07-17 11:40:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 11:40:28 +0000 UTC FinishedAt: 2026-07-17 11:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 11:40:28 +0000 UTC FinishedAt: 2026-07-17 11:42:12 +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:*31c4a71f-036d-475a-b056-a631cd613d6c,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-workflowjcsg2/series-workflowjcsg2-build-action-2901997015/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-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"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:*efcedd3e-0830-4495-bbec-a32c686e8b8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*31c4a71f-036d-475a-b056-a631cd613d6c,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-workflowjcsg2/series-workflowjcsg2-build-action-3910136930/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-workflowjcsg2/series-workflowjcsg2-build-action-2901997015/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 11:42:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 11:42:29 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"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-workflowjcsg2/series-workflowjcsg2-convert-artifact-3013189692/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 11:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 11:42:22 +0000 UTC FinishedAt: 2026-07-17 11:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 11:42:23 +0000 UTC FinishedAt: 2026-07-17 11:42:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 11:42:33 +0000 UTC FinishedAt: 2026-07-17 14:45:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjcsg2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tcp_reqsk_send_challenge_ack","tcp_challenge_ack_allowed","tcp_check_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","series_id":"0f9054db-98de-4fee-a654-219c204b5c32","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 11:42:33 +0000 UTC FinishedAt: 2026-07-17 14:45:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*efcedd3e-0830-4495-bbec-a32c686e8b8c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*31c4a71f-036d-475a-b056-a631cd613d6c,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-workflowjcsg2/series-workflowjcsg2-build-action-3910136930/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-workflowjcsg2/series-workflowjcsg2-build-action-2901997015/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-workflowjcsg2/series-workflowjcsg2-convert-artifact-3013189692/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,}