Name: series-workflowzhztf Phase: Succeeded StartedAt: 2026-07-22 21:16:31 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[0] Phase: Succeeded StartedAt: 2026-07-22 21:16:31 +0000 UTC FinishedAt: 2026-07-22 21:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 21:16:31 +0000 UTC FinishedAt: 2026-07-22 21:40:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "PERF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "PERF_EVENTS" ], "series_id": "75eafd51-ac64-4774-a72a-e369808950c0" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "stack_map_get_build_id_offset", "bpf_find_vma", "do_mmap_read_unlock" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1BFUkZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQmIzM0OywKICAgICYjMzQ7YnBmX2ZpbmRfdm1hJiMzNDssCiAgICAmIzM0O2RvX21tYXBfcmVhZF91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBpbiBCUEYmIzM5O3MgaGFuZGxpbmcgb2YgbW1hcF9yZWFkX3RyeWxvY2sgd2hlbiBJUlFzIGFyZSBkaXNhYmxlZCBieSBpbnRyb2R1Y2luZyBhbiBhdG9taWNfdCBhY3RpdmUgZmxhZyB0byByZXNlcnZlIHRoZSBwZXItY3B1IG1tYXBfdW5sb2NrX2lycV93b3JrIHNsb3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgc3RhY2sgbWFwcyBhbmQgdGFzayBpdGVyYXRvcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmggYi9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaFxuaW5kZXggNWQxOGQ3ZDg1YmVmOTYuLmQ0MTZlNDMzNzYzNWZlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXG5AQCAtNCwxMiAmIzQzOzQsMTQgQEBcbiBcbiAjaWZuZGVmIF9fTU1BUF9VTkxPQ0tfV09SS19IX19cbiAjZGVmaW5lIF9fTU1BUF9VTkxPQ0tfV09SS19IX19cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xuIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XG4gXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7XHRhdG9taWNfdCBhY3RpdmU7XG4gfTtcbiBcbiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbkBAIC0xOCw4ICYjNDM7MjAsOCBAQCBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbiAgKiBXZSBjYW5ub3QgZG8gbW1hcF9yZWFkX3VubG9jaygpIHdoZW4gdGhlIGlycSBpcyBkaXNhYmxlZCwgYmVjYXVzZSBvZlxuICAqIHJpc2sgdG8gZGVhZGxvY2sgd2l0aCBycV9sb2NrLiBUbyBsb29rIHVwIHZtYSB3aGVuIHRoZSBpcnFzIGFyZVxuICAqIGRpc2FibGVkLCB3ZSBuZWVkIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsuIFdlIHVzZSBhXG4tICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gSWYgdGhlIGlycV93b3JrIGlzIGFscmVhZHkgdXNlZFxuLSAqIGJ5IGFub3RoZXIgbG9va3VwLCB3ZSBmYWxsIG92ZXIuXG4mIzQzOyAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIFRoZSBhY3RpdmUgZmxhZyByZXNlcnZlcyB0aGUgc2xvdFxuJiM0MzsgKiBiZWZvcmUgbW1hcF9yZWFkX3RyeWxvY2soKSBhbmQgdW50aWwgdGhlIGlycV93b3JrIGNhbGxiYWNrIGNvbnN1bWVzIG1tLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmtfcHRyKVxuIHtcbkBAIC0yOSw5ICYjNDM7MzEsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29cbiBcdGlmIChpcnFzX2Rpc2FibGVkKCkpIHtcbiBcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSkge1xuIFx0XHRcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XG4tXHRcdFx0aWYgKGlycV93b3JrX2lzX2J1c3koXHUwMDI2d29yay1cdTAwM2VpcnFfd29yaykpIHtcbi1cdFx0XHRcdC8qIGNhbm5vdCBxdWV1ZSBtb3JlIHVwX3JlYWQsIGZhbGxiYWNrICovXG4mIzQzO1x0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspIHx8XG4mIzQzO1x0XHRcdCAgICBhdG9taWNfY21weGNoZ19hY3F1aXJlKFx1MDAyNndvcmstXHUwMDNlYWN0aXZlLCAwLCAxKSkge1xuIFx0XHRcdFx0aXJxX3dvcmtfYnVzeSA9IHRydWU7XG4mIzQzO1x0XHRcdFx0d29yayA9IE5VTEw7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qXG5AQCAtNDYsNiAmIzQzOzQ5LDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRyZXR1cm4gaXJxX3dvcmtfYnVzeTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaylcbiYjNDM7e1xuJiM0MztcdGlmICh3b3JrKVxuJiM0MztcdFx0YXRvbWljX3NldF9yZWxlYXNlKFx1MDAyNndvcmstXHUwMDNlYWN0aXZlLCAwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVHJ5IHRvIHRha2UgbW0tXHUwMDNlbW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXlcbiYjNDM7ICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xuJiM0MzsgKiBicGZfbW1hcF91bmxvY2tfbW0oKSAoTlVMTCB3aGVuIHRoZSB1bmxvY2sgY2FuIGJlIGRvbmUgaW5saW5lKTsgb24gZmFpbHVyZVxuJiM0MzsgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsod29yaykpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7XG4mIzQzO1x0XHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKCp3b3JrKTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfbW0oc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiB7XG4gXHRpZiAoIXdvcmspIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmMgYi9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcbmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9zdGFja21hcC5jXG5AQCAtNDE1LDcgJiM0Mzs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0XHRcdFx0XHQgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdClcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbiBcdGJvb2wgaGFzX3VzZXJfY3R4ID0gdXNlciBcdTAwMjZcdTAwMjYgY3VycmVudCBcdTAwMjZcdTAwMjYgY3VycmVudC1cdTAwM2VtbTtcbiBcdHN0cnVjdCBzdGFja19tYXBfYnVpbGRfaWRfY2FjaGUgY2FjaGUgPSB7fTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuQEAgLTQzMCw3ICYjNDM7NDI5LDcgQEAgc3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcbiBcdCAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aFxuIFx0ICogYnVpbGRfaWQuXG4gXHQgKi9cbi1cdGlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXHUwMDNlbW0pKSB7XG4mIzQzO1x0aWYgKCFoYXNfdXNlcl9jdHggfHwgIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhjdXJyZW50LVx1MDAzZW1tLCBcdTAwMjZ3b3JrKSkge1xuIFx0XHQvKiBjYW5ub3QgYWNjZXNzIGN1cnJlbnQtXHUwMDNlbW0sIGZhbGwgYmFjayB0byBpcHMgKi9cbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHJhY2VfbnI7IGkmIzQzOyYjNDM7KVxuIFx0XHRcdHN0YWNrX21hcF9idWlsZF9pZF9zZXRfaXAoXHUwMDI2aWRfb2Zmc1tpXSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90YXNrX2l0ZXIuYyBiL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbmluZGV4IGIyNTZmYjljMTIxNGU0Li5lNjZlMzQ4NGY5MjNkYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbkBAIC03NTUsNyAmIzQzOzc1NSw2IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCxcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuIFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4tXHRib29sIGlycV93b3JrX2J1c3kgPSBmYWxzZTtcbiBcdGJvb2wgX19tYXliZV91bnVzZWQgbW1wdXRfbmVlZGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiBcdGludCByZXQgPSAtRU5PRU5UO1xuQEAgLTc5Miw5ICYjNDM7NzkxLDcgQEAgQlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxuIFx0aWYgKCFtbSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbi1cbi1cdGlmIChpcnFfd29ya19idXN5IHx8ICFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbiYjNDM7XHRpZiAoIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhtbSwgXHUwMDI2d29yaykpIHtcbiBcdFx0cmV0ID0gLUVCVVNZO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbkBAIC0xMTkxLDYgJiM0MzsxMTg4LDggQEAgc3RhdGljIHZvaWQgZG9fbW1hcF9yZWFkX3VubG9jayhzdHJ1Y3QgaXJxX3dvcmsgKmVudHJ5KVxuIFxuIFx0d29yayA9IGNvbnRhaW5lcl9vZihlbnRyeSwgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBpcnFfd29yayk7XG4gXHRtbWFwX3JlYWRfdW5sb2NrX25vbl9vd25lcih3b3JrLVx1MDAzZW1tKTtcbiYjNDM7XHR3b3JrLVx1MDAzZW1tID0gTlVMTDtcbiYjNDM7XHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oCmluZGV4IDVkMThkN2Q4NWJlZjk2Li5kNDE2ZTQzMzc2MzVmZSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgKQEAgLTQsMTIgJiM0Mzs0LDE0IEBACiAKICNpZm5kZWYgX19NTUFQX1VOTE9DS19XT1JLX0hfXwogI2RlZmluZSBfX01NQVBfVU5MT0NLX1dPUktfSF9fCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2F0b21pYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lycV93b3JrLmgmZ3Q7CiAKIC8qIGlycV93b3JrIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsgKi8KIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7CiAJc3RydWN0IGlycV93b3JrIGlycV93b3JrOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwomIzQzOwlhdG9taWNfdCBhY3RpdmU7CiB9OwogCiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTsKQEAgLTE4LDggJiM0MzsyMCw4IEBAIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspOwogICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2YKICAqIHJpc2sgdG8gZGVhZGxvY2sgd2l0aCBycV9sb2NrLiBUbyBsb29rIHVwIHZtYSB3aGVuIHRoZSBpcnFzIGFyZQogICogZGlzYWJsZWQsIHdlIG5lZWQgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yay4gV2UgdXNlIGEKLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWQKLSAqIGJ5IGFub3RoZXIgbG9va3VwLCB3ZSBmYWxsIG92ZXIuCiYjNDM7ICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gVGhlIGFjdGl2ZSBmbGFnIHJlc2VydmVzIHRoZSBzbG90CiYjNDM7ICogYmVmb3JlIG1tYXBfcmVhZF90cnlsb2NrKCkgYW5kIHVudGlsIHRoZSBpcnFfd29yayBjYWxsYmFjayBjb25zdW1lcyBtbS4KICAqLwogc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpCiB7CkBAIC0yOSw5ICYjNDM7MzEsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd28KIAlpZiAoaXJxc19kaXNhYmxlZCgpKSB7CiAJCWlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHsKIAkJCXdvcmsgPSB0aGlzX2NwdV9wdHIoJmFtcDttbWFwX3VubG9ja193b3JrKTsKLQkJCWlmIChpcnFfd29ya19pc19idXN5KCZhbXA7d29yay0mZ3Q7aXJxX3dvcmspKSB7Ci0JCQkJLyogY2Fubm90IHF1ZXVlIG1vcmUgdXBfcmVhZCwgZmFsbGJhY2sgKi8KJiM0MzsJCQlpZiAoaXJxX3dvcmtfaXNfYnVzeSgmYW1wO3dvcmstJmd0O2lycV93b3JrKSB8fAomIzQzOwkJCSAgICBhdG9taWNfY21weGNoZ19hY3F1aXJlKCZhbXA7d29yay0mZ3Q7YWN0aXZlLCAwLCAxKSkgewogCQkJCWlycV93b3JrX2J1c3kgPSB0cnVlOwomIzQzOwkJCQl3b3JrID0gTlVMTDsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCS8qCkBAIC00Niw2ICYjNDM7NDksMzIgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd28KIAlyZXR1cm4gaXJxX3dvcmtfYnVzeTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaykKJiM0Mzt7CiYjNDM7CWlmICh3b3JrKQomIzQzOwkJYXRvbWljX3NldF9yZWxlYXNlKCZhbXA7d29yay0mZ3Q7YWN0aXZlLCAwKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUcnkgdG8gdGFrZSBtbS0mZ3Q7bW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXkKJiM0MzsgKiBydW4gd2l0aCBJUlFzIGRpc2FibGVkLiBPbiBzdWNjZXNzLCAqd29yayBpcyB0aGUgc2xvdCB0byBoYW5kIHRvCiYjNDM7ICogYnBmX21tYXBfdW5sb2NrX21tKCkgKE5VTEwgd2hlbiB0aGUgdW5sb2NrIGNhbiBiZSBkb25lIGlubGluZSk7IG9uIGZhaWx1cmUKJiM0MzsgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF9yZWFkX3RyeWxvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sCiYjNDM7CQkJCQkgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29yaykKJiM0Mzt7CiYjNDM7CWlmIChicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHdvcmspKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAoIW1tYXBfcmVhZF90cnlsb2NrKG1tKSkgewomIzQzOwkJYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29yaygqd29yayk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB2b2lkIGJwZl9tbWFwX3VubG9ja19tbShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogCWlmICghd29yaykgewpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdGFja21hcC5jIGIva2VybmVsL2JwZi9zdGFja21hcC5jCmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9zdGFja21hcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuYwpAQCAtNDE1LDcgJiM0Mzs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLAogCQkJCQkgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdCkKIHsKIAlzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMOwotCWJvb2wgaXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoJmFtcDt3b3JrKTsKIAlib29sIGhhc191c2VyX2N0eCA9IHVzZXIgJmFtcDsmYW1wOyBjdXJyZW50ICZhbXA7JmFtcDsgY3VycmVudC0mZ3Q7bW07CiAJc3RydWN0IHN0YWNrX21hcF9idWlsZF9pZF9jYWNoZSBjYWNoZSA9IHt9OwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwpAQCAtNDMwLDcgJiM0Mzs0MjksNyBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLAogCSAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aAogCSAqIGJ1aWxkX2lkLgogCSAqLwotCWlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtJmd0O21tKSkgewomIzQzOwlpZiAoIWhhc191c2VyX2N0eCB8fCAhYnBmX21tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtJmd0O21tLCAmYW1wO3dvcmspKSB7CiAJCS8qIGNhbm5vdCBhY2Nlc3MgY3VycmVudC0mZ3Q7bW0sIGZhbGwgYmFjayB0byBpcHMgKi8KIAkJZm9yIChpID0gMDsgaSAmbHQ7IHRyYWNlX25yOyBpJiM0MzsmIzQzOykKIAkJCXN0YWNrX21hcF9idWlsZF9pZF9zZXRfaXAoJmFtcDtpZF9vZmZzW2ldKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdGFza19pdGVyLmMgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jCmluZGV4IGIyNTZmYjljMTIxNGU0Li5lNjZlMzQ4NGY5MjNkYyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90YXNrX2l0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jCkBAIC03NTUsNyAmIzQzOzc1NSw2IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCwKIHsKIAlzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMOwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwotCWJvb2wgaXJxX3dvcmtfYnVzeSA9IGZhbHNlOwogCWJvb2wgX19tYXliZV91bnVzZWQgbW1wdXRfbmVlZGVkID0gZmFsc2U7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW07CiAJaW50IHJldCA9IC1FTk9FTlQ7CkBAIC03OTIsOSAmIzQzOzc5MSw3IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCwKIAlpZiAoIW1tKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWlycV93b3JrX2J1c3kgPSBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKCZhbXA7d29yayk7Ci0KLQlpZiAoaXJxX3dvcmtfYnVzeSB8fCAhbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7CiYjNDM7CWlmICghYnBmX21tYXBfcmVhZF90cnlsb2NrKG1tLCAmYW1wO3dvcmspKSB7CiAJCXJldCA9IC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTE5MSw2ICYjNDM7MTE4OCw4IEBAIHN0YXRpYyB2b2lkIGRvX21tYXBfcmVhZF91bmxvY2soc3RydWN0IGlycV93b3JrICplbnRyeSkKIAogCXdvcmsgPSBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgaXJxX3dvcmspOwogCW1tYXBfcmVhZF91bmxvY2tfbm9uX293bmVyKHdvcmstJmd0O21tKTsKJiM0MzsJd29yay0mZ3Q7bW0gPSBOVUxMOwomIzQzOwlicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2ggZm9yIENvbmN1cnJlbmN5IElzc3VlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgd2UmIzM5O3JlIG1vZGlmeWluZyBob3cgYG1tYXBfcmVhZF90cnlsb2NrYCBpcyBoYW5kbGVkIGluIEJQRiBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oYCwgYGtlcm5lbC9icGYvc3RhY2ttYXAuY2AsIGFuZCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AuICBUaGUgbWFpbiB0aHJ1c3Qgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mICBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCwgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCBhbmQgYW4gYGF0b21pY190IGFjdGl2ZWAgZmllbGQgd2l0aGluIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS4KCkZpcnN0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLiBJbiBgbW1hcF91bmxvY2tfd29yay5oYCwgdGhlIGBhY3RpdmVgIGF0b21pYyBmbGFnIGlzIGFkZGVkIHRvIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS4gVGhlIG9sZCBsb2dpYyB1c2VkIGBpcnFfd29ya19pc19idXN5YCB0byBjaGVjayBpZiBhIHdvcmsgaXRlbSB3YXMgYnVzeS4gTm93LCB0aGVyZSYjMzk7cyBhIG1vcmUgcm9idXN0IGNoZWNrOiBgaXJxX3dvcmtfaXNfYnVzeWAgaXMgc3RpbGwgY2hlY2tlZCwgYnV0IHRoZXJlJiMzOTtzIGFsc28gYW4gYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIGNoZWNrIG9uIHRoZSBgYWN0aXZlYCBmbGFnLiBUaGlzIGZsYWcgc2VlbXMgdG8gYmUgdGhlIGtleSB0byB0aGUgZml4LiBXZSBhbHNvIGhhdmUgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCB3aGljaCwgaWYgdGhlIHdvcmsgc2xvdCBoYXMgYmVlbiByZXNlcnZlZCBieSB0aGlzIGNwdSwgc2V0cyB0aGUgYGFjdGl2ZWAgZmxhZyBiYWNrIHRvIDAuIEFuZCB0aGVuIHRoZSBuZXcgZnVuY3Rpb24gYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AgdGhhdCBpcyB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nLCBhcyBpdCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29ya2AgYW5kIGF0dGVtcHRzIHRoZSBgbW1hcF9yZWFkX3RyeWxvY2tgLgoKVGhpcyBpcyBhbGwgYWJvdXQgaW1wcm92aW5nIHRoZSBjb25jdXJyZW5jeSBzYWZldHkgd2hlbiBkZWFsaW5nIHdpdGggbW1hcCByZWFkcyBpbiBCUEYsIGVzcGVjaWFsbHkgd2hlbiBJUlFzIG1pZ2h0IGJlIGRpc2FibGVkLiBUaGUgb3JpZ2luYWwgY2hlY2sgdXNpbmcgb25seSBgaXJxX3dvcmtfaXNfYnVzeWAgbG9va3MgbGlrZSBpdCBoYWQgYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlsZWQsIHRoZSBvcmlnaW5hbCBjaGVjayBsZWZ0IHRoZSB3b3JrIHNsb3QgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBwb3NzaWJseSBsZWFkaW5nIHRvIGEgY29uY3VycmVuY3kgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byByZXNlcnZlIHRoZSBzbG90IHdpdGggYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIG9uIHRoZSBgYWN0aXZlYCBmbGFnICpiZWZvcmUqIHdlIGV2ZW4gYXR0ZW1wdCBgbW1hcF9yZWFkX3RyeWxvY2tgLiBUaGlzIHByZXZlbnRzIGFub3RoZXIgY29udGV4dCBmcm9tIGdyYWJiaW5nIHRoZSB3b3JrIGl0ZW0gaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlscy4KClRoZSB1c2Ugb2YgYW4gYXRvbWljIGZsYWcgY29uZmlybXMgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB0aGUgcHJvYmxlbSB3YXMgdGhhdCBhIGNvbnRleHQgY291bGQgYmUgaW50ZXJydXB0ZWQsIHNheSwgYnkgYW4gTk1JLCBiZXR3ZWVuIGdldHRpbmcgYSB3b3JrIGl0ZW0sIGFuZCBhY3R1YWxseSBxdWV1ZWluZyBpdCBmb3IgdW5sb2NrLiBUaGVuIGFub3RoZXIgQ1BVIG1pZ2h0IHRyeSB0byB1c2UgdGhlIHNhbWUgd29yayBpdGVtLiBUaGUgbmV3IGBhY3RpdmVgIGZsYWcgZXNzZW50aWFsbHkgc2VyaWFsaXplcyBhY2Nlc3MgdG8gdGhlIHdvcmsgaXRlbSwgZW5zdXJpbmcgdGhhdCBvbmx5IG9uZSBjb250ZXh0IHVzZXMgYSB3b3JrIGl0ZW0gYXQgYSB0aW1lLCBldmVuIGlmIE5NSXMgYXJlIGVuYWJsZWQuCgpOb3csIHdoZXJlIGFyZSB0aGVzZSBuZXcgZnVuY3Rpb25zIHVzZWQ/ICBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgYnBmX2ZpbmRfdm1hYCwgYm90aCBpbiBga2VybmVsL2JwZmAsIGFyZSB1c2luZyB0aGlzIG5ldyBsb2dpYy4gIGBkb19tbWFwX3JlYWRfdW5sb2NrYCBpcyBiZWluZyBtb2RpZmllZCB0b28sIGFuZCBpdCBjbGVhcnMgdGhlIHdvcmsgaXRlbSYjMzk7cyBgbW1gIGZpZWxkIGFuZCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AgdG8gcmVsZWFzZSB0aGUgd29yayBpdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGZvY3VzIGZ1enppbmcgb24gdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgLCBgYnBmX2ZpbmRfdm1hYCwgYW5kIGBkb19tbWFwX3JlYWRfdW5sb2NrYC4KCkkga25vdyBCUEYgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCBzbyBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zLiBBIHF1aWNrIGdyZXAgc2hvdWxkIGNvbmZpcm0gdGhhdC4KClRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBCUEYgbG9naWMuIFdvcnRoRnV6emluZyA9IHRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTgzPXN0cnVjdCBzdGFja19tYXBfY2FjaGVkX3ZtYSB7XG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTE5MS0vKlxua2VybmVsL2JwZi9zdGFja21hcC5jOjE5MjogKiBQZXIgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoKSBjYWxsIGNhY2hlIG9mIHRoZSBsYXN0IFZNQSB3aXRoIGEgYnVpbGQgSURcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTMtICogcmVzb2x2ZWQgYW5kIHRoZSBsYXN0IFZNQSB3aXRoIG5vIHVzYWJsZSBidWlsZCBJRC4gQWRqYWNlbnQgc3RhY2sgZnJhbWVzIHRlbmRcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MzIzPXN0YXRpYyB2b2lkIHN0YWNrX21hcF91bmxvY2tfdm1hKHN0cnVjdCBzdGFja19tYXBfdm1hX2xvY2sgKmxvY2spXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTMzMi1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYzozMzM6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRfc2xlZXBhYmxlKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMzM0LVx0XHRcdFx0XHRcdCAgICB1MzIgdHJhY2VfbnIpXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTQxMy0gKi9cbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MTQ6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2Zmcyxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy00MTUtXHRcdFx0XHRcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy00MjMtXHRpZiAobWF5X2ZhdWx0IFx1MDAyNlx1MDAyNiBoYXNfdXNlcl9jdHgpIHtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MjQ6XHRcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0X3NsZWVwYWJsZShpZF9vZmZzLCB0cmFjZV9ucik7XG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDI1LVx0XHRyZXR1cm47XG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jPTUwNj1zdGF0aWMgbG9uZyBfX2JwZl9nZXRfc3RhY2tpZChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDUtXHRcdFx0aWRfb2Zmc1tpXS5pcCA9IGlwc1tpXTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo1NDY6XHRcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KGlkX29mZnMsIHRyYWNlX25yLCB1c2VyLCBmYWxzZSAvKiAhbWF5X2ZhdWx0ICovKTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDctXHRcdHRyYWNlX2xlbiA9IHRyYWNlX25yICogc2l6ZW9mKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQpO1xuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYz02ODI9c3RhdGljIGxvbmcgX19icGZfZ2V0X3N0YWNrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTc1Ny1cdGlmICh1c2VyX2J1aWxkX2lkKVxua2VybmVsL2JwZi9zdGFja21hcC5jOjc1ODpcdFx0c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoYnVmLCB0cmFjZV9uciwgdXNlciwgbWF5X2ZhdWx0KTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIFRyYWNpbmcgYW5kIFZNQXMqKgoKT2theSwgc28gYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgZ2V0dGluZyB1c2VkIGluIGJvdGggYF9fYnBmX2dldF9zdGFja2lkYCBhbmQgYF9fYnBmX2dldF9zdGFja2AuIEdvdCBpdC4gQW5kIEkgc2VlIHRoYXQgYGJwZl9maW5kX3ZtYWAgaXMgYWN0dWFsbHkgYSBCUEYgaGVscGVyIGZ1bmN0aW9uLiBSaWdodCwgbWFrZXMgc2Vuc2Ug4oCTIHdlIG5lZWQgdG8gZmluZCB0aGUgdmlydHVhbCBtZW1vcnkgYXJlYS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYGJwZl9maW5kX3ZtYWAgY2FsbCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEJQRiBjb250ZXh0LiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBwcm9iYWJseSB3aGVyZSBhbGwgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTIwNjc9YnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMjM5LVx0Y2FzZSBCUEZfRlVOQ19maW5kX3ZtYTpcbmtlcm5lbC9icGYvaGVscGVycy5jOjIyNDA6XHRcdHJldHVybiBcdTAwMjZicGZfZmluZF92bWFfcHJvdG87XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMjQxLVx0ZGVmYXVsdDpcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTczNz1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0YXNrX3ZtYV9yZWdfaW5mbyA9IHtcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTc1Mi1cbmtlcm5lbC9icGYvdGFza19pdGVyLmM6NzUzOkJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtNzU0LVx0ICAgYnBmX2NhbGxiYWNrX3QsIGNhbGxiYWNrX2ZuLCB2b2lkICosIGNhbGxiYWNrX2N0eCwgdTY0LCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTgxNC1cbmtlcm5lbC9icGYvdGFza19pdGVyLmM6ODE1OmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZmluZF92bWFfcHJvdG8gPSB7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjgxNjpcdC5mdW5jXHRcdD0gYnBmX2ZpbmRfdm1hLFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy04MTctXHQucmV0X3R5cGVcdD0gUkVUX0lOVEVHRVIsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk2MzQ9c3RhdGljIGludCBzZXRfZmluZF92bWFfY2FsbGJhY2tfc3RhdGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTYzOC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTYzOTpcdC8qIGJwZl9maW5kX3ZtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHU2NCBhZGRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk2NDAtXHQgKiAgICAgICAgICAgICAgIHZvaWQgKmNhbGxiYWNrX2ZuLCB2b2lkICpjYWxsYmFja19jdHgsIHU2NCBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU0CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbjogQSBRdWljayBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQlBGIHNldHVwIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lLiBUaGUgYmlnIG9uZSwgb2YgY291cnNlLCBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBCdXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBlbnN1cmUgZnVsbCBmdW5jdGlvbmFsaXR5PyBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGlzLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGluIGBrZXJuZWwvYnBmL0tjb25maWdgIGFuZCBwb3NzaWJseSBldmVuIGBpbml0L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVu4oCZdCBtaXNzZWQgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuCgpUaGVuIHRoZXJl4oCZcyB0aGUgcG90ZW50aWFsIGZvciBkZXBlbmRlbmNpZXMuIEkgc2VlbSB0byByZWNhbGwgdGhhdCBzdGFjayBtYXBzIG1pZ2h0IHJlbHkgb24gYENPTkZJR19QRVJGX0VWRU5UU2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgY3J1Y2lhbCBvYmplY3RzIGxpa2UgYHN0YWNrbWFwLm9gIGFuZCBgdGFza19pdGVyLm9gIGFyZSBiZWluZyBjb21waWxlZC4gVGhhdCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgc29tZSBpbnNpZ2h0IHRvIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhY2ttYXAubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN0YWNrbWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXNrX2l0ZXIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MjQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJQRiBhbmQgUGVyZiBFdmVudHMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGJvdGggYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfUEVSRl9FVkVOVFNgIGVuYWJsZWQuIFRoYXQgc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIgZm9yIHRoaXMgYXJlYS4gSXQmIzM5O3MgYSBmb3VuZGF0aW9uYWwgc2V0dXAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgd2FudCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBga2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhgLiBJJiMzOTttIGd1ZXNzaW5nIHRoZXJlIG1pZ2h0IGJlIHNvbWUgKm90aGVyKiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgc3VidGxlIG9uZXMsIGRlZmluZWQgb3IgaGludGVkIGF0IGluIHRoYXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUuIEJldHRlciB0byBjb3ZlciBhbGwgdGhlIGJhc2VzIHVwZnJvbnQgYW5kIGJlIGF3YXJlIG9mIGFueSBpbnRlcnJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhbiBzdHVtYmxlIHVwb24gYSBnb3RjaGEgbGF0ZXIuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCBhbGwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbWFwX3VubG9ja193b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmg9MTE9c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrIHtcbi0tXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xNi1cbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjE3OkRFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspO1xua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMTgtXG4tLVxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmg9MjY9c3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpXG4tLVxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMzItXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjMzOlx0XHRcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0zNC1cdFx0XHRpZiAoaXJxX3dvcmtfaXNfYnVzeShcdTAwMjZ3b3JrLVx1MDAzZWlycV93b3JrKSB8fFxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMy0jaW5jbHVkZSBcJiMzNDtwZXJjcHVfZnJlZWxpc3QuaFwmIzM0O1xua2VybmVsL2JwZi9zdGFja21hcC5jOjE0OiNpbmNsdWRlIFwmIzM0O21tYXBfdW5sb2NrX3dvcmsuaFwmIzM0O1xua2VybmVsL2JwZi9zdGFja21hcC5jLTE1LVxuLS1cbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvbW0uaFx1MDAzZVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxNDojaW5jbHVkZSBcJiMzNDttbWFwX3VubG9ja193b3JrLmhcJiMzNDtcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTUtXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYz0xMTc4PV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTExNzktXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjExODA6REVGSU5FX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTE4MS1cbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTExOTU9c3RhdGljIGludCBfX2luaXQgdGFza19pdGVyX2luaXQodm9pZClcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEyMDAtXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjEyMDE6XHRcdHdvcmsgPSBwZXJfY3B1X3B0cihcdTAwMjZtbWFwX3VubG9ja193b3JrLCBjcHUpO1xua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMjAyLVx0XHRpbml0X2lycV93b3JrKFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmssIGRvX21tYXBfcmVhZF91bmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzU1CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlIHdpdGhpbiBCUEYmIzM5O3MgYG1tYXBfcmVhZF90cnlsb2NrYCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUgaW1wYWN0IGNvcmUgQlBGIGxvZ2ljLCBlc3BlY2lhbGx5IGhvdyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycyBvcGVyYXRlLCBzbyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgZml4LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgLCBgYnBmX2ZpbmRfdm1hYCwgYGRvX21tYXBfcmVhZF91bmxvY2tgLCBhbmQgYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AuIFdoaWxlIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgIG1pZ2h0IGJlIGlubGluZWQsIFN5emthbGxlciBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhhdCBzbyBJJiMzOTtsbCBpbmNsdWRlIGl0IGFuZCB0aGUgY2FsbGVycy4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjYWxsZXJzIG9mIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgIGFyZSBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgYnBmX2ZpbmRfdm1hYC4gVGhlIGNhbGxlcnMgb2YgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgIGFyZSBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBhbmQgYGRvX21tYXBfcmVhZF91bmxvY2tgLgoKSSYjMzk7bGwga2VlcCBgQlBGX1NZU0NBTExgIGFuZCBgUEVSRl9FVkVOVFNgIGVuYWJsZWQgaW4gbXkgZnV6emluZyBjb25maWcuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyB0aGUgY29ycmVjdCBuYW1lLCBhbmQgdGhhdCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgZG9fbW1hcF9yZWFkX3VubG9ja2AgYXJlIHN0YXRpYyBmdW5jdGlvbnMgaW4gdGhlIHJlbGV2YW50IGZpbGVzLgoKVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6Mzk6NTMuMjczMzI0MTc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4OTExNDUzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlBFUkZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRcIixcbiAgICBcImJwZl9maW5kX3ZtYVwiLFxuICAgIFwiZG9fbW1hcF9yZWFkX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJ3MgaGFuZGxpbmcgb2YgbW1hcF9yZWFkX3RyeWxvY2sgd2hlbiBJUlFzIGFyZSBkaXNhYmxlZCBieSBpbnRyb2R1Y2luZyBhbiBhdG9taWNfdCBhY3RpdmUgZmxhZyB0byByZXNlcnZlIHRoZSBwZXItY3B1IG1tYXBfdW5sb2NrX2lycV93b3JrIHNsb3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgc3RhY2sgbWFwcyBhbmQgdGFzayBpdGVyYXRvcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjM5OjUzLjI3MzMyOTUwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MzU1NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDJlNGIwZmJlOWEwNzQxN2NmOTZkZjkzZGFlYTNlNGFhY2JiYzEyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMTozOTo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXFxuaW5kZXggNWQxOGQ3ZDg1YmVmOTYuLmQ0MTZlNDMzNzYzNWZlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXFxuKysrIGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcXG5AQCAtNCwxMiArNCwxNCBAQFxcbiBcXG4gI2lmbmRlZiBfX01NQVBfVU5MT0NLX1dPUktfSF9fXFxuICNkZWZpbmUgX19NTUFQX1VOTE9DS19XT1JLX0hfX1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYXRvbWljLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFfd29yay5oXFx1MDAzZVxcbiBcXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xcbiBzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsge1xcbiBcXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XFxuIFxcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xcbitcXHRhdG9taWNfdCBhY3RpdmU7XFxuIH07XFxuIFxcbiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5AQCAtMTgsOCArMjAsOCBAQCBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG4gICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2ZcXG4gICogcmlzayB0byBkZWFkbG9jayB3aXRoIHJxX2xvY2suIFRvIGxvb2sgdXAgdm1hIHdoZW4gdGhlIGlycXMgYXJlXFxuICAqIGRpc2FibGVkLCB3ZSBuZWVkIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsuIFdlIHVzZSBhXFxuLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWRcXG4tICogYnkgYW5vdGhlciBsb29rdXAsIHdlIGZhbGwgb3Zlci5cXG4rICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gVGhlIGFjdGl2ZSBmbGFnIHJlc2VydmVzIHRoZSBzbG90XFxuKyAqIGJlZm9yZSBtbWFwX3JlYWRfdHJ5bG9jaygpIGFuZCB1bnRpbCB0aGUgaXJxX3dvcmsgY2FsbGJhY2sgY29uc3VtZXMgbW0uXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b3JrX3B0cilcXG4ge1xcbkBAIC0yOSw5ICszMSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b1xcbiBcXHRpZiAoaXJxc19kaXNhYmxlZCgpKSB7XFxuIFxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcXG4gXFx0XFx0XFx0d29yayA9IHRoaXNfY3B1X3B0cihcXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XFxuLVxcdFxcdFxcdGlmIChpcnFfd29ya19pc19idXN5KFxcdTAwMjZ3b3JrLVxcdTAwM2VpcnFfd29yaykpIHtcXG4tXFx0XFx0XFx0XFx0LyogY2Fubm90IHF1ZXVlIG1vcmUgdXBfcmVhZCwgZmFsbGJhY2sgKi9cXG4rXFx0XFx0XFx0aWYgKGlycV93b3JrX2lzX2J1c3koXFx1MDAyNndvcmstXFx1MDAzZWlycV93b3JrKSB8fFxcbitcXHRcXHRcXHQgICAgYXRvbWljX2NtcHhjaGdfYWNxdWlyZShcXHUwMDI2d29yay1cXHUwMDNlYWN0aXZlLCAwLCAxKSkge1xcbiBcXHRcXHRcXHRcXHRpcnFfd29ya19idXN5ID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0d29yayA9IE5VTEw7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0LypcXG5AQCAtNDYsNiArNDksMzIgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29cXG4gXFx0cmV0dXJuIGlycV93b3JrX2J1c3k7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaylcXG4re1xcbitcXHRpZiAod29yaylcXG4rXFx0XFx0YXRvbWljX3NldF9yZWxlYXNlKFxcdTAwMjZ3b3JrLVxcdTAwM2VhY3RpdmUsIDApO1xcbit9XFxuK1xcbisvKlxcbisgKiBUcnkgdG8gdGFrZSBtbS1cXHUwMDNlbW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXlcXG4rICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xcbisgKiBicGZfbW1hcF91bmxvY2tfbW0oKSAoTlVMTCB3aGVuIHRoZSB1bmxvY2sgY2FuIGJlIGRvbmUgaW5saW5lKTsgb24gZmFpbHVyZVxcbisgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmspXFxuK3tcXG4rXFx0aWYgKGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsod29yaykpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICghbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7XFxuK1xcdFxcdGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsoKndvcmspO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIHZvaWQgYnBmX21tYXBfdW5sb2NrX21tKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIHtcXG4gXFx0aWYgKCF3b3JrKSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RhY2ttYXAuYyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xcbmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcXG4rKysgYi9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcXG5AQCAtNDE1LDcgKzQxNSw2IEBAIHN0YXRpYyB2b2lkIHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxcbiB7XFxuIFxcdHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yayA9IE5VTEw7XFxuLVxcdGJvb2wgaXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoXFx1MDAyNndvcmspO1xcbiBcXHRib29sIGhhc191c2VyX2N0eCA9IHVzZXIgXFx1MDAyNlxcdTAwMjYgY3VycmVudCBcXHUwMDI2XFx1MDAyNiBjdXJyZW50LVxcdTAwM2VtbTtcXG4gXFx0c3RydWN0IHN0YWNrX21hcF9idWlsZF9pZF9jYWNoZSBjYWNoZSA9IHt9O1xcbiBcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcXG5AQCAtNDMwLDcgKzQyOSw3IEBAIHN0YXRpYyB2b2lkIHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXFxuIFxcdCAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aFxcbiBcXHQgKiBidWlsZF9pZC5cXG4gXFx0ICovXFxuLVxcdGlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXFx1MDAzZW1tKSkge1xcbitcXHRpZiAoIWhhc191c2VyX2N0eCB8fCAhYnBmX21tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXFx1MDAzZW1tLCBcXHUwMDI2d29yaykpIHtcXG4gXFx0XFx0LyogY2Fubm90IGFjY2VzcyBjdXJyZW50LVxcdTAwM2VtbSwgZmFsbCBiYWNrIHRvIGlwcyAqL1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdHJhY2VfbnI7IGkrKylcXG4gXFx0XFx0XFx0c3RhY2tfbWFwX2J1aWxkX2lkX3NldF9pcChcXHUwMDI2aWRfb2Zmc1tpXSk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdGFza19pdGVyLmMgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jXFxuaW5kZXggYjI1NmZiOWMxMjE0ZTQuLmU2NmUzNDg0ZjkyM2RjIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdGFza19pdGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jXFxuQEAgLTc1NSw3ICs3NTUsNiBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXFxuIHtcXG4gXFx0c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrID0gTlVMTDtcXG4gXFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XFxuLVxcdGJvb2wgaXJxX3dvcmtfYnVzeSA9IGZhbHNlO1xcbiBcXHRib29sIF9fbWF5YmVfdW51c2VkIG1tcHV0X25lZWRlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4gXFx0aW50IHJldCA9IC1FTk9FTlQ7XFxuQEAgLTc5Miw5ICs3OTEsNyBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXFxuIFxcdGlmICghbW0pXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXG4tXFx0aXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoXFx1MDAyNndvcmspO1xcbi1cXG4tXFx0aWYgKGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKG1tKSkge1xcbitcXHRpZiAoIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhtbSwgXFx1MDAyNndvcmspKSB7XFxuIFxcdFxcdHJldCA9IC1FQlVTWTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5AQCAtMTE5MSw2ICsxMTg4LDggQEAgc3RhdGljIHZvaWQgZG9fbW1hcF9yZWFkX3VubG9jayhzdHJ1Y3QgaXJxX3dvcmsgKmVudHJ5KVxcbiBcXG4gXFx0d29yayA9IGNvbnRhaW5lcl9vZihlbnRyeSwgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBpcnFfd29yayk7XFxuIFxcdG1tYXBfcmVhZF91bmxvY2tfbm9uX293bmVyKHdvcmstXFx1MDAzZW1tKTtcXG4rXFx0d29yay1cXHUwMDNlbW0gPSBOVUxMO1xcbitcXHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTozOTo1My43Njk0MTAzOTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTM5NTA1MDY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiUEVSRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldFwiLFxuICAgIFwiYnBmX2ZpbmRfdm1hXCIsXG4gICAgXCJkb19tbWFwX3JlYWRfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBpbiBCUEYncyBoYW5kbGluZyBvZiBtbWFwX3JlYWRfdHJ5bG9jayB3aGVuIElSUXMgYXJlIGRpc2FibGVkIGJ5IGludHJvZHVjaW5nIGFuIGF0b21pY190IGFjdGl2ZSBmbGFnIHRvIHJlc2VydmUgdGhlIHBlci1jcHUgbW1hcF91bmxvY2tfaXJxX3dvcmsgc2xvdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXG5pbmRleCA1ZDE4ZDdkODViZWY5Ni4uZDQxNmU0MzM3NjM1ZmUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaFxuKysrIGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcbkBAIC00LDEyICs0LDE0IEBAXG4gXG4gI2lmbmRlZiBfX01NQVBfVU5MT0NLX1dPUktfSF9fXG4gI2RlZmluZSBfX01NQVBfVU5MT0NLX1dPUktfSF9fXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xuIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XG4gXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbitcdGF0b21pY190IGFjdGl2ZTtcbiB9O1xuIFxuIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspO1xuQEAgLTE4LDggKzIwLDggQEAgREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgbW1hcF91bmxvY2tfd29yayk7XG4gICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2ZcbiAgKiByaXNrIHRvIGRlYWRsb2NrIHdpdGggcnFfbG9jay4gVG8gbG9vayB1cCB2bWEgd2hlbiB0aGUgaXJxcyBhcmVcbiAgKiBkaXNhYmxlZCwgd2UgbmVlZCB0byBydW4gbW1hcF9yZWFkX3VubG9jaygpIGluIGlycV93b3JrLiBXZSB1c2UgYVxuLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWRcbi0gKiBieSBhbm90aGVyIGxvb2t1cCwgd2UgZmFsbCBvdmVyLlxuKyAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIFRoZSBhY3RpdmUgZmxhZyByZXNlcnZlcyB0aGUgc2xvdFxuKyAqIGJlZm9yZSBtbWFwX3JlYWRfdHJ5bG9jaygpIGFuZCB1bnRpbCB0aGUgaXJxX3dvcmsgY2FsbGJhY2sgY29uc3VtZXMgbW0uXG4gICovXG4gc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpXG4ge1xuQEAgLTI5LDkgKzMxLDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRpZiAoaXJxc19kaXNhYmxlZCgpKSB7XG4gXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcbiBcdFx0XHR3b3JrID0gdGhpc19jcHVfcHRyKFx1MDAyNm1tYXBfdW5sb2NrX3dvcmspO1xuLVx0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspKSB7XG4tXHRcdFx0XHQvKiBjYW5ub3QgcXVldWUgbW9yZSB1cF9yZWFkLCBmYWxsYmFjayAqL1xuK1x0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspIHx8XG4rXHRcdFx0ICAgIGF0b21pY19jbXB4Y2hnX2FjcXVpcmUoXHUwMDI2d29yay1cdTAwM2VhY3RpdmUsIDAsIDEpKSB7XG4gXHRcdFx0XHRpcnFfd29ya19idXN5ID0gdHJ1ZTtcbitcdFx0XHRcdHdvcmsgPSBOVUxMO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKlxuQEAgLTQ2LDYgKzQ5LDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRyZXR1cm4gaXJxX3dvcmtfYnVzeTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrKVxuK3tcbitcdGlmICh3b3JrKVxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2d29yay1cdTAwM2VhY3RpdmUsIDApO1xuK31cbitcbisvKlxuKyAqIFRyeSB0byB0YWtlIG1tLVx1MDAzZW1tYXBfbG9jayBmb3IgcmVhZGluZyBvbiBiZWhhbGYgb2YgYSBCUEYgaGVscGVyIHRoYXQgbWF5XG4rICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xuKyAqIGJwZl9tbWFwX3VubG9ja19tbSgpIChOVUxMIHdoZW4gdGhlIHVubG9jayBjYW4gYmUgZG9uZSBpbmxpbmUpOyBvbiBmYWlsdXJlXG4rICogbm8gc2xvdCBzdGF5cyByZXNlcnZlZCBhbmQgdGhlIGNhbGxlciBtdXN0IGZhbGwgYmFjay5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfcmVhZF90cnlsb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuK1x0XHRcdFx0XHQgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29yaylcbit7XG4rXHRpZiAoYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayh3b3JrKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKCFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbitcdFx0YnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29yaygqd29yayk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHZvaWQgYnBmX21tYXBfdW5sb2NrX21tKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4ge1xuIFx0aWYgKCF3b3JrKSB7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdGFja21hcC5jIGIva2VybmVsL2JwZi9zdGFja21hcC5jXG5pbmRleCA0MWZlODdkNzMwMmYyMi4uMTY2ZmM4ZWZhYjhiMjEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcbisrKyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xuQEAgLTQxNSw3ICs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0XHRcdFx0XHQgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdClcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbiBcdGJvb2wgaGFzX3VzZXJfY3R4ID0gdXNlciBcdTAwMjZcdTAwMjYgY3VycmVudCBcdTAwMjZcdTAwMjYgY3VycmVudC1cdTAwM2VtbTtcbiBcdHN0cnVjdCBzdGFja19tYXBfYnVpbGRfaWRfY2FjaGUgY2FjaGUgPSB7fTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuQEAgLTQzMCw3ICs0MjksNyBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0ICogZmFsbGJhY2sgaXMgdXNlZCBmb3Iga2VybmVsIHN0YWNrICghdXNlcikgb24gYSBzdGFja21hcCB3aXRoXG4gXHQgKiBidWlsZF9pZC5cbiBcdCAqL1xuLVx0aWYgKCFoYXNfdXNlcl9jdHggfHwgaXJxX3dvcmtfYnVzeSB8fCAhbW1hcF9yZWFkX3RyeWxvY2soY3VycmVudC1cdTAwM2VtbSkpIHtcbitcdGlmICghaGFzX3VzZXJfY3R4IHx8ICFicGZfbW1hcF9yZWFkX3RyeWxvY2soY3VycmVudC1cdTAwM2VtbSwgXHUwMDI2d29yaykpIHtcbiBcdFx0LyogY2Fubm90IGFjY2VzcyBjdXJyZW50LVx1MDAzZW1tLCBmYWxsIGJhY2sgdG8gaXBzICovXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRyYWNlX25yOyBpKyspXG4gXHRcdFx0c3RhY2tfbWFwX2J1aWxkX2lkX3NldF9pcChcdTAwMjZpZF9vZmZzW2ldKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jIGIva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuaW5kZXggYjI1NmZiOWMxMjE0ZTQuLmU2NmUzNDg0ZjkyM2RjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuKysrIGIva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuQEAgLTc1NSw3ICs3NTUsNiBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXG4ge1xuIFx0c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrID0gTlVMTDtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gZmFsc2U7XG4gXHRib29sIF9fbWF5YmVfdW51c2VkIG1tcHV0X25lZWRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4gXHRpbnQgcmV0ID0gLUVOT0VOVDtcbkBAIC03OTIsOSArNzkxLDcgQEAgQlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxuIFx0aWYgKCFtbSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbi1cbi1cdGlmIChpcnFfd29ya19idXN5IHx8ICFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbitcdGlmICghYnBmX21tYXBfcmVhZF90cnlsb2NrKG1tLCBcdTAwMjZ3b3JrKSkge1xuIFx0XHRyZXQgPSAtRUJVU1k7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTExOTEsNiArMTE4OCw4IEBAIHN0YXRpYyB2b2lkIGRvX21tYXBfcmVhZF91bmxvY2soc3RydWN0IGlycV93b3JrICplbnRyeSlcbiBcbiBcdHdvcmsgPSBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgaXJxX3dvcmspO1xuIFx0bW1hcF9yZWFkX3VubG9ja19ub25fb3duZXIod29yay1cdTAwM2VtbSk7XG4rXHR3b3JrLVx1MDAzZW1tID0gTlVMTDtcbitcdGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsod29yayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19pbml0IHRhc2tfaXRlcl9pbml0KHZvaWQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTozOTo1My43Njk0MTE4NjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjM2NTkxNzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgUGF0Y2ggZm9yIENvbmN1cnJlbmN5IElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHdlJ3JlIG1vZGlmeWluZyBob3cgYG1tYXBfcmVhZF90cnlsb2NrYCBpcyBoYW5kbGVkIGluIEJQRiBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oYCwgYGtlcm5lbC9icGYvc3RhY2ttYXAuY2AsIGFuZCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AuICBUaGUgbWFpbiB0aHJ1c3Qgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mICBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCwgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCBhbmQgYW4gYGF0b21pY190IGFjdGl2ZWAgZmllbGQgd2l0aGluIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS5cblxuRmlyc3QsIGxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSW4gYG1tYXBfdW5sb2NrX3dvcmsuaGAsIHRoZSBgYWN0aXZlYCBhdG9taWMgZmxhZyBpcyBhZGRlZCB0byB0aGUgYG1tYXBfdW5sb2NrX2lycV93b3JrYCBzdHJ1Y3R1cmUuIFRoZSBvbGQgbG9naWMgdXNlZCBgaXJxX3dvcmtfaXNfYnVzeWAgdG8gY2hlY2sgaWYgYSB3b3JrIGl0ZW0gd2FzIGJ1c3kuIE5vdywgdGhlcmUncyBhIG1vcmUgcm9idXN0IGNoZWNrOiBgaXJxX3dvcmtfaXNfYnVzeWAgaXMgc3RpbGwgY2hlY2tlZCwgYnV0IHRoZXJlJ3MgYWxzbyBhbiBgYXRvbWljX2NtcHhjaGdfYWNxdWlyZWAgY2hlY2sgb24gdGhlIGBhY3RpdmVgIGZsYWcuIFRoaXMgZmxhZyBzZWVtcyB0byBiZSB0aGUga2V5IHRvIHRoZSBmaXguIFdlIGFsc28gaGF2ZSBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AsIHdoaWNoLCBpZiB0aGUgd29yayBzbG90IGhhcyBiZWVuIHJlc2VydmVkIGJ5IHRoaXMgY3B1LCBzZXRzIHRoZSBgYWN0aXZlYCBmbGFnIGJhY2sgdG8gMC4gQW5kIHRoZW4gdGhlIG5ldyBmdW5jdGlvbiBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCB0aGF0IGlzIHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcsIGFzIGl0IGNhbGxzIGBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrYCBhbmQgYXR0ZW1wdHMgdGhlIGBtbWFwX3JlYWRfdHJ5bG9ja2AuXG5cblRoaXMgaXMgYWxsIGFib3V0IGltcHJvdmluZyB0aGUgY29uY3VycmVuY3kgc2FmZXR5IHdoZW4gZGVhbGluZyB3aXRoIG1tYXAgcmVhZHMgaW4gQlBGLCBlc3BlY2lhbGx5IHdoZW4gSVJRcyBtaWdodCBiZSBkaXNhYmxlZC4gVGhlIG9yaWdpbmFsIGNoZWNrIHVzaW5nIG9ubHkgYGlycV93b3JrX2lzX2J1c3lgIGxvb2tzIGxpa2UgaXQgaGFkIGEgcmFjZSBjb25kaXRpb24uIEl0J3MgbGlrZWx5IHRoYXQgaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlsZWQsIHRoZSBvcmlnaW5hbCBjaGVjayBsZWZ0IHRoZSB3b3JrIHNsb3QgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBwb3NzaWJseSBsZWFkaW5nIHRvIGEgY29uY3VycmVuY3kgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byByZXNlcnZlIHRoZSBzbG90IHdpdGggYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIG9uIHRoZSBgYWN0aXZlYCBmbGFnICpiZWZvcmUqIHdlIGV2ZW4gYXR0ZW1wdCBgbW1hcF9yZWFkX3RyeWxvY2tgLiBUaGlzIHByZXZlbnRzIGFub3RoZXIgY29udGV4dCBmcm9tIGdyYWJiaW5nIHRoZSB3b3JrIGl0ZW0gaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlscy5cblxuVGhlIHVzZSBvZiBhbiBhdG9taWMgZmxhZyBjb25maXJtcyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRoZSBwcm9ibGVtIHdhcyB0aGF0IGEgY29udGV4dCBjb3VsZCBiZSBpbnRlcnJ1cHRlZCwgc2F5LCBieSBhbiBOTUksIGJldHdlZW4gZ2V0dGluZyBhIHdvcmsgaXRlbSwgYW5kIGFjdHVhbGx5IHF1ZXVlaW5nIGl0IGZvciB1bmxvY2suIFRoZW4gYW5vdGhlciBDUFUgbWlnaHQgdHJ5IHRvIHVzZSB0aGUgc2FtZSB3b3JrIGl0ZW0uIFRoZSBuZXcgYGFjdGl2ZWAgZmxhZyBlc3NlbnRpYWxseSBzZXJpYWxpemVzIGFjY2VzcyB0byB0aGUgd29yayBpdGVtLCBlbnN1cmluZyB0aGF0IG9ubHkgb25lIGNvbnRleHQgdXNlcyBhIHdvcmsgaXRlbSBhdCBhIHRpbWUsIGV2ZW4gaWYgTk1JcyBhcmUgZW5hYmxlZC5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2UgbmV3IGZ1bmN0aW9ucyB1c2VkPyAgYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBhbmQgYGJwZl9maW5kX3ZtYWAsIGJvdGggaW4gYGtlcm5lbC9icGZgLCBhcmUgdXNpbmcgdGhpcyBuZXcgbG9naWMuICBgZG9fbW1hcF9yZWFkX3VubG9ja2AgaXMgYmVpbmcgbW9kaWZpZWQgdG9vLCBhbmQgaXQgY2xlYXJzIHRoZSB3b3JrIGl0ZW0ncyBgbW1gIGZpZWxkIGFuZCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AgdG8gcmVsZWFzZSB0aGUgd29yayBpdGVtLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZm9jdXMgZnV6emluZyBvbiB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldGAsIGBicGZfZmluZF92bWFgLCBhbmQgYGRvX21tYXBfcmVhZF91bmxvY2tgLlxuXG5JIGtub3cgQlBGIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAgc28gSSdsbCBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGNoYW5nZSBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMuIEEgcXVpY2sgZ3JlcCBzaG91bGQgY29uZmlybSB0aGF0LlxuXG5UaGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgQlBGIGxvZ2ljLiBXb3J0aEZ1enppbmcgPSB0cnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA2LjEzNTMzMTQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzEzODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3RhY2ttYXAuYz0xODM9c3RydWN0IHN0YWNrX21hcF9jYWNoZWRfdm1hIHtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTEtLypcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6MTkyOiAqIFBlciBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldCgpIGNhbGwgY2FjaGUgb2YgdGhlIGxhc3QgVk1BIHdpdGggYSBidWlsZCBJRFxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTMtICogcmVzb2x2ZWQgYW5kIHRoZSBsYXN0IFZNQSB3aXRoIG5vIHVzYWJsZSBidWlsZCBJRC4gQWRqYWNlbnQgc3RhY2sgZnJhbWVzIHRlbmRcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYz0zMjM9c3RhdGljIHZvaWQgc3RhY2tfbWFwX3VubG9ja192bWEoc3RydWN0IHN0YWNrX21hcF92bWFfbG9jayAqbG9jaylcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0zMzItXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjMzMzpzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldF9zbGVlcGFibGUoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1MzIgdHJhY2VfbnIpXFxuLS1cXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDEzLSAqL1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MTQ6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDE1LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxcbi0tXFxua2VybmVsL2JwZi9zdGFja21hcC5jLTQyMy1cXHRpZiAobWF5X2ZhdWx0IFxcdTAwMjZcXHUwMDI2IGhhc191c2VyX2N0eCkge1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MjQ6XFx0XFx0c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRfc2xlZXBhYmxlKGlkX29mZnMsIHRyYWNlX25yKTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYz01MDY9c3RhdGljIGxvbmcgX19icGZfZ2V0X3N0YWNraWQoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDUtXFx0XFx0XFx0aWRfb2Zmc1tpXS5pcCA9IGlwc1tpXTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6NTQ2OlxcdFxcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KGlkX29mZnMsIHRyYWNlX25yLCB1c2VyLCBmYWxzZSAvKiAhbWF5X2ZhdWx0ICovKTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNTQ3LVxcdFxcdHRyYWNlX2xlbiA9IHRyYWNlX25yICogc2l6ZW9mKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQpO1xcbi0tXFxua2VybmVsL2JwZi9zdGFja21hcC5jPTY4Mj1zdGF0aWMgbG9uZyBfX2JwZl9nZXRfc3RhY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTctXFx0aWYgKHVzZXJfYnVpbGRfaWQpXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjc1ODpcXHRcXHRzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChidWYsIHRyYWNlX25yLCB1c2VyLCBtYXlfZmF1bHQpO1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA2LjE5MjY1MDU0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTU3NzAwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIFRyYWNpbmcgYW5kIFZNQXMqKlxuXG5Pa2F5LCBzbyBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBnZXR0aW5nIHVzZWQgaW4gYm90aCBgX19icGZfZ2V0X3N0YWNraWRgIGFuZCBgX19icGZfZ2V0X3N0YWNrYC4gR290IGl0LiBBbmQgSSBzZWUgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyBhY3R1YWxseSBhIEJQRiBoZWxwZXIgZnVuY3Rpb24uIFJpZ2h0LCBtYWtlcyBzZW5zZSDigJMgd2UgbmVlZCB0byBmaW5kIHRoZSB2aXJ0dWFsIG1lbW9yeSBhcmVhLiBMZXQncyBkaWcgaW50byB0aGF0IGBicGZfZmluZF92bWFgIGNhbGwgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEJQRiBjb250ZXh0LiBJJ2xsIHRha2UgYSBsb29rIGF0IGBrZXJuZWwvYnBmL3Rhc2tfaXRlci5jYCB0byBzZWUgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kIHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQuIFRoYXQncyBwcm9iYWJseSB3aGVyZSBhbGwgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MDkuODA4NDIyNjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMDg2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ZpbmRfdm1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGVscGVycy5jPTIwNjc9YnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIyMzktXFx0Y2FzZSBCUEZfRlVOQ19maW5kX3ZtYTpcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyMjQwOlxcdFxcdHJldHVybiBcXHUwMDI2YnBmX2ZpbmRfdm1hX3Byb3RvO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTIyNDEtXFx0ZGVmYXVsdDpcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9NzM3PXN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHRhc2tfdm1hX3JlZ19pbmZvID0ge1xcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy03NTItXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzo3NTM6QlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtNzU0LVxcdCAgIGJwZl9jYWxsYmFja190LCBjYWxsYmFja19mbiwgdm9pZCAqLCBjYWxsYmFja19jdHgsIHU2NCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTgxNC1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjgxNTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2ZpbmRfdm1hX3Byb3RvID0ge1xcbmtlcm5lbC9icGYvdGFza19pdGVyLmM6ODE2OlxcdC5mdW5jXFx0XFx0PSBicGZfZmluZF92bWEsXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy04MTctXFx0LnJldF90eXBlXFx0PSBSRVRfSU5URUdFUixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05NjM0PXN0YXRpYyBpbnQgc2V0X2ZpbmRfdm1hX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTYzOC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjk2Mzk6XFx0LyogYnBmX2ZpbmRfdm1hKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdTY0IGFkZHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk2NDAtXFx0ICogICAgICAgICAgICAgICB2b2lkICpjYWxsYmFja19mbiwgdm9pZCAqY2FsbGJhY2tfY3R4LCB1NjQgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA5Ljg3MTQzNzUyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQ5NDMzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIEJQRiBDb25maWd1cmF0aW9uOiBBIFF1aWNrIEF1ZGl0KipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgQlBGIHNldHVwIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lLiBUaGUgYmlnIG9uZSwgb2YgY291cnNlLCBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgdGhhdCdzIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2suIEJ1dCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIGVuc3VyZSBmdWxsIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoaXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEknbGwgbmVlZCB0byBsb29rIGluIGBrZXJuZWwvYnBmL0tjb25maWdgIGFuZCBwb3NzaWJseSBldmVuIGBpbml0L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVu4oCZdCBtaXNzZWQgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuXG5cblRoZW4gdGhlcmXigJlzIHRoZSBwb3RlbnRpYWwgZm9yIGRlcGVuZGVuY2llcy4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHN0YWNrIG1hcHMgbWlnaHQgcmVseSBvbiBgQ09ORklHX1BFUkZfRVZFTlRTYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuRmluYWxseSwgSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgY3J1Y2lhbCBvYmplY3RzIGxpa2UgYHN0YWNrbWFwLm9gIGFuZCBgdGFza19pdGVyLm9gIGFyZSBiZWluZyBjb21waWxlZC4gVGhhdCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgc29tZSBpbnNpZ2h0IHRvIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTQsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTMuODg2MzgzNTAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDg0MTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YWNrbWFwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3RhY2ttYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTMuOTQ1NDczMTI4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTI1OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfaXRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTQuMDA1MDAzNjk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDI1NjYyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIGFuZCBQZXJmIEV2ZW50cyoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJ20gcHJldHR5IGNlcnRhaW4gd2UncmUgZ29pbmcgdG8gbmVlZCBib3RoIGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX1BFUkZfRVZFTlRTYCBlbmFibGVkLiBUaGF0IHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIGZvciB0aGlzIGFyZWEuIEl0J3MgYSBmb3VuZGF0aW9uYWwgc2V0dXAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgd2FudCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBga2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUgbWlnaHQgYmUgc29tZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWxseSBzdWJ0bGUgb25lcywgZGVmaW5lZCBvciBoaW50ZWQgYXQgaW4gdGhhdCBzcGVjaWZpYyBoZWFkZXIgZmlsZS4gQmV0dGVyIHRvIGNvdmVyIGFsbCB0aGUgYmFzZXMgdXBmcm9udCBhbmQgYmUgYXdhcmUgb2YgYW55IGludGVycmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGFuIHN0dW1ibGUgdXBvbiBhIGdvdGNoYSBsYXRlci4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTcuNzQ3NTcxOTM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUxNzI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbWFwX3VubG9ja193b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oPTExPXN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XFxuLS1cXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xNi1cXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaDoxNzpERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xOC1cXG4tLVxcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oPTI2PXN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmtfcHRyKVxcbi0tXFxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMzItXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSkge1xcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjMzOlxcdFxcdFxcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXFx1MDAyNm1tYXBfdW5sb2NrX3dvcmspO1xcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oLTM0LVxcdFxcdFxcdGlmIChpcnFfd29ya19pc19idXN5KFxcdTAwMjZ3b3JrLVxcdTAwM2VpcnFfd29yaykgfHxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMy0jaW5jbHVkZSBcXFwicGVyY3B1X2ZyZWVsaXN0LmhcXFwiXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjE0OiNpbmNsdWRlIFxcXCJtbWFwX3VubG9ja193b3JrLmhcXFwiXFxua2VybmVsL2JwZi9zdGFja21hcC5jLTE1LVxcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvbW0uaFxcdTAwM2VcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjE0OiNpbmNsdWRlIFxcXCJtbWFwX3VubG9ja193b3JrLmhcXFwiXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xNS1cXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9MTE3OD1fX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTE3OS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjExODA6REVGSU5FX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTExODEtXFxuLS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTExOTU9c3RhdGljIGludCBfX2luaXQgdGFza19pdGVyX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTIwMC1cXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxMjAxOlxcdFxcdHdvcmsgPSBwZXJfY3B1X3B0cihcXHUwMDI2bW1hcF91bmxvY2tfd29yaywgY3B1KTtcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEyMDItXFx0XFx0aW5pdF9pcnFfd29yayhcXHUwMDI2d29yay1cXHUwMDNlaXJxX3dvcmssIGRvX21tYXBfcmVhZF91bmxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTo0MDoxNy44MDUwOTcwNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI2OTAzOTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gQlBGJ3MgYG1tYXBfcmVhZF90cnlsb2NrYCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUgaW1wYWN0IGNvcmUgQlBGIGxvZ2ljLCBlc3BlY2lhbGx5IGhvdyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycyBvcGVyYXRlLCBzbyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBmaXguIExldCdzIHN0YXJ0IHdpdGggYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCwgYGJwZl9maW5kX3ZtYWAsIGBkb19tbWFwX3JlYWRfdW5sb2NrYCwgYW5kIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgLiBXaGlsZSBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBtaWdodCBiZSBpbmxpbmVkLCBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhhdCBzbyBJJ2xsIGluY2x1ZGUgaXQgYW5kIHRoZSBjYWxsZXJzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY2FsbGVycyBvZiBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBhcmUgYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBhbmQgYGJwZl9maW5kX3ZtYWAuIFRoZSBjYWxsZXJzIG9mIGBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrYCBhcmUgYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AgYW5kIGBkb19tbWFwX3JlYWRfdW5sb2NrYC5cblxuSSdsbCBrZWVwIGBCUEZfU1lTQ0FMTGAgYW5kIGBQRVJGX0VWRU5UU2AgZW5hYmxlZCBpbiBteSBmdXp6aW5nIGNvbmZpZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyB0aGUgY29ycmVjdCBuYW1lLCBhbmQgdGhhdCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgZG9fbW1hcF9yZWFkX3VubG9ja2AgYXJlIHN0YXRpYyBmdW5jdGlvbnMgaW4gdGhlIHJlbGV2YW50IGZpbGVzLlxuXG5UaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc1NSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MjUuMDc0MTM5MzExWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMTY5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gICAgXCJicGZfZmluZF92bWFcIixcbiAgICBcImRvX21tYXBfcmVhZF91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIGluIEJQRidzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gICAgXCJicGZfZmluZF92bWFcIixcbiAgICBcImRvX21tYXBfcmVhZF91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIGluIEJQRidzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzhztf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 21:16:31 +0000 UTC FinishedAt: 2026-07-22 21:40:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "PERF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "a23a71823352e2d792dcaae25f1ebb744acbfc0b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "PERF_EVENTS" ], "series_id": "75eafd51-ac64-4774-a72a-e369808950c0" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "stack_map_get_build_id_offset", "bpf_find_vma", "do_mmap_read_unlock" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1BFUkZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQmIzM0OywKICAgICYjMzQ7YnBmX2ZpbmRfdm1hJiMzNDssCiAgICAmIzM0O2RvX21tYXBfcmVhZF91bmxvY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBpbiBCUEYmIzM5O3MgaGFuZGxpbmcgb2YgbW1hcF9yZWFkX3RyeWxvY2sgd2hlbiBJUlFzIGFyZSBkaXNhYmxlZCBieSBpbnRyb2R1Y2luZyBhbiBhdG9taWNfdCBhY3RpdmUgZmxhZyB0byByZXNlcnZlIHRoZSBwZXItY3B1IG1tYXBfdW5sb2NrX2lycV93b3JrIHNsb3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgc3RhY2sgbWFwcyBhbmQgdGFzayBpdGVyYXRvcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmggYi9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaFxuaW5kZXggNWQxOGQ3ZDg1YmVmOTYuLmQ0MTZlNDMzNzYzNWZlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXG5AQCAtNCwxMiAmIzQzOzQsMTQgQEBcbiBcbiAjaWZuZGVmIF9fTU1BUF9VTkxPQ0tfV09SS19IX19cbiAjZGVmaW5lIF9fTU1BUF9VTkxPQ0tfV09SS19IX19cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xuIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XG4gXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiYjNDM7XHRhdG9taWNfdCBhY3RpdmU7XG4gfTtcbiBcbiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbkBAIC0xOCw4ICYjNDM7MjAsOCBAQCBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbiAgKiBXZSBjYW5ub3QgZG8gbW1hcF9yZWFkX3VubG9jaygpIHdoZW4gdGhlIGlycSBpcyBkaXNhYmxlZCwgYmVjYXVzZSBvZlxuICAqIHJpc2sgdG8gZGVhZGxvY2sgd2l0aCBycV9sb2NrLiBUbyBsb29rIHVwIHZtYSB3aGVuIHRoZSBpcnFzIGFyZVxuICAqIGRpc2FibGVkLCB3ZSBuZWVkIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsuIFdlIHVzZSBhXG4tICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gSWYgdGhlIGlycV93b3JrIGlzIGFscmVhZHkgdXNlZFxuLSAqIGJ5IGFub3RoZXIgbG9va3VwLCB3ZSBmYWxsIG92ZXIuXG4mIzQzOyAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIFRoZSBhY3RpdmUgZmxhZyByZXNlcnZlcyB0aGUgc2xvdFxuJiM0MzsgKiBiZWZvcmUgbW1hcF9yZWFkX3RyeWxvY2soKSBhbmQgdW50aWwgdGhlIGlycV93b3JrIGNhbGxiYWNrIGNvbnN1bWVzIG1tLlxuICAqL1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmtfcHRyKVxuIHtcbkBAIC0yOSw5ICYjNDM7MzEsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29cbiBcdGlmIChpcnFzX2Rpc2FibGVkKCkpIHtcbiBcdFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSkge1xuIFx0XHRcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XG4tXHRcdFx0aWYgKGlycV93b3JrX2lzX2J1c3koXHUwMDI2d29yay1cdTAwM2VpcnFfd29yaykpIHtcbi1cdFx0XHRcdC8qIGNhbm5vdCBxdWV1ZSBtb3JlIHVwX3JlYWQsIGZhbGxiYWNrICovXG4mIzQzO1x0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspIHx8XG4mIzQzO1x0XHRcdCAgICBhdG9taWNfY21weGNoZ19hY3F1aXJlKFx1MDAyNndvcmstXHUwMDNlYWN0aXZlLCAwLCAxKSkge1xuIFx0XHRcdFx0aXJxX3dvcmtfYnVzeSA9IHRydWU7XG4mIzQzO1x0XHRcdFx0d29yayA9IE5VTEw7XG4gXHRcdFx0fVxuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qXG5AQCAtNDYsNiAmIzQzOzQ5LDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRyZXR1cm4gaXJxX3dvcmtfYnVzeTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaylcbiYjNDM7e1xuJiM0MztcdGlmICh3b3JrKVxuJiM0MztcdFx0YXRvbWljX3NldF9yZWxlYXNlKFx1MDAyNndvcmstXHUwMDNlYWN0aXZlLCAwKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVHJ5IHRvIHRha2UgbW0tXHUwMDNlbW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXlcbiYjNDM7ICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xuJiM0MzsgKiBicGZfbW1hcF91bmxvY2tfbW0oKSAoTlVMTCB3aGVuIHRoZSB1bmxvY2sgY2FuIGJlIGRvbmUgaW5saW5lKTsgb24gZmFpbHVyZVxuJiM0MzsgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbiYjNDM7XHRcdFx0XHRcdCBzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b3JrKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsod29yaykpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmICghbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7XG4mIzQzO1x0XHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKCp3b3JrKTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfbW0oc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbiB7XG4gXHRpZiAoIXdvcmspIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmMgYi9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcbmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9zdGFja21hcC5jXG5AQCAtNDE1LDcgJiM0Mzs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0XHRcdFx0XHQgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdClcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbiBcdGJvb2wgaGFzX3VzZXJfY3R4ID0gdXNlciBcdTAwMjZcdTAwMjYgY3VycmVudCBcdTAwMjZcdTAwMjYgY3VycmVudC1cdTAwM2VtbTtcbiBcdHN0cnVjdCBzdGFja19tYXBfYnVpbGRfaWRfY2FjaGUgY2FjaGUgPSB7fTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuQEAgLTQzMCw3ICYjNDM7NDI5LDcgQEAgc3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcbiBcdCAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aFxuIFx0ICogYnVpbGRfaWQuXG4gXHQgKi9cbi1cdGlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXHUwMDNlbW0pKSB7XG4mIzQzO1x0aWYgKCFoYXNfdXNlcl9jdHggfHwgIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhjdXJyZW50LVx1MDAzZW1tLCBcdTAwMjZ3b3JrKSkge1xuIFx0XHQvKiBjYW5ub3QgYWNjZXNzIGN1cnJlbnQtXHUwMDNlbW0sIGZhbGwgYmFjayB0byBpcHMgKi9cbiBcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdHJhY2VfbnI7IGkmIzQzOyYjNDM7KVxuIFx0XHRcdHN0YWNrX21hcF9idWlsZF9pZF9zZXRfaXAoXHUwMDI2aWRfb2Zmc1tpXSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90YXNrX2l0ZXIuYyBiL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbmluZGV4IGIyNTZmYjljMTIxNGU0Li5lNjZlMzQ4NGY5MjNkYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdGFza19pdGVyLmNcbkBAIC03NTUsNyAmIzQzOzc1NSw2IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCxcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuIFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4tXHRib29sIGlycV93b3JrX2J1c3kgPSBmYWxzZTtcbiBcdGJvb2wgX19tYXliZV91bnVzZWQgbW1wdXRfbmVlZGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbiBcdGludCByZXQgPSAtRU5PRU5UO1xuQEAgLTc5Miw5ICYjNDM7NzkxLDcgQEAgQlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxuIFx0aWYgKCFtbSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbi1cbi1cdGlmIChpcnFfd29ya19idXN5IHx8ICFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbiYjNDM7XHRpZiAoIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhtbSwgXHUwMDI2d29yaykpIHtcbiBcdFx0cmV0ID0gLUVCVVNZO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbkBAIC0xMTkxLDYgJiM0MzsxMTg4LDggQEAgc3RhdGljIHZvaWQgZG9fbW1hcF9yZWFkX3VubG9jayhzdHJ1Y3QgaXJxX3dvcmsgKmVudHJ5KVxuIFxuIFx0d29yayA9IGNvbnRhaW5lcl9vZihlbnRyeSwgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBpcnFfd29yayk7XG4gXHRtbWFwX3JlYWRfdW5sb2NrX25vbl9vd25lcih3b3JrLVx1MDAzZW1tKTtcbiYjNDM7XHR3b3JrLVx1MDAzZW1tID0gTlVMTDtcbiYjNDM7XHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspO1xuIH1cbiBcbiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oCmluZGV4IDVkMThkN2Q4NWJlZjk2Li5kNDE2ZTQzMzc2MzVmZSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgKQEAgLTQsMTIgJiM0Mzs0LDE0IEBACiAKICNpZm5kZWYgX19NTUFQX1VOTE9DS19XT1JLX0hfXwogI2RlZmluZSBfX01NQVBfVU5MT0NLX1dPUktfSF9fCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2F0b21pYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2lycV93b3JrLmgmZ3Q7CiAKIC8qIGlycV93b3JrIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsgKi8KIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7CiAJc3RydWN0IGlycV93b3JrIGlycV93b3JrOwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwomIzQzOwlhdG9taWNfdCBhY3RpdmU7CiB9OwogCiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTsKQEAgLTE4LDggJiM0MzsyMCw4IEBAIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspOwogICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2YKICAqIHJpc2sgdG8gZGVhZGxvY2sgd2l0aCBycV9sb2NrLiBUbyBsb29rIHVwIHZtYSB3aGVuIHRoZSBpcnFzIGFyZQogICogZGlzYWJsZWQsIHdlIG5lZWQgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yay4gV2UgdXNlIGEKLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWQKLSAqIGJ5IGFub3RoZXIgbG9va3VwLCB3ZSBmYWxsIG92ZXIuCiYjNDM7ICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gVGhlIGFjdGl2ZSBmbGFnIHJlc2VydmVzIHRoZSBzbG90CiYjNDM7ICogYmVmb3JlIG1tYXBfcmVhZF90cnlsb2NrKCkgYW5kIHVudGlsIHRoZSBpcnFfd29yayBjYWxsYmFjayBjb25zdW1lcyBtbS4KICAqLwogc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpCiB7CkBAIC0yOSw5ICYjNDM7MzEsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd28KIAlpZiAoaXJxc19kaXNhYmxlZCgpKSB7CiAJCWlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHsKIAkJCXdvcmsgPSB0aGlzX2NwdV9wdHIoJmFtcDttbWFwX3VubG9ja193b3JrKTsKLQkJCWlmIChpcnFfd29ya19pc19idXN5KCZhbXA7d29yay0mZ3Q7aXJxX3dvcmspKSB7Ci0JCQkJLyogY2Fubm90IHF1ZXVlIG1vcmUgdXBfcmVhZCwgZmFsbGJhY2sgKi8KJiM0MzsJCQlpZiAoaXJxX3dvcmtfaXNfYnVzeSgmYW1wO3dvcmstJmd0O2lycV93b3JrKSB8fAomIzQzOwkJCSAgICBhdG9taWNfY21weGNoZ19hY3F1aXJlKCZhbXA7d29yay0mZ3Q7YWN0aXZlLCAwLCAxKSkgewogCQkJCWlycV93b3JrX2J1c3kgPSB0cnVlOwomIzQzOwkJCQl3b3JrID0gTlVMTDsKIAkJCX0KIAkJfSBlbHNlIHsKIAkJCS8qCkBAIC00Niw2ICYjNDM7NDksMzIgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd28KIAlyZXR1cm4gaXJxX3dvcmtfYnVzeTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaykKJiM0Mzt7CiYjNDM7CWlmICh3b3JrKQomIzQzOwkJYXRvbWljX3NldF9yZWxlYXNlKCZhbXA7d29yay0mZ3Q7YWN0aXZlLCAwKTsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUcnkgdG8gdGFrZSBtbS0mZ3Q7bW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXkKJiM0MzsgKiBydW4gd2l0aCBJUlFzIGRpc2FibGVkLiBPbiBzdWNjZXNzLCAqd29yayBpcyB0aGUgc2xvdCB0byBoYW5kIHRvCiYjNDM7ICogYnBmX21tYXBfdW5sb2NrX21tKCkgKE5VTEwgd2hlbiB0aGUgdW5sb2NrIGNhbiBiZSBkb25lIGlubGluZSk7IG9uIGZhaWx1cmUKJiM0MzsgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLgomIzQzOyAqLwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF9yZWFkX3RyeWxvY2soc3RydWN0IG1tX3N0cnVjdCAqbW0sCiYjNDM7CQkJCQkgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29yaykKJiM0Mzt7CiYjNDM7CWlmIChicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHdvcmspKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAoIW1tYXBfcmVhZF90cnlsb2NrKG1tKSkgewomIzQzOwkJYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29yaygqd29yayk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSB2b2lkIGJwZl9tbWFwX3VubG9ja19tbShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogCWlmICghd29yaykgewpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdGFja21hcC5jIGIva2VybmVsL2JwZi9zdGFja21hcC5jCmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9zdGFja21hcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuYwpAQCAtNDE1LDcgJiM0Mzs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLAogCQkJCQkgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdCkKIHsKIAlzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMOwotCWJvb2wgaXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoJmFtcDt3b3JrKTsKIAlib29sIGhhc191c2VyX2N0eCA9IHVzZXIgJmFtcDsmYW1wOyBjdXJyZW50ICZhbXA7JmFtcDsgY3VycmVudC0mZ3Q7bW07CiAJc3RydWN0IHN0YWNrX21hcF9idWlsZF9pZF9jYWNoZSBjYWNoZSA9IHt9OwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwpAQCAtNDMwLDcgJiM0Mzs0MjksNyBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLAogCSAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aAogCSAqIGJ1aWxkX2lkLgogCSAqLwotCWlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtJmd0O21tKSkgewomIzQzOwlpZiAoIWhhc191c2VyX2N0eCB8fCAhYnBmX21tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtJmd0O21tLCAmYW1wO3dvcmspKSB7CiAJCS8qIGNhbm5vdCBhY2Nlc3MgY3VycmVudC0mZ3Q7bW0sIGZhbGwgYmFjayB0byBpcHMgKi8KIAkJZm9yIChpID0gMDsgaSAmbHQ7IHRyYWNlX25yOyBpJiM0MzsmIzQzOykKIAkJCXN0YWNrX21hcF9idWlsZF9pZF9zZXRfaXAoJmFtcDtpZF9vZmZzW2ldKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdGFza19pdGVyLmMgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jCmluZGV4IGIyNTZmYjljMTIxNGU0Li5lNjZlMzQ4NGY5MjNkYyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90YXNrX2l0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jCkBAIC03NTUsNyAmIzQzOzc1NSw2IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCwKIHsKIAlzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMOwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwotCWJvb2wgaXJxX3dvcmtfYnVzeSA9IGZhbHNlOwogCWJvb2wgX19tYXliZV91bnVzZWQgbW1wdXRfbmVlZGVkID0gZmFsc2U7CiAJc3RydWN0IG1tX3N0cnVjdCAqbW07CiAJaW50IHJldCA9IC1FTk9FTlQ7CkBAIC03OTIsOSAmIzQzOzc5MSw3IEBAIEJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCwKIAlpZiAoIW1tKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWlycV93b3JrX2J1c3kgPSBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKCZhbXA7d29yayk7Ci0KLQlpZiAoaXJxX3dvcmtfYnVzeSB8fCAhbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7CiYjNDM7CWlmICghYnBmX21tYXBfcmVhZF90cnlsb2NrKG1tLCAmYW1wO3dvcmspKSB7CiAJCXJldCA9IC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTE5MSw2ICYjNDM7MTE4OCw4IEBAIHN0YXRpYyB2b2lkIGRvX21tYXBfcmVhZF91bmxvY2soc3RydWN0IGlycV93b3JrICplbnRyeSkKIAogCXdvcmsgPSBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgaXJxX3dvcmspOwogCW1tYXBfcmVhZF91bmxvY2tfbm9uX293bmVyKHdvcmstJmd0O21tKTsKJiM0MzsJd29yay0mZ3Q7bW0gPSBOVUxMOwomIzQzOwlicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspOwogfQogCiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgUGF0Y2ggZm9yIENvbmN1cnJlbmN5IElzc3VlcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgd2UmIzM5O3JlIG1vZGlmeWluZyBob3cgYG1tYXBfcmVhZF90cnlsb2NrYCBpcyBoYW5kbGVkIGluIEJQRiBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oYCwgYGtlcm5lbC9icGYvc3RhY2ttYXAuY2AsIGFuZCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AuICBUaGUgbWFpbiB0aHJ1c3Qgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mICBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCwgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCBhbmQgYW4gYGF0b21pY190IGFjdGl2ZWAgZmllbGQgd2l0aGluIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS4KCkZpcnN0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgY29kZSBjaGFuZ2VzLiBJbiBgbW1hcF91bmxvY2tfd29yay5oYCwgdGhlIGBhY3RpdmVgIGF0b21pYyBmbGFnIGlzIGFkZGVkIHRvIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS4gVGhlIG9sZCBsb2dpYyB1c2VkIGBpcnFfd29ya19pc19idXN5YCB0byBjaGVjayBpZiBhIHdvcmsgaXRlbSB3YXMgYnVzeS4gTm93LCB0aGVyZSYjMzk7cyBhIG1vcmUgcm9idXN0IGNoZWNrOiBgaXJxX3dvcmtfaXNfYnVzeWAgaXMgc3RpbGwgY2hlY2tlZCwgYnV0IHRoZXJlJiMzOTtzIGFsc28gYW4gYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIGNoZWNrIG9uIHRoZSBgYWN0aXZlYCBmbGFnLiBUaGlzIGZsYWcgc2VlbXMgdG8gYmUgdGhlIGtleSB0byB0aGUgZml4LiBXZSBhbHNvIGhhdmUgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCB3aGljaCwgaWYgdGhlIHdvcmsgc2xvdCBoYXMgYmVlbiByZXNlcnZlZCBieSB0aGlzIGNwdSwgc2V0cyB0aGUgYGFjdGl2ZWAgZmxhZyBiYWNrIHRvIDAuIEFuZCB0aGVuIHRoZSBuZXcgZnVuY3Rpb24gYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AgdGhhdCBpcyB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nLCBhcyBpdCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29ya2AgYW5kIGF0dGVtcHRzIHRoZSBgbW1hcF9yZWFkX3RyeWxvY2tgLgoKVGhpcyBpcyBhbGwgYWJvdXQgaW1wcm92aW5nIHRoZSBjb25jdXJyZW5jeSBzYWZldHkgd2hlbiBkZWFsaW5nIHdpdGggbW1hcCByZWFkcyBpbiBCUEYsIGVzcGVjaWFsbHkgd2hlbiBJUlFzIG1pZ2h0IGJlIGRpc2FibGVkLiBUaGUgb3JpZ2luYWwgY2hlY2sgdXNpbmcgb25seSBgaXJxX3dvcmtfaXNfYnVzeWAgbG9va3MgbGlrZSBpdCBoYWQgYSByYWNlIGNvbmRpdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlsZWQsIHRoZSBvcmlnaW5hbCBjaGVjayBsZWZ0IHRoZSB3b3JrIHNsb3QgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBwb3NzaWJseSBsZWFkaW5nIHRvIGEgY29uY3VycmVuY3kgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byByZXNlcnZlIHRoZSBzbG90IHdpdGggYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIG9uIHRoZSBgYWN0aXZlYCBmbGFnICpiZWZvcmUqIHdlIGV2ZW4gYXR0ZW1wdCBgbW1hcF9yZWFkX3RyeWxvY2tgLiBUaGlzIHByZXZlbnRzIGFub3RoZXIgY29udGV4dCBmcm9tIGdyYWJiaW5nIHRoZSB3b3JrIGl0ZW0gaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlscy4KClRoZSB1c2Ugb2YgYW4gYXRvbWljIGZsYWcgY29uZmlybXMgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCBzZWVtcyB0aGUgcHJvYmxlbSB3YXMgdGhhdCBhIGNvbnRleHQgY291bGQgYmUgaW50ZXJydXB0ZWQsIHNheSwgYnkgYW4gTk1JLCBiZXR3ZWVuIGdldHRpbmcgYSB3b3JrIGl0ZW0sIGFuZCBhY3R1YWxseSBxdWV1ZWluZyBpdCBmb3IgdW5sb2NrLiBUaGVuIGFub3RoZXIgQ1BVIG1pZ2h0IHRyeSB0byB1c2UgdGhlIHNhbWUgd29yayBpdGVtLiBUaGUgbmV3IGBhY3RpdmVgIGZsYWcgZXNzZW50aWFsbHkgc2VyaWFsaXplcyBhY2Nlc3MgdG8gdGhlIHdvcmsgaXRlbSwgZW5zdXJpbmcgdGhhdCBvbmx5IG9uZSBjb250ZXh0IHVzZXMgYSB3b3JrIGl0ZW0gYXQgYSB0aW1lLCBldmVuIGlmIE5NSXMgYXJlIGVuYWJsZWQuCgpOb3csIHdoZXJlIGFyZSB0aGVzZSBuZXcgZnVuY3Rpb25zIHVzZWQ/ICBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgYnBmX2ZpbmRfdm1hYCwgYm90aCBpbiBga2VybmVsL2JwZmAsIGFyZSB1c2luZyB0aGlzIG5ldyBsb2dpYy4gIGBkb19tbWFwX3JlYWRfdW5sb2NrYCBpcyBiZWluZyBtb2RpZmllZCB0b28sIGFuZCBpdCBjbGVhcnMgdGhlIHdvcmsgaXRlbSYjMzk7cyBgbW1gIGZpZWxkIGFuZCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AgdG8gcmVsZWFzZSB0aGUgd29yayBpdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGZvY3VzIGZ1enppbmcgb24gdGhvc2UgdGhyZWUgZnVuY3Rpb25zOiBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgLCBgYnBmX2ZpbmRfdm1hYCwgYW5kIGBkb19tbWFwX3JlYWRfdW5sb2NrYC4KCkkga25vdyBCUEYgaXMgZW5hYmxlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYCBzbyBJJiMzOTtsbCBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zLiBBIHF1aWNrIGdyZXAgc2hvdWxkIGNvbmZpcm0gdGhhdC4KClRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBCUEYgbG9naWMuIFdvcnRoRnV6emluZyA9IHRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3N0YWNrbWFwLmM9MTgzPXN0cnVjdCBzdGFja19tYXBfY2FjaGVkX3ZtYSB7XG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTE5MS0vKlxua2VybmVsL2JwZi9zdGFja21hcC5jOjE5MjogKiBQZXIgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoKSBjYWxsIGNhY2hlIG9mIHRoZSBsYXN0IFZNQSB3aXRoIGEgYnVpbGQgSURcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTMtICogcmVzb2x2ZWQgYW5kIHRoZSBsYXN0IFZNQSB3aXRoIG5vIHVzYWJsZSBidWlsZCBJRC4gQWRqYWNlbnQgc3RhY2sgZnJhbWVzIHRlbmRcbi0tXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM9MzIzPXN0YXRpYyB2b2lkIHN0YWNrX21hcF91bmxvY2tfdm1hKHN0cnVjdCBzdGFja19tYXBfdm1hX2xvY2sgKmxvY2spXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTMzMi1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYzozMzM6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRfc2xlZXBhYmxlKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMzM0LVx0XHRcdFx0XHRcdCAgICB1MzIgdHJhY2VfbnIpXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTQxMy0gKi9cbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MTQ6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2Zmcyxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy00MTUtXHRcdFx0XHRcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy00MjMtXHRpZiAobWF5X2ZhdWx0IFx1MDAyNlx1MDAyNiBoYXNfdXNlcl9jdHgpIHtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MjQ6XHRcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0X3NsZWVwYWJsZShpZF9vZmZzLCB0cmFjZV9ucik7XG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDI1LVx0XHRyZXR1cm47XG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jPTUwNj1zdGF0aWMgbG9uZyBfX2JwZl9nZXRfc3RhY2tpZChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDUtXHRcdFx0aWRfb2Zmc1tpXS5pcCA9IGlwc1tpXTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo1NDY6XHRcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KGlkX29mZnMsIHRyYWNlX25yLCB1c2VyLCBmYWxzZSAvKiAhbWF5X2ZhdWx0ICovKTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDctXHRcdHRyYWNlX2xlbiA9IHRyYWNlX25yICogc2l6ZW9mKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQpO1xuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYz02ODI9c3RhdGljIGxvbmcgX19icGZfZ2V0X3N0YWNrKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXG4tLVxua2VybmVsL2JwZi9zdGFja21hcC5jLTc1Ny1cdGlmICh1c2VyX2J1aWxkX2lkKVxua2VybmVsL2JwZi9zdGFja21hcC5jOjc1ODpcdFx0c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoYnVmLCB0cmFjZV9uciwgdXNlciwgbWF5X2ZhdWx0KTtcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM0NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIFRyYWNpbmcgYW5kIFZNQXMqKgoKT2theSwgc28gYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBpcyBhIGtleSBmdW5jdGlvbiwgZ2V0dGluZyB1c2VkIGluIGJvdGggYF9fYnBmX2dldF9zdGFja2lkYCBhbmQgYF9fYnBmX2dldF9zdGFja2AuIEdvdCBpdC4gQW5kIEkgc2VlIHRoYXQgYGJwZl9maW5kX3ZtYWAgaXMgYWN0dWFsbHkgYSBCUEYgaGVscGVyIGZ1bmN0aW9uLiBSaWdodCwgbWFrZXMgc2Vuc2Ug4oCTIHdlIG5lZWQgdG8gZmluZCB0aGUgdmlydHVhbCBtZW1vcnkgYXJlYS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYGJwZl9maW5kX3ZtYWAgY2FsbCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEJQRiBjb250ZXh0LiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBpbXBsZW1lbnRlZCBhbmQgd2hlcmUgaXQgaXMgYmVpbmcgdXNlZC4gVGhhdCYjMzk7cyBwcm9iYWJseSB3aGVyZSBhbGwgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTIwNjc9YnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMjM5LVx0Y2FzZSBCUEZfRlVOQ19maW5kX3ZtYTpcbmtlcm5lbC9icGYvaGVscGVycy5jOjIyNDA6XHRcdHJldHVybiBcdTAwMjZicGZfZmluZF92bWFfcHJvdG87XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0yMjQxLVx0ZGVmYXVsdDpcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTczNz1zdGF0aWMgc3RydWN0IGJwZl9pdGVyX3JlZyB0YXNrX3ZtYV9yZWdfaW5mbyA9IHtcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTc1Mi1cbmtlcm5lbC9icGYvdGFza19pdGVyLmM6NzUzOkJQRl9DQUxMXzUoYnBmX2ZpbmRfdm1hLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdGFzaywgdTY0LCBzdGFydCxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtNzU0LVx0ICAgYnBmX2NhbGxiYWNrX3QsIGNhbGxiYWNrX2ZuLCB2b2lkICosIGNhbGxiYWNrX2N0eCwgdTY0LCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTgxNC1cbmtlcm5lbC9icGYvdGFza19pdGVyLmM6ODE1OmNvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byBicGZfZmluZF92bWFfcHJvdG8gPSB7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjgxNjpcdC5mdW5jXHRcdD0gYnBmX2ZpbmRfdm1hLFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy04MTctXHQucmV0X3R5cGVcdD0gUkVUX0lOVEVHRVIsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTk2MzQ9c3RhdGljIGludCBzZXRfZmluZF92bWFfY2FsbGJhY2tfc3RhdGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTYzOC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTYzOTpcdC8qIGJwZl9maW5kX3ZtYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHU2NCBhZGRyLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk2NDAtXHQgKiAgICAgICAgICAgICAgIHZvaWQgKmNhbGxiYWNrX2ZuLCB2b2lkICpjYWxsYmFja19jdHgsIHU2NCBmbGFncylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTU0CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbjogQSBRdWljayBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQlBGIHNldHVwIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lLiBUaGUgYmlnIG9uZSwgb2YgY291cnNlLCBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgdGhhdCYjMzk7cyB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrLiBCdXQgYXJlIHRoZXJlICphbnkqIG90aGVyIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBlbnN1cmUgZnVsbCBmdW5jdGlvbmFsaXR5PyBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGlzLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGluIGBrZXJuZWwvYnBmL0tjb25maWdgIGFuZCBwb3NzaWJseSBldmVuIGBpbml0L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVu4oCZdCBtaXNzZWQgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuCgpUaGVuIHRoZXJl4oCZcyB0aGUgcG90ZW50aWFsIGZvciBkZXBlbmRlbmNpZXMuIEkgc2VlbSB0byByZWNhbGwgdGhhdCBzdGFjayBtYXBzIG1pZ2h0IHJlbHkgb24gYENPTkZJR19QRVJGX0VWRU5UU2AuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgY3J1Y2lhbCBvYmplY3RzIGxpa2UgYHN0YWNrbWFwLm9gIGFuZCBgdGFza19pdGVyLm9gIGFyZSBiZWluZyBjb21waWxlZC4gVGhhdCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgc29tZSBpbnNpZ2h0IHRvIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMjE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhY2ttYXAubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN0YWNrbWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXNrX2l0ZXIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGhhc2h0YWIubyBhcnJheW1hcC5vIHBlcmNwdV9mcmVlbGlzdC5vIGJwZl9scnVfbGlzdC5vIGxwbV90cmllLm8gbWFwX2luX21hcC5vIGJsb29tX2ZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MjQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMgZm9yIEJQRiBhbmQgUGVyZiBFdmVudHMqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGJvdGggYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfUEVSRl9FVkVOVFNgIGVuYWJsZWQuIFRoYXQgc2VlbXMgbGlrZSBhIG5vLWJyYWluZXIgZm9yIHRoaXMgYXJlYS4gSXQmIzM5O3MgYSBmb3VuZGF0aW9uYWwgc2V0dXAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgd2FudCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBga2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhgLiBJJiMzOTttIGd1ZXNzaW5nIHRoZXJlIG1pZ2h0IGJlIHNvbWUgKm90aGVyKiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgc3VidGxlIG9uZXMsIGRlZmluZWQgb3IgaGludGVkIGF0IGluIHRoYXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUuIEJldHRlciB0byBjb3ZlciBhbGwgdGhlIGJhc2VzIHVwZnJvbnQgYW5kIGJlIGF3YXJlIG9mIGFueSBpbnRlcnJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhbiBzdHVtYmxlIHVwb24gYSBnb3RjaGEgbGF0ZXIuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCBhbGwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbWFwX3VubG9ja193b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmg9MTE9c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrIHtcbi0tXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xNi1cbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjE3OkRFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspO1xua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMTgtXG4tLVxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmg9MjY9c3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpXG4tLVxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMzItXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjMzOlx0XHRcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0zNC1cdFx0XHRpZiAoaXJxX3dvcmtfaXNfYnVzeShcdTAwMjZ3b3JrLVx1MDAzZWlycV93b3JrKSB8fFxuLS1cbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMy0jaW5jbHVkZSBcJiMzNDtwZXJjcHVfZnJlZWxpc3QuaFwmIzM0O1xua2VybmVsL2JwZi9zdGFja21hcC5jOjE0OiNpbmNsdWRlIFwmIzM0O21tYXBfdW5sb2NrX3dvcmsuaFwmIzM0O1xua2VybmVsL2JwZi9zdGFja21hcC5jLTE1LVxuLS1cbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTMtI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvbW0uaFx1MDAzZVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxNDojaW5jbHVkZSBcJiMzNDttbWFwX3VubG9ja193b3JrLmhcJiMzNDtcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTUtXG4tLVxua2VybmVsL2JwZi90YXNrX2l0ZXIuYz0xMTc4PV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTExNzktXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjExODA6REVGSU5FX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTE4MS1cbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTExOTU9c3RhdGljIGludCBfX2luaXQgdGFza19pdGVyX2luaXQodm9pZClcbi0tXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEyMDAtXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjEyMDE6XHRcdHdvcmsgPSBwZXJfY3B1X3B0cihcdTAwMjZtbWFwX3VubG9ja193b3JrLCBjcHUpO1xua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMjAyLVx0XHRpbml0X2lycV93b3JrKFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmssIGRvX21tYXBfcmVhZF91bmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAyMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzU1CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGlzc3VlIHdpdGhpbiBCUEYmIzM5O3MgYG1tYXBfcmVhZF90cnlsb2NrYCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUgaW1wYWN0IGNvcmUgQlBGIGxvZ2ljLCBlc3BlY2lhbGx5IGhvdyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycyBvcGVyYXRlLCBzbyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgZml4LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgLCBgYnBmX2ZpbmRfdm1hYCwgYGRvX21tYXBfcmVhZF91bmxvY2tgLCBhbmQgYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AuIFdoaWxlIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgIG1pZ2h0IGJlIGlubGluZWQsIFN5emthbGxlciBkb2VzbiYjMzk7dCBzZWVtIHRvIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhhdCBzbyBJJiMzOTtsbCBpbmNsdWRlIGl0IGFuZCB0aGUgY2FsbGVycy4KCkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHNlZW1zIHRoZSBjYWxsZXJzIG9mIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgIGFyZSBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgYnBmX2ZpbmRfdm1hYC4gVGhlIGNhbGxlcnMgb2YgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgIGFyZSBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBhbmQgYGRvX21tYXBfcmVhZF91bmxvY2tgLgoKSSYjMzk7bGwga2VlcCBgQlBGX1NZU0NBTExgIGFuZCBgUEVSRl9FVkVOVFNgIGVuYWJsZWQgaW4gbXkgZnV6emluZyBjb25maWcuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyB0aGUgY29ycmVjdCBuYW1lLCBhbmQgdGhhdCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgZG9fbW1hcF9yZWFkX3VubG9ja2AgYXJlIHN0YXRpYyBmdW5jdGlvbnMgaW4gdGhlIHJlbGV2YW50IGZpbGVzLgoKVGltZSB0byBzZXQgdXAgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDIxOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtQRVJGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0JiMzNDssCiAgICAmIzM0O2JwZl9maW5kX3ZtYSYjMzQ7LAogICAgJiMzNDtkb19tbWFwX3JlYWRfdW5sb2NrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJiMzOTtzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6Mzk6NTMuMjczMzI0MTc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE4OTExNDUzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlBFUkZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRcIixcbiAgICBcImJwZl9maW5kX3ZtYVwiLFxuICAgIFwiZG9fbW1hcF9yZWFkX3VubG9ja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgY29uY3VycmVuY3kgaXNzdWUgaW4gQlBGJ3MgaGFuZGxpbmcgb2YgbW1hcF9yZWFkX3RyeWxvY2sgd2hlbiBJUlFzIGFyZSBkaXNhYmxlZCBieSBpbnRyb2R1Y2luZyBhbiBhdG9taWNfdCBhY3RpdmUgZmxhZyB0byByZXNlcnZlIHRoZSBwZXItY3B1IG1tYXBfdW5sb2NrX2lycV93b3JrIHNsb3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgc3RhY2sgbWFwcyBhbmQgdGFzayBpdGVyYXRvcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjM5OjUzLjI3MzMyOTUwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1MzU1NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDJlNGIwZmJlOWEwNzQxN2NmOTZkZjkzZGFlYTNlNGFhY2JiYzEyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyMiAyMTozOTo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXFxuaW5kZXggNWQxOGQ3ZDg1YmVmOTYuLmQ0MTZlNDMzNzYzNWZlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXFxuKysrIGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcXG5AQCAtNCwxMiArNCwxNCBAQFxcbiBcXG4gI2lmbmRlZiBfX01NQVBfVU5MT0NLX1dPUktfSF9fXFxuICNkZWZpbmUgX19NTUFQX1VOTE9DS19XT1JLX0hfX1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYXRvbWljLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFfd29yay5oXFx1MDAzZVxcbiBcXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xcbiBzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsge1xcbiBcXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XFxuIFxcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xcbitcXHRhdG9taWNfdCBhY3RpdmU7XFxuIH07XFxuIFxcbiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5AQCAtMTgsOCArMjAsOCBAQCBERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG4gICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2ZcXG4gICogcmlzayB0byBkZWFkbG9jayB3aXRoIHJxX2xvY2suIFRvIGxvb2sgdXAgdm1hIHdoZW4gdGhlIGlycXMgYXJlXFxuICAqIGRpc2FibGVkLCB3ZSBuZWVkIHRvIHJ1biBtbWFwX3JlYWRfdW5sb2NrKCkgaW4gaXJxX3dvcmsuIFdlIHVzZSBhXFxuLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWRcXG4tICogYnkgYW5vdGhlciBsb29rdXAsIHdlIGZhbGwgb3Zlci5cXG4rICogcGVyY3B1IHZhcmlhYmxlIHRvIGRvIHRoZSBpcnFfd29yay4gVGhlIGFjdGl2ZSBmbGFnIHJlc2VydmVzIHRoZSBzbG90XFxuKyAqIGJlZm9yZSBtbWFwX3JlYWRfdHJ5bG9jaygpIGFuZCB1bnRpbCB0aGUgaXJxX3dvcmsgY2FsbGJhY2sgY29uc3VtZXMgbW0uXFxuICAqL1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b3JrX3B0cilcXG4ge1xcbkBAIC0yOSw5ICszMSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKip3b1xcbiBcXHRpZiAoaXJxc19kaXNhYmxlZCgpKSB7XFxuIFxcdFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcXG4gXFx0XFx0XFx0d29yayA9IHRoaXNfY3B1X3B0cihcXHUwMDI2bW1hcF91bmxvY2tfd29yayk7XFxuLVxcdFxcdFxcdGlmIChpcnFfd29ya19pc19idXN5KFxcdTAwMjZ3b3JrLVxcdTAwM2VpcnFfd29yaykpIHtcXG4tXFx0XFx0XFx0XFx0LyogY2Fubm90IHF1ZXVlIG1vcmUgdXBfcmVhZCwgZmFsbGJhY2sgKi9cXG4rXFx0XFx0XFx0aWYgKGlycV93b3JrX2lzX2J1c3koXFx1MDAyNndvcmstXFx1MDAzZWlycV93b3JrKSB8fFxcbitcXHRcXHRcXHQgICAgYXRvbWljX2NtcHhjaGdfYWNxdWlyZShcXHUwMDI2d29yay1cXHUwMDNlYWN0aXZlLCAwLCAxKSkge1xcbiBcXHRcXHRcXHRcXHRpcnFfd29ya19idXN5ID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0d29yayA9IE5VTEw7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0LypcXG5AQCAtNDYsNiArNDksMzIgQEAgc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29cXG4gXFx0cmV0dXJuIGlycV93b3JrX2J1c3k7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaylcXG4re1xcbitcXHRpZiAod29yaylcXG4rXFx0XFx0YXRvbWljX3NldF9yZWxlYXNlKFxcdTAwMjZ3b3JrLVxcdTAwM2VhY3RpdmUsIDApO1xcbit9XFxuK1xcbisvKlxcbisgKiBUcnkgdG8gdGFrZSBtbS1cXHUwMDNlbW1hcF9sb2NrIGZvciByZWFkaW5nIG9uIGJlaGFsZiBvZiBhIEJQRiBoZWxwZXIgdGhhdCBtYXlcXG4rICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xcbisgKiBicGZfbW1hcF91bmxvY2tfbW0oKSAoTlVMTCB3aGVuIHRoZSB1bmxvY2sgY2FuIGJlIGRvbmUgaW5saW5lKTsgb24gZmFpbHVyZVxcbisgKiBubyBzbG90IHN0YXlzIHJlc2VydmVkIGFuZCB0aGUgY2FsbGVyIG11c3QgZmFsbCBiYWNrLlxcbisgKi9cXG4rc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG4rXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmspXFxuK3tcXG4rXFx0aWYgKGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsod29yaykpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmICghbW1hcF9yZWFkX3RyeWxvY2sobW0pKSB7XFxuK1xcdFxcdGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsoKndvcmspO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIHZvaWQgYnBmX21tYXBfdW5sb2NrX21tKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxuIHtcXG4gXFx0aWYgKCF3b3JrKSB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvc3RhY2ttYXAuYyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xcbmluZGV4IDQxZmU4N2Q3MzAyZjIyLi4xNjZmYzhlZmFiOGIyMSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcXG4rKysgYi9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcXG5AQCAtNDE1LDcgKzQxNSw2IEBAIHN0YXRpYyB2b2lkIHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXFxuIFxcdFxcdFxcdFxcdFxcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxcbiB7XFxuIFxcdHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yayA9IE5VTEw7XFxuLVxcdGJvb2wgaXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoXFx1MDAyNndvcmspO1xcbiBcXHRib29sIGhhc191c2VyX2N0eCA9IHVzZXIgXFx1MDAyNlxcdTAwMjYgY3VycmVudCBcXHUwMDI2XFx1MDAyNiBjdXJyZW50LVxcdTAwM2VtbTtcXG4gXFx0c3RydWN0IHN0YWNrX21hcF9idWlsZF9pZF9jYWNoZSBjYWNoZSA9IHt9O1xcbiBcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcXG5AQCAtNDMwLDcgKzQyOSw3IEBAIHN0YXRpYyB2b2lkIHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQgKmlkX29mZnMsXFxuIFxcdCAqIGZhbGxiYWNrIGlzIHVzZWQgZm9yIGtlcm5lbCBzdGFjayAoIXVzZXIpIG9uIGEgc3RhY2ttYXAgd2l0aFxcbiBcXHQgKiBidWlsZF9pZC5cXG4gXFx0ICovXFxuLVxcdGlmICghaGFzX3VzZXJfY3R4IHx8IGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXFx1MDAzZW1tKSkge1xcbitcXHRpZiAoIWhhc191c2VyX2N0eCB8fCAhYnBmX21tYXBfcmVhZF90cnlsb2NrKGN1cnJlbnQtXFx1MDAzZW1tLCBcXHUwMDI2d29yaykpIHtcXG4gXFx0XFx0LyogY2Fubm90IGFjY2VzcyBjdXJyZW50LVxcdTAwM2VtbSwgZmFsbCBiYWNrIHRvIGlwcyAqL1xcbiBcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdHJhY2VfbnI7IGkrKylcXG4gXFx0XFx0XFx0c3RhY2tfbWFwX2J1aWxkX2lkX3NldF9pcChcXHUwMDI2aWRfb2Zmc1tpXSk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdGFza19pdGVyLmMgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jXFxuaW5kZXggYjI1NmZiOWMxMjE0ZTQuLmU2NmUzNDg0ZjkyM2RjIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdGFza19pdGVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jXFxuQEAgLTc1NSw3ICs3NTUsNiBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXFxuIHtcXG4gXFx0c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrID0gTlVMTDtcXG4gXFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XFxuLVxcdGJvb2wgaXJxX3dvcmtfYnVzeSA9IGZhbHNlO1xcbiBcXHRib29sIF9fbWF5YmVfdW51c2VkIG1tcHV0X25lZWRlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcXG4gXFx0aW50IHJldCA9IC1FTk9FTlQ7XFxuQEAgLTc5Miw5ICs3OTEsNyBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXFxuIFxcdGlmICghbW0pXFxuIFxcdFxcdHJldHVybiAtRU5PRU5UO1xcbiBcXG4tXFx0aXJxX3dvcmtfYnVzeSA9IGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoXFx1MDAyNndvcmspO1xcbi1cXG4tXFx0aWYgKGlycV93b3JrX2J1c3kgfHwgIW1tYXBfcmVhZF90cnlsb2NrKG1tKSkge1xcbitcXHRpZiAoIWJwZl9tbWFwX3JlYWRfdHJ5bG9jayhtbSwgXFx1MDAyNndvcmspKSB7XFxuIFxcdFxcdHJldCA9IC1FQlVTWTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH1cXG5AQCAtMTE5MSw2ICsxMTg4LDggQEAgc3RhdGljIHZvaWQgZG9fbW1hcF9yZWFkX3VubG9jayhzdHJ1Y3QgaXJxX3dvcmsgKmVudHJ5KVxcbiBcXG4gXFx0d29yayA9IGNvbnRhaW5lcl9vZihlbnRyeSwgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBpcnFfd29yayk7XFxuIFxcdG1tYXBfcmVhZF91bmxvY2tfbm9uX293bmVyKHdvcmstXFx1MDAzZW1tKTtcXG4rXFx0d29yay1cXHUwMDNlbW0gPSBOVUxMO1xcbitcXHRicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrKHdvcmspO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IF9faW5pdCB0YXNrX2l0ZXJfaW5pdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTozOTo1My43Njk0MTAzOTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMTM5NTA1MDY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiUEVSRl9FVkVOVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldFwiLFxuICAgIFwiYnBmX2ZpbmRfdm1hXCIsXG4gICAgXCJkb19tbWFwX3JlYWRfdW5sb2NrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBjb25jdXJyZW5jeSBpc3N1ZSBpbiBCUEYncyBoYW5kbGluZyBvZiBtbWFwX3JlYWRfdHJ5bG9jayB3aGVuIElSUXMgYXJlIGRpc2FibGVkIGJ5IGludHJvZHVjaW5nIGFuIGF0b21pY190IGFjdGl2ZSBmbGFnIHRvIHJlc2VydmUgdGhlIHBlci1jcHUgbW1hcF91bmxvY2tfaXJxX3dvcmsgc2xvdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkMmU0YjBmYmU5YTA3NDE3Y2Y5NmRmOTNkYWVhM2U0YWFjYmJjMTI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMjE6Mzk6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaCBiL2tlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oXG5pbmRleCA1ZDE4ZDdkODViZWY5Ni4uZDQxNmU0MzM3NjM1ZmUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaFxuKysrIGIva2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhcbkBAIC00LDEyICs0LDE0IEBAXG4gXG4gI2lmbmRlZiBfX01NQVBfVU5MT0NLX1dPUktfSF9fXG4gI2RlZmluZSBfX01NQVBfVU5MT0NLX1dPUktfSF9fXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gXG4gLyogaXJxX3dvcmsgdG8gcnVuIG1tYXBfcmVhZF91bmxvY2soKSBpbiBpcnFfd29yayAqL1xuIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XG4gXHRzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7XG4gXHRzdHJ1Y3QgbW1fc3RydWN0ICptbTtcbitcdGF0b21pY190IGFjdGl2ZTtcbiB9O1xuIFxuIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmssIG1tYXBfdW5sb2NrX3dvcmspO1xuQEAgLTE4LDggKzIwLDggQEAgREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgbW1hcF91bmxvY2tfd29yayk7XG4gICogV2UgY2Fubm90IGRvIG1tYXBfcmVhZF91bmxvY2soKSB3aGVuIHRoZSBpcnEgaXMgZGlzYWJsZWQsIGJlY2F1c2Ugb2ZcbiAgKiByaXNrIHRvIGRlYWRsb2NrIHdpdGggcnFfbG9jay4gVG8gbG9vayB1cCB2bWEgd2hlbiB0aGUgaXJxcyBhcmVcbiAgKiBkaXNhYmxlZCwgd2UgbmVlZCB0byBydW4gbW1hcF9yZWFkX3VubG9jaygpIGluIGlycV93b3JrLiBXZSB1c2UgYVxuLSAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIElmIHRoZSBpcnFfd29yayBpcyBhbHJlYWR5IHVzZWRcbi0gKiBieSBhbm90aGVyIGxvb2t1cCwgd2UgZmFsbCBvdmVyLlxuKyAqIHBlcmNwdSB2YXJpYWJsZSB0byBkbyB0aGUgaXJxX3dvcmsuIFRoZSBhY3RpdmUgZmxhZyByZXNlcnZlcyB0aGUgc2xvdFxuKyAqIGJlZm9yZSBtbWFwX3JlYWRfdHJ5bG9jaygpIGFuZCB1bnRpbCB0aGUgaXJxX3dvcmsgY2FsbGJhY2sgY29uc3VtZXMgbW0uXG4gICovXG4gc3RhdGljIGlubGluZSBib29sIGJwZl9tbWFwX3VubG9ja19nZXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29ya19wdHIpXG4ge1xuQEAgLTI5LDkgKzMxLDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRpZiAoaXJxc19kaXNhYmxlZCgpKSB7XG4gXHRcdGlmICghSVNfRU5BQkxFRChDT05GSUdfUFJFRU1QVF9SVCkpIHtcbiBcdFx0XHR3b3JrID0gdGhpc19jcHVfcHRyKFx1MDAyNm1tYXBfdW5sb2NrX3dvcmspO1xuLVx0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspKSB7XG4tXHRcdFx0XHQvKiBjYW5ub3QgcXVldWUgbW9yZSB1cF9yZWFkLCBmYWxsYmFjayAqL1xuK1x0XHRcdGlmIChpcnFfd29ya19pc19idXN5KFx1MDAyNndvcmstXHUwMDNlaXJxX3dvcmspIHx8XG4rXHRcdFx0ICAgIGF0b21pY19jbXB4Y2hnX2FjcXVpcmUoXHUwMDI2d29yay1cdTAwM2VhY3RpdmUsIDAsIDEpKSB7XG4gXHRcdFx0XHRpcnFfd29ya19idXN5ID0gdHJ1ZTtcbitcdFx0XHRcdHdvcmsgPSBOVUxMO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKlxuQEAgLTQ2LDYgKzQ5LDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvXG4gXHRyZXR1cm4gaXJxX3dvcmtfYnVzeTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrKVxuK3tcbitcdGlmICh3b3JrKVxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2d29yay1cdTAwM2VhY3RpdmUsIDApO1xuK31cbitcbisvKlxuKyAqIFRyeSB0byB0YWtlIG1tLVx1MDAzZW1tYXBfbG9jayBmb3IgcmVhZGluZyBvbiBiZWhhbGYgb2YgYSBCUEYgaGVscGVyIHRoYXQgbWF5XG4rICogcnVuIHdpdGggSVJRcyBkaXNhYmxlZC4gT24gc3VjY2VzcywgKndvcmsgaXMgdGhlIHNsb3QgdG8gaGFuZCB0b1xuKyAqIGJwZl9tbWFwX3VubG9ja19tbSgpIChOVUxMIHdoZW4gdGhlIHVubG9jayBjYW4gYmUgZG9uZSBpbmxpbmUpOyBvbiBmYWlsdXJlXG4rICogbm8gc2xvdCBzdGF5cyByZXNlcnZlZCBhbmQgdGhlIGNhbGxlciBtdXN0IGZhbGwgYmFjay5cbisgKi9cbitzdGF0aWMgaW5saW5lIGJvb2wgYnBmX21tYXBfcmVhZF90cnlsb2NrKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuK1x0XHRcdFx0XHQgc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICoqd29yaylcbit7XG4rXHRpZiAoYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayh3b3JrKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKCFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbitcdFx0YnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29yaygqd29yayk7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHZvaWQgYnBmX21tYXBfdW5sb2NrX21tKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqd29yaywgc3RydWN0IG1tX3N0cnVjdCAqbW0pXG4ge1xuIFx0aWYgKCF3b3JrKSB7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9zdGFja21hcC5jIGIva2VybmVsL2JwZi9zdGFja21hcC5jXG5pbmRleCA0MWZlODdkNzMwMmYyMi4uMTY2ZmM4ZWZhYjhiMjEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3N0YWNrbWFwLmNcbisrKyBiL2tlcm5lbC9icGYvc3RhY2ttYXAuY1xuQEAgLTQxNSw3ICs0MTUsNiBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0XHRcdFx0XHQgIHUzMiB0cmFjZV9uciwgYm9vbCB1c2VyLCBib29sIG1heV9mYXVsdClcbiB7XG4gXHRzdHJ1Y3QgbW1hcF91bmxvY2tfaXJxX3dvcmsgKndvcmsgPSBOVUxMO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbiBcdGJvb2wgaGFzX3VzZXJfY3R4ID0gdXNlciBcdTAwMjZcdTAwMjYgY3VycmVudCBcdTAwMjZcdTAwMjYgY3VycmVudC1cdTAwM2VtbTtcbiBcdHN0cnVjdCBzdGFja19tYXBfYnVpbGRfaWRfY2FjaGUgY2FjaGUgPSB7fTtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuQEAgLTQzMCw3ICs0MjksNyBAQCBzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChzdHJ1Y3QgYnBmX3N0YWNrX2J1aWxkX2lkICppZF9vZmZzLFxuIFx0ICogZmFsbGJhY2sgaXMgdXNlZCBmb3Iga2VybmVsIHN0YWNrICghdXNlcikgb24gYSBzdGFja21hcCB3aXRoXG4gXHQgKiBidWlsZF9pZC5cbiBcdCAqL1xuLVx0aWYgKCFoYXNfdXNlcl9jdHggfHwgaXJxX3dvcmtfYnVzeSB8fCAhbW1hcF9yZWFkX3RyeWxvY2soY3VycmVudC1cdTAwM2VtbSkpIHtcbitcdGlmICghaGFzX3VzZXJfY3R4IHx8ICFicGZfbW1hcF9yZWFkX3RyeWxvY2soY3VycmVudC1cdTAwM2VtbSwgXHUwMDI2d29yaykpIHtcbiBcdFx0LyogY2Fubm90IGFjY2VzcyBjdXJyZW50LVx1MDAzZW1tLCBmYWxsIGJhY2sgdG8gaXBzICovXG4gXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRyYWNlX25yOyBpKyspXG4gXHRcdFx0c3RhY2tfbWFwX2J1aWxkX2lkX3NldF9pcChcdTAwMjZpZF9vZmZzW2ldKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3Rhc2tfaXRlci5jIGIva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuaW5kZXggYjI1NmZiOWMxMjE0ZTQuLmU2NmUzNDg0ZjkyM2RjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuKysrIGIva2VybmVsL2JwZi90YXNrX2l0ZXIuY1xuQEAgLTc1NSw3ICs3NTUsNiBAQCBCUEZfQ0FMTF81KGJwZl9maW5kX3ZtYSwgc3RydWN0IHRhc2tfc3RydWN0ICosIHRhc2ssIHU2NCwgc3RhcnQsXG4ge1xuIFx0c3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrICp3b3JrID0gTlVMTDtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuLVx0Ym9vbCBpcnFfd29ya19idXN5ID0gZmFsc2U7XG4gXHRib29sIF9fbWF5YmVfdW51c2VkIG1tcHV0X25lZWRlZCA9IGZhbHNlO1xuIFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4gXHRpbnQgcmV0ID0gLUVOT0VOVDtcbkBAIC03OTIsOSArNzkxLDcgQEAgQlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxuIFx0aWYgKCFtbSlcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXG4tXHRpcnFfd29ya19idXN5ID0gYnBmX21tYXBfdW5sb2NrX2dldF9pcnFfd29yayhcdTAwMjZ3b3JrKTtcbi1cbi1cdGlmIChpcnFfd29ya19idXN5IHx8ICFtbWFwX3JlYWRfdHJ5bG9jayhtbSkpIHtcbitcdGlmICghYnBmX21tYXBfcmVhZF90cnlsb2NrKG1tLCBcdTAwMjZ3b3JrKSkge1xuIFx0XHRyZXQgPSAtRUJVU1k7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTExOTEsNiArMTE4OCw4IEBAIHN0YXRpYyB2b2lkIGRvX21tYXBfcmVhZF91bmxvY2soc3RydWN0IGlycV93b3JrICplbnRyeSlcbiBcbiBcdHdvcmsgPSBjb250YWluZXJfb2YoZW50cnksIHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yaywgaXJxX3dvcmspO1xuIFx0bW1hcF9yZWFkX3VubG9ja19ub25fb3duZXIod29yay1cdTAwM2VtbSk7XG4rXHR3b3JrLVx1MDAzZW1tID0gTlVMTDtcbitcdGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmsod29yayk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgX19pbml0IHRhc2tfaXRlcl9pbml0KHZvaWQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTozOTo1My43Njk0MTE4NjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjM2NTkxNzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgUGF0Y2ggZm9yIENvbmN1cnJlbmN5IElzc3VlcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0IHNlZW1zIHdlJ3JlIG1vZGlmeWluZyBob3cgYG1tYXBfcmVhZF90cnlsb2NrYCBpcyBoYW5kbGVkIGluIEJQRiBoZWxwZXJzLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oYCwgYGtlcm5lbC9icGYvc3RhY2ttYXAuY2AsIGFuZCBga2VybmVsL2JwZi90YXNrX2l0ZXIuY2AuICBUaGUgbWFpbiB0aHJ1c3Qgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mICBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCwgYGJwZl9tbWFwX3VubG9ja19wdXRfaXJxX3dvcmtgLCBhbmQgYW4gYGF0b21pY190IGFjdGl2ZWAgZmllbGQgd2l0aGluIHRoZSBgbW1hcF91bmxvY2tfaXJxX3dvcmtgIHN0cnVjdHVyZS5cblxuRmlyc3QsIGxldCdzIGJyZWFrIGRvd24gdGhlIGNvZGUgY2hhbmdlcy4gSW4gYG1tYXBfdW5sb2NrX3dvcmsuaGAsIHRoZSBgYWN0aXZlYCBhdG9taWMgZmxhZyBpcyBhZGRlZCB0byB0aGUgYG1tYXBfdW5sb2NrX2lycV93b3JrYCBzdHJ1Y3R1cmUuIFRoZSBvbGQgbG9naWMgdXNlZCBgaXJxX3dvcmtfaXNfYnVzeWAgdG8gY2hlY2sgaWYgYSB3b3JrIGl0ZW0gd2FzIGJ1c3kuIE5vdywgdGhlcmUncyBhIG1vcmUgcm9idXN0IGNoZWNrOiBgaXJxX3dvcmtfaXNfYnVzeWAgaXMgc3RpbGwgY2hlY2tlZCwgYnV0IHRoZXJlJ3MgYWxzbyBhbiBgYXRvbWljX2NtcHhjaGdfYWNxdWlyZWAgY2hlY2sgb24gdGhlIGBhY3RpdmVgIGZsYWcuIFRoaXMgZmxhZyBzZWVtcyB0byBiZSB0aGUga2V5IHRvIHRoZSBmaXguIFdlIGFsc28gaGF2ZSBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AsIHdoaWNoLCBpZiB0aGUgd29yayBzbG90IGhhcyBiZWVuIHJlc2VydmVkIGJ5IHRoaXMgY3B1LCBzZXRzIHRoZSBgYWN0aXZlYCBmbGFnIGJhY2sgdG8gMC4gQW5kIHRoZW4gdGhlIG5ldyBmdW5jdGlvbiBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCB0aGF0IGlzIHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcsIGFzIGl0IGNhbGxzIGBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrYCBhbmQgYXR0ZW1wdHMgdGhlIGBtbWFwX3JlYWRfdHJ5bG9ja2AuXG5cblRoaXMgaXMgYWxsIGFib3V0IGltcHJvdmluZyB0aGUgY29uY3VycmVuY3kgc2FmZXR5IHdoZW4gZGVhbGluZyB3aXRoIG1tYXAgcmVhZHMgaW4gQlBGLCBlc3BlY2lhbGx5IHdoZW4gSVJRcyBtaWdodCBiZSBkaXNhYmxlZC4gVGhlIG9yaWdpbmFsIGNoZWNrIHVzaW5nIG9ubHkgYGlycV93b3JrX2lzX2J1c3lgIGxvb2tzIGxpa2UgaXQgaGFkIGEgcmFjZSBjb25kaXRpb24uIEl0J3MgbGlrZWx5IHRoYXQgaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlsZWQsIHRoZSBvcmlnaW5hbCBjaGVjayBsZWZ0IHRoZSB3b3JrIHNsb3QgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBwb3NzaWJseSBsZWFkaW5nIHRvIGEgY29uY3VycmVuY3kgaXNzdWUuIEl0IGxvb2tzIGxpa2UgdGhlIGZpeCBpcyB0byByZXNlcnZlIHRoZSBzbG90IHdpdGggYGF0b21pY19jbXB4Y2hnX2FjcXVpcmVgIG9uIHRoZSBgYWN0aXZlYCBmbGFnICpiZWZvcmUqIHdlIGV2ZW4gYXR0ZW1wdCBgbW1hcF9yZWFkX3RyeWxvY2tgLiBUaGlzIHByZXZlbnRzIGFub3RoZXIgY29udGV4dCBmcm9tIGdyYWJiaW5nIHRoZSB3b3JrIGl0ZW0gaWYgYG1tYXBfcmVhZF90cnlsb2NrYCBmYWlscy5cblxuVGhlIHVzZSBvZiBhbiBhdG9taWMgZmxhZyBjb25maXJtcyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRoZSBwcm9ibGVtIHdhcyB0aGF0IGEgY29udGV4dCBjb3VsZCBiZSBpbnRlcnJ1cHRlZCwgc2F5LCBieSBhbiBOTUksIGJldHdlZW4gZ2V0dGluZyBhIHdvcmsgaXRlbSwgYW5kIGFjdHVhbGx5IHF1ZXVlaW5nIGl0IGZvciB1bmxvY2suIFRoZW4gYW5vdGhlciBDUFUgbWlnaHQgdHJ5IHRvIHVzZSB0aGUgc2FtZSB3b3JrIGl0ZW0uIFRoZSBuZXcgYGFjdGl2ZWAgZmxhZyBlc3NlbnRpYWxseSBzZXJpYWxpemVzIGFjY2VzcyB0byB0aGUgd29yayBpdGVtLCBlbnN1cmluZyB0aGF0IG9ubHkgb25lIGNvbnRleHQgdXNlcyBhIHdvcmsgaXRlbSBhdCBhIHRpbWUsIGV2ZW4gaWYgTk1JcyBhcmUgZW5hYmxlZC5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2UgbmV3IGZ1bmN0aW9ucyB1c2VkPyAgYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBhbmQgYGJwZl9maW5kX3ZtYWAsIGJvdGggaW4gYGtlcm5lbC9icGZgLCBhcmUgdXNpbmcgdGhpcyBuZXcgbG9naWMuICBgZG9fbW1hcF9yZWFkX3VubG9ja2AgaXMgYmVpbmcgbW9kaWZpZWQgdG9vLCBhbmQgaXQgY2xlYXJzIHRoZSB3b3JrIGl0ZW0ncyBgbW1gIGZpZWxkIGFuZCBjYWxscyBgYnBmX21tYXBfdW5sb2NrX3B1dF9pcnFfd29ya2AgdG8gcmVsZWFzZSB0aGUgd29yayBpdGVtLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZm9jdXMgZnV6emluZyBvbiB0aG9zZSB0aHJlZSBmdW5jdGlvbnM6IGBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldGAsIGBicGZfZmluZF92bWFgLCBhbmQgYGRvX21tYXBfcmVhZF91bmxvY2tgLlxuXG5JIGtub3cgQlBGIGlzIGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAgc28gSSdsbCBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGNoYW5nZSBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMuIEEgcXVpY2sgZ3JlcCBzaG91bGQgY29uZmlybSB0aGF0LlxuXG5UaGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgQlBGIGxvZ2ljLiBXb3J0aEZ1enppbmcgPSB0cnVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjg3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA2LjEzNTMzMTQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzEzODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3RhY2ttYXAuYz0xODM9c3RydWN0IHN0YWNrX21hcF9jYWNoZWRfdm1hIHtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTEtLypcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6MTkyOiAqIFBlciBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldCgpIGNhbGwgY2FjaGUgb2YgdGhlIGxhc3QgVk1BIHdpdGggYSBidWlsZCBJRFxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xOTMtICogcmVzb2x2ZWQgYW5kIHRoZSBsYXN0IFZNQSB3aXRoIG5vIHVzYWJsZSBidWlsZCBJRC4gQWRqYWNlbnQgc3RhY2sgZnJhbWVzIHRlbmRcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYz0zMjM9c3RhdGljIHZvaWQgc3RhY2tfbWFwX3VubG9ja192bWEoc3RydWN0IHN0YWNrX21hcF92bWFfbG9jayAqbG9jaylcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0zMzItXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjMzMzpzdGF0aWMgdm9pZCBzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldF9zbGVlcGFibGUoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtMzM0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICB1MzIgdHJhY2VfbnIpXFxuLS1cXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDEzLSAqL1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MTQ6c3RhdGljIHZvaWQgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXQoc3RydWN0IGJwZl9zdGFja19idWlsZF9pZCAqaWRfb2ZmcyxcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDE1LVxcdFxcdFxcdFxcdFxcdCAgdTMyIHRyYWNlX25yLCBib29sIHVzZXIsIGJvb2wgbWF5X2ZhdWx0KVxcbi0tXFxua2VybmVsL2JwZi9zdGFja21hcC5jLTQyMy1cXHRpZiAobWF5X2ZhdWx0IFxcdTAwMjZcXHUwMDI2IGhhc191c2VyX2N0eCkge1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYzo0MjQ6XFx0XFx0c3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRfc2xlZXBhYmxlKGlkX29mZnMsIHRyYWNlX25yKTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNDI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYz01MDY9c3RhdGljIGxvbmcgX19icGZfZ2V0X3N0YWNraWQoc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy01NDUtXFx0XFx0XFx0aWRfb2Zmc1tpXS5pcCA9IGlwc1tpXTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmM6NTQ2OlxcdFxcdHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0KGlkX29mZnMsIHRyYWNlX25yLCB1c2VyLCBmYWxzZSAvKiAhbWF5X2ZhdWx0ICovKTtcXG5rZXJuZWwvYnBmL3N0YWNrbWFwLmMtNTQ3LVxcdFxcdHRyYWNlX2xlbiA9IHRyYWNlX25yICogc2l6ZW9mKHN0cnVjdCBicGZfc3RhY2tfYnVpbGRfaWQpO1xcbi0tXFxua2VybmVsL2JwZi9zdGFja21hcC5jPTY4Mj1zdGF0aWMgbG9uZyBfX2JwZl9nZXRfc3RhY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTctXFx0aWYgKHVzZXJfYnVpbGRfaWQpXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjc1ODpcXHRcXHRzdGFja19tYXBfZ2V0X2J1aWxkX2lkX29mZnNldChidWYsIHRyYWNlX25yLCB1c2VyLCBtYXlfZmF1bHQpO1xcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy03NTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA2LjE5MjY1MDU0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTU3NzAwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0YWNrIFRyYWNpbmcgYW5kIFZNQXMqKlxuXG5Pa2F5LCBzbyBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBnZXR0aW5nIHVzZWQgaW4gYm90aCBgX19icGZfZ2V0X3N0YWNraWRgIGFuZCBgX19icGZfZ2V0X3N0YWNrYC4gR290IGl0LiBBbmQgSSBzZWUgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyBhY3R1YWxseSBhIEJQRiBoZWxwZXIgZnVuY3Rpb24uIFJpZ2h0LCBtYWtlcyBzZW5zZSDigJMgd2UgbmVlZCB0byBmaW5kIHRoZSB2aXJ0dWFsIG1lbW9yeSBhcmVhLiBMZXQncyBkaWcgaW50byB0aGF0IGBicGZfZmluZF92bWFgIGNhbGwgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEJQRiBjb250ZXh0LiBJJ2xsIHRha2UgYSBsb29rIGF0IGBrZXJuZWwvYnBmL3Rhc2tfaXRlci5jYCB0byBzZWUgaG93IGl0J3MgaW1wbGVtZW50ZWQgYW5kIHdoZXJlIGl0IGlzIGJlaW5nIHVzZWQuIFRoYXQncyBwcm9iYWJseSB3aGVyZSBhbGwgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MDkuODA4NDIyNjdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMDg2MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ZpbmRfdm1hXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGVscGVycy5jPTIwNjc9YnBmX2Jhc2VfZnVuY19wcm90byhlbnVtIGJwZl9mdW5jX2lkIGZ1bmNfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTIyMzktXFx0Y2FzZSBCUEZfRlVOQ19maW5kX3ZtYTpcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoyMjQwOlxcdFxcdHJldHVybiBcXHUwMDI2YnBmX2ZpbmRfdm1hX3Byb3RvO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTIyNDEtXFx0ZGVmYXVsdDpcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9NzM3PXN0YXRpYyBzdHJ1Y3QgYnBmX2l0ZXJfcmVnIHRhc2tfdm1hX3JlZ19pbmZvID0ge1xcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy03NTItXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzo3NTM6QlBGX0NBTExfNShicGZfZmluZF92bWEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB0YXNrLCB1NjQsIHN0YXJ0LFxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtNzU0LVxcdCAgIGJwZl9jYWxsYmFja190LCBjYWxsYmFja19mbiwgdm9pZCAqLCBjYWxsYmFja19jdHgsIHU2NCwgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTgxNC1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjgxNTpjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gYnBmX2ZpbmRfdm1hX3Byb3RvID0ge1xcbmtlcm5lbC9icGYvdGFza19pdGVyLmM6ODE2OlxcdC5mdW5jXFx0XFx0PSBicGZfZmluZF92bWEsXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy04MTctXFx0LnJldF90eXBlXFx0PSBSRVRfSU5URUdFUixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05NjM0PXN0YXRpYyBpbnQgc2V0X2ZpbmRfdm1hX2NhbGxiYWNrX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTYzOC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjk2Mzk6XFx0LyogYnBmX2ZpbmRfdm1hKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdTY0IGFkZHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTk2NDAtXFx0ICogICAgICAgICAgICAgICB2b2lkICpjYWxsYmFja19mbiwgdm9pZCAqY2FsbGJhY2tfY3R4LCB1NjQgZmxhZ3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDIxOjQwOjA5Ljg3MTQzNzUyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQ5NDMzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIEJQRiBDb25maWd1cmF0aW9uOiBBIFF1aWNrIEF1ZGl0KipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgQlBGIHNldHVwIGFuZCBteSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyBldmVyeXRoaW5nIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lLiBUaGUgYmlnIG9uZSwgb2YgY291cnNlLCBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgdGhhdCdzIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2suIEJ1dCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIGVuc3VyZSBmdWxsIGZ1bmN0aW9uYWxpdHk/IEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoaXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEknbGwgbmVlZCB0byBsb29rIGluIGBrZXJuZWwvYnBmL0tjb25maWdgIGFuZCBwb3NzaWJseSBldmVuIGBpbml0L0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVu4oCZdCBtaXNzZWQgYW55IGNyaXRpY2FsIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuXG5cblRoZW4gdGhlcmXigJlzIHRoZSBwb3RlbnRpYWwgZm9yIGRlcGVuZGVuY2llcy4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHN0YWNrIG1hcHMgbWlnaHQgcmVseSBvbiBgQ09ORklHX1BFUkZfRVZFTlRTYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuRmluYWxseSwgSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGBrZXJuZWwvYnBmL01ha2VmaWxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgY3J1Y2lhbCBvYmplY3RzIGxpa2UgYHN0YWNrbWFwLm9gIGFuZCBgdGFza19pdGVyLm9gIGFyZSBiZWluZyBjb21waWxlZC4gVGhhdCB3aWxsIHByb2JhYmx5IGdpdmUgbWUgc29tZSBpbnNpZ2h0IHRvIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTQsIk91dHB1dFRva2VucyI6NTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTMuODg2MzgzNTAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDg0MTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YWNrbWFwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3RhY2ttYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTMuOTQ1NDczMTI4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NTI1OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhc2tfaXRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTExLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTQuMDA1MDAzNjk0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDI1NjYyMzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBmb3IgQlBGIGFuZCBQZXJmIEV2ZW50cyoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBJJ20gcHJldHR5IGNlcnRhaW4gd2UncmUgZ29pbmcgdG8gbmVlZCBib3RoIGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX1BFUkZfRVZFTlRTYCBlbmFibGVkLiBUaGF0IHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIGZvciB0aGlzIGFyZWEuIEl0J3MgYSBmb3VuZGF0aW9uYWwgc2V0dXAuIE5vdywgYmVmb3JlIEkgcHJvY2VlZCB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMsIEkgd2FudCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCBga2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmhgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUgbWlnaHQgYmUgc29tZSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWxseSBzdWJ0bGUgb25lcywgZGVmaW5lZCBvciBoaW50ZWQgYXQgaW4gdGhhdCBzcGVjaWZpYyBoZWFkZXIgZmlsZS4gQmV0dGVyIHRvIGNvdmVyIGFsbCB0aGUgYmFzZXMgdXBmcm9udCBhbmQgYmUgYXdhcmUgb2YgYW55IGludGVycmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGFuIHN0dW1ibGUgdXBvbiBhIGdvdGNoYSBsYXRlci4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCBvZiB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MTcuNzQ3NTcxOTM5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUxNzI1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbWFwX3VubG9ja193b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oPTExPXN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayB7XFxuLS1cXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xNi1cXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaDoxNzpERUNMQVJFX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5rZXJuZWwvYnBmL21tYXBfdW5sb2NrX3dvcmsuaC0xOC1cXG4tLVxcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oPTI2PXN0YXRpYyBpbmxpbmUgYm9vbCBicGZfbW1hcF91bmxvY2tfZ2V0X2lycV93b3JrKHN0cnVjdCBtbWFwX3VubG9ja19pcnFfd29yayAqKndvcmtfcHRyKVxcbi0tXFxua2VybmVsL2JwZi9tbWFwX3VubG9ja193b3JrLmgtMzItXFx0XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19QUkVFTVBUX1JUKSkge1xcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oOjMzOlxcdFxcdFxcdHdvcmsgPSB0aGlzX2NwdV9wdHIoXFx1MDAyNm1tYXBfdW5sb2NrX3dvcmspO1xcbmtlcm5lbC9icGYvbW1hcF91bmxvY2tfd29yay5oLTM0LVxcdFxcdFxcdGlmIChpcnFfd29ya19pc19idXN5KFxcdTAwMjZ3b3JrLVxcdTAwM2VpcnFfd29yaykgfHxcXG4tLVxcbmtlcm5lbC9icGYvc3RhY2ttYXAuYy0xMy0jaW5jbHVkZSBcXFwicGVyY3B1X2ZyZWVsaXN0LmhcXFwiXFxua2VybmVsL2JwZi9zdGFja21hcC5jOjE0OiNpbmNsdWRlIFxcXCJtbWFwX3VubG9ja193b3JrLmhcXFwiXFxua2VybmVsL2JwZi9zdGFja21hcC5jLTE1LVxcbi0tXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xMy0jaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvbW0uaFxcdTAwM2VcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjE0OiNpbmNsdWRlIFxcXCJtbWFwX3VubG9ja193b3JrLmhcXFwiXFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYy0xNS1cXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmM9MTE3OD1fX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTE3OS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jOjExODA6REVGSU5FX1BFUl9DUFUoc3RydWN0IG1tYXBfdW5sb2NrX2lycV93b3JrLCBtbWFwX3VubG9ja193b3JrKTtcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTExODEtXFxuLS1cXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jPTExOTU9c3RhdGljIGludCBfX2luaXQgdGFza19pdGVyX2luaXQodm9pZClcXG4tLVxcbmtlcm5lbC9icGYvdGFza19pdGVyLmMtMTIwMC1cXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XFxua2VybmVsL2JwZi90YXNrX2l0ZXIuYzoxMjAxOlxcdFxcdHdvcmsgPSBwZXJfY3B1X3B0cihcXHUwMDI2bW1hcF91bmxvY2tfd29yaywgY3B1KTtcXG5rZXJuZWwvYnBmL3Rhc2tfaXRlci5jLTEyMDItXFx0XFx0aW5pdF9pcnFfd29yayhcXHUwMDI2d29yay1cXHUwMDNlaXJxX3dvcmssIGRvX21tYXBfcmVhZF91bmxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQyMTo0MDoxNy44MDUwOTcwNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI2OTAzOTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBjcml0aWNhbCBjb25jdXJyZW5jeSBpc3N1ZSB3aXRoaW4gQlBGJ3MgYG1tYXBfcmVhZF90cnlsb2NrYCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBmdXp6aW5nLiBUaGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmUgaW1wYWN0IGNvcmUgQlBGIGxvZ2ljLCBlc3BlY2lhbGx5IGhvdyBzdGFjayBtYXBzIGFuZCB0YXNrIGl0ZXJhdG9ycyBvcGVyYXRlLCBzbyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS5cblxuTXkgZm9jdXMgc2hvdWxkIGJlIG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBmaXguIExldCdzIHN0YXJ0IHdpdGggYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCwgYGJwZl9maW5kX3ZtYWAsIGBkb19tbWFwX3JlYWRfdW5sb2NrYCwgYW5kIGBicGZfbW1hcF9yZWFkX3RyeWxvY2tgLiBXaGlsZSBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBtaWdodCBiZSBpbmxpbmVkLCBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhhdCBzbyBJJ2xsIGluY2x1ZGUgaXQgYW5kIHRoZSBjYWxsZXJzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgY2FsbGVycyBvZiBgYnBmX21tYXBfcmVhZF90cnlsb2NrYCBhcmUgYHN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0YCBhbmQgYGJwZl9maW5kX3ZtYWAuIFRoZSBjYWxsZXJzIG9mIGBicGZfbW1hcF91bmxvY2tfcHV0X2lycV93b3JrYCBhcmUgYGJwZl9tbWFwX3JlYWRfdHJ5bG9ja2AgYW5kIGBkb19tbWFwX3JlYWRfdW5sb2NrYC5cblxuSSdsbCBrZWVwIGBCUEZfU1lTQ0FMTGAgYW5kIGBQRVJGX0VWRU5UU2AgZW5hYmxlZCBpbiBteSBmdXp6aW5nIGNvbmZpZy5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCBgYnBmX2ZpbmRfdm1hYCBpcyB0aGUgY29ycmVjdCBuYW1lLCBhbmQgdGhhdCBgc3RhY2tfbWFwX2dldF9idWlsZF9pZF9vZmZzZXRgIGFuZCBgZG9fbW1hcF9yZWFkX3VubG9ja2AgYXJlIHN0YXRpYyBmdW5jdGlvbnMgaW4gdGhlIHJlbGV2YW50IGZpbGVzLlxuXG5UaW1lIHRvIHNldCB1cCB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc1NSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMjE6NDA6MjUuMDc0MTM5MzExWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMTY5NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gICAgXCJicGZfZmluZF92bWFcIixcbiAgICBcImRvX21tYXBfcmVhZF91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIGluIEJQRidzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJQRVJGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0YWNrX21hcF9nZXRfYnVpbGRfaWRfb2Zmc2V0XCIsXG4gICAgXCJicGZfZmluZF92bWFcIixcbiAgICBcImRvX21tYXBfcmVhZF91bmxvY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGNvbmN1cnJlbmN5IGlzc3VlIGluIEJQRidzIGhhbmRsaW5nIG9mIG1tYXBfcmVhZF90cnlsb2NrIHdoZW4gSVJRcyBhcmUgZGlzYWJsZWQgYnkgaW50cm9kdWNpbmcgYW4gYXRvbWljX3QgYWN0aXZlIGZsYWcgdG8gcmVzZXJ2ZSB0aGUgcGVyLWNwdSBtbWFwX3VubG9ja19pcnFfd29yayBzbG90LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHN0YWNrIG1hcHMgYW5kIHRhc2sgaXRlcmF0b3JzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzhztf[1] Phase: Succeeded StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-22 21:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-22 21:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2] Phase: Succeeded StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-22 21:40:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 21:40:36 +0000 UTC FinishedAt: 2026-07-22 21:40:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzhztf/series-workflowzhztf-convert-artifact-2220523725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 21:40:46 +0000 UTC FinishedAt: 2026-07-22 22:39:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 21:40:46 +0000 UTC FinishedAt: 2026-07-22 22:39:57 +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:*0912f4e3-d688-406d-b71f-9ac454ba0825,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-workflowzhztf/series-workflowzhztf-convert-artifact-2220523725/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": "2ce6332a-a364-4487-9ac6-d985d471e73c", "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-workflowzhztf/series-workflowzhztf-build-action-105824579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 21:40:46 +0000 UTC FinishedAt: 2026-07-22 22:39:47 +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:*0912f4e3-d688-406d-b71f-9ac454ba0825,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-workflowzhztf/series-workflowzhztf-convert-artifact-2220523725/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": "2ce6332a-a364-4487-9ac6-d985d471e73c", "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-workflowzhztf/series-workflowzhztf-build-action-105824579/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 22:39:57 +0000 UTC FinishedAt: 2026-07-22 22:39:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 22:39:57 +0000 UTC FinishedAt: 2026-07-22 22:39:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 22:39:57 +0000 UTC FinishedAt: 2026-07-22 22:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 22:39:57 +0000 UTC FinishedAt: 2026-07-22 22:40:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzhztf/series-workflowzhztf-convert-artifact-2840036136/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 22:40:18 +0000 UTC FinishedAt: 2026-07-22 22:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 22:40:18 +0000 UTC FinishedAt: 2026-07-22 22:42:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ce6332a-a364-4487-9ac6-d985d471e73c,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-workflowzhztf/series-workflowzhztf-build-action-105824579/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-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 22:42:38 +0000 UTC FinishedAt: 2026-07-22 22:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 22:42:38 +0000 UTC FinishedAt: 2026-07-22 22:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 22:42:38 +0000 UTC FinishedAt: 2026-07-22 23:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 22:42:38 +0000 UTC FinishedAt: 2026-07-22 23:20:36 +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:*0912f4e3-d688-406d-b71f-9ac454ba0825,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-workflowzhztf/series-workflowzhztf-convert-artifact-2840036136/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": "90a497bb-15d7-43e2-b0e2-db6c770ecee7", "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-workflowzhztf/series-workflowzhztf-build-action-1485865172/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 22:42:38 +0000 UTC FinishedAt: 2026-07-22 23:20:25 +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:*0912f4e3-d688-406d-b71f-9ac454ba0825,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-workflowzhztf/series-workflowzhztf-convert-artifact-2840036136/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": "90a497bb-15d7-43e2-b0e2-db6c770ecee7", "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-workflowzhztf/series-workflowzhztf-build-action-1485865172/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 23:20:36 +0000 UTC FinishedAt: 2026-07-22 23:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 23:20:36 +0000 UTC FinishedAt: 2026-07-22 23:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 23:20:36 +0000 UTC FinishedAt: 2026-07-22 23:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 23:20:36 +0000 UTC FinishedAt: 2026-07-22 23:22:27 +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:*90a497bb-15d7-43e2-b0e2-db6c770ecee7,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-workflowzhztf/series-workflowzhztf-build-action-1485865172/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-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"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:*2ce6332a-a364-4487-9ac6-d985d471e73c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90a497bb-15d7-43e2-b0e2-db6c770ecee7,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-workflowzhztf/series-workflowzhztf-build-action-105824579/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-workflowzhztf/series-workflowzhztf-build-action-1485865172/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-22 23:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-22 23:22:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"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-workflowzhztf/series-workflowzhztf-convert-artifact-1486175073/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-22 23:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-22 23:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 23:22:37 +0000 UTC FinishedAt: 2026-07-22 23:22:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 23:22:47 +0000 UTC FinishedAt: 2026-07-23 02:25:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzhztf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["stack_map_get_build_id_offset","bpf_find_vma","do_mmap_read_unlock"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23a71823352e2d792dcaae25f1ebb744acbfc0b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","PERF_EVENTS"],"series_id":"75eafd51-ac64-4774-a72a-e369808950c0","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 23:22:47 +0000 UTC FinishedAt: 2026-07-23 02:25:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ce6332a-a364-4487-9ac6-d985d471e73c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*90a497bb-15d7-43e2-b0e2-db6c770ecee7,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-workflowzhztf/series-workflowzhztf-build-action-105824579/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-workflowzhztf/series-workflowzhztf-build-action-1485865172/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-workflowzhztf/series-workflowzhztf-convert-artifact-1486175073/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,}