Name: series-workflowktrqr Phase: Succeeded StartedAt: 2026-08-03 02:49:43 +0000 UTC FinishedAt: 2026-08-03 03:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[0] Phase: Succeeded StartedAt: 2026-08-03 02:49:43 +0000 UTC FinishedAt: 2026-08-03 03:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 02:49:43 +0000 UTC FinishedAt: 2026-08-03 03:07:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EVENTFD_OPT", "EVENTFD", "EPOLL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EVENTFD_OPT", "EVENTFD", "EPOLL" ], "series_id": "24d98c96-0d95-4055-820d-d990e00aa38e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "eventfd_signal_mask", "eventfd_ctx_remove_wait_queue", "eventfd_read", "eventfd_write", "is_eventfd_file", "ep_done_scan", "__ep_eventpoll_poll", "ep_poll_callback", "ep_alloc_epitem", "ep_insert", "ep_modify", "ep_deliver_event" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VWRU5URkRfT1BUJiMzNDssCiAgICAmIzM0O0VWRU5URkQmIzM0OywKICAgICYjMzQ7RVBPTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldmVudGZkX3NpZ25hbF9tYXNrJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfcmVhZCYjMzQ7LAogICAgJiMzNDtldmVudGZkX3dyaXRlJiMzNDssCiAgICAmIzM0O2lzX2V2ZW50ZmRfZmlsZSYjMzQ7LAogICAgJiMzNDtlcF9kb25lX3NjYW4mIzM0OywKICAgICYjMzQ7X19lcF9ldmVudHBvbGxfcG9sbCYjMzQ7LAogICAgJiMzNDtlcF9wb2xsX2NhbGxiYWNrJiMzNDssCiAgICAmIzM0O2VwX2FsbG9jX2VwaXRlbSYjMzQ7LAogICAgJiMzNDtlcF9pbnNlcnQmIzM0OywKICAgICYjMzQ7ZXBfbW9kaWZ5JiMzNDssCiAgICAmIzM0O2VwX2RlbGl2ZXJfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDM6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2NjY2MjVhOTljNWFmODAxY2U1N2E2NWY0ODZhN2Y0MzIxMjczZTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMzowNzoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjNkMzRjZDY1MmFjNzIgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTQzLDYgJiM0Mzs0MywyOSBAQCBzdHJ1Y3QgZXZlbnRmZF9jdHgge1xuIFx0aW50IGlkO1xuIH07XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgX19wb2xsX3QgbWFzaylcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrKTtcbiYjNDM7XG4mIzQzO1x0LyogUHJvdGVjdGVkIGJ5IGN0eC1cdTAwM2V3cWgubG9jay4gKi9cbiYjNDM7XHRpZiAoIXdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFdmVudGZkIGNvbnRleHQgb2YgdGhlIHR3by12YXJpYWJsZSBwcm90b2NvbDpcbiYjNDM7XHQgKlxuJiM0MztcdCAqIFcoQikgdXBkYXRlcyBjdHgtXHUwMDNlY291bnQgaW4gdGhlIGNhbGxlciwgdGhlbiB0aGUgY2FsbGJhY2sgcGVyZm9ybXNcbiYjNDM7XHQgKiBSKEEpIG9uIGVwaXRlbS1cdTAwM2Vub3RpZmllZC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIFcoQikgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSlcbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfbWIoKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1x0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBtYXNrKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyXG4gICogQGN0eDogW2luXSBQb2ludGVyIHRvIHRoZSBldmVudGZkIGNvbnRleHQuXG5AQCAtNzIsOCAmIzQzOzk1LDcgQEAgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbiBcdGlmIChjdHgtXHUwMDNlY291bnQgXHUwMDNjIFVMTE9OR19NQVgpXG4gXHRcdGN0eC1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4tXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XG4mIzQzO1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTIwMyw4ICYjNDM7MjI1LDggQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKndcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jaywgZmxhZ3MpO1xuIFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7XG4gXHRfX3JlbW92ZV93YWl0X3F1ZXVlKFx1MDAyNmN0eC1cdTAwM2V3cWgsIHdhaXQpO1xuLVx0aWYgKCpjbnQgIT0gMCBcdTAwMjZcdTAwMjYgd2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTE9VVCk7XG4mIzQzO1x0aWYgKCpjbnQgIT0gMClcbiYjNDM7XHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gKmNudCAhPSAwID8gMCA6IC1FQUdBSU47XG5AQCAtMjM0LDggJiM0MzsyNTYsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuIFx0fVxuIFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIFx1MDAyNnVjbnQpO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbi1cdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuLVx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMT1VUKTtcbiYjNDM7XHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7XG4gXHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG4gXHRpZiAodW5saWtlbHkoY29weV90b19pdGVyKFx1MDAyNnVjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpXG5AQCAtMjcwLDggJiM0MzsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xuIFx0aWYgKGxpa2VseShyZXMgXHUwMDNlIDApKSB7XG4gXHRcdGN0eC1cdTAwM2Vjb3VudCAmIzQzOz0gdWNudDtcbiBcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbi1cdFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOKTtcbiYjNDM7XHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMSU4pO1xuIFx0XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG5AQCAtMzEwLDYgJiM0MzszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xuIFx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuIH07XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7Ym9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZmlsZS1cdTAwM2VmX29wID09IFx1MDAyNmV2ZW50ZmRfZm9wcztcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xuJiM0MztcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIC8qKlxuICAqIGV2ZW50ZmRfZmdldCAtIEFjcXVpcmUgYSByZWZlcmVuY2Ugb2YgYW4gZXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50cG9sbC5jIGIvZnMvZXZlbnRwb2xsLmNcbmluZGV4IGVlZDhjZWNkOTRlM2EuLjA5ZTkyMzljZTJkNWUgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudHBvbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXZlbnRwb2xsLmNcbkBAIC0zOSw2ICYjNDM7MzksOSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NhcGFiaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlcWxvY2suaFx1MDAzZVxuJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuJiM0MzsjZW5kaWZcbiAjaW5jbHVkZSBcdTAwM2NuZXQvYnVzeV9wb2xsLmhcdTAwM2VcbiBcbiAvKlxuQEAgLTI4NSw2ICYjNDM7Mjg4LDE0IEBAIHN0cnVjdCBlcGl0ZW0ge1xuIFxuIFx0LyogVGhlIHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlIHRoZSBpbnRlcmVzdGVkIGV2ZW50cyBhbmQgdGhlIHNvdXJjZSBmZCAqL1xuIFx0c3RydWN0IGVwb2xsX2V2ZW50IGV2ZW50O1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0MztcdC8qIFNldCBhZnRlciBxdWV1ZWluZywgY2xlYXJlZCBiZWZvcmUgZGVxdWV1ZWluZyBmcm9tIHRoZSByZWFkeSBwYXRoLiAqL1xuJiM0MztcdGJvb2wgbm90aWZpZWQ7XG4mIzQzO1xuJiM0MztcdC8qIFRydWUgaWYgdGhlIG1vbml0b3JlZCBmaWxlIGlzIGFuIGV2ZW50ZmQuICovXG4mIzQzO1x0Ym9vbCBpc19ldmVudGZkO1xuJiM0MzsjZW5kaWZcbiB9O1xuIFxuIC8qXG5AQCAtNjIwLDYgJiM0Mzs2MzEsNjUgQEAgc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50c19hdmFpbGFibGUoc3RydWN0IGV2ZW50cG9sbCAqZXApXG4gXHRcdHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2ZXAtXHUwMDNlc2VxLCBzZXEpO1xuIH1cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0MzsvKlxuJiM0MzsgKiBFdmVudGZkL2Vwb2xsIHR3by12YXJpYWJsZSBjb21tdW5pY2F0aW9uOlxuJiM0MzsgKlxuJiM0MzsgKiAgIEEgPSBlcGktXHUwMDNlbm90aWZpZWRcbiYjNDM7ICogICBCID0gZXZlbnRmZCBjb3VudC9yZWFkaW5lc3NcbiYjNDM7ICpcbiYjNDM7ICogICBzY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgZGVxdWV1ZSAtXHUwMDNlIFIoQilcbiYjNDM7ICogICBldmVudGZkIGNvbnRleHQ6IFcoQikgICAgICAgICAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgUihBKVxuJiM0MzsgKlxuJiM0MzsgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGVwaS1cdTAwM2Vpc19ldmVudGZkKVxuJiM0MztcdFx0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIWVwaS1cdTAwM2Vpc19ldmVudGZkKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN0b3AgY2FsbGJhY2tzIGZyb20gc2tpcHBpbmcgYmVmb3JlIHRoZSBzY2FubmVyIGRyb3BzIGl0cyByZWFkeS1saXN0XG4mIzQzO1x0ICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZVxuJiM0MztcdCAqIGFjdHVhbCBkZXF1ZXVlIG1heSBoYXBwZW4gYmV0d2VlbiB0aGUgYmFycmllciBhbmQgdGhlIHJlYWRpbmVzcyByZWFkLlxuJiM0MztcdCAqL1xuJiM0MztcdFdSSVRFX09OQ0UoZXBpLVx1MDAzZW5vdGlmaWVkLCBmYWxzZSk7XG4mIzQzO1x0LyogU2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQikuICovXG4mIzQzO1x0c21wX21iKCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiYjNDM7XHRcdFx0XHRcdFx0X19wb2xsX3QgcG9sbGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKFJFQURfT05DRShlcGktXHUwMDNlZXZlbnQuZXZlbnRzKSBcdTAwMjZcbiYjNDM7XHQgICAgKEVQT0xMRVhDTFVTSVZFIHwgRVBPTExFVCB8IEVQT0xMT05FU0hPVCkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChwb2xsZmxhZ3MgXHUwMDI2IFBPTExGUkVFKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHQvKiBFdmVudGZkIGNvbnRleHQ6IFcoQikgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSkuICovXG4mIzQzO1x0cmV0dXJuIFJFQURfT05DRShlcGktXHUwMDNlbm90aWZpZWQpO1xuJiM0Mzt9XG4mIzQzOyNlbHNlXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxuJiM0MztcdFx0XHRcdFx0XHRfX3BvbGxfdCBwb2xsZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuICNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxuIC8qKlxuICAqIGJ1c3lfbG9vcF9lcF90aW1lb3V0IC0gY2hlY2sgaWYgYnVzeSBwb2xsIGhhcyB0aW1lZCBvdXQuIFRoZSB0aW1lb3V0IHZhbHVlXG5AQCAtMTAwNyw2ICYjNDM7MTA3Nyw3IEBAIHN0YXRpYyB2b2lkIGVwX2RvbmVfc2NhbihzdHJ1Y3QgZXZlbnRwb2xsICplcCxcbiBcdFx0XHQgKiByZXZlcnNlcyB0aGUgaXRlcmF0aW9uIG9yZGVyIGludG8gRklGTy5cbiBcdFx0XHQgKi9cbiBcdFx0XHRsaXN0X2FkZChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4mIzQzO1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0fVxuIFx0fVxuQEAgLTEzMDMsOCAmIzQzOzEzNzQsMTEgQEAgc3RhdGljIF9fcG9sbF90IF9fZXBfZXZlbnRwb2xsX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQsIGludCBkZXBcbiBcdG11dGV4X2xvY2tfbmVzdGVkKFx1MDAyNmVwLVx1MDAzZW10eCwgZGVwdGgpO1xuIFx0ZXBfc3RhcnRfc2NhbihlcCwgXHUwMDI2c2Nhbl9iYXRjaCk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZXBpLCB0bXAsIFx1MDAyNnNjYW5fYmF0Y2gsIHJkbGxpbmspIHtcbiYjNDM7XHRcdC8qIENsZWFyIG5vdGlmaWVkIGJlZm9yZSBhIHBvc3NpYmxlIHJlbW92YWwgZnJvbSB0eGxpc3QuICovXG4mIzQzO1x0XHRlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKGVwaSk7XG4gXHRcdGlmIChlcF9pdGVtX3BvbGwoZXBpLCBcdTAwMjZwdCwgZGVwdGggJiM0MzsgMSkpIHtcbiBcdFx0XHRyZXMgPSBFUE9MTElOIHwgRVBPTExSRE5PUk07XG4mIzQzO1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qXG5AQCAtMTQ5Nyw2ICYjNDM7MTU3MSw5IEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGV3YWtlID0gMDtcbiBcbiYjNDM7XHRpZiAoZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChlcGksIHBvbGxmbGFncykpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlcC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRlcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTtcbkBAIC0xNTI5LDExICYjNDM7MTYwNiwxMyBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdlxuIFx0XHRpZiAoIWVwaV9vbl9vdmZsaXN0KGVwaSkpIHtcbiBcdFx0XHRlcGktXHUwMDNlb3ZmbGlzdF9uZXh0ID0gUkVBRF9PTkNFKGVwLVx1MDAzZW92Zmxpc3QpO1xuIFx0XHRcdFdSSVRFX09OQ0UoZXAtXHUwMDNlb3ZmbGlzdCwgZXBpKTtcbiYjNDM7XHRcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdFx0ZXBfcG1fc3RheV9hd2FrZV9yY3UoZXBpKTtcbiBcdFx0fVxuIFx0fSBlbHNlIGlmICghZXBfaXNfbGlua2VkKGVwaSkpIHtcbiBcdFx0LyogSW4gdGhlIHVzdWFsIGNhc2UsIGFkZCBldmVudCB0byByZWFkeSBsaXN0LiAqL1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBcdTAwMjZlcC1cdTAwM2VyZGxsaXN0KTtcbiYjNDM7XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xuIFx0fVxuIFxuQEAgLTE4NDAsNiAmIzQzOzE5MTksOSBAQCBzdGF0aWMgc3RydWN0IGVwaXRlbSAqZXBfYWxsb2NfZXBpdGVtKHN0cnVjdCBldmVudHBvbGwgKmVwLFxuIFx0ZXBpLVx1MDAzZWZmZCA9ICp0ZjtcbiBcdGVwaS1cdTAwM2VldmVudCA9ICpldmVudDtcbiBcdGVwaV9jbGVhcl9vdmZsaXN0KGVwaSk7XG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7XHRlcGktXHUwMDNlaXNfZXZlbnRmZCA9IGlzX2V2ZW50ZmRfZmlsZSh0ZmlsZSk7XG4mIzQzOyNlbmRpZlxuIFxuIFx0cmV0dXJuIGVwaTtcbiB9XG5AQCAtMTk1Niw2ICYjNDM7MjAzOCw3IEBAIHN0YXRpYyBpbnQgZXBfaW5zZXJ0KHN0cnVjdCBlcF9jdGxfY3R4ICpjdHgsIHN0cnVjdCBldmVudHBvbGwgKmVwLFxuIFxuIFx0aWYgKHJldmVudHMgXHUwMDI2XHUwMDI2ICFlcF9pc19saW5rZWQoZXBpKSkge1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBcdTAwMjZlcC1cdTAwM2VyZGxsaXN0KTtcbiYjNDM7XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmVwLVx1MDAzZXdxKSlcbkBAIC0yMDMxLDYgJiM0MzsyMTE0LDcgQEAgc3RhdGljIGludCBlcF9tb2RpZnkoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiBcdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZlcC1cdTAwM2Vsb2NrKTtcbiBcdFx0aWYgKCFlcF9pc19saW5rZWQoZXBpKSkge1xuIFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuJiM0MztcdFx0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdFx0LyogTm90aWZ5IHdhaXRpbmcgdGFza3MgdGhhdCBldmVudHMgYXJlIGF2YWlsYWJsZSAqL1xuQEAgLTIwODQsNiAmIzQzOzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdF9fcG1fcmVsYXgod3MpO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQ2xlYXIgbm90aWZpZWQgd2hpbGUgZXBpIGlzIHN0aWxsIG9uIHR4bGlzdC4gQSBjYWxsYmFjayB0aGF0XG4mIzQzO1x0ICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kXG4mIzQzO1x0ICogcHVibGlzaCB0aGUgZXZlbnQgdGhyb3VnaCBvdmZsaXN0LlxuJiM0MztcdCAqL1xuJiM0MztcdGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTtcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmspO1xuIFxuIFx0LypcbkBAIC0yMTA0LDYgJiM0MzsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGF0dGVtcHQuXG4gXHRcdCAqL1xuIFx0XHRsaXN0X2FkZChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgc2Nhbl9iYXRjaCk7XG4mIzQzO1x0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdH1cbkBAIC0yMTIwLDYgJiM0MzsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGR1cmluZyBzY2Fucy5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuJiM0MztcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdH1cbiBcdHJldHVybiAxO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbkBAIC00MCw2ICYjNDM7NDAsMTAgQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKndcbiBcdFx0XHRcdCAgX191NjQgKmNudCk7XG4gdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KTtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuIHtcbiBcdHJldHVybiAhY3VycmVudC1cdTAwM2Vpbl9ldmVudGZkO1xuQEAgLTgyLDYgJiM0Mzs4NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbiBcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2VuZGlmXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuZGlmZiAtLWdpdCBhL2luaXQvS2NvbmZpZyBiL2luaXQvS2NvbmZpZ1xuaW5kZXggMTBmMjAxM2I1MzIxNi4uYzczNGRmZTM0OTBjNyAxMDA2NDRcbi0tLSBhL2luaXQvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvaW5pdC9LY29uZmlnXG5AQCAtMTg5Niw2ICYjNDM7MTg5NiwxOCBAQCBjb25maWcgRVZFTlRGRFxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuJiM0Mztjb25maWcgRVZFTlRGRF9PUFRcbiYjNDM7XHRib29sIFwmIzM0O09wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb25cJiMzNDsgaWYgRVhQRVJUXG4mIzQzO1x0ZGVwZW5kcyBvbiBFVkVOVEZEIFx1MDAyNlx1MDAyNiBFUE9MTFxuJiM0MztcdGRlZmF1bHQgblxuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEVuYWJsZXMgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjayBmb3IgZXZlbnRmZFxuJiM0MztcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVx1MDAzZWxvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy5cbiYjNDM7XHQgIEZ1bGwgbWVtb3J5IGJhcnJpZXJzIHByZXZlbnQgbG9zdCB3YWtldXBzIHdoZW4gZXZlbnRmZCB1cGRhdGVzXG4mIzQzO1x0ICByYWNlIHdpdGggZXBvbGwgcmUtcG9sbGluZy5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiM0MztcbiBjb25maWcgU0hNRU1cbiBcdGJvb2wgXCYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwmIzM0OyBpZiBFWFBFUlRcbiBcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAzOjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVkVOVEZEX09QVCYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDssCiAgICAmIzM0O0VQT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXZlbnRmZF9zaWduYWxfbWFzayYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSYjMzQ7LAogICAgJiMzNDtldmVudGZkX3JlYWQmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF93cml0ZSYjMzQ7LAogICAgJiMzNDtpc19ldmVudGZkX2ZpbGUmIzM0OywKICAgICYjMzQ7ZXBfZG9uZV9zY2FuJiMzNDssCiAgICAmIzM0O19fZXBfZXZlbnRwb2xsX3BvbGwmIzM0OywKICAgICYjMzQ7ZXBfcG9sbF9jYWxsYmFjayYjMzQ7LAogICAgJiMzNDtlcF9hbGxvY19lcGl0ZW0mIzM0OywKICAgICYjMzQ7ZXBfaW5zZXJ0JiMzNDssCiAgICAmIzM0O2VwX21vZGlmeSYjMzQ7LAogICAgJiMzNDtlcF9kZWxpdmVyX2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIG9wdGltaXphdGlvbiBmb3IgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZXZlbnRmZCBhbmQgZXBvbGwsIGFkZGluZyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrLiBUaGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGluIGV2ZW50ZmQgYW5kIGV2ZW50cG9sbCBzdWJzeXN0ZW1zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGVuc3VyZSBubyByYWNlIGNvbmRpdGlvbnMgb3IgbG9zdCB3YWtldXBzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjY2NjI1YTk5YzVhZjgwMWNlNTdhNjVmNDg2YTdmNDMyMTI3M2UxNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDM6MDc6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uM2QzNGNkNjUyYWM3MiAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtNDMsNiAmIzQzOzQzLDI5IEBAIHN0cnVjdCBldmVudGZkX2N0eCB7CiAJaW50IGlkOwogfTsKIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsCiYjNDM7CQkJCQkgICAgICAgX19wb2xsX3QgbWFzaykKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtjdHgtJmd0O3dxaC5sb2NrKTsKJiM0MzsKJiM0MzsJLyogUHJvdGVjdGVkIGJ5IGN0eC0mZ3Q7d3FoLmxvY2suICovCiYjNDM7CWlmICghd2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2N0eC0mZ3Q7d3FoKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUCiYjNDM7CS8qCiYjNDM7CSAqIEV2ZW50ZmQgY29udGV4dCBvZiB0aGUgdHdvLXZhcmlhYmxlIHByb3RvY29sOgomIzQzOwkgKgomIzQzOwkgKiBXKEIpIHVwZGF0ZXMgY3R4LSZndDtjb3VudCBpbiB0aGUgY2FsbGVyLCB0aGVuIHRoZSBjYWxsYmFjayBwZXJmb3JtcwomIzQzOwkgKiBSKEEpIG9uIGVwaXRlbS0mZ3Q7bm90aWZpZWQuCiYjNDM7CSAqCiYjNDM7CSAqIFcoQikgLSZndDsgc21wX21iKCkgLSZndDsgUihBKQomIzQzOwkgKi8KJiM0MzsJc21wX21iKCk7CiYjNDM7I2VuZGlmCiYjNDM7CXdha2VfdXBfbG9ja2VkX3BvbGwoJmFtcDtjdHgtJmd0O3dxaCwgbWFzayk7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyCiAgKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gdGhlIGV2ZW50ZmQgY29udGV4dC4KQEAgLTcyLDggJiM0Mzs5NSw3IEBAIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaykKIAljdXJyZW50LSZndDtpbl9ldmVudGZkID0gMTsKIAlpZiAoY3R4LSZndDtjb3VudCAmbHQ7IFVMTE9OR19NQVgpCiAJCWN0eC0mZ3Q7Y291bnQmIzQzOyYjNDM7OwotCWlmICh3YWl0cXVldWVfYWN0aXZlKCZhbXA7Y3R4LSZndDt3cWgpKQotCQl3YWtlX3VwX2xvY2tlZF9wb2xsKCZhbXA7Y3R4LSZndDt3cWgsIEVQT0xMSU4gfCBtYXNrKTsKJiM0MzsJZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spOwogCWN1cnJlbnQtJmd0O2luX2V2ZW50ZmQgPSAwOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjdHgtJmd0O3dxaC5sb2NrLCBmbGFncyk7CiB9CkBAIC0yMDMsOCAmIzQzOzIyNSw4IEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjdHgtJmd0O3dxaC5sb2NrLCBmbGFncyk7CiAJZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7CiAJX19yZW1vdmVfd2FpdF9xdWV1ZSgmYW1wO2N0eC0mZ3Q7d3FoLCB3YWl0KTsKLQlpZiAoKmNudCAhPSAwICZhbXA7JmFtcDsgd2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2N0eC0mZ3Q7d3FoKSkKLQkJd2FrZV91cF9sb2NrZWRfcG9sbCgmYW1wO2N0eC0mZ3Q7d3FoLCBFUE9MTE9VVCk7CiYjNDM7CWlmICgqY250ICE9IDApCiYjNDM7CQlldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2N0eC0mZ3Q7d3FoLmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiAqY250ICE9IDAgPyAwIDogLUVBR0FJTjsKQEAgLTIzNCw4ICYjNDM7MjU2LDcgQEAgc3RhdGljIHNzaXplX3QgZXZlbnRmZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bykKIAl9CiAJZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsICZhbXA7dWNudCk7CiAJY3VycmVudC0mZ3Q7aW5fZXZlbnRmZCA9IDE7Ci0JaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmFtcDtjdHgtJmd0O3dxaCkpCi0JCXdha2VfdXBfbG9ja2VkX3BvbGwoJmFtcDtjdHgtJmd0O3dxaCwgRVBPTExPVVQpOwomIzQzOwlldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7CiAJY3VycmVudC0mZ3Q7aW5fZXZlbnRmZCA9IDA7CiAJc3Bpbl91bmxvY2tfaXJxKCZhbXA7Y3R4LSZndDt3cWgubG9jayk7CiAJaWYgKHVubGlrZWx5KGNvcHlfdG9faXRlcigmYW1wO3VjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpCkBAIC0yNzAsOCAmIzQzOzI5MSw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjCiAJaWYgKGxpa2VseShyZXMgJmd0OyAwKSkgewogCQljdHgtJmd0O2NvdW50ICYjNDM7PSB1Y250OwogCQljdXJyZW50LSZndDtpbl9ldmVudGZkID0gMTsKLQkJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmFtcDtjdHgtJmd0O3dxaCkpCi0JCQl3YWtlX3VwX2xvY2tlZF9wb2xsKCZhbXA7Y3R4LSZndDt3cWgsIEVQT0xMSU4pOwomIzQzOwkJZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTik7CiAJCWN1cnJlbnQtJmd0O2luX2V2ZW50ZmQgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnEoJmFtcDtjdHgtJmd0O3dxaC5sb2NrKTsKQEAgLTMxMCw2ICYjNDM7MzMwLDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGV2ZW50ZmRfZm9wcyA9IHsKIAkubGxzZWVrCQk9IG5vb3BfbGxzZWVrLAogfTsKIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkKJiM0Mzt7CiYjNDM7CXJldHVybiBmaWxlLSZndDtmX29wID09ICZhbXA7ZXZlbnRmZF9mb3BzOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpOwomIzQzOwomIzQzOyNlbmRpZgomIzQzOwogLyoqCiAgKiBldmVudGZkX2ZnZXQgLSBBY3F1aXJlIGEgcmVmZXJlbmNlIG9mIGFuIGV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLgogICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvZnMvZXZlbnRwb2xsLmMgYi9mcy9ldmVudHBvbGwuYwppbmRleCBlZWQ4Y2VjZDk0ZTNhLi4wOWU5MjM5Y2UyZDVlIDEwMDY0NAotLS0gYS9mcy9ldmVudHBvbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudHBvbGwuYwpAQCAtMzksNiAmIzQzOzM5LDkgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yY3VsaXN0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvY2FwYWJpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlcWxvY2suaCZndDsKJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V2ZW50ZmQuaCZndDsKJiM0MzsjZW5kaWYKICNpbmNsdWRlICZsdDtuZXQvYnVzeV9wb2xsLmgmZ3Q7CiAKIC8qCkBAIC0yODUsNiAmIzQzOzI4OCwxNCBAQCBzdHJ1Y3QgZXBpdGVtIHsKIAogCS8qIFRoZSBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZSB0aGUgaW50ZXJlc3RlZCBldmVudHMgYW5kIHRoZSBzb3VyY2UgZmQgKi8KIAlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXZlbnQ7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzOwkvKiBTZXQgYWZ0ZXIgcXVldWVpbmcsIGNsZWFyZWQgYmVmb3JlIGRlcXVldWVpbmcgZnJvbSB0aGUgcmVhZHkgcGF0aC4gKi8KJiM0MzsJYm9vbCBub3RpZmllZDsKJiM0MzsKJiM0MzsJLyogVHJ1ZSBpZiB0aGUgbW9uaXRvcmVkIGZpbGUgaXMgYW4gZXZlbnRmZC4gKi8KJiM0MzsJYm9vbCBpc19ldmVudGZkOwomIzQzOyNlbmRpZgogfTsKIAogLyoKQEAgLTYyMCw2ICYjNDM7NjMxLDY1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudHNfYXZhaWxhYmxlKHN0cnVjdCBldmVudHBvbGwgKmVwKQogCQlyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7ZXAtJmd0O3NlcSwgc2VxKTsKIH0KIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0MzsvKgomIzQzOyAqIEV2ZW50ZmQvZXBvbGwgdHdvLXZhcmlhYmxlIGNvbW11bmljYXRpb246CiYjNDM7ICoKJiM0MzsgKiAgIEEgPSBlcGktJmd0O25vdGlmaWVkCiYjNDM7ICogICBCID0gZXZlbnRmZCBjb3VudC9yZWFkaW5lc3MKJiM0MzsgKgomIzQzOyAqICAgc2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLSZndDsgc21wX21iKCkgLSZndDsgZGVxdWV1ZSAtJmd0OyBSKEIpCiYjNDM7ICogICBldmVudGZkIGNvbnRleHQ6IFcoQikgICAgICAgICAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEEpCiYjNDM7ICoKJiM0MzsgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfc2V0X25vdGlmaWVkKHN0cnVjdCBlcGl0ZW0gKmVwaSkKJiM0Mzt7CiYjNDM7CWlmIChlcGktJmd0O2lzX2V2ZW50ZmQpCiYjNDM7CQlXUklURV9PTkNFKGVwaS0mZ3Q7bm90aWZpZWQsIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpCiYjNDM7ewomIzQzOwlpZiAoIWVwaS0mZ3Q7aXNfZXZlbnRmZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogU3RvcCBjYWxsYmFja3MgZnJvbSBza2lwcGluZyBiZWZvcmUgdGhlIHNjYW5uZXIgZHJvcHMgaXRzIHJlYWR5LWxpc3QKJiM0MzsJICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZQomIzQzOwkgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UoZXBpLSZndDtub3RpZmllZCwgZmFsc2UpOwomIzQzOwkvKiBTY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEIpLiAqLwomIzQzOwlzbXBfbWIoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLAomIzQzOwkJCQkJCV9fcG9sbF90IHBvbGxmbGFncykKJiM0Mzt7CiYjNDM7CWlmICghZXBpLSZndDtpc19ldmVudGZkKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAoUkVBRF9PTkNFKGVwaS0mZ3Q7ZXZlbnQuZXZlbnRzKSAmYW1wOwomIzQzOwkgICAgKEVQT0xMRVhDTFVTSVZFIHwgRVBPTExFVCB8IEVQT0xMT05FU0hPVCkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChwb2xsZmxhZ3MgJmFtcDsgUE9MTEZSRUUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CS8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEEpLiAqLwomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKGVwaS0mZ3Q7bm90aWZpZWQpOwomIzQzO30KJiM0MzsjZWxzZQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpIHsgfQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSwKJiM0MzsJCQkJCQlfX3BvbGxfdCBwb2xsZmxhZ3MpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMCiAvKioKICAqIGJ1c3lfbG9vcF9lcF90aW1lb3V0IC0gY2hlY2sgaWYgYnVzeSBwb2xsIGhhcyB0aW1lZCBvdXQuIFRoZSB0aW1lb3V0IHZhbHVlCkBAIC0xMDA3LDYgJiM0MzsxMDc3LDcgQEAgc3RhdGljIHZvaWQgZXBfZG9uZV9zY2FuKHN0cnVjdCBldmVudHBvbGwgKmVwLAogCQkJICogcmV2ZXJzZXMgdGhlIGl0ZXJhdGlvbiBvcmRlciBpbnRvIEZJRk8uCiAJCQkgKi8KIAkJCWxpc3RfYWRkKCZhbXA7ZXBpLSZndDtyZGxsaW5rLCAmYW1wO2VwLSZndDtyZGxsaXN0KTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAkJfQogCX0KQEAgLTEzMDMsOCAmIzQzOzEzNzQsMTEgQEAgc3RhdGljIF9fcG9sbF90IF9fZXBfZXZlbnRwb2xsX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQsIGludCBkZXAKIAltdXRleF9sb2NrX25lc3RlZCgmYW1wO2VwLSZndDttdHgsIGRlcHRoKTsKIAllcF9zdGFydF9zY2FuKGVwLCAmYW1wO3NjYW5fYmF0Y2gpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgJmFtcDtzY2FuX2JhdGNoLCByZGxsaW5rKSB7CiYjNDM7CQkvKiBDbGVhciBub3RpZmllZCBiZWZvcmUgYSBwb3NzaWJsZSByZW1vdmFsIGZyb20gdHhsaXN0LiAqLwomIzQzOwkJZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpOwogCQlpZiAoZXBfaXRlbV9wb2xsKGVwaSwgJmFtcDtwdCwgZGVwdGggJiM0MzsgMSkpIHsKIAkJCXJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWJyZWFrOwogCQl9IGVsc2UgewogCQkJLyoKQEAgLTE0OTcsNiAmIzQzOzE1NzEsOSBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdgogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGV3YWtlID0gMDsKIAomIzQzOwlpZiAoZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChlcGksIHBvbGxmbGFncykpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2VwLSZndDtsb2NrLCBmbGFncyk7CiAKIAllcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTsKQEAgLTE1MjksMTEgJiM0MzsxNjA2LDEzIEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2CiAJCWlmICghZXBpX29uX292Zmxpc3QoZXBpKSkgewogCQkJZXBpLSZndDtvdmZsaXN0X25leHQgPSBSRUFEX09OQ0UoZXAtJmd0O292Zmxpc3QpOwogCQkJV1JJVEVfT05DRShlcC0mZ3Q7b3ZmbGlzdCwgZXBpKTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7CiAJCX0KIAl9IGVsc2UgaWYgKCFlcF9pc19saW5rZWQoZXBpKSkgewogCQkvKiBJbiB0aGUgdXN1YWwgY2FzZSwgYWRkIGV2ZW50IHRvIHJlYWR5IGxpc3QuICovCiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7CiAJfQogCkBAIC0xODQwLDYgJiM0MzsxOTE5LDkgQEAgc3RhdGljIHN0cnVjdCBlcGl0ZW0gKmVwX2FsbG9jX2VwaXRlbShzdHJ1Y3QgZXZlbnRwb2xsICplcCwKIAllcGktJmd0O2ZmZCA9ICp0ZjsKIAllcGktJmd0O2V2ZW50ID0gKmV2ZW50OwogCWVwaV9jbGVhcl9vdmZsaXN0KGVwaSk7CiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzOwllcGktJmd0O2lzX2V2ZW50ZmQgPSBpc19ldmVudGZkX2ZpbGUodGZpbGUpOwomIzQzOyNlbmRpZgogCiAJcmV0dXJuIGVwaTsKIH0KQEAgLTE5NTYsNiAmIzQzOzIwMzgsNyBAQCBzdGF0aWMgaW50IGVwX2luc2VydChzdHJ1Y3QgZXBfY3RsX2N0eCAqY3R4LCBzdHJ1Y3QgZXZlbnRwb2xsICplcCwKIAogCWlmIChyZXZlbnRzICZhbXA7JmFtcDsgIWVwX2lzX2xpbmtlZChlcGkpKSB7CiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAogCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2VwLSZndDt3cSkpCkBAIC0yMDMxLDYgJiM0MzsyMTE0LDcgQEAgc3RhdGljIGludCBlcF9tb2RpZnkoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSwKIAkJc3Bpbl9sb2NrX2lycSgmYW1wO2VwLSZndDtsb2NrKTsKIAkJaWYgKCFlcF9pc19saW5rZWQoZXBpKSkgewogCQkJbGlzdF9hZGRfdGFpbCgmYW1wO2VwaS0mZ3Q7cmRsbGluaywgJmFtcDtlcC0mZ3Q7cmRsbGlzdCk7CiYjNDM7CQkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCQllcF9wbV9zdGF5X2F3YWtlKGVwaSk7CiAKIAkJCS8qIE5vdGlmeSB3YWl0aW5nIHRhc2tzIHRoYXQgZXZlbnRzIGFyZSBhdmFpbGFibGUgKi8KQEAgLTIwODQsNiAmIzQzOzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCV9fcG1fcmVsYXgod3MpOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBDbGVhciBub3RpZmllZCB3aGlsZSBlcGkgaXMgc3RpbGwgb24gdHhsaXN0LiBBIGNhbGxiYWNrIHRoYXQKJiM0MzsJICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kCiYjNDM7CSAqIHB1Ymxpc2ggdGhlIGV2ZW50IHRocm91Z2ggb3ZmbGlzdC4KJiM0MzsJICovCiYjNDM7CWVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTsKIAlsaXN0X2RlbF9pbml0KCZhbXA7ZXBpLSZndDtyZGxsaW5rKTsKIAogCS8qCkBAIC0yMTA0LDYgJiM0MzsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCSAqIGF0dGVtcHQuCiAJCSAqLwogCQlsaXN0X2FkZCgmYW1wO2VwaS0mZ3Q7cmRsbGluaywgc2Nhbl9iYXRjaCk7CiYjNDM7CQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJZXBfcG1fc3RheV9hd2FrZShlcGkpOwogCQlyZXR1cm4gLUVGQVVMVDsKIAl9CkBAIC0yMTIwLDYgJiM0MzsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCSAqIGR1cmluZyBzY2Fucy4KIAkJICovCiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAl9CiAJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC00MCw2ICYjNDM7NDAsMTAgQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKncKIAkJCQkgIF9fdTY0ICpjbnQpOwogdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KTsKIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CiYjNDM7I2VuZGlmCiYjNDM7CiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKQogewogCXJldHVybiAhY3VycmVudC0mZ3Q7aW5fZXZlbnRmZDsKQEAgLTgyLDYgJiM0Mzs4NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudCkKIAogfQogCiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKZGlmZiAtLWdpdCBhL2luaXQvS2NvbmZpZyBiL2luaXQvS2NvbmZpZwppbmRleCAxMGYyMDEzYjUzMjE2Li5jNzM0ZGZlMzQ5MGM3IDEwMDY0NAotLS0gYS9pbml0L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvaW5pdC9LY29uZmlnCkBAIC0xODk2LDYgJiM0MzsxODk2LDE4IEBAIGNvbmZpZyBFVkVOVEZECiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKJiM0Mztjb25maWcgRVZFTlRGRF9PUFQKJiM0MzsJYm9vbCAmIzM0O09wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb24mIzM0OyBpZiBFWFBFUlQKJiM0MzsJZGVwZW5kcyBvbiBFVkVOVEZEICZhbXA7JmFtcDsgRVBPTEwKJiM0MzsJZGVmYXVsdCBuCiYjNDM7CWhlbHAKJiM0MzsJICBFbmFibGVzIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2sgZm9yIGV2ZW50ZmQKJiM0MzsJICBmaWxlcywgcmVkdWNpbmcgZXAtJmd0O2xvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy4KJiM0MzsJICBGdWxsIG1lbW9yeSBiYXJyaWVycyBwcmV2ZW50IGxvc3Qgd2FrZXVwcyB3aGVuIGV2ZW50ZmQgdXBkYXRlcwomIzQzOwkgIHJhY2Ugd2l0aCBlcG9sbCByZS1wb2xsaW5nLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CiBjb25maWcgU0hNRU0KIAlib29sICYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbSYjMzQ7IGlmIEVYUEVSVAogCWRlZmF1bHQgeQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTUwCgkJCQkJCQlvdXRwdXQ6IDIwNwoJCQkJCQkJdGhvdWdodHM6IDE2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogRXZlbnRmZC9FcG9sbCBPcHRpbWl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBjb25maWcsIGBDT05GSUdfRVZFTlRGRF9PUFRgLCB3aGljaCBpcyBhbGwgYWJvdXQgb3B0aW1pemluZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gYGV2ZW50ZmRgIGFuZCBgZXBvbGxgLiBTcGVjaWZpY2FsbHksIHRoaXMgaW52b2x2ZXMgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gYGVwX3BvbGxfY2FsbGJhY2tgIGZvciBgZXZlbnRmZGAgZmlsZXMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljLCBzbyBmdXp6aW5nIGlzIGEgbXVzdC4KCkZpcnN0LCBsZXQmIzM5O3MgbG9vayBhdCB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZDogYGZzL2V2ZW50ZmQuY2AgYW5kIGBmcy9ldmVudHBvbGwuY2AgYXJlIHRoZSBtYWluIHRhcmdldHMuICBgZXZlbnRmZC5jYCBub3cgaW5jbHVkZXMgYW4gYGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbGAgKHdpdGggYW4gYHNtcF9tYigpYCBpZiB0aGUgbmV3IGNvbmZpZyBpcyBlbmFibGVkKSwgYW5kIGludHJvZHVjZXMgYGlzX2V2ZW50ZmRfZmlsZWAuIGBldmVudHBvbGwuY2AgZ2V0cyBzb21lIG5ldyBmdW5jdGlvbnMgdG9vLCBsaWtlIGBlcF9zZXRfbm90aWZpZWRgLCBgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbGAsIGFuZCBgZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcGAsIHdoaWNoIGFyZSBhbGwgcGFydCBvZiBlcG9sbCYjMzk7cyBzY2FubmluZyBhbmQgY2FsbGJhY2sgcm91dGluZXMuIFRoZXJlJiMzOTtzIGFsc28gYSBkZWNsYXJhdGlvbiBmb3IgYGlzX2V2ZW50ZmRfZmlsZWAgaW4gdGhlIGBldmVudGZkLmhgIGhlYWRlciBhbmQgdGhlIEtjb25maWcgaGFzIGJlZW4gdXBkYXRlZC4KClJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBJZGVhbGx5LCB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gIEkgc3RhcnRlZCBieSBsaXN0aW5nIGV2ZXJ5dGhpbmcgdGhhdCB3YXMgdG91Y2hlZC4gU28sIGZyb20gdGhlIGZpbGVzLCB3ZSBoYXZlOgoKKiAgIGBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGxgIChzdGF0aWMgaW5saW5lKQoqICAgYGV2ZW50ZmRfc2lnbmFsX21hc2tgCiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgCiogICBgZXZlbnRmZF9yZWFkYAoqICAgYGV2ZW50ZmRfd3JpdGVgCiogICBgZXBfcG9sbF9jYWxsYmFja2AKKiAgIGBlcF9kb25lX3NjYW5gCiogICBgX19lcF9ldmVudHBvbGxfcG9sbGAKKiAgIGBlcF9hbGxvY19lcGl0ZW1gCiogICBgZXBfaW5zZXJ0YAoqICAgYGVwX21vZGlmeWAKKiAgIGBlcF9kZWxpdmVyX2V2ZW50YAoqICAgYGlzX2V2ZW50ZmRfZmlsZWAKCk9rYXksIGEgY291cGxlIG9mIHRob3NlIGFyZSBzdGF0aWMgaW5saW5lIHNvIHRoZXkgd29uJiMzOTt0IGhhdmUgdW5pcXVlIHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCBgZXZlbnRmZF9zaWduYWxfbWFza2AsIGBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZWAsIGFuZCBgaXNfZXZlbnRmZF9maWxlYCBhcmUgYWxsIGdvb2QgY2FuZGlkYXRlcyBzaW5jZSB0aGV5IGFyZSBub24tc3RhdGljLiBUaGUgZmlsZSBvcGVyYXRpb25zIGBldmVudGZkX3JlYWRgIGFuZCBgZXZlbnRmZF93cml0ZWAgYXJlIHN0YXRpYywgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIGFjdHVhbCBzeXNjYWxsIGltcGxlbWVudGF0aW9ucywgc28gd2UgbmVlZCB0byBpbmNsdWRlIHRoZW0uIFRoZSByZW1haW5pbmcgZXBvbGwtcmVsYXRlZCBmdW5jdGlvbnMsIGBlcF9wb2xsX2NhbGxiYWNrYCwgYGVwX2luc2VydGAsIGBlcF9tb2RpZnlgLCBhbmQgYGVwX2RlbGl2ZXJfZXZlbnRgIGFyZSBzdGF0aWMsIGJ1dCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgYW5kIGFyZSBsaWtlbHkgdG8gYmUgY3JpdGljYWwgaW4gdHJpZ2dlcmluZyB0aGUgb3B0aW1pemF0aW9uJiMzOTtzIGxvZ2ljLiBTbyB0aGF0IHdpbGwgYmUgb3VyIGxpc3Q6CgoqICAgYGV2ZW50ZmRfc2lnbmFsX21hc2tgCiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgCiogICBgZXZlbnRmZF9yZWFkYAoqICAgYGV2ZW50ZmRfd3JpdGVgCiogICBgaXNfZXZlbnRmZF9maWxlYAoqICAgYGVwX2RvbmVfc2NhbmAKKiAgIGBfX2VwX2V2ZW50cG9sbF9wb2xsYAoqICAgYGVwX3BvbGxfY2FsbGJhY2tgCiogICBgZXBfYWxsb2NfZXBpdGVtYAoqICAgYGVwX2luc2VydGAKKiAgIGBlcF9tb2RpZnlgCiogICBgZXBfZGVsaXZlcl9ldmVudGAKCk5vdyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYEVWRU5URkRfT1BUYCwgd2hpY2ggZGVwZW5kcyBvbiBgRVZFTlRGRGAgYW5kIGBFUE9MTGAuICBTbywgd2UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFsbCBvZiB0aG9zZSwgd2l0aCBgRVZFTlRGRF9PUFRgIGJlaW5nIHRoZSBjcml0aWNhbCBvbmUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuCgpMb29rcyBsaWtlIHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBsZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVZFTlRGRF9PUFQmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7LAogICAgJiMzNDtFUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V2ZW50ZmRfc2lnbmFsX21hc2smIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9yZWFkJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfd3JpdGUmIzM0OywKICAgICYjMzQ7aXNfZXZlbnRmZF9maWxlJiMzNDssCiAgICAmIzM0O2VwX2RvbmVfc2NhbiYjMzQ7LAogICAgJiMzNDtfX2VwX2V2ZW50cG9sbF9wb2xsJiMzNDssCiAgICAmIzM0O2VwX3BvbGxfY2FsbGJhY2smIzM0OywKICAgICYjMzQ7ZXBfYWxsb2NfZXBpdGVtJiMzNDssCiAgICAmIzM0O2VwX2luc2VydCYjMzQ7LAogICAgJiMzNDtlcF9tb2RpZnkmIzM0OywKICAgICYjMzQ7ZXBfZGVsaXZlcl9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVZFTlRGRF9PUFQmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7LAogICAgJiMzNDtFUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V2ZW50ZmRfc2lnbmFsX21hc2smIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9yZWFkJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfd3JpdGUmIzM0OywKICAgICYjMzQ7aXNfZXZlbnRmZF9maWxlJiMzNDssCiAgICAmIzM0O2VwX2RvbmVfc2NhbiYjMzQ7LAogICAgJiMzNDtfX2VwX2V2ZW50cG9sbF9wb2xsJiMzNDssCiAgICAmIzM0O2VwX3BvbGxfY2FsbGJhY2smIzM0OywKICAgICYjMzQ7ZXBfYWxsb2NfZXBpdGVtJiMzNDssCiAgICAmIzM0O2VwX2luc2VydCYjMzQ7LAogICAgJiMzNDtlcF9tb2RpZnkmIzM0OywKICAgICYjMzQ7ZXBfZGVsaXZlcl9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIwLjY2MzI3NzkyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODEyOTgzMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVWRU5URkRfT1BUXCIsXG4gICAgXCJFVkVOVEZEXCIsXG4gICAgXCJFUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV2ZW50ZmRfc2lnbmFsX21hc2tcIixcbiAgICBcImV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlXCIsXG4gICAgXCJldmVudGZkX3JlYWRcIixcbiAgICBcImV2ZW50ZmRfd3JpdGVcIixcbiAgICBcImlzX2V2ZW50ZmRfZmlsZVwiLFxuICAgIFwiZXBfZG9uZV9zY2FuXCIsXG4gICAgXCJfX2VwX2V2ZW50cG9sbF9wb2xsXCIsXG4gICAgXCJlcF9wb2xsX2NhbGxiYWNrXCIsXG4gICAgXCJlcF9hbGxvY19lcGl0ZW1cIixcbiAgICBcImVwX2luc2VydFwiLFxuICAgIFwiZXBfbW9kaWZ5XCIsXG4gICAgXCJlcF9kZWxpdmVyX2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIwLjY2MzI4NDM2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTMzNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY2NjI1YTk5YzVhZjgwMWNlNTdhNjVmNDg2YTdmNDMyMTI3M2UxNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAzOjA3OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50ZmQuYyBiL2ZzL2V2ZW50ZmQuY1xcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjNkMzRjZDY1MmFjNzIgMTAwNjQ0XFxuLS0tIGEvZnMvZXZlbnRmZC5jXFxuKysrIGIvZnMvZXZlbnRmZC5jXFxuQEAgLTQzLDYgKzQzLDI5IEBAIHN0cnVjdCBldmVudGZkX2N0eCB7XFxuIFxcdGludCBpZDtcXG4gfTtcXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBfX3BvbGxfdCBtYXNrKVxcbit7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2spO1xcbitcXG4rXFx0LyogUHJvdGVjdGVkIGJ5IGN0eC1cXHUwMDNld3FoLmxvY2suICovXFxuK1xcdGlmICghd2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXFxuK1xcdC8qXFxuK1xcdCAqIEV2ZW50ZmQgY29udGV4dCBvZiB0aGUgdHdvLXZhcmlhYmxlIHByb3RvY29sOlxcbitcXHQgKlxcbitcXHQgKiBXKEIpIHVwZGF0ZXMgY3R4LVxcdTAwM2Vjb3VudCBpbiB0aGUgY2FsbGVyLCB0aGVuIHRoZSBjYWxsYmFjayBwZXJmb3Jtc1xcbitcXHQgKiBSKEEpIG9uIGVwaXRlbS1cXHUwMDNlbm90aWZpZWQuXFxuK1xcdCAqXFxuK1xcdCAqIFcoQikgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgUihBKVxcbitcXHQgKi9cXG4rXFx0c21wX21iKCk7XFxuKyNlbmRpZlxcbitcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgbWFzayk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyXFxuICAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxcbkBAIC03Miw4ICs5NSw3IEBAIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaylcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWNvdW50IFxcdTAwM2MgVUxMT05HX01BWClcXG4gXFx0XFx0Y3R4LVxcdTAwM2Vjb3VudCsrO1xcbi1cXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbi1cXHRcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExJTiB8IG1hc2spO1xcbitcXHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTElOIHwgbWFzayk7XFxuIFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuIH1cXG5AQCAtMjAzLDggKzIyNSw4IEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuIFxcdGV2ZW50ZmRfY3R4X2RvX3JlYWQoY3R4LCBjbnQpO1xcbiBcXHRfX3JlbW92ZV93YWl0X3F1ZXVlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgd2FpdCk7XFxuLVxcdGlmICgqY250ICE9IDAgXFx1MDAyNlxcdTAwMjYgd2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbi1cXHRcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExPVVQpO1xcbitcXHRpZiAoKmNudCAhPSAwKVxcbitcXHRcXHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiAqY250ICE9IDAgPyAwIDogLUVBR0FJTjtcXG5AQCAtMjM0LDggKzI1Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuIFxcdH1cXG4gXFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIFxcdTAwMjZ1Y250KTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuLVxcdGlmICh3YWl0cXVldWVfYWN0aXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCkpXFxuLVxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTE9VVCk7XFxuK1xcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDA7XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jayk7XFxuIFxcdGlmICh1bmxpa2VseShjb3B5X3RvX2l0ZXIoXFx1MDAyNnVjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpXFxuQEAgLTI3MCw4ICsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xcbiBcXHRpZiAobGlrZWx5KHJlcyBcXHUwMDNlIDApKSB7XFxuIFxcdFxcdGN0eC1cXHUwMDNlY291bnQgKz0gdWNudDtcXG4gXFx0XFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuLVxcdFxcdGlmICh3YWl0cXVldWVfYWN0aXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCkpXFxuLVxcdFxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOKTtcXG4rXFx0XFx0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTik7XFxuIFxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbiBcXHR9XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jayk7XFxuQEAgLTMxMCw2ICszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xcbiBcXHQubGxzZWVrXFx0XFx0PSBub29wX2xsc2VlayxcXG4gfTtcXG4gXFxuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcXG4rYm9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuK3tcXG4rXFx0cmV0dXJuIGZpbGUtXFx1MDAzZWZfb3AgPT0gXFx1MDAyNmV2ZW50ZmRfZm9wcztcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xcbitcXG4rI2VuZGlmXFxuK1xcbiAvKipcXG4gICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxcbmRpZmYgLS1naXQgYS9mcy9ldmVudHBvbGwuYyBiL2ZzL2V2ZW50cG9sbC5jXFxuaW5kZXggZWVkOGNlY2Q5NGUzYS4uMDllOTIzOWNlMmQ1ZSAxMDA2NDRcXG4tLS0gYS9mcy9ldmVudHBvbGwuY1xcbisrKyBiL2ZzL2V2ZW50cG9sbC5jXFxuQEAgLTM5LDYgKzM5LDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdWxpc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NhcGFiaWxpdHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlcWxvY2suaFxcdTAwM2VcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZXZlbnRmZC5oXFx1MDAzZVxcbisjZW5kaWZcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9idXN5X3BvbGwuaFxcdTAwM2VcXG4gXFxuIC8qXFxuQEAgLTI4NSw2ICsyODgsMTQgQEAgc3RydWN0IGVwaXRlbSB7XFxuIFxcbiBcXHQvKiBUaGUgc3RydWN0dXJlIHRoYXQgZGVzY3JpYmUgdGhlIGludGVyZXN0ZWQgZXZlbnRzIGFuZCB0aGUgc291cmNlIGZkICovXFxuIFxcdHN0cnVjdCBlcG9sbF9ldmVudCBldmVudDtcXG4rXFxuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcXG4rXFx0LyogU2V0IGFmdGVyIHF1ZXVlaW5nLCBjbGVhcmVkIGJlZm9yZSBkZXF1ZXVlaW5nIGZyb20gdGhlIHJlYWR5IHBhdGguICovXFxuK1xcdGJvb2wgbm90aWZpZWQ7XFxuK1xcbitcXHQvKiBUcnVlIGlmIHRoZSBtb25pdG9yZWQgZmlsZSBpcyBhbiBldmVudGZkLiAqL1xcbitcXHRib29sIGlzX2V2ZW50ZmQ7XFxuKyNlbmRpZlxcbiB9O1xcbiBcXG4gLypcXG5AQCAtNjIwLDYgKzYzMSw2NSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZXBfZXZlbnRzX2F2YWlsYWJsZShzdHJ1Y3QgZXZlbnRwb2xsICplcClcXG4gXFx0XFx0cmVhZF9zZXFjb3VudF9yZXRyeShcXHUwMDI2ZXAtXFx1MDAzZXNlcSwgc2VxKTtcXG4gfVxcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbisvKlxcbisgKiBFdmVudGZkL2Vwb2xsIHR3by12YXJpYWJsZSBjb21tdW5pY2F0aW9uOlxcbisgKlxcbisgKiAgIEEgPSBlcGktXFx1MDAzZW5vdGlmaWVkXFxuKyAqICAgQiA9IGV2ZW50ZmQgY291bnQvcmVhZGluZXNzXFxuKyAqXFxuKyAqICAgc2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgZGVxdWV1ZSAtXFx1MDAzZSBSKEIpXFxuKyAqICAgZXZlbnRmZCBjb250ZXh0OiBXKEIpICAgICAgICAgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgUihBKVxcbisgKlxcbisgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxcbit7XFxuK1xcdGlmIChlcGktXFx1MDAzZWlzX2V2ZW50ZmQpXFxuK1xcdFxcdFdSSVRFX09OQ0UoZXBpLVxcdTAwM2Vub3RpZmllZCwgdHJ1ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKHN0cnVjdCBlcGl0ZW0gKmVwaSlcXG4re1xcbitcXHRpZiAoIWVwaS1cXHUwMDNlaXNfZXZlbnRmZClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LypcXG4rXFx0ICogU3RvcCBjYWxsYmFja3MgZnJvbSBza2lwcGluZyBiZWZvcmUgdGhlIHNjYW5uZXIgZHJvcHMgaXRzIHJlYWR5LWxpc3RcXG4rXFx0ICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZVxcbitcXHQgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC5cXG4rXFx0ICovXFxuK1xcdFdSSVRFX09OQ0UoZXBpLVxcdTAwM2Vub3RpZmllZCwgZmFsc2UpO1xcbitcXHQvKiBTY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtXFx1MDAzZSBzbXBfbWIoKSAtXFx1MDAzZSBSKEIpLiAqL1xcbitcXHRzbXBfbWIoKTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRfX3BvbGxfdCBwb2xsZmxhZ3MpXFxuK3tcXG4rXFx0aWYgKCFlcGktXFx1MDAzZWlzX2V2ZW50ZmQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChSRUFEX09OQ0UoZXBpLVxcdTAwM2VldmVudC5ldmVudHMpIFxcdTAwMjZcXG4rXFx0ICAgIChFUE9MTEVYQ0xVU0lWRSB8IEVQT0xMRVQgfCBFUE9MTE9ORVNIT1QpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRpZiAocG9sbGZsYWdzIFxcdTAwMjYgUE9MTEZSRUUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdC8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtXFx1MDAzZSBzbXBfbWIoKSAtXFx1MDAzZSBSKEEpLiAqL1xcbitcXHRyZXR1cm4gUkVBRF9PTkNFKGVwaS1cXHUwMDNlbm90aWZpZWQpO1xcbit9XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cXG4rc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRfX3BvbGxfdCBwb2xsZmxhZ3MpXFxuK3tcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxuIC8qKlxcbiAgKiBidXN5X2xvb3BfZXBfdGltZW91dCAtIGNoZWNrIGlmIGJ1c3kgcG9sbCBoYXMgdGltZWQgb3V0LiBUaGUgdGltZW91dCB2YWx1ZVxcbkBAIC0xMDA3LDYgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBlcF9kb25lX3NjYW4oc3RydWN0IGV2ZW50cG9sbCAqZXAsXFxuIFxcdFxcdFxcdCAqIHJldmVyc2VzIHRoZSBpdGVyYXRpb24gb3JkZXIgaW50byBGSUZPLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNmVwaS1cXHUwMDNlcmRsbGluaywgXFx1MDAyNmVwLVxcdTAwM2VyZGxsaXN0KTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTEzMDMsOCArMTM3NCwxMSBAQCBzdGF0aWMgX19wb2xsX3QgX19lcF9ldmVudHBvbGxfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCwgaW50IGRlcFxcbiBcXHRtdXRleF9sb2NrX25lc3RlZChcXHUwMDI2ZXAtXFx1MDAzZW10eCwgZGVwdGgpO1xcbiBcXHRlcF9zdGFydF9zY2FuKGVwLCBcXHUwMDI2c2Nhbl9iYXRjaCk7XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgXFx1MDAyNnNjYW5fYmF0Y2gsIHJkbGxpbmspIHtcXG4rXFx0XFx0LyogQ2xlYXIgbm90aWZpZWQgYmVmb3JlIGEgcG9zc2libGUgcmVtb3ZhbCBmcm9tIHR4bGlzdC4gKi9cXG4rXFx0XFx0ZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpO1xcbiBcXHRcXHRpZiAoZXBfaXRlbV9wb2xsKGVwaSwgXFx1MDAyNnB0LCBkZXB0aCArIDEpKSB7XFxuIFxcdFxcdFxcdHJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHQvKlxcbkBAIC0xNDk3LDYgKzE1NzEsOSBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdlxcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgZXdha2UgPSAwO1xcbiBcXG4rXFx0aWYgKGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoZXBpLCBwb2xsZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlcC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0ZXBfc2V0X2J1c3lfcG9sbF9uYXBpX2lkKGVwaSk7XFxuQEAgLTE1MjksMTEgKzE2MDYsMTMgQEAgc3RhdGljIGludCBlcF9wb2xsX2NhbGxiYWNrKHdhaXRfcXVldWVfZW50cnlfdCAqd2FpdCwgdW5zaWduZWQgbW9kZSwgaW50IHN5bmMsIHZcXG4gXFx0XFx0aWYgKCFlcGlfb25fb3ZmbGlzdChlcGkpKSB7XFxuIFxcdFxcdFxcdGVwaS1cXHUwMDNlb3ZmbGlzdF9uZXh0ID0gUkVBRF9PTkNFKGVwLVxcdTAwM2VvdmZsaXN0KTtcXG4gXFx0XFx0XFx0V1JJVEVfT05DRShlcC1cXHUwMDNlb3ZmbGlzdCwgZXBpKTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmICghZXBfaXNfbGlua2VkKGVwaSkpIHtcXG4gXFx0XFx0LyogSW4gdGhlIHVzdWFsIGNhc2UsIGFkZCBldmVudCB0byByZWFkeSBsaXN0LiAqL1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmssIFxcdTAwMjZlcC1cXHUwMDNlcmRsbGlzdCk7XFxuK1xcdFxcdGVwX3NldF9ub3RpZmllZChlcGkpO1xcbiBcXHRcXHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xcbiBcXHR9XFxuIFxcbkBAIC0xODQwLDYgKzE5MTksOSBAQCBzdGF0aWMgc3RydWN0IGVwaXRlbSAqZXBfYWxsb2NfZXBpdGVtKHN0cnVjdCBldmVudHBvbGwgKmVwLFxcbiBcXHRlcGktXFx1MDAzZWZmZCA9ICp0ZjtcXG4gXFx0ZXBpLVxcdTAwM2VldmVudCA9ICpldmVudDtcXG4gXFx0ZXBpX2NsZWFyX292Zmxpc3QoZXBpKTtcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitcXHRlcGktXFx1MDAzZWlzX2V2ZW50ZmQgPSBpc19ldmVudGZkX2ZpbGUodGZpbGUpO1xcbisjZW5kaWZcXG4gXFxuIFxcdHJldHVybiBlcGk7XFxuIH1cXG5AQCAtMTk1Niw2ICsyMDM4LDcgQEAgc3RhdGljIGludCBlcF9pbnNlcnQoc3RydWN0IGVwX2N0bF9jdHggKmN0eCwgc3RydWN0IGV2ZW50cG9sbCAqZXAsXFxuIFxcbiBcXHRpZiAocmV2ZW50cyBcXHUwMDI2XFx1MDAyNiAhZXBfaXNfbGlua2VkKGVwaSkpIHtcXG4gXFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZXBpLVxcdTAwM2VyZGxsaW5rLCBcXHUwMDI2ZXAtXFx1MDAzZXJkbGxpc3QpO1xcbitcXHRcXHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcXG4gXFx0XFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xcbiBcXG4gXFx0XFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXFx1MDAyNmVwLVxcdTAwM2V3cSkpXFxuQEAgLTIwMzEsNiArMjExNCw3IEBAIHN0YXRpYyBpbnQgZXBfbW9kaWZ5KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmVwLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0aWYgKCFlcF9pc19saW5rZWQoZXBpKSkge1xcbiBcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmssIFxcdTAwMjZlcC1cXHUwMDNlcmRsbGlzdCk7XFxuK1xcdFxcdFxcdGVwX3NldF9ub3RpZmllZChlcGkpO1xcbiBcXHRcXHRcXHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XFxuIFxcbiBcXHRcXHRcXHQvKiBOb3RpZnkgd2FpdGluZyB0YXNrcyB0aGF0IGV2ZW50cyBhcmUgYXZhaWxhYmxlICovXFxuQEAgLTIwODQsNiArMjE2OCwxMiBAQCBzdGF0aWMgaW50IGVwX2RlbGl2ZXJfZXZlbnQoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcXG4gXFx0XFx0X19wbV9yZWxheCh3cyk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIENsZWFyIG5vdGlmaWVkIHdoaWxlIGVwaSBpcyBzdGlsbCBvbiB0eGxpc3QuIEEgY2FsbGJhY2sgdGhhdFxcbitcXHQgKiByYWNlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVxdWV1ZSBtdXN0IHRha2UgdGhlIHNsb3cgcGF0aCBhbmRcXG4rXFx0ICogcHVibGlzaCB0aGUgZXZlbnQgdGhyb3VnaCBvdmZsaXN0LlxcbitcXHQgKi9cXG4rXFx0ZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpO1xcbiBcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmspO1xcbiBcXG4gXFx0LypcXG5AQCAtMjEwNCw2ICsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdCAqIGF0dGVtcHQuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZXBpLVxcdTAwM2VyZGxsaW5rLCBzY2FuX2JhdGNoKTtcXG4rXFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdH1cXG5AQCAtMjEyMCw2ICsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdCAqIGR1cmluZyBzY2Fucy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVwaS1cXHUwMDNlcmRsbGluaywgXFx1MDAyNmVwLVxcdTAwM2VyZGxsaXN0KTtcXG4rXFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbkBAIC00MCw2ICs0MCwxMCBAQCBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd1xcbiBcXHRcXHRcXHRcXHQgIF9fdTY0ICpjbnQpO1xcbiB2b2lkIGV2ZW50ZmRfY3R4X2RvX3JlYWQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fdTY0ICpjbnQpO1xcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuKyNlbmRpZlxcbitcXG4gc3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gIWN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQ7XFxuQEAgLTgyLDYgKzg2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxcbiBcXG4gfVxcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxcbit7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuICNlbmRpZlxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWdcXG5pbmRleCAxMGYyMDEzYjUzMjE2Li5jNzM0ZGZlMzQ5MGM3IDEwMDY0NFxcbi0tLSBhL2luaXQvS2NvbmZpZ1xcbisrKyBiL2luaXQvS2NvbmZpZ1xcbkBAIC0xODk2LDYgKzE4OTYsMTggQEAgY29uZmlnIEVWRU5URkRcXG4gXFxuIFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gXFxuK2NvbmZpZyBFVkVOVEZEX09QVFxcbitcXHRib29sIFxcXCJPcHRpbWl6ZSBldmVudGZkL2Vwb2xsIGludGVyYWN0aW9uXFxcIiBpZiBFWFBFUlRcXG4rXFx0ZGVwZW5kcyBvbiBFVkVOVEZEIFxcdTAwMjZcXHUwMDI2IEVQT0xMXFxuK1xcdGRlZmF1bHQgblxcbitcXHRoZWxwXFxuK1xcdCAgRW5hYmxlcyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrIGZvciBldmVudGZkXFxuK1xcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVxcdTAwM2Vsb2NrIGNvbnRlbnRpb24gdW5kZXIgY29uY3VycmVudCB3b3JrbG9hZHMuXFxuK1xcdCAgRnVsbCBtZW1vcnkgYmFycmllcnMgcHJldmVudCBsb3N0IHdha2V1cHMgd2hlbiBldmVudGZkIHVwZGF0ZXNcXG4rXFx0ICByYWNlIHdpdGggZXBvbGwgcmUtcG9sbGluZy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGNvbmZpZyBTSE1FTVxcbiBcXHRib29sIFxcXCJVc2UgZnVsbCBzaG1lbSBmaWxlc3lzdGVtXFxcIiBpZiBFWFBFUlRcXG4gXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIxLjA3NTA2NTc4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4NDAxMTg3NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVWRU5URkRfT1BUXCIsXG4gICAgXCJFVkVOVEZEXCIsXG4gICAgXCJFUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV2ZW50ZmRfc2lnbmFsX21hc2tcIixcbiAgICBcImV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlXCIsXG4gICAgXCJldmVudGZkX3JlYWRcIixcbiAgICBcImV2ZW50ZmRfd3JpdGVcIixcbiAgICBcImlzX2V2ZW50ZmRfZmlsZVwiLFxuICAgIFwiZXBfZG9uZV9zY2FuXCIsXG4gICAgXCJfX2VwX2V2ZW50cG9sbF9wb2xsXCIsXG4gICAgXCJlcF9wb2xsX2NhbGxiYWNrXCIsXG4gICAgXCJlcF9hbGxvY19lcGl0ZW1cIixcbiAgICBcImVwX2luc2VydFwiLFxuICAgIFwiZXBfbW9kaWZ5XCIsXG4gICAgXCJlcF9kZWxpdmVyX2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NjYyNWE5OWM1YWY4MDFjZTU3YTY1ZjQ4NmE3ZjQzMjEyNzNlMTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAzOjA3OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4zZDM0Y2Q2NTJhYzcyIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC00Myw2ICs0MywyOSBAQCBzdHJ1Y3QgZXZlbnRmZF9jdHgge1xuIFx0aW50IGlkO1xuIH07XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICAgICAgIF9fcG9sbF90IG1hc2spXG4re1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuK1xuK1x0LyogUHJvdGVjdGVkIGJ5IGN0eC1cdTAwM2V3cWgubG9jay4gKi9cbitcdGlmICghd2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbitcdFx0cmV0dXJuO1xuK1xuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbitcdC8qXG4rXHQgKiBFdmVudGZkIGNvbnRleHQgb2YgdGhlIHR3by12YXJpYWJsZSBwcm90b2NvbDpcbitcdCAqXG4rXHQgKiBXKEIpIHVwZGF0ZXMgY3R4LVx1MDAzZWNvdW50IGluIHRoZSBjYWxsZXIsIHRoZW4gdGhlIGNhbGxiYWNrIHBlcmZvcm1zXG4rXHQgKiBSKEEpIG9uIGVwaXRlbS1cdTAwM2Vub3RpZmllZC5cbitcdCAqXG4rXHQgKiBXKEIpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBSKEEpXG4rXHQgKi9cbitcdHNtcF9tYigpO1xuKyNlbmRpZlxuK1x0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBtYXNrKTtcbit9XG4rXG4gLyoqXG4gICogZXZlbnRmZF9zaWduYWxfbWFzayAtIEluY3JlbWVudCB0aGUgZXZlbnQgY291bnRlclxuICAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxuQEAgLTcyLDggKzk1LDcgQEAgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbiBcdGlmIChjdHgtXHUwMDNlY291bnQgXHUwMDNjIFVMTE9OR19NQVgpXG4gXHRcdGN0eC1cdTAwM2Vjb3VudCsrO1xuLVx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExJTiB8IG1hc2spO1xuK1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTIwMyw4ICsyMjUsOCBAQCBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgY250KTtcbiBcdF9fcmVtb3ZlX3dhaXRfcXVldWUoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgd2FpdCk7XG4tXHRpZiAoKmNudCAhPSAwIFx1MDAyNlx1MDAyNiB3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuLVx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMT1VUKTtcbitcdGlmICgqY250ICE9IDApXG4rXHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gKmNudCAhPSAwID8gMCA6IC1FQUdBSU47XG5AQCAtMjM0LDggKzI1Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4gXHR9XG4gXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXHUwMDI2dWNudCk7XG4gXHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAxO1xuLVx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExPVVQpO1xuK1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExPVVQpO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuIFx0aWYgKHVubGlrZWx5KGNvcHlfdG9faXRlcihcdTAwMjZ1Y250LCBzaXplb2YodWNudCksIHRvKSAhPSBzaXplb2YodWNudCkpKVxuQEAgLTI3MCw4ICsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xuIFx0aWYgKGxpa2VseShyZXMgXHUwMDNlIDApKSB7XG4gXHRcdGN0eC1cdTAwM2Vjb3VudCArPSB1Y250O1xuIFx0XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAxO1xuLVx0XHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMSU4pO1xuK1x0XHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTElOKTtcbiBcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuQEAgLTMxMCw2ICszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xuIFx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuIH07XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuK2Jvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxuK3tcbitcdHJldHVybiBmaWxlLVx1MDAzZWZfb3AgPT0gXHUwMDI2ZXZlbnRmZF9mb3BzO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xuK1xuKyNlbmRpZlxuK1xuIC8qKlxuICAqIGV2ZW50ZmRfZmdldCAtIEFjcXVpcmUgYSByZWZlcmVuY2Ugb2YgYW4gZXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50cG9sbC5jIGIvZnMvZXZlbnRwb2xsLmNcbmluZGV4IGVlZDhjZWNkOTRlM2EuLjA5ZTkyMzljZTJkNWUgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudHBvbGwuY1xuKysrIGIvZnMvZXZlbnRwb2xsLmNcbkBAIC0zOSw2ICszOSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1bGlzdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FwYWJpbGl0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuKyNlbmRpZlxuICNpbmNsdWRlIFx1MDAzY25ldC9idXN5X3BvbGwuaFx1MDAzZVxuIFxuIC8qXG5AQCAtMjg1LDYgKzI4OCwxNCBAQCBzdHJ1Y3QgZXBpdGVtIHtcbiBcbiBcdC8qIFRoZSBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZSB0aGUgaW50ZXJlc3RlZCBldmVudHMgYW5kIHRoZSBzb3VyY2UgZmQgKi9cbiBcdHN0cnVjdCBlcG9sbF9ldmVudCBldmVudDtcbitcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rXHQvKiBTZXQgYWZ0ZXIgcXVldWVpbmcsIGNsZWFyZWQgYmVmb3JlIGRlcXVldWVpbmcgZnJvbSB0aGUgcmVhZHkgcGF0aC4gKi9cbitcdGJvb2wgbm90aWZpZWQ7XG4rXG4rXHQvKiBUcnVlIGlmIHRoZSBtb25pdG9yZWQgZmlsZSBpcyBhbiBldmVudGZkLiAqL1xuK1x0Ym9vbCBpc19ldmVudGZkO1xuKyNlbmRpZlxuIH07XG4gXG4gLypcbkBAIC02MjAsNiArNjMxLDY1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudHNfYXZhaWxhYmxlKHN0cnVjdCBldmVudHBvbGwgKmVwKVxuIFx0XHRyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNmVwLVx1MDAzZXNlcSwgc2VxKTtcbiB9XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuKy8qXG4rICogRXZlbnRmZC9lcG9sbCB0d28tdmFyaWFibGUgY29tbXVuaWNhdGlvbjpcbisgKlxuKyAqICAgQSA9IGVwaS1cdTAwM2Vub3RpZmllZFxuKyAqICAgQiA9IGV2ZW50ZmQgY291bnQvcmVhZGluZXNzXG4rICpcbisgKiAgIHNjYW5uZXIgY29udGV4dDogVyhBID0gZmFsc2UpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBkZXF1ZXVlIC1cdTAwM2UgUihCKVxuKyAqICAgZXZlbnRmZCBjb250ZXh0OiBXKEIpICAgICAgICAgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSlcbisgKlxuKyAqIFRoZXJlZm9yZSBSKEIpID09IG9sZCBhbmQgUihBKSA9PSB0cnVlIGNhbm5vdCBib3RoIG9jY3VyLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxuK3tcbitcdGlmIChlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIHRydWUpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpXG4re1xuK1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0LypcbitcdCAqIFN0b3AgY2FsbGJhY2tzIGZyb20gc2tpcHBpbmcgYmVmb3JlIHRoZSBzY2FubmVyIGRyb3BzIGl0cyByZWFkeS1saXN0XG4rXHQgKiBvd25lcnNoaXAuIEtlZXAgdGhlIGZ1bGwgYmFycmllciBiZXR3ZWVuIFcoQSA9IGZhbHNlKSBhbmQgUihCKTsgdGhlXG4rXHQgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC5cbitcdCAqL1xuK1x0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIGZhbHNlKTtcbitcdC8qIFNjYW5uZXIgY29udGV4dDogVyhBID0gZmFsc2UpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBSKEIpLiAqL1xuK1x0c21wX21iKCk7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSxcbitcdFx0XHRcdFx0XHRfX3BvbGxfdCBwb2xsZmxhZ3MpXG4re1xuK1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKFJFQURfT05DRShlcGktXHUwMDNlZXZlbnQuZXZlbnRzKSBcdTAwMjZcbitcdCAgICAoRVBPTExFWENMVVNJVkUgfCBFUE9MTEVUIHwgRVBPTExPTkVTSE9UKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKHBvbGxmbGFncyBcdTAwMjYgUE9MTEZSRUUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdC8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgUihBKS4gKi9cbitcdHJldHVybiBSRUFEX09OQ0UoZXBpLVx1MDAzZW5vdGlmaWVkKTtcbit9XG4rI2Vsc2VcbitzdGF0aWMgaW5saW5lIHZvaWQgZXBfc2V0X25vdGlmaWVkKHN0cnVjdCBlcGl0ZW0gKmVwaSkgeyB9XG4rc3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbitzdGF0aWMgaW5saW5lIGJvb2wgZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChzdHJ1Y3QgZXBpdGVtICplcGksXG4rXHRcdFx0XHRcdFx0X19wb2xsX3QgcG9sbGZsYWdzKVxuK3tcbitcdHJldHVybiBmYWxzZTtcbit9XG4rI2VuZGlmXG4rXG4gI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG4gLyoqXG4gICogYnVzeV9sb29wX2VwX3RpbWVvdXQgLSBjaGVjayBpZiBidXN5IHBvbGwgaGFzIHRpbWVkIG91dC4gVGhlIHRpbWVvdXQgdmFsdWVcbkBAIC0xMDA3LDYgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBlcF9kb25lX3NjYW4oc3RydWN0IGV2ZW50cG9sbCAqZXAsXG4gXHRcdFx0ICogcmV2ZXJzZXMgdGhlIGl0ZXJhdGlvbiBvcmRlciBpbnRvIEZJRk8uXG4gXHRcdFx0ICovXG4gXHRcdFx0bGlzdF9hZGQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuK1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0fVxuIFx0fVxuQEAgLTEzMDMsOCArMTM3NCwxMSBAQCBzdGF0aWMgX19wb2xsX3QgX19lcF9ldmVudHBvbGxfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCwgaW50IGRlcFxuIFx0bXV0ZXhfbG9ja19uZXN0ZWQoXHUwMDI2ZXAtXHUwMDNlbXR4LCBkZXB0aCk7XG4gXHRlcF9zdGFydF9zY2FuKGVwLCBcdTAwMjZzY2FuX2JhdGNoKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgXHUwMDI2c2Nhbl9iYXRjaCwgcmRsbGluaykge1xuK1x0XHQvKiBDbGVhciBub3RpZmllZCBiZWZvcmUgYSBwb3NzaWJsZSByZW1vdmFsIGZyb20gdHhsaXN0LiAqL1xuK1x0XHRlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKGVwaSk7XG4gXHRcdGlmIChlcF9pdGVtX3BvbGwoZXBpLCBcdTAwMjZwdCwgZGVwdGggKyAxKSkge1xuIFx0XHRcdHJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTtcbitcdFx0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKlxuQEAgLTE0OTcsNiArMTU3MSw5IEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGV3YWtlID0gMDtcbiBcbitcdGlmIChlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKGVwaSwgcG9sbGZsYWdzKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlcC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRlcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTtcbkBAIC0xNTI5LDExICsxNjA2LDEzIEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHRcdGlmICghZXBpX29uX292Zmxpc3QoZXBpKSkge1xuIFx0XHRcdGVwaS1cdTAwM2VvdmZsaXN0X25leHQgPSBSRUFEX09OQ0UoZXAtXHUwMDNlb3ZmbGlzdCk7XG4gXHRcdFx0V1JJVEVfT05DRShlcC1cdTAwM2VvdmZsaXN0LCBlcGkpO1xuK1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoIWVwX2lzX2xpbmtlZChlcGkpKSB7XG4gXHRcdC8qIEluIHRoZSB1c3VhbCBjYXNlLCBhZGQgZXZlbnQgdG8gcmVhZHkgbGlzdC4gKi9cbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xuIFx0fVxuIFxuQEAgLTE4NDAsNiArMTkxOSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZXBpdGVtICplcF9hbGxvY19lcGl0ZW0oc3RydWN0IGV2ZW50cG9sbCAqZXAsXG4gXHRlcGktXHUwMDNlZmZkID0gKnRmO1xuIFx0ZXBpLVx1MDAzZWV2ZW50ID0gKmV2ZW50O1xuIFx0ZXBpX2NsZWFyX292Zmxpc3QoZXBpKTtcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rXHRlcGktXHUwMDNlaXNfZXZlbnRmZCA9IGlzX2V2ZW50ZmRfZmlsZSh0ZmlsZSk7XG4rI2VuZGlmXG4gXG4gXHRyZXR1cm4gZXBpO1xuIH1cbkBAIC0xOTU2LDYgKzIwMzgsNyBAQCBzdGF0aWMgaW50IGVwX2luc2VydChzdHJ1Y3QgZXBfY3RsX2N0eCAqY3R4LCBzdHJ1Y3QgZXZlbnRwb2xsICplcCxcbiBcbiBcdGlmIChyZXZlbnRzIFx1MDAyNlx1MDAyNiAhZXBfaXNfbGlua2VkKGVwaSkpIHtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmVwLVx1MDAzZXdxKSlcbkBAIC0yMDMxLDYgKzIxMTQsNyBAQCBzdGF0aWMgaW50IGVwX21vZGlmeShzdHJ1Y3QgZXZlbnRwb2xsICplcCwgc3RydWN0IGVwaXRlbSAqZXBpLFxuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmVwLVx1MDAzZWxvY2spO1xuIFx0XHRpZiAoIWVwX2lzX2xpbmtlZChlcGkpKSB7XG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFxuIFx0XHRcdC8qIE5vdGlmeSB3YWl0aW5nIHRhc2tzIHRoYXQgZXZlbnRzIGFyZSBhdmFpbGFibGUgKi9cbkBAIC0yMDg0LDYgKzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdF9fcG1fcmVsYXgod3MpO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIENsZWFyIG5vdGlmaWVkIHdoaWxlIGVwaSBpcyBzdGlsbCBvbiB0eGxpc3QuIEEgY2FsbGJhY2sgdGhhdFxuK1x0ICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kXG4rXHQgKiBwdWJsaXNoIHRoZSBldmVudCB0aHJvdWdoIG92Zmxpc3QuXG4rXHQgKi9cbitcdGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTtcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmspO1xuIFxuIFx0LypcbkBAIC0yMTA0LDYgKzIxOTQsNyBAQCBzdGF0aWMgaW50IGVwX2RlbGl2ZXJfZXZlbnQoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiBcdFx0ICogYXR0ZW1wdC5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBzY2FuX2JhdGNoKTtcbitcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHR9XG5AQCAtMjEyMCw2ICsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGR1cmluZyBzY2Fucy5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuK1x0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFx0fVxuIFx0cmV0dXJuIDE7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uMGY1ZDBmNTg5ZDkyNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuQEAgLTQwLDYgKzQwLDEwIEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3XG4gXHRcdFx0XHQgIF9fdTY0ICpjbnQpO1xuIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudCk7XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuK2Jvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKTtcbisjZW5kaWZcbitcbiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuIHtcbiBcdHJldHVybiAhY3VycmVudC1cdTAwM2Vpbl9ldmVudGZkO1xuQEAgLTgyLDYgKzg2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxuIFxuIH1cbiBcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rc3RhdGljIGlubGluZSBib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbit7XG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuKyNlbmRpZlxuK1xuICNlbmRpZlxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWdcbmluZGV4IDEwZjIwMTNiNTMyMTYuLmM3MzRkZmUzNDkwYzcgMTAwNjQ0XG4tLS0gYS9pbml0L0tjb25maWdcbisrKyBiL2luaXQvS2NvbmZpZ1xuQEAgLTE4OTYsNiArMTg5NiwxOCBAQCBjb25maWcgRVZFTlRGRFxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuK2NvbmZpZyBFVkVOVEZEX09QVFxuK1x0Ym9vbCBcIk9wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb25cIiBpZiBFWFBFUlRcbitcdGRlcGVuZHMgb24gRVZFTlRGRCBcdTAwMjZcdTAwMjYgRVBPTExcbitcdGRlZmF1bHQgblxuK1x0aGVscFxuK1x0ICBFbmFibGVzIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2sgZm9yIGV2ZW50ZmRcbitcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVx1MDAzZWxvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy5cbitcdCAgRnVsbCBtZW1vcnkgYmFycmllcnMgcHJldmVudCBsb3N0IHdha2V1cHMgd2hlbiBldmVudGZkIHVwZGF0ZXNcbitcdCAgcmFjZSB3aXRoIGVwb2xsIHJlLXBvbGxpbmcuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4gY29uZmlnIFNITUVNXG4gXHRib29sIFwiVXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwiIGlmIEVYUEVSVFxuIFx0ZGVmYXVsdCB5XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMzowNzoyMS4wNzUwNjY5NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODI3Nzc3OTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBFdmVudGZkL0Vwb2xsIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIGludHJvZHVjaW5nIGEgbmV3IGNvbmZpZywgYENPTkZJR19FVkVOVEZEX09QVGAsIHdoaWNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBgZXZlbnRmZGAgYW5kIGBlcG9sbGAuIFNwZWNpZmljYWxseSwgdGhpcyBpbnZvbHZlcyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBgZXBfcG9sbF9jYWxsYmFja2AgZm9yIGBldmVudGZkYCBmaWxlcy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMsIHNvIGZ1enppbmcgaXMgYSBtdXN0LlxuXG5GaXJzdCwgbGV0J3MgbG9vayBhdCB3aGF0J3MgYmVlbiBjaGFuZ2VkOiBgZnMvZXZlbnRmZC5jYCBhbmQgYGZzL2V2ZW50cG9sbC5jYCBhcmUgdGhlIG1haW4gdGFyZ2V0cy4gIGBldmVudGZkLmNgIG5vdyBpbmNsdWRlcyBhbiBgZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsYCAod2l0aCBhbiBgc21wX21iKClgIGlmIHRoZSBuZXcgY29uZmlnIGlzIGVuYWJsZWQpLCBhbmQgaW50cm9kdWNlcyBgaXNfZXZlbnRmZF9maWxlYC4gYGV2ZW50cG9sbC5jYCBnZXRzIHNvbWUgbmV3IGZ1bmN0aW9ucyB0b28sIGxpa2UgYGVwX3NldF9ub3RpZmllZGAsIGBlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsYCwgYW5kIGBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwYCwgd2hpY2ggYXJlIGFsbCBwYXJ0IG9mIGVwb2xsJ3Mgc2Nhbm5pbmcgYW5kIGNhbGxiYWNrIHJvdXRpbmVzLiBUaGVyZSdzIGFsc28gYSBkZWNsYXJhdGlvbiBmb3IgYGlzX2V2ZW50ZmRfZmlsZWAgaW4gdGhlIGBldmVudGZkLmhgIGhlYWRlciBhbmQgdGhlIEtjb25maWcgaGFzIGJlZW4gdXBkYXRlZC5cblxuUmlnaHQsIHNvIHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIElkZWFsbHksIHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiAgSSBzdGFydGVkIGJ5IGxpc3RpbmcgZXZlcnl0aGluZyB0aGF0IHdhcyB0b3VjaGVkLiBTbywgZnJvbSB0aGUgZmlsZXMsIHdlIGhhdmU6XG5cbiogICBgZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsYCAoc3RhdGljIGlubGluZSlcbiogICBgZXZlbnRmZF9zaWduYWxfbWFza2BcbiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgXG4qICAgYGV2ZW50ZmRfcmVhZGBcbiogICBgZXZlbnRmZF93cml0ZWBcbiogICBgZXBfcG9sbF9jYWxsYmFja2BcbiogICBgZXBfZG9uZV9zY2FuYFxuKiAgIGBfX2VwX2V2ZW50cG9sbF9wb2xsYFxuKiAgIGBlcF9hbGxvY19lcGl0ZW1gXG4qICAgYGVwX2luc2VydGBcbiogICBgZXBfbW9kaWZ5YFxuKiAgIGBlcF9kZWxpdmVyX2V2ZW50YFxuKiAgIGBpc19ldmVudGZkX2ZpbGVgXG5cbk9rYXksIGEgY291cGxlIG9mIHRob3NlIGFyZSBzdGF0aWMgaW5saW5lIHNvIHRoZXkgd29uJ3QgaGF2ZSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IGBldmVudGZkX3NpZ25hbF9tYXNrYCwgYGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlYCwgYW5kIGBpc19ldmVudGZkX2ZpbGVgIGFyZSBhbGwgZ29vZCBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIG5vbi1zdGF0aWMuIFRoZSBmaWxlIG9wZXJhdGlvbnMgYGV2ZW50ZmRfcmVhZGAgYW5kIGBldmVudGZkX3dyaXRlYCBhcmUgc3RhdGljLCBidXQgdGhleSdyZSBzdGlsbCBhY3R1YWwgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbnMsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGVtLiBUaGUgcmVtYWluaW5nIGVwb2xsLXJlbGF0ZWQgZnVuY3Rpb25zLCBgZXBfcG9sbF9jYWxsYmFja2AsIGBlcF9pbnNlcnRgLCBgZXBfbW9kaWZ5YCwgYW5kIGBlcF9kZWxpdmVyX2V2ZW50YCBhcmUgc3RhdGljLCBidXQgdGhleSBhcmVuJ3QgaW5saW5lZCwgYW5kIGFyZSBsaWtlbHkgdG8gYmUgY3JpdGljYWwgaW4gdHJpZ2dlcmluZyB0aGUgb3B0aW1pemF0aW9uJ3MgbG9naWMuIFNvIHRoYXQgd2lsbCBiZSBvdXIgbGlzdDpcblxuKiAgIGBldmVudGZkX3NpZ25hbF9tYXNrYFxuKiAgIGBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZWBcbiogICBgZXZlbnRmZF9yZWFkYFxuKiAgIGBldmVudGZkX3dyaXRlYFxuKiAgIGBpc19ldmVudGZkX2ZpbGVgXG4qICAgYGVwX2RvbmVfc2NhbmBcbiogICBgX19lcF9ldmVudHBvbGxfcG9sbGBcbiogICBgZXBfcG9sbF9jYWxsYmFja2BcbiogICBgZXBfYWxsb2NfZXBpdGVtYFxuKiAgIGBlcF9pbnNlcnRgXG4qICAgYGVwX21vZGlmeWBcbiogICBgZXBfZGVsaXZlcl9ldmVudGBcblxuTm93IGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgRVZFTlRGRF9PUFRgLCB3aGljaCBkZXBlbmRzIG9uIGBFVkVOVEZEYCBhbmQgYEVQT0xMYC4gIFNvLCB3ZSdsbCBuZWVkIHRvIGVuYWJsZSBhbGwgb2YgdGhvc2UsIHdpdGggYEVWRU5URkRfT1BUYCBiZWluZyB0aGUgY3JpdGljYWwgb25lIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LlxuXG5Mb29rcyBsaWtlIHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBsZXQncyBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTUwLCJPdXRwdXRUb2tlbnMiOjIwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMzowNzozOS4zNTI4NDk1MzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQwMDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVZFTlRGRF9PUFRcIixcbiAgICBcIkVWRU5URkRcIixcbiAgICBcIkVQT0xMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXZlbnRmZF9zaWduYWxfbWFza1wiLFxuICAgIFwiZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVcIixcbiAgICBcImV2ZW50ZmRfcmVhZFwiLFxuICAgIFwiZXZlbnRmZF93cml0ZVwiLFxuICAgIFwiaXNfZXZlbnRmZF9maWxlXCIsXG4gICAgXCJlcF9kb25lX3NjYW5cIixcbiAgICBcIl9fZXBfZXZlbnRwb2xsX3BvbGxcIixcbiAgICBcImVwX3BvbGxfY2FsbGJhY2tcIixcbiAgICBcImVwX2FsbG9jX2VwaXRlbVwiLFxuICAgIFwiZXBfaW5zZXJ0XCIsXG4gICAgXCJlcF9tb2RpZnlcIixcbiAgICBcImVwX2RlbGl2ZXJfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVkVOVEZEX09QVFwiLFxuICAgIFwiRVZFTlRGRFwiLFxuICAgIFwiRVBPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldmVudGZkX3NpZ25hbF9tYXNrXCIsXG4gICAgXCJldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZVwiLFxuICAgIFwiZXZlbnRmZF9yZWFkXCIsXG4gICAgXCJldmVudGZkX3dyaXRlXCIsXG4gICAgXCJpc19ldmVudGZkX2ZpbGVcIixcbiAgICBcImVwX2RvbmVfc2NhblwiLFxuICAgIFwiX19lcF9ldmVudHBvbGxfcG9sbFwiLFxuICAgIFwiZXBfcG9sbF9jYWxsYmFja1wiLFxuICAgIFwiZXBfYWxsb2NfZXBpdGVtXCIsXG4gICAgXCJlcF9pbnNlcnRcIixcbiAgICBcImVwX21vZGlmeVwiLFxuICAgIFwiZXBfZGVsaXZlcl9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIG9wdGltaXphdGlvbiBmb3IgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZXZlbnRmZCBhbmQgZXBvbGwsIGFkZGluZyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrLiBUaGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGluIGV2ZW50ZmQgYW5kIGV2ZW50cG9sbCBzdWJzeXN0ZW1zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGVuc3VyZSBubyByYWNlIGNvbmRpdGlvbnMgb3IgbG9zdCB3YWtldXBzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowktrqr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 02:49:43 +0000 UTC FinishedAt: 2026-08-03 03:07:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EVENTFD_OPT", "EVENTFD", "EPOLL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EVENTFD_OPT", "EVENTFD", "EPOLL" ], "series_id": "24d98c96-0d95-4055-820d-d990e00aa38e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "eventfd_signal_mask", "eventfd_ctx_remove_wait_queue", "eventfd_read", "eventfd_write", "is_eventfd_file", "ep_done_scan", "__ep_eventpoll_poll", "ep_poll_callback", "ep_alloc_epitem", "ep_insert", "ep_modify", "ep_deliver_event" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAzOjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VWRU5URkRfT1BUJiMzNDssCiAgICAmIzM0O0VWRU5URkQmIzM0OywKICAgICYjMzQ7RVBPTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtldmVudGZkX3NpZ25hbF9tYXNrJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfcmVhZCYjMzQ7LAogICAgJiMzNDtldmVudGZkX3dyaXRlJiMzNDssCiAgICAmIzM0O2lzX2V2ZW50ZmRfZmlsZSYjMzQ7LAogICAgJiMzNDtlcF9kb25lX3NjYW4mIzM0OywKICAgICYjMzQ7X19lcF9ldmVudHBvbGxfcG9sbCYjMzQ7LAogICAgJiMzNDtlcF9wb2xsX2NhbGxiYWNrJiMzNDssCiAgICAmIzM0O2VwX2FsbG9jX2VwaXRlbSYjMzQ7LAogICAgJiMzNDtlcF9pbnNlcnQmIzM0OywKICAgICYjMzQ7ZXBfbW9kaWZ5JiMzNDssCiAgICAmIzM0O2VwX2RlbGl2ZXJfZXZlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDM6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2NjY2MjVhOTljNWFmODAxY2U1N2E2NWY0ODZhN2Y0MzIxMjczZTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMzowNzoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjNkMzRjZDY1MmFjNzIgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTQzLDYgJiM0Mzs0MywyOSBAQCBzdHJ1Y3QgZXZlbnRmZF9jdHgge1xuIFx0aW50IGlkO1xuIH07XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgX19wb2xsX3QgbWFzaylcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrKTtcbiYjNDM7XG4mIzQzO1x0LyogUHJvdGVjdGVkIGJ5IGN0eC1cdTAwM2V3cWgubG9jay4gKi9cbiYjNDM7XHRpZiAoIXdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFdmVudGZkIGNvbnRleHQgb2YgdGhlIHR3by12YXJpYWJsZSBwcm90b2NvbDpcbiYjNDM7XHQgKlxuJiM0MztcdCAqIFcoQikgdXBkYXRlcyBjdHgtXHUwMDNlY291bnQgaW4gdGhlIGNhbGxlciwgdGhlbiB0aGUgY2FsbGJhY2sgcGVyZm9ybXNcbiYjNDM7XHQgKiBSKEEpIG9uIGVwaXRlbS1cdTAwM2Vub3RpZmllZC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIFcoQikgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSlcbiYjNDM7XHQgKi9cbiYjNDM7XHRzbXBfbWIoKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1x0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBtYXNrKTtcbiYjNDM7fVxuJiM0MztcbiAvKipcbiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyXG4gICogQGN0eDogW2luXSBQb2ludGVyIHRvIHRoZSBldmVudGZkIGNvbnRleHQuXG5AQCAtNzIsOCAmIzQzOzk1LDcgQEAgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbiBcdGlmIChjdHgtXHUwMDNlY291bnQgXHUwMDNjIFVMTE9OR19NQVgpXG4gXHRcdGN0eC1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4tXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XG4mIzQzO1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTIwMyw4ICYjNDM7MjI1LDggQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKndcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jaywgZmxhZ3MpO1xuIFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7XG4gXHRfX3JlbW92ZV93YWl0X3F1ZXVlKFx1MDAyNmN0eC1cdTAwM2V3cWgsIHdhaXQpO1xuLVx0aWYgKCpjbnQgIT0gMCBcdTAwMjZcdTAwMjYgd2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTE9VVCk7XG4mIzQzO1x0aWYgKCpjbnQgIT0gMClcbiYjNDM7XHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gKmNudCAhPSAwID8gMCA6IC1FQUdBSU47XG5AQCAtMjM0LDggJiM0MzsyNTYsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuIFx0fVxuIFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIFx1MDAyNnVjbnQpO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbi1cdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuLVx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMT1VUKTtcbiYjNDM7XHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7XG4gXHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG4gXHRpZiAodW5saWtlbHkoY29weV90b19pdGVyKFx1MDAyNnVjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpXG5AQCAtMjcwLDggJiM0MzsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xuIFx0aWYgKGxpa2VseShyZXMgXHUwMDNlIDApKSB7XG4gXHRcdGN0eC1cdTAwM2Vjb3VudCAmIzQzOz0gdWNudDtcbiBcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbi1cdFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOKTtcbiYjNDM7XHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMSU4pO1xuIFx0XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuIFx0fVxuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG5AQCAtMzEwLDYgJiM0MzszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xuIFx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuIH07XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7Ym9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZmlsZS1cdTAwM2VmX29wID09IFx1MDAyNmV2ZW50ZmRfZm9wcztcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xuJiM0MztcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIC8qKlxuICAqIGV2ZW50ZmRfZmdldCAtIEFjcXVpcmUgYSByZWZlcmVuY2Ugb2YgYW4gZXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50cG9sbC5jIGIvZnMvZXZlbnRwb2xsLmNcbmluZGV4IGVlZDhjZWNkOTRlM2EuLjA5ZTkyMzljZTJkNWUgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudHBvbGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXZlbnRwb2xsLmNcbkBAIC0zOSw2ICYjNDM7MzksOSBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2NhcGFiaWxpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlcWxvY2suaFx1MDAzZVxuJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuJiM0MzsjZW5kaWZcbiAjaW5jbHVkZSBcdTAwM2NuZXQvYnVzeV9wb2xsLmhcdTAwM2VcbiBcbiAvKlxuQEAgLTI4NSw2ICYjNDM7Mjg4LDE0IEBAIHN0cnVjdCBlcGl0ZW0ge1xuIFxuIFx0LyogVGhlIHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlIHRoZSBpbnRlcmVzdGVkIGV2ZW50cyBhbmQgdGhlIHNvdXJjZSBmZCAqL1xuIFx0c3RydWN0IGVwb2xsX2V2ZW50IGV2ZW50O1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0MztcdC8qIFNldCBhZnRlciBxdWV1ZWluZywgY2xlYXJlZCBiZWZvcmUgZGVxdWV1ZWluZyBmcm9tIHRoZSByZWFkeSBwYXRoLiAqL1xuJiM0MztcdGJvb2wgbm90aWZpZWQ7XG4mIzQzO1xuJiM0MztcdC8qIFRydWUgaWYgdGhlIG1vbml0b3JlZCBmaWxlIGlzIGFuIGV2ZW50ZmQuICovXG4mIzQzO1x0Ym9vbCBpc19ldmVudGZkO1xuJiM0MzsjZW5kaWZcbiB9O1xuIFxuIC8qXG5AQCAtNjIwLDYgJiM0Mzs2MzEsNjUgQEAgc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50c19hdmFpbGFibGUoc3RydWN0IGV2ZW50cG9sbCAqZXApXG4gXHRcdHJlYWRfc2VxY291bnRfcmV0cnkoXHUwMDI2ZXAtXHUwMDNlc2VxLCBzZXEpO1xuIH1cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0MzsvKlxuJiM0MzsgKiBFdmVudGZkL2Vwb2xsIHR3by12YXJpYWJsZSBjb21tdW5pY2F0aW9uOlxuJiM0MzsgKlxuJiM0MzsgKiAgIEEgPSBlcGktXHUwMDNlbm90aWZpZWRcbiYjNDM7ICogICBCID0gZXZlbnRmZCBjb3VudC9yZWFkaW5lc3NcbiYjNDM7ICpcbiYjNDM7ICogICBzY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgZGVxdWV1ZSAtXHUwMDNlIFIoQilcbiYjNDM7ICogICBldmVudGZkIGNvbnRleHQ6IFcoQikgICAgICAgICAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgUihBKVxuJiM0MzsgKlxuJiM0MzsgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGVwaS1cdTAwM2Vpc19ldmVudGZkKVxuJiM0MztcdFx0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIHRydWUpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpXG4mIzQzO3tcbiYjNDM7XHRpZiAoIWVwaS1cdTAwM2Vpc19ldmVudGZkKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFN0b3AgY2FsbGJhY2tzIGZyb20gc2tpcHBpbmcgYmVmb3JlIHRoZSBzY2FubmVyIGRyb3BzIGl0cyByZWFkeS1saXN0XG4mIzQzO1x0ICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZVxuJiM0MztcdCAqIGFjdHVhbCBkZXF1ZXVlIG1heSBoYXBwZW4gYmV0d2VlbiB0aGUgYmFycmllciBhbmQgdGhlIHJlYWRpbmVzcyByZWFkLlxuJiM0MztcdCAqL1xuJiM0MztcdFdSSVRFX09OQ0UoZXBpLVx1MDAzZW5vdGlmaWVkLCBmYWxzZSk7XG4mIzQzO1x0LyogU2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQikuICovXG4mIzQzO1x0c21wX21iKCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiYjNDM7XHRcdFx0XHRcdFx0X19wb2xsX3QgcG9sbGZsYWdzKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0aWYgKFJFQURfT05DRShlcGktXHUwMDNlZXZlbnQuZXZlbnRzKSBcdTAwMjZcbiYjNDM7XHQgICAgKEVQT0xMRVhDTFVTSVZFIHwgRVBPTExFVCB8IEVQT0xMT05FU0hPVCkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGlmIChwb2xsZmxhZ3MgXHUwMDI2IFBPTExGUkVFKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHQvKiBFdmVudGZkIGNvbnRleHQ6IFcoQikgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSkuICovXG4mIzQzO1x0cmV0dXJuIFJFQURfT05DRShlcGktXHUwMDNlbm90aWZpZWQpO1xuJiM0Mzt9XG4mIzQzOyNlbHNlXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbiYjNDM7c3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxuJiM0MztcdFx0XHRcdFx0XHRfX3BvbGxfdCBwb2xsZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuICNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxuIC8qKlxuICAqIGJ1c3lfbG9vcF9lcF90aW1lb3V0IC0gY2hlY2sgaWYgYnVzeSBwb2xsIGhhcyB0aW1lZCBvdXQuIFRoZSB0aW1lb3V0IHZhbHVlXG5AQCAtMTAwNyw2ICYjNDM7MTA3Nyw3IEBAIHN0YXRpYyB2b2lkIGVwX2RvbmVfc2NhbihzdHJ1Y3QgZXZlbnRwb2xsICplcCxcbiBcdFx0XHQgKiByZXZlcnNlcyB0aGUgaXRlcmF0aW9uIG9yZGVyIGludG8gRklGTy5cbiBcdFx0XHQgKi9cbiBcdFx0XHRsaXN0X2FkZChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4mIzQzO1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0fVxuIFx0fVxuQEAgLTEzMDMsOCAmIzQzOzEzNzQsMTEgQEAgc3RhdGljIF9fcG9sbF90IF9fZXBfZXZlbnRwb2xsX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQsIGludCBkZXBcbiBcdG11dGV4X2xvY2tfbmVzdGVkKFx1MDAyNmVwLVx1MDAzZW10eCwgZGVwdGgpO1xuIFx0ZXBfc3RhcnRfc2NhbihlcCwgXHUwMDI2c2Nhbl9iYXRjaCk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZXBpLCB0bXAsIFx1MDAyNnNjYW5fYmF0Y2gsIHJkbGxpbmspIHtcbiYjNDM7XHRcdC8qIENsZWFyIG5vdGlmaWVkIGJlZm9yZSBhIHBvc3NpYmxlIHJlbW92YWwgZnJvbSB0eGxpc3QuICovXG4mIzQzO1x0XHRlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKGVwaSk7XG4gXHRcdGlmIChlcF9pdGVtX3BvbGwoZXBpLCBcdTAwMjZwdCwgZGVwdGggJiM0MzsgMSkpIHtcbiBcdFx0XHRyZXMgPSBFUE9MTElOIHwgRVBPTExSRE5PUk07XG4mIzQzO1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdC8qXG5AQCAtMTQ5Nyw2ICYjNDM7MTU3MSw5IEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGV3YWtlID0gMDtcbiBcbiYjNDM7XHRpZiAoZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChlcGksIHBvbGxmbGFncykpXG4mIzQzO1x0XHRyZXR1cm4gMTtcbiYjNDM7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlcC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRlcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTtcbkBAIC0xNTI5LDExICYjNDM7MTYwNiwxMyBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdlxuIFx0XHRpZiAoIWVwaV9vbl9vdmZsaXN0KGVwaSkpIHtcbiBcdFx0XHRlcGktXHUwMDNlb3ZmbGlzdF9uZXh0ID0gUkVBRF9PTkNFKGVwLVx1MDAzZW92Zmxpc3QpO1xuIFx0XHRcdFdSSVRFX09OQ0UoZXAtXHUwMDNlb3ZmbGlzdCwgZXBpKTtcbiYjNDM7XHRcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdFx0ZXBfcG1fc3RheV9hd2FrZV9yY3UoZXBpKTtcbiBcdFx0fVxuIFx0fSBlbHNlIGlmICghZXBfaXNfbGlua2VkKGVwaSkpIHtcbiBcdFx0LyogSW4gdGhlIHVzdWFsIGNhc2UsIGFkZCBldmVudCB0byByZWFkeSBsaXN0LiAqL1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBcdTAwMjZlcC1cdTAwM2VyZGxsaXN0KTtcbiYjNDM7XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xuIFx0fVxuIFxuQEAgLTE4NDAsNiAmIzQzOzE5MTksOSBAQCBzdGF0aWMgc3RydWN0IGVwaXRlbSAqZXBfYWxsb2NfZXBpdGVtKHN0cnVjdCBldmVudHBvbGwgKmVwLFxuIFx0ZXBpLVx1MDAzZWZmZCA9ICp0ZjtcbiBcdGVwaS1cdTAwM2VldmVudCA9ICpldmVudDtcbiBcdGVwaV9jbGVhcl9vdmZsaXN0KGVwaSk7XG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7XHRlcGktXHUwMDNlaXNfZXZlbnRmZCA9IGlzX2V2ZW50ZmRfZmlsZSh0ZmlsZSk7XG4mIzQzOyNlbmRpZlxuIFxuIFx0cmV0dXJuIGVwaTtcbiB9XG5AQCAtMTk1Niw2ICYjNDM7MjAzOCw3IEBAIHN0YXRpYyBpbnQgZXBfaW5zZXJ0KHN0cnVjdCBlcF9jdGxfY3R4ICpjdHgsIHN0cnVjdCBldmVudHBvbGwgKmVwLFxuIFxuIFx0aWYgKHJldmVudHMgXHUwMDI2XHUwMDI2ICFlcF9pc19saW5rZWQoZXBpKSkge1xuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBcdTAwMjZlcC1cdTAwM2VyZGxsaXN0KTtcbiYjNDM7XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmVwLVx1MDAzZXdxKSlcbkBAIC0yMDMxLDYgJiM0MzsyMTE0LDcgQEAgc3RhdGljIGludCBlcF9tb2RpZnkoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiBcdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZlcC1cdTAwM2Vsb2NrKTtcbiBcdFx0aWYgKCFlcF9pc19saW5rZWQoZXBpKSkge1xuIFx0XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuJiM0MztcdFx0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdFx0LyogTm90aWZ5IHdhaXRpbmcgdGFza3MgdGhhdCBldmVudHMgYXJlIGF2YWlsYWJsZSAqL1xuQEAgLTIwODQsNiAmIzQzOzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdF9fcG1fcmVsYXgod3MpO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQ2xlYXIgbm90aWZpZWQgd2hpbGUgZXBpIGlzIHN0aWxsIG9uIHR4bGlzdC4gQSBjYWxsYmFjayB0aGF0XG4mIzQzO1x0ICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kXG4mIzQzO1x0ICogcHVibGlzaCB0aGUgZXZlbnQgdGhyb3VnaCBvdmZsaXN0LlxuJiM0MztcdCAqL1xuJiM0MztcdGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTtcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmspO1xuIFxuIFx0LypcbkBAIC0yMTA0LDYgJiM0MzsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGF0dGVtcHQuXG4gXHRcdCAqL1xuIFx0XHRsaXN0X2FkZChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgc2Nhbl9iYXRjaCk7XG4mIzQzO1x0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFx0XHRyZXR1cm4gLUVGQVVMVDtcbiBcdH1cbkBAIC0yMTIwLDYgJiM0MzsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGR1cmluZyBzY2Fucy5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuJiM0MztcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdH1cbiBcdHJldHVybiAxO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbkBAIC00MCw2ICYjNDM7NDAsMTAgQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKndcbiBcdFx0XHRcdCAgX191NjQgKmNudCk7XG4gdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KTtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuIHtcbiBcdHJldHVybiAhY3VycmVudC1cdTAwM2Vpbl9ldmVudGZkO1xuQEAgLTgyLDYgJiM0Mzs4NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbiBcbiB9XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbiYjNDM7e1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiYjNDM7fVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2VuZGlmXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuZGlmZiAtLWdpdCBhL2luaXQvS2NvbmZpZyBiL2luaXQvS2NvbmZpZ1xuaW5kZXggMTBmMjAxM2I1MzIxNi4uYzczNGRmZTM0OTBjNyAxMDA2NDRcbi0tLSBhL2luaXQvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvaW5pdC9LY29uZmlnXG5AQCAtMTg5Niw2ICYjNDM7MTg5NiwxOCBAQCBjb25maWcgRVZFTlRGRFxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuJiM0Mztjb25maWcgRVZFTlRGRF9PUFRcbiYjNDM7XHRib29sIFwmIzM0O09wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb25cJiMzNDsgaWYgRVhQRVJUXG4mIzQzO1x0ZGVwZW5kcyBvbiBFVkVOVEZEIFx1MDAyNlx1MDAyNiBFUE9MTFxuJiM0MztcdGRlZmF1bHQgblxuJiM0MztcdGhlbHBcbiYjNDM7XHQgIEVuYWJsZXMgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjayBmb3IgZXZlbnRmZFxuJiM0MztcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVx1MDAzZWxvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy5cbiYjNDM7XHQgIEZ1bGwgbWVtb3J5IGJhcnJpZXJzIHByZXZlbnQgbG9zdCB3YWtldXBzIHdoZW4gZXZlbnRmZCB1cGRhdGVzXG4mIzQzO1x0ICByYWNlIHdpdGggZXBvbGwgcmUtcG9sbGluZy5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiM0MztcbiBjb25maWcgU0hNRU1cbiBcdGJvb2wgXCYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwmIzM0OyBpZiBFWFBFUlRcbiBcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAzOjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFVkVOVEZEX09QVCYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDssCiAgICAmIzM0O0VQT0xMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXZlbnRmZF9zaWduYWxfbWFzayYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSYjMzQ7LAogICAgJiMzNDtldmVudGZkX3JlYWQmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF93cml0ZSYjMzQ7LAogICAgJiMzNDtpc19ldmVudGZkX2ZpbGUmIzM0OywKICAgICYjMzQ7ZXBfZG9uZV9zY2FuJiMzNDssCiAgICAmIzM0O19fZXBfZXZlbnRwb2xsX3BvbGwmIzM0OywKICAgICYjMzQ7ZXBfcG9sbF9jYWxsYmFjayYjMzQ7LAogICAgJiMzNDtlcF9hbGxvY19lcGl0ZW0mIzM0OywKICAgICYjMzQ7ZXBfaW5zZXJ0JiMzNDssCiAgICAmIzM0O2VwX21vZGlmeSYjMzQ7LAogICAgJiMzNDtlcF9kZWxpdmVyX2V2ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIG9wdGltaXphdGlvbiBmb3IgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZXZlbnRmZCBhbmQgZXBvbGwsIGFkZGluZyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrLiBUaGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGluIGV2ZW50ZmQgYW5kIGV2ZW50cG9sbCBzdWJzeXN0ZW1zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGVuc3VyZSBubyByYWNlIGNvbmRpdGlvbnMgb3IgbG9zdCB3YWtldXBzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjY2NjI1YTk5YzVhZjgwMWNlNTdhNjVmNDg2YTdmNDMyMTI3M2UxNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDM6MDc6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uM2QzNGNkNjUyYWM3MiAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtNDMsNiAmIzQzOzQzLDI5IEBAIHN0cnVjdCBldmVudGZkX2N0eCB7CiAJaW50IGlkOwogfTsKIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsCiYjNDM7CQkJCQkgICAgICAgX19wb2xsX3QgbWFzaykKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtjdHgtJmd0O3dxaC5sb2NrKTsKJiM0MzsKJiM0MzsJLyogUHJvdGVjdGVkIGJ5IGN0eC0mZ3Q7d3FoLmxvY2suICovCiYjNDM7CWlmICghd2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2N0eC0mZ3Q7d3FoKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUCiYjNDM7CS8qCiYjNDM7CSAqIEV2ZW50ZmQgY29udGV4dCBvZiB0aGUgdHdvLXZhcmlhYmxlIHByb3RvY29sOgomIzQzOwkgKgomIzQzOwkgKiBXKEIpIHVwZGF0ZXMgY3R4LSZndDtjb3VudCBpbiB0aGUgY2FsbGVyLCB0aGVuIHRoZSBjYWxsYmFjayBwZXJmb3JtcwomIzQzOwkgKiBSKEEpIG9uIGVwaXRlbS0mZ3Q7bm90aWZpZWQuCiYjNDM7CSAqCiYjNDM7CSAqIFcoQikgLSZndDsgc21wX21iKCkgLSZndDsgUihBKQomIzQzOwkgKi8KJiM0MzsJc21wX21iKCk7CiYjNDM7I2VuZGlmCiYjNDM7CXdha2VfdXBfbG9ja2VkX3BvbGwoJmFtcDtjdHgtJmd0O3dxaCwgbWFzayk7CiYjNDM7fQomIzQzOwogLyoqCiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyCiAgKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gdGhlIGV2ZW50ZmQgY29udGV4dC4KQEAgLTcyLDggJiM0Mzs5NSw3IEBAIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaykKIAljdXJyZW50LSZndDtpbl9ldmVudGZkID0gMTsKIAlpZiAoY3R4LSZndDtjb3VudCAmbHQ7IFVMTE9OR19NQVgpCiAJCWN0eC0mZ3Q7Y291bnQmIzQzOyYjNDM7OwotCWlmICh3YWl0cXVldWVfYWN0aXZlKCZhbXA7Y3R4LSZndDt3cWgpKQotCQl3YWtlX3VwX2xvY2tlZF9wb2xsKCZhbXA7Y3R4LSZndDt3cWgsIEVQT0xMSU4gfCBtYXNrKTsKJiM0MzsJZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spOwogCWN1cnJlbnQtJmd0O2luX2V2ZW50ZmQgPSAwOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjdHgtJmd0O3dxaC5sb2NrLCBmbGFncyk7CiB9CkBAIC0yMDMsOCAmIzQzOzIyNSw4IEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjdHgtJmd0O3dxaC5sb2NrLCBmbGFncyk7CiAJZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7CiAJX19yZW1vdmVfd2FpdF9xdWV1ZSgmYW1wO2N0eC0mZ3Q7d3FoLCB3YWl0KTsKLQlpZiAoKmNudCAhPSAwICZhbXA7JmFtcDsgd2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2N0eC0mZ3Q7d3FoKSkKLQkJd2FrZV91cF9sb2NrZWRfcG9sbCgmYW1wO2N0eC0mZ3Q7d3FoLCBFUE9MTE9VVCk7CiYjNDM7CWlmICgqY250ICE9IDApCiYjNDM7CQlldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2N0eC0mZ3Q7d3FoLmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiAqY250ICE9IDAgPyAwIDogLUVBR0FJTjsKQEAgLTIzNCw4ICYjNDM7MjU2LDcgQEAgc3RhdGljIHNzaXplX3QgZXZlbnRmZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bykKIAl9CiAJZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsICZhbXA7dWNudCk7CiAJY3VycmVudC0mZ3Q7aW5fZXZlbnRmZCA9IDE7Ci0JaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmFtcDtjdHgtJmd0O3dxaCkpCi0JCXdha2VfdXBfbG9ja2VkX3BvbGwoJmFtcDtjdHgtJmd0O3dxaCwgRVBPTExPVVQpOwomIzQzOwlldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7CiAJY3VycmVudC0mZ3Q7aW5fZXZlbnRmZCA9IDA7CiAJc3Bpbl91bmxvY2tfaXJxKCZhbXA7Y3R4LSZndDt3cWgubG9jayk7CiAJaWYgKHVubGlrZWx5KGNvcHlfdG9faXRlcigmYW1wO3VjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpCkBAIC0yNzAsOCAmIzQzOzI5MSw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjCiAJaWYgKGxpa2VseShyZXMgJmd0OyAwKSkgewogCQljdHgtJmd0O2NvdW50ICYjNDM7PSB1Y250OwogCQljdXJyZW50LSZndDtpbl9ldmVudGZkID0gMTsKLQkJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJmFtcDtjdHgtJmd0O3dxaCkpCi0JCQl3YWtlX3VwX2xvY2tlZF9wb2xsKCZhbXA7Y3R4LSZndDt3cWgsIEVQT0xMSU4pOwomIzQzOwkJZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTik7CiAJCWN1cnJlbnQtJmd0O2luX2V2ZW50ZmQgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnEoJmFtcDtjdHgtJmd0O3dxaC5sb2NrKTsKQEAgLTMxMCw2ICYjNDM7MzMwLDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGV2ZW50ZmRfZm9wcyA9IHsKIAkubGxzZWVrCQk9IG5vb3BfbGxzZWVrLAogfTsKIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkKJiM0Mzt7CiYjNDM7CXJldHVybiBmaWxlLSZndDtmX29wID09ICZhbXA7ZXZlbnRmZF9mb3BzOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpOwomIzQzOwomIzQzOyNlbmRpZgomIzQzOwogLyoqCiAgKiBldmVudGZkX2ZnZXQgLSBBY3F1aXJlIGEgcmVmZXJlbmNlIG9mIGFuIGV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLgogICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLgpkaWZmIC0tZ2l0IGEvZnMvZXZlbnRwb2xsLmMgYi9mcy9ldmVudHBvbGwuYwppbmRleCBlZWQ4Y2VjZDk0ZTNhLi4wOWU5MjM5Y2UyZDVlIDEwMDY0NAotLS0gYS9mcy9ldmVudHBvbGwuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudHBvbGwuYwpAQCAtMzksNiAmIzQzOzM5LDkgQEAKICNpbmNsdWRlICZsdDtsaW51eC9yY3VsaXN0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvY2FwYWJpbGl0eS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlcWxvY2suaCZndDsKJiM0MzsjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V2ZW50ZmQuaCZndDsKJiM0MzsjZW5kaWYKICNpbmNsdWRlICZsdDtuZXQvYnVzeV9wb2xsLmgmZ3Q7CiAKIC8qCkBAIC0yODUsNiAmIzQzOzI4OCwxNCBAQCBzdHJ1Y3QgZXBpdGVtIHsKIAogCS8qIFRoZSBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZSB0aGUgaW50ZXJlc3RlZCBldmVudHMgYW5kIHRoZSBzb3VyY2UgZmQgKi8KIAlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXZlbnQ7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzOwkvKiBTZXQgYWZ0ZXIgcXVldWVpbmcsIGNsZWFyZWQgYmVmb3JlIGRlcXVldWVpbmcgZnJvbSB0aGUgcmVhZHkgcGF0aC4gKi8KJiM0MzsJYm9vbCBub3RpZmllZDsKJiM0MzsKJiM0MzsJLyogVHJ1ZSBpZiB0aGUgbW9uaXRvcmVkIGZpbGUgaXMgYW4gZXZlbnRmZC4gKi8KJiM0MzsJYm9vbCBpc19ldmVudGZkOwomIzQzOyNlbmRpZgogfTsKIAogLyoKQEAgLTYyMCw2ICYjNDM7NjMxLDY1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudHNfYXZhaWxhYmxlKHN0cnVjdCBldmVudHBvbGwgKmVwKQogCQlyZWFkX3NlcWNvdW50X3JldHJ5KCZhbXA7ZXAtJmd0O3NlcSwgc2VxKTsKIH0KIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0MzsvKgomIzQzOyAqIEV2ZW50ZmQvZXBvbGwgdHdvLXZhcmlhYmxlIGNvbW11bmljYXRpb246CiYjNDM7ICoKJiM0MzsgKiAgIEEgPSBlcGktJmd0O25vdGlmaWVkCiYjNDM7ICogICBCID0gZXZlbnRmZCBjb3VudC9yZWFkaW5lc3MKJiM0MzsgKgomIzQzOyAqICAgc2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLSZndDsgc21wX21iKCkgLSZndDsgZGVxdWV1ZSAtJmd0OyBSKEIpCiYjNDM7ICogICBldmVudGZkIGNvbnRleHQ6IFcoQikgICAgICAgICAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEEpCiYjNDM7ICoKJiM0MzsgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfc2V0X25vdGlmaWVkKHN0cnVjdCBlcGl0ZW0gKmVwaSkKJiM0Mzt7CiYjNDM7CWlmIChlcGktJmd0O2lzX2V2ZW50ZmQpCiYjNDM7CQlXUklURV9PTkNFKGVwaS0mZ3Q7bm90aWZpZWQsIHRydWUpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpCiYjNDM7ewomIzQzOwlpZiAoIWVwaS0mZ3Q7aXNfZXZlbnRmZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogU3RvcCBjYWxsYmFja3MgZnJvbSBza2lwcGluZyBiZWZvcmUgdGhlIHNjYW5uZXIgZHJvcHMgaXRzIHJlYWR5LWxpc3QKJiM0MzsJICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZQomIzQzOwkgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC4KJiM0MzsJICovCiYjNDM7CVdSSVRFX09OQ0UoZXBpLSZndDtub3RpZmllZCwgZmFsc2UpOwomIzQzOwkvKiBTY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEIpLiAqLwomIzQzOwlzbXBfbWIoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLAomIzQzOwkJCQkJCV9fcG9sbF90IHBvbGxmbGFncykKJiM0Mzt7CiYjNDM7CWlmICghZXBpLSZndDtpc19ldmVudGZkKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlpZiAoUkVBRF9PTkNFKGVwaS0mZ3Q7ZXZlbnQuZXZlbnRzKSAmYW1wOwomIzQzOwkgICAgKEVQT0xMRVhDTFVTSVZFIHwgRVBPTExFVCB8IEVQT0xMT05FU0hPVCkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChwb2xsZmxhZ3MgJmFtcDsgUE9MTEZSRUUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CS8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtJmd0OyBzbXBfbWIoKSAtJmd0OyBSKEEpLiAqLwomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKGVwaS0mZ3Q7bm90aWZpZWQpOwomIzQzO30KJiM0MzsjZWxzZQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH0KJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpIHsgfQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSwKJiM0MzsJCQkJCQlfX3BvbGxfdCBwb2xsZmxhZ3MpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMCiAvKioKICAqIGJ1c3lfbG9vcF9lcF90aW1lb3V0IC0gY2hlY2sgaWYgYnVzeSBwb2xsIGhhcyB0aW1lZCBvdXQuIFRoZSB0aW1lb3V0IHZhbHVlCkBAIC0xMDA3LDYgJiM0MzsxMDc3LDcgQEAgc3RhdGljIHZvaWQgZXBfZG9uZV9zY2FuKHN0cnVjdCBldmVudHBvbGwgKmVwLAogCQkJICogcmV2ZXJzZXMgdGhlIGl0ZXJhdGlvbiBvcmRlciBpbnRvIEZJRk8uCiAJCQkgKi8KIAkJCWxpc3RfYWRkKCZhbXA7ZXBpLSZndDtyZGxsaW5rLCAmYW1wO2VwLSZndDtyZGxsaXN0KTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAkJfQogCX0KQEAgLTEzMDMsOCAmIzQzOzEzNzQsMTEgQEAgc3RhdGljIF9fcG9sbF90IF9fZXBfZXZlbnRwb2xsX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQsIGludCBkZXAKIAltdXRleF9sb2NrX25lc3RlZCgmYW1wO2VwLSZndDttdHgsIGRlcHRoKTsKIAllcF9zdGFydF9zY2FuKGVwLCAmYW1wO3NjYW5fYmF0Y2gpOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgJmFtcDtzY2FuX2JhdGNoLCByZGxsaW5rKSB7CiYjNDM7CQkvKiBDbGVhciBub3RpZmllZCBiZWZvcmUgYSBwb3NzaWJsZSByZW1vdmFsIGZyb20gdHhsaXN0LiAqLwomIzQzOwkJZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpOwogCQlpZiAoZXBfaXRlbV9wb2xsKGVwaSwgJmFtcDtwdCwgZGVwdGggJiM0MzsgMSkpIHsKIAkJCXJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWJyZWFrOwogCQl9IGVsc2UgewogCQkJLyoKQEAgLTE0OTcsNiAmIzQzOzE1NzEsOSBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdgogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IGV3YWtlID0gMDsKIAomIzQzOwlpZiAoZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChlcGksIHBvbGxmbGFncykpCiYjNDM7CQlyZXR1cm4gMTsKJiM0MzsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2VwLSZndDtsb2NrLCBmbGFncyk7CiAKIAllcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTsKQEAgLTE1MjksMTEgJiM0MzsxNjA2LDEzIEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2CiAJCWlmICghZXBpX29uX292Zmxpc3QoZXBpKSkgewogCQkJZXBpLSZndDtvdmZsaXN0X25leHQgPSBSRUFEX09OQ0UoZXAtJmd0O292Zmxpc3QpOwogCQkJV1JJVEVfT05DRShlcC0mZ3Q7b3ZmbGlzdCwgZXBpKTsKJiM0MzsJCQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJCWVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7CiAJCX0KIAl9IGVsc2UgaWYgKCFlcF9pc19saW5rZWQoZXBpKSkgewogCQkvKiBJbiB0aGUgdXN1YWwgY2FzZSwgYWRkIGV2ZW50IHRvIHJlYWR5IGxpc3QuICovCiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7CiAJfQogCkBAIC0xODQwLDYgJiM0MzsxOTE5LDkgQEAgc3RhdGljIHN0cnVjdCBlcGl0ZW0gKmVwX2FsbG9jX2VwaXRlbShzdHJ1Y3QgZXZlbnRwb2xsICplcCwKIAllcGktJmd0O2ZmZCA9ICp0ZjsKIAllcGktJmd0O2V2ZW50ID0gKmV2ZW50OwogCWVwaV9jbGVhcl9vdmZsaXN0KGVwaSk7CiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzOwllcGktJmd0O2lzX2V2ZW50ZmQgPSBpc19ldmVudGZkX2ZpbGUodGZpbGUpOwomIzQzOyNlbmRpZgogCiAJcmV0dXJuIGVwaTsKIH0KQEAgLTE5NTYsNiAmIzQzOzIwMzgsNyBAQCBzdGF0aWMgaW50IGVwX2luc2VydChzdHJ1Y3QgZXBfY3RsX2N0eCAqY3R4LCBzdHJ1Y3QgZXZlbnRwb2xsICplcCwKIAogCWlmIChyZXZlbnRzICZhbXA7JmFtcDsgIWVwX2lzX2xpbmtlZChlcGkpKSB7CiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAogCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmYW1wO2VwLSZndDt3cSkpCkBAIC0yMDMxLDYgJiM0MzsyMTE0LDcgQEAgc3RhdGljIGludCBlcF9tb2RpZnkoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSwKIAkJc3Bpbl9sb2NrX2lycSgmYW1wO2VwLSZndDtsb2NrKTsKIAkJaWYgKCFlcF9pc19saW5rZWQoZXBpKSkgewogCQkJbGlzdF9hZGRfdGFpbCgmYW1wO2VwaS0mZ3Q7cmRsbGluaywgJmFtcDtlcC0mZ3Q7cmRsbGlzdCk7CiYjNDM7CQkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCQllcF9wbV9zdGF5X2F3YWtlKGVwaSk7CiAKIAkJCS8qIE5vdGlmeSB3YWl0aW5nIHRhc2tzIHRoYXQgZXZlbnRzIGFyZSBhdmFpbGFibGUgKi8KQEAgLTIwODQsNiAmIzQzOzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCV9fcG1fcmVsYXgod3MpOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBDbGVhciBub3RpZmllZCB3aGlsZSBlcGkgaXMgc3RpbGwgb24gdHhsaXN0LiBBIGNhbGxiYWNrIHRoYXQKJiM0MzsJICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kCiYjNDM7CSAqIHB1Ymxpc2ggdGhlIGV2ZW50IHRocm91Z2ggb3ZmbGlzdC4KJiM0MzsJICovCiYjNDM7CWVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTsKIAlsaXN0X2RlbF9pbml0KCZhbXA7ZXBpLSZndDtyZGxsaW5rKTsKIAogCS8qCkBAIC0yMTA0LDYgJiM0MzsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCSAqIGF0dGVtcHQuCiAJCSAqLwogCQlsaXN0X2FkZCgmYW1wO2VwaS0mZ3Q7cmRsbGluaywgc2Nhbl9iYXRjaCk7CiYjNDM7CQllcF9zZXRfbm90aWZpZWQoZXBpKTsKIAkJZXBfcG1fc3RheV9hd2FrZShlcGkpOwogCQlyZXR1cm4gLUVGQVVMVDsKIAl9CkBAIC0yMTIwLDYgJiM0MzsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksCiAJCSAqIGR1cmluZyBzY2Fucy4KIAkJICovCiAJCWxpc3RfYWRkX3RhaWwoJmFtcDtlcGktJmd0O3JkbGxpbmssICZhbXA7ZXAtJmd0O3JkbGxpc3QpOwomIzQzOwkJZXBfc2V0X25vdGlmaWVkKGVwaSk7CiAJCWVwX3BtX3N0YXlfYXdha2UoZXBpKTsKIAl9CiAJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC00MCw2ICYjNDM7NDAsMTAgQEAgaW50IGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCB3YWl0X3F1ZXVlX2VudHJ5X3QgKncKIAkJCQkgIF9fdTY0ICpjbnQpOwogdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KTsKIAomIzQzOyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFQKJiM0Mztib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CiYjNDM7I2VuZGlmCiYjNDM7CiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKQogewogCXJldHVybiAhY3VycmVudC0mZ3Q7aW5fZXZlbnRmZDsKQEAgLTgyLDYgJiM0Mzs4NiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudCkKIAogfQogCiYjNDM7I2lmZGVmIENPTkZJR19FVkVOVEZEX09QVAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmFsc2U7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKZGlmZiAtLWdpdCBhL2luaXQvS2NvbmZpZyBiL2luaXQvS2NvbmZpZwppbmRleCAxMGYyMDEzYjUzMjE2Li5jNzM0ZGZlMzQ5MGM3IDEwMDY0NAotLS0gYS9pbml0L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvaW5pdC9LY29uZmlnCkBAIC0xODk2LDYgJiM0MzsxODk2LDE4IEBAIGNvbmZpZyBFVkVOVEZECiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKJiM0Mztjb25maWcgRVZFTlRGRF9PUFQKJiM0MzsJYm9vbCAmIzM0O09wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb24mIzM0OyBpZiBFWFBFUlQKJiM0MzsJZGVwZW5kcyBvbiBFVkVOVEZEICZhbXA7JmFtcDsgRVBPTEwKJiM0MzsJZGVmYXVsdCBuCiYjNDM7CWhlbHAKJiM0MzsJICBFbmFibGVzIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2sgZm9yIGV2ZW50ZmQKJiM0MzsJICBmaWxlcywgcmVkdWNpbmcgZXAtJmd0O2xvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy4KJiM0MzsJICBGdWxsIG1lbW9yeSBiYXJyaWVycyBwcmV2ZW50IGxvc3Qgd2FrZXVwcyB3aGVuIGV2ZW50ZmQgdXBkYXRlcwomIzQzOwkgIHJhY2Ugd2l0aCBlcG9sbCByZS1wb2xsaW5nLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CiBjb25maWcgU0hNRU0KIAlib29sICYjMzQ7VXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbSYjMzQ7IGlmIEVYUEVSVAogCWRlZmF1bHQgeQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTUwCgkJCQkJCQlvdXRwdXQ6IDIwNwoJCQkJCQkJdGhvdWdodHM6IDE2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBBbmFseXNpczogRXZlbnRmZC9FcG9sbCBPcHRpbWl6YXRpb24gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBjb25maWcsIGBDT05GSUdfRVZFTlRGRF9PUFRgLCB3aGljaCBpcyBhbGwgYWJvdXQgb3B0aW1pemluZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gYGV2ZW50ZmRgIGFuZCBgZXBvbGxgLiBTcGVjaWZpY2FsbHksIHRoaXMgaW52b2x2ZXMgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gYGVwX3BvbGxfY2FsbGJhY2tgIGZvciBgZXZlbnRmZGAgZmlsZXMuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljLCBzbyBmdXp6aW5nIGlzIGEgbXVzdC4KCkZpcnN0LCBsZXQmIzM5O3MgbG9vayBhdCB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZDogYGZzL2V2ZW50ZmQuY2AgYW5kIGBmcy9ldmVudHBvbGwuY2AgYXJlIHRoZSBtYWluIHRhcmdldHMuICBgZXZlbnRmZC5jYCBub3cgaW5jbHVkZXMgYW4gYGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbGAgKHdpdGggYW4gYHNtcF9tYigpYCBpZiB0aGUgbmV3IGNvbmZpZyBpcyBlbmFibGVkKSwgYW5kIGludHJvZHVjZXMgYGlzX2V2ZW50ZmRfZmlsZWAuIGBldmVudHBvbGwuY2AgZ2V0cyBzb21lIG5ldyBmdW5jdGlvbnMgdG9vLCBsaWtlIGBlcF9zZXRfbm90aWZpZWRgLCBgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbGAsIGFuZCBgZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcGAsIHdoaWNoIGFyZSBhbGwgcGFydCBvZiBlcG9sbCYjMzk7cyBzY2FubmluZyBhbmQgY2FsbGJhY2sgcm91dGluZXMuIFRoZXJlJiMzOTtzIGFsc28gYSBkZWNsYXJhdGlvbiBmb3IgYGlzX2V2ZW50ZmRfZmlsZWAgaW4gdGhlIGBldmVudGZkLmhgIGhlYWRlciBhbmQgdGhlIEtjb25maWcgaGFzIGJlZW4gdXBkYXRlZC4KClJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBJZGVhbGx5LCB3ZSB3YW50IG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gIEkgc3RhcnRlZCBieSBsaXN0aW5nIGV2ZXJ5dGhpbmcgdGhhdCB3YXMgdG91Y2hlZC4gU28sIGZyb20gdGhlIGZpbGVzLCB3ZSBoYXZlOgoKKiAgIGBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGxgIChzdGF0aWMgaW5saW5lKQoqICAgYGV2ZW50ZmRfc2lnbmFsX21hc2tgCiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgCiogICBgZXZlbnRmZF9yZWFkYAoqICAgYGV2ZW50ZmRfd3JpdGVgCiogICBgZXBfcG9sbF9jYWxsYmFja2AKKiAgIGBlcF9kb25lX3NjYW5gCiogICBgX19lcF9ldmVudHBvbGxfcG9sbGAKKiAgIGBlcF9hbGxvY19lcGl0ZW1gCiogICBgZXBfaW5zZXJ0YAoqICAgYGVwX21vZGlmeWAKKiAgIGBlcF9kZWxpdmVyX2V2ZW50YAoqICAgYGlzX2V2ZW50ZmRfZmlsZWAKCk9rYXksIGEgY291cGxlIG9mIHRob3NlIGFyZSBzdGF0aWMgaW5saW5lIHNvIHRoZXkgd29uJiMzOTt0IGhhdmUgdW5pcXVlIHN5bWJvbCBhZGRyZXNzZXMuIEJ1dCBgZXZlbnRmZF9zaWduYWxfbWFza2AsIGBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZWAsIGFuZCBgaXNfZXZlbnRmZF9maWxlYCBhcmUgYWxsIGdvb2QgY2FuZGlkYXRlcyBzaW5jZSB0aGV5IGFyZSBub24tc3RhdGljLiBUaGUgZmlsZSBvcGVyYXRpb25zIGBldmVudGZkX3JlYWRgIGFuZCBgZXZlbnRmZF93cml0ZWAgYXJlIHN0YXRpYywgYnV0IHRoZXkmIzM5O3JlIHN0aWxsIGFjdHVhbCBzeXNjYWxsIGltcGxlbWVudGF0aW9ucywgc28gd2UgbmVlZCB0byBpbmNsdWRlIHRoZW0uIFRoZSByZW1haW5pbmcgZXBvbGwtcmVsYXRlZCBmdW5jdGlvbnMsIGBlcF9wb2xsX2NhbGxiYWNrYCwgYGVwX2luc2VydGAsIGBlcF9tb2RpZnlgLCBhbmQgYGVwX2RlbGl2ZXJfZXZlbnRgIGFyZSBzdGF0aWMsIGJ1dCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgYW5kIGFyZSBsaWtlbHkgdG8gYmUgY3JpdGljYWwgaW4gdHJpZ2dlcmluZyB0aGUgb3B0aW1pemF0aW9uJiMzOTtzIGxvZ2ljLiBTbyB0aGF0IHdpbGwgYmUgb3VyIGxpc3Q6CgoqICAgYGV2ZW50ZmRfc2lnbmFsX21hc2tgCiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgCiogICBgZXZlbnRmZF9yZWFkYAoqICAgYGV2ZW50ZmRfd3JpdGVgCiogICBgaXNfZXZlbnRmZF9maWxlYAoqICAgYGVwX2RvbmVfc2NhbmAKKiAgIGBfX2VwX2V2ZW50cG9sbF9wb2xsYAoqICAgYGVwX3BvbGxfY2FsbGJhY2tgCiogICBgZXBfYWxsb2NfZXBpdGVtYAoqICAgYGVwX2luc2VydGAKKiAgIGBlcF9tb2RpZnlgCiogICBgZXBfZGVsaXZlcl9ldmVudGAKCk5vdyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYEVWRU5URkRfT1BUYCwgd2hpY2ggZGVwZW5kcyBvbiBgRVZFTlRGRGAgYW5kIGBFUE9MTGAuICBTbywgd2UmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFsbCBvZiB0aG9zZSwgd2l0aCBgRVZFTlRGRF9PUFRgIGJlaW5nIHRoZSBjcml0aWNhbCBvbmUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuCgpMb29rcyBsaWtlIHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBsZXQmIzM5O3MgY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVZFTlRGRF9PUFQmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7LAogICAgJiMzNDtFUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V2ZW50ZmRfc2lnbmFsX21hc2smIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9yZWFkJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfd3JpdGUmIzM0OywKICAgICYjMzQ7aXNfZXZlbnRmZF9maWxlJiMzNDssCiAgICAmIzM0O2VwX2RvbmVfc2NhbiYjMzQ7LAogICAgJiMzNDtfX2VwX2V2ZW50cG9sbF9wb2xsJiMzNDssCiAgICAmIzM0O2VwX3BvbGxfY2FsbGJhY2smIzM0OywKICAgICYjMzQ7ZXBfYWxsb2NfZXBpdGVtJiMzNDssCiAgICAmIzM0O2VwX2luc2VydCYjMzQ7LAogICAgJiMzNDtlcF9tb2RpZnkmIzM0OywKICAgICYjMzQ7ZXBfZGVsaXZlcl9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVZFTlRGRF9PUFQmIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7LAogICAgJiMzNDtFUE9MTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V2ZW50ZmRfc2lnbmFsX21hc2smIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9yZWFkJiMzNDssCiAgICAmIzM0O2V2ZW50ZmRfd3JpdGUmIzM0OywKICAgICYjMzQ7aXNfZXZlbnRmZF9maWxlJiMzNDssCiAgICAmIzM0O2VwX2RvbmVfc2NhbiYjMzQ7LAogICAgJiMzNDtfX2VwX2V2ZW50cG9sbF9wb2xsJiMzNDssCiAgICAmIzM0O2VwX3BvbGxfY2FsbGJhY2smIzM0OywKICAgICYjMzQ7ZXBfYWxsb2NfZXBpdGVtJiMzNDssCiAgICAmIzM0O2VwX2luc2VydCYjMzQ7LAogICAgJiMzNDtlcF9tb2RpZnkmIzM0OywKICAgICYjMzQ7ZXBfZGVsaXZlcl9ldmVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIwLjY2MzI3NzkyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODEyOTgzMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVWRU5URkRfT1BUXCIsXG4gICAgXCJFVkVOVEZEXCIsXG4gICAgXCJFUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV2ZW50ZmRfc2lnbmFsX21hc2tcIixcbiAgICBcImV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlXCIsXG4gICAgXCJldmVudGZkX3JlYWRcIixcbiAgICBcImV2ZW50ZmRfd3JpdGVcIixcbiAgICBcImlzX2V2ZW50ZmRfZmlsZVwiLFxuICAgIFwiZXBfZG9uZV9zY2FuXCIsXG4gICAgXCJfX2VwX2V2ZW50cG9sbF9wb2xsXCIsXG4gICAgXCJlcF9wb2xsX2NhbGxiYWNrXCIsXG4gICAgXCJlcF9hbGxvY19lcGl0ZW1cIixcbiAgICBcImVwX2luc2VydFwiLFxuICAgIFwiZXBfbW9kaWZ5XCIsXG4gICAgXCJlcF9kZWxpdmVyX2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIwLjY2MzI4NDM2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExMTMzNDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjY2NjI1YTk5YzVhZjgwMWNlNTdhNjVmNDg2YTdmNDMyMTI3M2UxNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAzOjA3OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50ZmQuYyBiL2ZzL2V2ZW50ZmQuY1xcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjNkMzRjZDY1MmFjNzIgMTAwNjQ0XFxuLS0tIGEvZnMvZXZlbnRmZC5jXFxuKysrIGIvZnMvZXZlbnRmZC5jXFxuQEAgLTQzLDYgKzQzLDI5IEBAIHN0cnVjdCBldmVudGZkX2N0eCB7XFxuIFxcdGludCBpZDtcXG4gfTtcXG4gXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBfX3BvbGxfdCBtYXNrKVxcbit7XFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2spO1xcbitcXG4rXFx0LyogUHJvdGVjdGVkIGJ5IGN0eC1cXHUwMDNld3FoLmxvY2suICovXFxuK1xcdGlmICghd2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXFxuK1xcdC8qXFxuK1xcdCAqIEV2ZW50ZmQgY29udGV4dCBvZiB0aGUgdHdvLXZhcmlhYmxlIHByb3RvY29sOlxcbitcXHQgKlxcbitcXHQgKiBXKEIpIHVwZGF0ZXMgY3R4LVxcdTAwM2Vjb3VudCBpbiB0aGUgY2FsbGVyLCB0aGVuIHRoZSBjYWxsYmFjayBwZXJmb3Jtc1xcbitcXHQgKiBSKEEpIG9uIGVwaXRlbS1cXHUwMDNlbm90aWZpZWQuXFxuK1xcdCAqXFxuK1xcdCAqIFcoQikgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgUihBKVxcbitcXHQgKi9cXG4rXFx0c21wX21iKCk7XFxuKyNlbmRpZlxcbitcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgbWFzayk7XFxuK31cXG4rXFxuIC8qKlxcbiAgKiBldmVudGZkX3NpZ25hbF9tYXNrIC0gSW5jcmVtZW50IHRoZSBldmVudCBjb3VudGVyXFxuICAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxcbkBAIC03Miw4ICs5NSw3IEBAIHZvaWQgZXZlbnRmZF9zaWduYWxfbWFzayhzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX19wb2xsX3QgbWFzaylcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWNvdW50IFxcdTAwM2MgVUxMT05HX01BWClcXG4gXFx0XFx0Y3R4LVxcdTAwM2Vjb3VudCsrO1xcbi1cXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbi1cXHRcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExJTiB8IG1hc2spO1xcbitcXHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTElOIHwgbWFzayk7XFxuIFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuIH1cXG5AQCAtMjAzLDggKzIyNSw4IEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuIFxcdGV2ZW50ZmRfY3R4X2RvX3JlYWQoY3R4LCBjbnQpO1xcbiBcXHRfX3JlbW92ZV93YWl0X3F1ZXVlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgd2FpdCk7XFxuLVxcdGlmICgqY250ICE9IDAgXFx1MDAyNlxcdTAwMjYgd2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbi1cXHRcXHR3YWtlX3VwX2xvY2tlZF9wb2xsKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCwgRVBPTExPVVQpO1xcbitcXHRpZiAoKmNudCAhPSAwKVxcbitcXHRcXHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTE9VVCk7XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiAqY250ICE9IDAgPyAwIDogLUVBR0FJTjtcXG5AQCAtMjM0LDggKzI1Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuIFxcdH1cXG4gXFx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIFxcdTAwMjZ1Y250KTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuLVxcdGlmICh3YWl0cXVldWVfYWN0aXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCkpXFxuLVxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTE9VVCk7XFxuK1xcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDA7XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jayk7XFxuIFxcdGlmICh1bmxpa2VseShjb3B5X3RvX2l0ZXIoXFx1MDAyNnVjbnQsIHNpemVvZih1Y250KSwgdG8pICE9IHNpemVvZih1Y250KSkpXFxuQEAgLTI3MCw4ICsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xcbiBcXHRpZiAobGlrZWx5KHJlcyBcXHUwMDNlIDApKSB7XFxuIFxcdFxcdGN0eC1cXHUwMDNlY291bnQgKz0gdWNudDtcXG4gXFx0XFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuLVxcdFxcdGlmICh3YWl0cXVldWVfYWN0aXZlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaCkpXFxuLVxcdFxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOKTtcXG4rXFx0XFx0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTik7XFxuIFxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbiBcXHR9XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jayk7XFxuQEAgLTMxMCw2ICszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xcbiBcXHQubGxzZWVrXFx0XFx0PSBub29wX2xsc2VlayxcXG4gfTtcXG4gXFxuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcXG4rYm9vbCBpc19ldmVudGZkX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpXFxuK3tcXG4rXFx0cmV0dXJuIGZpbGUtXFx1MDAzZWZfb3AgPT0gXFx1MDAyNmV2ZW50ZmRfZm9wcztcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xcbitcXG4rI2VuZGlmXFxuK1xcbiAvKipcXG4gICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxcbmRpZmYgLS1naXQgYS9mcy9ldmVudHBvbGwuYyBiL2ZzL2V2ZW50cG9sbC5jXFxuaW5kZXggZWVkOGNlY2Q5NGUzYS4uMDllOTIzOWNlMmQ1ZSAxMDA2NDRcXG4tLS0gYS9mcy9ldmVudHBvbGwuY1xcbisrKyBiL2ZzL2V2ZW50cG9sbC5jXFxuQEAgLTM5LDYgKzM5LDkgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdWxpc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NhcGFiaWxpdHkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlcWxvY2suaFxcdTAwM2VcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZXZlbnRmZC5oXFx1MDAzZVxcbisjZW5kaWZcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9idXN5X3BvbGwuaFxcdTAwM2VcXG4gXFxuIC8qXFxuQEAgLTI4NSw2ICsyODgsMTQgQEAgc3RydWN0IGVwaXRlbSB7XFxuIFxcbiBcXHQvKiBUaGUgc3RydWN0dXJlIHRoYXQgZGVzY3JpYmUgdGhlIGludGVyZXN0ZWQgZXZlbnRzIGFuZCB0aGUgc291cmNlIGZkICovXFxuIFxcdHN0cnVjdCBlcG9sbF9ldmVudCBldmVudDtcXG4rXFxuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcXG4rXFx0LyogU2V0IGFmdGVyIHF1ZXVlaW5nLCBjbGVhcmVkIGJlZm9yZSBkZXF1ZXVlaW5nIGZyb20gdGhlIHJlYWR5IHBhdGguICovXFxuK1xcdGJvb2wgbm90aWZpZWQ7XFxuK1xcbitcXHQvKiBUcnVlIGlmIHRoZSBtb25pdG9yZWQgZmlsZSBpcyBhbiBldmVudGZkLiAqL1xcbitcXHRib29sIGlzX2V2ZW50ZmQ7XFxuKyNlbmRpZlxcbiB9O1xcbiBcXG4gLypcXG5AQCAtNjIwLDYgKzYzMSw2NSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZXBfZXZlbnRzX2F2YWlsYWJsZShzdHJ1Y3QgZXZlbnRwb2xsICplcClcXG4gXFx0XFx0cmVhZF9zZXFjb3VudF9yZXRyeShcXHUwMDI2ZXAtXFx1MDAzZXNlcSwgc2VxKTtcXG4gfVxcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbisvKlxcbisgKiBFdmVudGZkL2Vwb2xsIHR3by12YXJpYWJsZSBjb21tdW5pY2F0aW9uOlxcbisgKlxcbisgKiAgIEEgPSBlcGktXFx1MDAzZW5vdGlmaWVkXFxuKyAqICAgQiA9IGV2ZW50ZmQgY291bnQvcmVhZGluZXNzXFxuKyAqXFxuKyAqICAgc2Nhbm5lciBjb250ZXh0OiBXKEEgPSBmYWxzZSkgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgZGVxdWV1ZSAtXFx1MDAzZSBSKEIpXFxuKyAqICAgZXZlbnRmZCBjb250ZXh0OiBXKEIpICAgICAgICAgLVxcdTAwM2Ugc21wX21iKCkgLVxcdTAwM2UgUihBKVxcbisgKlxcbisgKiBUaGVyZWZvcmUgUihCKSA9PSBvbGQgYW5kIFIoQSkgPT0gdHJ1ZSBjYW5ub3QgYm90aCBvY2N1ci5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxcbit7XFxuK1xcdGlmIChlcGktXFx1MDAzZWlzX2V2ZW50ZmQpXFxuK1xcdFxcdFdSSVRFX09OQ0UoZXBpLVxcdTAwM2Vub3RpZmllZCwgdHJ1ZSk7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKHN0cnVjdCBlcGl0ZW0gKmVwaSlcXG4re1xcbitcXHRpZiAoIWVwaS1cXHUwMDNlaXNfZXZlbnRmZClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0LypcXG4rXFx0ICogU3RvcCBjYWxsYmFja3MgZnJvbSBza2lwcGluZyBiZWZvcmUgdGhlIHNjYW5uZXIgZHJvcHMgaXRzIHJlYWR5LWxpc3RcXG4rXFx0ICogb3duZXJzaGlwLiBLZWVwIHRoZSBmdWxsIGJhcnJpZXIgYmV0d2VlbiBXKEEgPSBmYWxzZSkgYW5kIFIoQik7IHRoZVxcbitcXHQgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC5cXG4rXFx0ICovXFxuK1xcdFdSSVRFX09OQ0UoZXBpLVxcdTAwM2Vub3RpZmllZCwgZmFsc2UpO1xcbitcXHQvKiBTY2FubmVyIGNvbnRleHQ6IFcoQSA9IGZhbHNlKSAtXFx1MDAzZSBzbXBfbWIoKSAtXFx1MDAzZSBSKEIpLiAqL1xcbitcXHRzbXBfbWIoKTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRfX3BvbGxfdCBwb2xsZmxhZ3MpXFxuK3tcXG4rXFx0aWYgKCFlcGktXFx1MDAzZWlzX2V2ZW50ZmQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChSRUFEX09OQ0UoZXBpLVxcdTAwM2VldmVudC5ldmVudHMpIFxcdTAwMjZcXG4rXFx0ICAgIChFUE9MTEVYQ0xVU0lWRSB8IEVQT0xMRVQgfCBFUE9MTE9ORVNIT1QpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRpZiAocG9sbGZsYWdzIFxcdTAwMjYgUE9MTEZSRUUpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdC8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtXFx1MDAzZSBzbXBfbWIoKSAtXFx1MDAzZSBSKEEpLiAqL1xcbitcXHRyZXR1cm4gUkVBRF9PTkNFKGVwaS1cXHUwMDNlbm90aWZpZWQpO1xcbit9XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cXG4rc3RhdGljIGlubGluZSBib29sIGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoc3RydWN0IGVwaXRlbSAqZXBpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRfX3BvbGxfdCBwb2xsZmxhZ3MpXFxuK3tcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxuIC8qKlxcbiAgKiBidXN5X2xvb3BfZXBfdGltZW91dCAtIGNoZWNrIGlmIGJ1c3kgcG9sbCBoYXMgdGltZWQgb3V0LiBUaGUgdGltZW91dCB2YWx1ZVxcbkBAIC0xMDA3LDYgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBlcF9kb25lX3NjYW4oc3RydWN0IGV2ZW50cG9sbCAqZXAsXFxuIFxcdFxcdFxcdCAqIHJldmVyc2VzIHRoZSBpdGVyYXRpb24gb3JkZXIgaW50byBGSUZPLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNmVwaS1cXHUwMDNlcmRsbGluaywgXFx1MDAyNmVwLVxcdTAwM2VyZGxsaXN0KTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTEzMDMsOCArMTM3NCwxMSBAQCBzdGF0aWMgX19wb2xsX3QgX19lcF9ldmVudHBvbGxfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCwgaW50IGRlcFxcbiBcXHRtdXRleF9sb2NrX25lc3RlZChcXHUwMDI2ZXAtXFx1MDAzZW10eCwgZGVwdGgpO1xcbiBcXHRlcF9zdGFydF9zY2FuKGVwLCBcXHUwMDI2c2Nhbl9iYXRjaCk7XFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgXFx1MDAyNnNjYW5fYmF0Y2gsIHJkbGxpbmspIHtcXG4rXFx0XFx0LyogQ2xlYXIgbm90aWZpZWQgYmVmb3JlIGEgcG9zc2libGUgcmVtb3ZhbCBmcm9tIHR4bGlzdC4gKi9cXG4rXFx0XFx0ZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpO1xcbiBcXHRcXHRpZiAoZXBfaXRlbV9wb2xsKGVwaSwgXFx1MDAyNnB0LCBkZXB0aCArIDEpKSB7XFxuIFxcdFxcdFxcdHJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHQvKlxcbkBAIC0xNDk3LDYgKzE1NzEsOSBAQCBzdGF0aWMgaW50IGVwX3BvbGxfY2FsbGJhY2sod2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdlxcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgZXdha2UgPSAwO1xcbiBcXG4rXFx0aWYgKGVwX2V2ZW50ZmRfY2FsbGJhY2tfY2FuX3NraXAoZXBpLCBwb2xsZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlcC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0ZXBfc2V0X2J1c3lfcG9sbF9uYXBpX2lkKGVwaSk7XFxuQEAgLTE1MjksMTEgKzE2MDYsMTMgQEAgc3RhdGljIGludCBlcF9wb2xsX2NhbGxiYWNrKHdhaXRfcXVldWVfZW50cnlfdCAqd2FpdCwgdW5zaWduZWQgbW9kZSwgaW50IHN5bmMsIHZcXG4gXFx0XFx0aWYgKCFlcGlfb25fb3ZmbGlzdChlcGkpKSB7XFxuIFxcdFxcdFxcdGVwaS1cXHUwMDNlb3ZmbGlzdF9uZXh0ID0gUkVBRF9PTkNFKGVwLVxcdTAwM2VvdmZsaXN0KTtcXG4gXFx0XFx0XFx0V1JJVEVfT05DRShlcC1cXHUwMDNlb3ZmbGlzdCwgZXBpKTtcXG4rXFx0XFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdFxcdGVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmICghZXBfaXNfbGlua2VkKGVwaSkpIHtcXG4gXFx0XFx0LyogSW4gdGhlIHVzdWFsIGNhc2UsIGFkZCBldmVudCB0byByZWFkeSBsaXN0LiAqL1xcbiBcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmssIFxcdTAwMjZlcC1cXHUwMDNlcmRsbGlzdCk7XFxuK1xcdFxcdGVwX3NldF9ub3RpZmllZChlcGkpO1xcbiBcXHRcXHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xcbiBcXHR9XFxuIFxcbkBAIC0xODQwLDYgKzE5MTksOSBAQCBzdGF0aWMgc3RydWN0IGVwaXRlbSAqZXBfYWxsb2NfZXBpdGVtKHN0cnVjdCBldmVudHBvbGwgKmVwLFxcbiBcXHRlcGktXFx1MDAzZWZmZCA9ICp0ZjtcXG4gXFx0ZXBpLVxcdTAwM2VldmVudCA9ICpldmVudDtcXG4gXFx0ZXBpX2NsZWFyX292Zmxpc3QoZXBpKTtcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitcXHRlcGktXFx1MDAzZWlzX2V2ZW50ZmQgPSBpc19ldmVudGZkX2ZpbGUodGZpbGUpO1xcbisjZW5kaWZcXG4gXFxuIFxcdHJldHVybiBlcGk7XFxuIH1cXG5AQCAtMTk1Niw2ICsyMDM4LDcgQEAgc3RhdGljIGludCBlcF9pbnNlcnQoc3RydWN0IGVwX2N0bF9jdHggKmN0eCwgc3RydWN0IGV2ZW50cG9sbCAqZXAsXFxuIFxcbiBcXHRpZiAocmV2ZW50cyBcXHUwMDI2XFx1MDAyNiAhZXBfaXNfbGlua2VkKGVwaSkpIHtcXG4gXFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZXBpLVxcdTAwM2VyZGxsaW5rLCBcXHUwMDI2ZXAtXFx1MDAzZXJkbGxpc3QpO1xcbitcXHRcXHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcXG4gXFx0XFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xcbiBcXG4gXFx0XFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXFx1MDAyNmVwLVxcdTAwM2V3cSkpXFxuQEAgLTIwMzEsNiArMjExNCw3IEBAIHN0YXRpYyBpbnQgZXBfbW9kaWZ5KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmVwLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0aWYgKCFlcF9pc19saW5rZWQoZXBpKSkge1xcbiBcXHRcXHRcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmssIFxcdTAwMjZlcC1cXHUwMDNlcmRsbGlzdCk7XFxuK1xcdFxcdFxcdGVwX3NldF9ub3RpZmllZChlcGkpO1xcbiBcXHRcXHRcXHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XFxuIFxcbiBcXHRcXHRcXHQvKiBOb3RpZnkgd2FpdGluZyB0YXNrcyB0aGF0IGV2ZW50cyBhcmUgYXZhaWxhYmxlICovXFxuQEAgLTIwODQsNiArMjE2OCwxMiBAQCBzdGF0aWMgaW50IGVwX2RlbGl2ZXJfZXZlbnQoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcXG4gXFx0XFx0X19wbV9yZWxheCh3cyk7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIENsZWFyIG5vdGlmaWVkIHdoaWxlIGVwaSBpcyBzdGlsbCBvbiB0eGxpc3QuIEEgY2FsbGJhY2sgdGhhdFxcbitcXHQgKiByYWNlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVxdWV1ZSBtdXN0IHRha2UgdGhlIHNsb3cgcGF0aCBhbmRcXG4rXFx0ICogcHVibGlzaCB0aGUgZXZlbnQgdGhyb3VnaCBvdmZsaXN0LlxcbitcXHQgKi9cXG4rXFx0ZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChlcGkpO1xcbiBcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZlcGktXFx1MDAzZXJkbGxpbmspO1xcbiBcXG4gXFx0LypcXG5AQCAtMjEwNCw2ICsyMTk0LDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdCAqIGF0dGVtcHQuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZXBpLVxcdTAwM2VyZGxsaW5rLCBzY2FuX2JhdGNoKTtcXG4rXFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdH1cXG5AQCAtMjEyMCw2ICsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXFxuIFxcdFxcdCAqIGR1cmluZyBzY2Fucy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmVwaS1cXHUwMDNlcmRsbGluaywgXFx1MDAyNmVwLVxcdTAwM2VyZGxsaXN0KTtcXG4rXFx0XFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XFxuIFxcdFxcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbmluZGV4IGUzMmJlZTQzNDVmYjkuLjBmNWQwZjU4OWQ5MjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxcbkBAIC00MCw2ICs0MCwxMCBAQCBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd1xcbiBcXHRcXHRcXHRcXHQgIF9fdTY0ICpjbnQpO1xcbiB2b2lkIGV2ZW50ZmRfY3R4X2RvX3JlYWQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fdTY0ICpjbnQpO1xcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuKyNlbmRpZlxcbitcXG4gc3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gIWN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQ7XFxuQEAgLTgyLDYgKzg2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxcbiBcXG4gfVxcbiBcXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxcbit7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuICNlbmRpZlxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWdcXG5pbmRleCAxMGYyMDEzYjUzMjE2Li5jNzM0ZGZlMzQ5MGM3IDEwMDY0NFxcbi0tLSBhL2luaXQvS2NvbmZpZ1xcbisrKyBiL2luaXQvS2NvbmZpZ1xcbkBAIC0xODk2LDYgKzE4OTYsMTggQEAgY29uZmlnIEVWRU5URkRcXG4gXFxuIFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gXFxuK2NvbmZpZyBFVkVOVEZEX09QVFxcbitcXHRib29sIFxcXCJPcHRpbWl6ZSBldmVudGZkL2Vwb2xsIGludGVyYWN0aW9uXFxcIiBpZiBFWFBFUlRcXG4rXFx0ZGVwZW5kcyBvbiBFVkVOVEZEIFxcdTAwMjZcXHUwMDI2IEVQT0xMXFxuK1xcdGRlZmF1bHQgblxcbitcXHRoZWxwXFxuK1xcdCAgRW5hYmxlcyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrIGZvciBldmVudGZkXFxuK1xcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVxcdTAwM2Vsb2NrIGNvbnRlbnRpb24gdW5kZXIgY29uY3VycmVudCB3b3JrbG9hZHMuXFxuK1xcdCAgRnVsbCBtZW1vcnkgYmFycmllcnMgcHJldmVudCBsb3N0IHdha2V1cHMgd2hlbiBldmVudGZkIHVwZGF0ZXNcXG4rXFx0ICByYWNlIHdpdGggZXBvbGwgcmUtcG9sbGluZy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGNvbmZpZyBTSE1FTVxcbiBcXHRib29sIFxcXCJVc2UgZnVsbCBzaG1lbSBmaWxlc3lzdGVtXFxcIiBpZiBFWFBFUlRcXG4gXFx0ZGVmYXVsdCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAzOjA3OjIxLjA3NTA2NTc4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE4NDAxMTg3NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVWRU5URkRfT1BUXCIsXG4gICAgXCJFVkVOVEZEXCIsXG4gICAgXCJFUE9MTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV2ZW50ZmRfc2lnbmFsX21hc2tcIixcbiAgICBcImV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlXCIsXG4gICAgXCJldmVudGZkX3JlYWRcIixcbiAgICBcImV2ZW50ZmRfd3JpdGVcIixcbiAgICBcImlzX2V2ZW50ZmRfZmlsZVwiLFxuICAgIFwiZXBfZG9uZV9zY2FuXCIsXG4gICAgXCJfX2VwX2V2ZW50cG9sbF9wb2xsXCIsXG4gICAgXCJlcF9wb2xsX2NhbGxiYWNrXCIsXG4gICAgXCJlcF9hbGxvY19lcGl0ZW1cIixcbiAgICBcImVwX2luc2VydFwiLFxuICAgIFwiZXBfbW9kaWZ5XCIsXG4gICAgXCJlcF9kZWxpdmVyX2V2ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uIGZvciB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBldmVudGZkIGFuZCBlcG9sbCwgYWRkaW5nIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2suIFRoaXMgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgaW4gZXZlbnRmZCBhbmQgZXZlbnRwb2xsIHN1YnN5c3RlbXMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJhY2UgY29uZGl0aW9ucyBvciBsb3N0IHdha2V1cHMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NjYyNWE5OWM1YWY4MDFjZTU3YTY1ZjQ4NmE3ZjQzMjEyNzNlMTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAzOjA3OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4zZDM0Y2Q2NTJhYzcyIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC00Myw2ICs0MywyOSBAQCBzdHJ1Y3QgZXZlbnRmZF9jdHgge1xuIFx0aW50IGlkO1xuIH07XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCxcbitcdFx0XHRcdFx0ICAgICAgIF9fcG9sbF90IG1hc2spXG4re1xuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuK1xuK1x0LyogUHJvdGVjdGVkIGJ5IGN0eC1cdTAwM2V3cWgubG9jay4gKi9cbitcdGlmICghd2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbitcdFx0cmV0dXJuO1xuK1xuKyNpZmRlZiBDT05GSUdfRVZFTlRGRF9PUFRcbitcdC8qXG4rXHQgKiBFdmVudGZkIGNvbnRleHQgb2YgdGhlIHR3by12YXJpYWJsZSBwcm90b2NvbDpcbitcdCAqXG4rXHQgKiBXKEIpIHVwZGF0ZXMgY3R4LVx1MDAzZWNvdW50IGluIHRoZSBjYWxsZXIsIHRoZW4gdGhlIGNhbGxiYWNrIHBlcmZvcm1zXG4rXHQgKiBSKEEpIG9uIGVwaXRlbS1cdTAwM2Vub3RpZmllZC5cbitcdCAqXG4rXHQgKiBXKEIpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBSKEEpXG4rXHQgKi9cbitcdHNtcF9tYigpO1xuKyNlbmRpZlxuK1x0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBtYXNrKTtcbit9XG4rXG4gLyoqXG4gICogZXZlbnRmZF9zaWduYWxfbWFzayAtIEluY3JlbWVudCB0aGUgZXZlbnQgY291bnRlclxuICAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxuQEAgLTcyLDggKzk1LDcgQEAgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbiBcdGlmIChjdHgtXHUwMDNlY291bnQgXHUwMDNjIFVMTE9OR19NQVgpXG4gXHRcdGN0eC1cdTAwM2Vjb3VudCsrO1xuLVx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExJTiB8IG1hc2spO1xuK1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExJTiB8IG1hc2spO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gfVxuQEAgLTIwMyw4ICsyMjUsOCBAQCBpbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgY250KTtcbiBcdF9fcmVtb3ZlX3dhaXRfcXVldWUoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgd2FpdCk7XG4tXHRpZiAoKmNudCAhPSAwIFx1MDAyNlx1MDAyNiB3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuLVx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMT1VUKTtcbitcdGlmICgqY250ICE9IDApXG4rXHRcdGV2ZW50ZmRfd2FrZV91cF9sb2NrZWRfcG9sbChjdHgsIEVQT0xMT1VUKTtcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gKmNudCAhPSAwID8gMCA6IC1FQUdBSU47XG5AQCAtMjM0LDggKzI1Niw3IEBAIHN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4gXHR9XG4gXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXHUwMDI2dWNudCk7XG4gXHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAxO1xuLVx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaCkpXG4tXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExPVVQpO1xuK1x0ZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsKGN0eCwgRVBPTExPVVQpO1xuIFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuIFx0aWYgKHVubGlrZWx5KGNvcHlfdG9faXRlcihcdTAwMjZ1Y250LCBzaXplb2YodWNudCksIHRvKSAhPSBzaXplb2YodWNudCkpKVxuQEAgLTI3MCw4ICsyOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY1xuIFx0aWYgKGxpa2VseShyZXMgXHUwMDNlIDApKSB7XG4gXHRcdGN0eC1cdTAwM2Vjb3VudCArPSB1Y250O1xuIFx0XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAxO1xuLVx0XHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbi1cdFx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMSU4pO1xuK1x0XHRldmVudGZkX3dha2VfdXBfbG9ja2VkX3BvbGwoY3R4LCBFUE9MTElOKTtcbiBcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2spO1xuQEAgLTMxMCw2ICszMzAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xuIFx0Lmxsc2Vla1x0XHQ9IG5vb3BfbGxzZWVrLFxuIH07XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuK2Jvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKVxuK3tcbitcdHJldHVybiBmaWxlLVx1MDAzZWZfb3AgPT0gXHUwMDI2ZXZlbnRmZF9mb3BzO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChpc19ldmVudGZkX2ZpbGUpO1xuK1xuKyNlbmRpZlxuK1xuIC8qKlxuICAqIGV2ZW50ZmRfZmdldCAtIEFjcXVpcmUgYSByZWZlcmVuY2Ugb2YgYW4gZXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXG4gICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZGlmZiAtLWdpdCBhL2ZzL2V2ZW50cG9sbC5jIGIvZnMvZXZlbnRwb2xsLmNcbmluZGV4IGVlZDhjZWNkOTRlM2EuLjA5ZTkyMzljZTJkNWUgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudHBvbGwuY1xuKysrIGIvZnMvZXZlbnRwb2xsLmNcbkBAIC0zOSw2ICszOSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1bGlzdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY2FwYWJpbGl0eS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VxbG9jay5oXHUwMDNlXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuKyNlbmRpZlxuICNpbmNsdWRlIFx1MDAzY25ldC9idXN5X3BvbGwuaFx1MDAzZVxuIFxuIC8qXG5AQCAtMjg1LDYgKzI4OCwxNCBAQCBzdHJ1Y3QgZXBpdGVtIHtcbiBcbiBcdC8qIFRoZSBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZSB0aGUgaW50ZXJlc3RlZCBldmVudHMgYW5kIHRoZSBzb3VyY2UgZmQgKi9cbiBcdHN0cnVjdCBlcG9sbF9ldmVudCBldmVudDtcbitcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rXHQvKiBTZXQgYWZ0ZXIgcXVldWVpbmcsIGNsZWFyZWQgYmVmb3JlIGRlcXVldWVpbmcgZnJvbSB0aGUgcmVhZHkgcGF0aC4gKi9cbitcdGJvb2wgbm90aWZpZWQ7XG4rXG4rXHQvKiBUcnVlIGlmIHRoZSBtb25pdG9yZWQgZmlsZSBpcyBhbiBldmVudGZkLiAqL1xuK1x0Ym9vbCBpc19ldmVudGZkO1xuKyNlbmRpZlxuIH07XG4gXG4gLypcbkBAIC02MjAsNiArNjMxLDY1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudHNfYXZhaWxhYmxlKHN0cnVjdCBldmVudHBvbGwgKmVwKVxuIFx0XHRyZWFkX3NlcWNvdW50X3JldHJ5KFx1MDAyNmVwLVx1MDAzZXNlcSwgc2VxKTtcbiB9XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuKy8qXG4rICogRXZlbnRmZC9lcG9sbCB0d28tdmFyaWFibGUgY29tbXVuaWNhdGlvbjpcbisgKlxuKyAqICAgQSA9IGVwaS1cdTAwM2Vub3RpZmllZFxuKyAqICAgQiA9IGV2ZW50ZmQgY291bnQvcmVhZGluZXNzXG4rICpcbisgKiAgIHNjYW5uZXIgY29udGV4dDogVyhBID0gZmFsc2UpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBkZXF1ZXVlIC1cdTAwM2UgUihCKVxuKyAqICAgZXZlbnRmZCBjb250ZXh0OiBXKEIpICAgICAgICAgLVx1MDAzZSBzbXBfbWIoKSAtXHUwMDNlIFIoQSlcbisgKlxuKyAqIFRoZXJlZm9yZSBSKEIpID09IG9sZCBhbmQgUihBKSA9PSB0cnVlIGNhbm5vdCBib3RoIG9jY3VyLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBlcF9zZXRfbm90aWZpZWQoc3RydWN0IGVwaXRlbSAqZXBpKVxuK3tcbitcdGlmIChlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIHRydWUpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgZXBfZXZlbnRmZF9wcmVwYXJlX3JlcG9sbChzdHJ1Y3QgZXBpdGVtICplcGkpXG4re1xuK1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0LypcbitcdCAqIFN0b3AgY2FsbGJhY2tzIGZyb20gc2tpcHBpbmcgYmVmb3JlIHRoZSBzY2FubmVyIGRyb3BzIGl0cyByZWFkeS1saXN0XG4rXHQgKiBvd25lcnNoaXAuIEtlZXAgdGhlIGZ1bGwgYmFycmllciBiZXR3ZWVuIFcoQSA9IGZhbHNlKSBhbmQgUihCKTsgdGhlXG4rXHQgKiBhY3R1YWwgZGVxdWV1ZSBtYXkgaGFwcGVuIGJldHdlZW4gdGhlIGJhcnJpZXIgYW5kIHRoZSByZWFkaW5lc3MgcmVhZC5cbitcdCAqL1xuK1x0V1JJVEVfT05DRShlcGktXHUwMDNlbm90aWZpZWQsIGZhbHNlKTtcbitcdC8qIFNjYW5uZXIgY29udGV4dDogVyhBID0gZmFsc2UpIC1cdTAwM2Ugc21wX21iKCkgLVx1MDAzZSBSKEIpLiAqL1xuK1x0c21wX21iKCk7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKHN0cnVjdCBlcGl0ZW0gKmVwaSxcbitcdFx0XHRcdFx0XHRfX3BvbGxfdCBwb2xsZmxhZ3MpXG4re1xuK1x0aWYgKCFlcGktXHUwMDNlaXNfZXZlbnRmZClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKFJFQURfT05DRShlcGktXHUwMDNlZXZlbnQuZXZlbnRzKSBcdTAwMjZcbitcdCAgICAoRVBPTExFWENMVVNJVkUgfCBFUE9MTEVUIHwgRVBPTExPTkVTSE9UKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aWYgKHBvbGxmbGFncyBcdTAwMjYgUE9MTEZSRUUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdC8qIEV2ZW50ZmQgY29udGV4dDogVyhCKSAtXHUwMDNlIHNtcF9tYigpIC1cdTAwM2UgUihBKS4gKi9cbitcdHJldHVybiBSRUFEX09OQ0UoZXBpLVx1MDAzZW5vdGlmaWVkKTtcbit9XG4rI2Vsc2VcbitzdGF0aWMgaW5saW5lIHZvaWQgZXBfc2V0X25vdGlmaWVkKHN0cnVjdCBlcGl0ZW0gKmVwaSkgeyB9XG4rc3RhdGljIGlubGluZSB2b2lkIGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoc3RydWN0IGVwaXRlbSAqZXBpKSB7IH1cbitzdGF0aWMgaW5saW5lIGJvb2wgZXBfZXZlbnRmZF9jYWxsYmFja19jYW5fc2tpcChzdHJ1Y3QgZXBpdGVtICplcGksXG4rXHRcdFx0XHRcdFx0X19wb2xsX3QgcG9sbGZsYWdzKVxuK3tcbitcdHJldHVybiBmYWxzZTtcbit9XG4rI2VuZGlmXG4rXG4gI2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG4gLyoqXG4gICogYnVzeV9sb29wX2VwX3RpbWVvdXQgLSBjaGVjayBpZiBidXN5IHBvbGwgaGFzIHRpbWVkIG91dC4gVGhlIHRpbWVvdXQgdmFsdWVcbkBAIC0xMDA3LDYgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBlcF9kb25lX3NjYW4oc3RydWN0IGV2ZW50cG9sbCAqZXAsXG4gXHRcdFx0ICogcmV2ZXJzZXMgdGhlIGl0ZXJhdGlvbiBvcmRlciBpbnRvIEZJRk8uXG4gXHRcdFx0ICovXG4gXHRcdFx0bGlzdF9hZGQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuK1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0fVxuIFx0fVxuQEAgLTEzMDMsOCArMTM3NCwxMSBAQCBzdGF0aWMgX19wb2xsX3QgX19lcF9ldmVudHBvbGxfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCwgaW50IGRlcFxuIFx0bXV0ZXhfbG9ja19uZXN0ZWQoXHUwMDI2ZXAtXHUwMDNlbXR4LCBkZXB0aCk7XG4gXHRlcF9zdGFydF9zY2FuKGVwLCBcdTAwMjZzY2FuX2JhdGNoKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlcGksIHRtcCwgXHUwMDI2c2Nhbl9iYXRjaCwgcmRsbGluaykge1xuK1x0XHQvKiBDbGVhciBub3RpZmllZCBiZWZvcmUgYSBwb3NzaWJsZSByZW1vdmFsIGZyb20gdHhsaXN0LiAqL1xuK1x0XHRlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsKGVwaSk7XG4gXHRcdGlmIChlcF9pdGVtX3BvbGwoZXBpLCBcdTAwMjZwdCwgZGVwdGggKyAxKSkge1xuIFx0XHRcdHJlcyA9IEVQT0xMSU4gfCBFUE9MTFJETk9STTtcbitcdFx0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHQvKlxuQEAgLTE0OTcsNiArMTU3MSw5IEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IGV3YWtlID0gMDtcbiBcbitcdGlmIChlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwKGVwaSwgcG9sbGZsYWdzKSlcbitcdFx0cmV0dXJuIDE7XG4rXG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZlcC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRlcF9zZXRfYnVzeV9wb2xsX25hcGlfaWQoZXBpKTtcbkBAIC0xNTI5LDExICsxNjA2LDEzIEBAIHN0YXRpYyBpbnQgZXBfcG9sbF9jYWxsYmFjayh3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2XG4gXHRcdGlmICghZXBpX29uX292Zmxpc3QoZXBpKSkge1xuIFx0XHRcdGVwaS1cdTAwM2VvdmZsaXN0X25leHQgPSBSRUFEX09OQ0UoZXAtXHUwMDNlb3ZmbGlzdCk7XG4gXHRcdFx0V1JJVEVfT05DRShlcC1cdTAwM2VvdmZsaXN0LCBlcGkpO1xuK1x0XHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRcdGVwX3BtX3N0YXlfYXdha2VfcmN1KGVwaSk7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoIWVwX2lzX2xpbmtlZChlcGkpKSB7XG4gXHRcdC8qIEluIHRoZSB1c3VhbCBjYXNlLCBhZGQgZXZlbnQgdG8gcmVhZHkgbGlzdC4gKi9cbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlX3JjdShlcGkpO1xuIFx0fVxuIFxuQEAgLTE4NDAsNiArMTkxOSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZXBpdGVtICplcF9hbGxvY19lcGl0ZW0oc3RydWN0IGV2ZW50cG9sbCAqZXAsXG4gXHRlcGktXHUwMDNlZmZkID0gKnRmO1xuIFx0ZXBpLVx1MDAzZWV2ZW50ID0gKmV2ZW50O1xuIFx0ZXBpX2NsZWFyX292Zmxpc3QoZXBpKTtcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rXHRlcGktXHUwMDNlaXNfZXZlbnRmZCA9IGlzX2V2ZW50ZmRfZmlsZSh0ZmlsZSk7XG4rI2VuZGlmXG4gXG4gXHRyZXR1cm4gZXBpO1xuIH1cbkBAIC0xOTU2LDYgKzIwMzgsNyBAQCBzdGF0aWMgaW50IGVwX2luc2VydChzdHJ1Y3QgZXBfY3RsX2N0eCAqY3R4LCBzdHJ1Y3QgZXZlbnRwb2xsICplcCxcbiBcbiBcdGlmIChyZXZlbnRzIFx1MDAyNlx1MDAyNiAhZXBfaXNfbGlua2VkKGVwaSkpIHtcbiBcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdGVwX3NldF9ub3RpZmllZChlcGkpO1xuIFx0XHRlcF9wbV9zdGF5X2F3YWtlKGVwaSk7XG4gXG4gXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmVwLVx1MDAzZXdxKSlcbkBAIC0yMDMxLDYgKzIxMTQsNyBAQCBzdGF0aWMgaW50IGVwX21vZGlmeShzdHJ1Y3QgZXZlbnRwb2xsICplcCwgc3RydWN0IGVwaXRlbSAqZXBpLFxuIFx0XHRzcGluX2xvY2tfaXJxKFx1MDAyNmVwLVx1MDAzZWxvY2spO1xuIFx0XHRpZiAoIWVwX2lzX2xpbmtlZChlcGkpKSB7XG4gXHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZlcGktXHUwMDNlcmRsbGluaywgXHUwMDI2ZXAtXHUwMDNlcmRsbGlzdCk7XG4rXHRcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFxuIFx0XHRcdC8qIE5vdGlmeSB3YWl0aW5nIHRhc2tzIHRoYXQgZXZlbnRzIGFyZSBhdmFpbGFibGUgKi9cbkBAIC0yMDg0LDYgKzIxNjgsMTIgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdF9fcG1fcmVsYXgod3MpO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIENsZWFyIG5vdGlmaWVkIHdoaWxlIGVwaSBpcyBzdGlsbCBvbiB0eGxpc3QuIEEgY2FsbGJhY2sgdGhhdFxuK1x0ICogcmFjZXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcXVldWUgbXVzdCB0YWtlIHRoZSBzbG93IHBhdGggYW5kXG4rXHQgKiBwdWJsaXNoIHRoZSBldmVudCB0aHJvdWdoIG92Zmxpc3QuXG4rXHQgKi9cbitcdGVwX2V2ZW50ZmRfcHJlcGFyZV9yZXBvbGwoZXBpKTtcbiBcdGxpc3RfZGVsX2luaXQoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmspO1xuIFxuIFx0LypcbkBAIC0yMTA0LDYgKzIxOTQsNyBAQCBzdGF0aWMgaW50IGVwX2RlbGl2ZXJfZXZlbnQoc3RydWN0IGV2ZW50cG9sbCAqZXAsIHN0cnVjdCBlcGl0ZW0gKmVwaSxcbiBcdFx0ICogYXR0ZW1wdC5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkKFx1MDAyNmVwaS1cdTAwM2VyZGxsaW5rLCBzY2FuX2JhdGNoKTtcbitcdFx0ZXBfc2V0X25vdGlmaWVkKGVwaSk7XG4gXHRcdGVwX3BtX3N0YXlfYXdha2UoZXBpKTtcbiBcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHR9XG5AQCAtMjEyMCw2ICsyMjExLDcgQEAgc3RhdGljIGludCBlcF9kZWxpdmVyX2V2ZW50KHN0cnVjdCBldmVudHBvbGwgKmVwLCBzdHJ1Y3QgZXBpdGVtICplcGksXG4gXHRcdCAqIGR1cmluZyBzY2Fucy5cbiBcdFx0ICovXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZXBpLVx1MDAzZXJkbGxpbmssIFx1MDAyNmVwLVx1MDAzZXJkbGxpc3QpO1xuK1x0XHRlcF9zZXRfbm90aWZpZWQoZXBpKTtcbiBcdFx0ZXBfcG1fc3RheV9hd2FrZShlcGkpO1xuIFx0fVxuIFx0cmV0dXJuIDE7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuaW5kZXggZTMyYmVlNDM0NWZiOS4uMGY1ZDBmNTg5ZDkyNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaFxuQEAgLTQwLDYgKzQwLDEwIEBAIGludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3XG4gXHRcdFx0XHQgIF9fdTY0ICpjbnQpO1xuIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudCk7XG4gXG4rI2lmZGVmIENPTkZJR19FVkVOVEZEX09QVFxuK2Jvb2wgaXNfZXZlbnRmZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlKTtcbisjZW5kaWZcbitcbiBzdGF0aWMgaW5saW5lIGJvb2wgZXZlbnRmZF9zaWduYWxfYWxsb3dlZCh2b2lkKVxuIHtcbiBcdHJldHVybiAhY3VycmVudC1cdTAwM2Vpbl9ldmVudGZkO1xuQEAgLTgyLDYgKzg2LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxuIFxuIH1cbiBcbisjaWZkZWYgQ09ORklHX0VWRU5URkRfT1BUXG4rc3RhdGljIGlubGluZSBib29sIGlzX2V2ZW50ZmRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSlcbit7XG4rXHRyZXR1cm4gZmFsc2U7XG4rfVxuKyNlbmRpZlxuK1xuICNlbmRpZlxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmRpZmYgLS1naXQgYS9pbml0L0tjb25maWcgYi9pbml0L0tjb25maWdcbmluZGV4IDEwZjIwMTNiNTMyMTYuLmM3MzRkZmUzNDkwYzcgMTAwNjQ0XG4tLS0gYS9pbml0L0tjb25maWdcbisrKyBiL2luaXQvS2NvbmZpZ1xuQEAgLTE4OTYsNiArMTg5NiwxOCBAQCBjb25maWcgRVZFTlRGRFxuIFxuIFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIFxuK2NvbmZpZyBFVkVOVEZEX09QVFxuK1x0Ym9vbCBcIk9wdGltaXplIGV2ZW50ZmQvZXBvbGwgaW50ZXJhY3Rpb25cIiBpZiBFWFBFUlRcbitcdGRlcGVuZHMgb24gRVZFTlRGRCBcdTAwMjZcdTAwMjYgRVBPTExcbitcdGRlZmF1bHQgblxuK1x0aGVscFxuK1x0ICBFbmFibGVzIGEgbG9ja2xlc3MgZmFzdC1wYXRoIGluIGVwX3BvbGxfY2FsbGJhY2sgZm9yIGV2ZW50ZmRcbitcdCAgZmlsZXMsIHJlZHVjaW5nIGVwLVx1MDAzZWxvY2sgY29udGVudGlvbiB1bmRlciBjb25jdXJyZW50IHdvcmtsb2Fkcy5cbitcdCAgRnVsbCBtZW1vcnkgYmFycmllcnMgcHJldmVudCBsb3N0IHdha2V1cHMgd2hlbiBldmVudGZkIHVwZGF0ZXNcbitcdCAgcmFjZSB3aXRoIGVwb2xsIHJlLXBvbGxpbmcuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4gY29uZmlnIFNITUVNXG4gXHRib29sIFwiVXNlIGZ1bGwgc2htZW0gZmlsZXN5c3RlbVwiIGlmIEVYUEVSVFxuIFx0ZGVmYXVsdCB5XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMzowNzoyMS4wNzUwNjY5NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODI3Nzc3OTk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBFdmVudGZkL0Vwb2xsIE9wdGltaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIGludHJvZHVjaW5nIGEgbmV3IGNvbmZpZywgYENPTkZJR19FVkVOVEZEX09QVGAsIHdoaWNoIGlzIGFsbCBhYm91dCBvcHRpbWl6aW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBgZXZlbnRmZGAgYW5kIGBlcG9sbGAuIFNwZWNpZmljYWxseSwgdGhpcyBpbnZvbHZlcyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBgZXBfcG9sbF9jYWxsYmFja2AgZm9yIGBldmVudGZkYCBmaWxlcy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMsIHNvIGZ1enppbmcgaXMgYSBtdXN0LlxuXG5GaXJzdCwgbGV0J3MgbG9vayBhdCB3aGF0J3MgYmVlbiBjaGFuZ2VkOiBgZnMvZXZlbnRmZC5jYCBhbmQgYGZzL2V2ZW50cG9sbC5jYCBhcmUgdGhlIG1haW4gdGFyZ2V0cy4gIGBldmVudGZkLmNgIG5vdyBpbmNsdWRlcyBhbiBgZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsYCAod2l0aCBhbiBgc21wX21iKClgIGlmIHRoZSBuZXcgY29uZmlnIGlzIGVuYWJsZWQpLCBhbmQgaW50cm9kdWNlcyBgaXNfZXZlbnRmZF9maWxlYC4gYGV2ZW50cG9sbC5jYCBnZXRzIHNvbWUgbmV3IGZ1bmN0aW9ucyB0b28sIGxpa2UgYGVwX3NldF9ub3RpZmllZGAsIGBlcF9ldmVudGZkX3ByZXBhcmVfcmVwb2xsYCwgYW5kIGBlcF9ldmVudGZkX2NhbGxiYWNrX2Nhbl9za2lwYCwgd2hpY2ggYXJlIGFsbCBwYXJ0IG9mIGVwb2xsJ3Mgc2Nhbm5pbmcgYW5kIGNhbGxiYWNrIHJvdXRpbmVzLiBUaGVyZSdzIGFsc28gYSBkZWNsYXJhdGlvbiBmb3IgYGlzX2V2ZW50ZmRfZmlsZWAgaW4gdGhlIGBldmVudGZkLmhgIGhlYWRlciBhbmQgdGhlIEtjb25maWcgaGFzIGJlZW4gdXBkYXRlZC5cblxuUmlnaHQsIHNvIHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIElkZWFsbHksIHdlIHdhbnQgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiAgSSBzdGFydGVkIGJ5IGxpc3RpbmcgZXZlcnl0aGluZyB0aGF0IHdhcyB0b3VjaGVkLiBTbywgZnJvbSB0aGUgZmlsZXMsIHdlIGhhdmU6XG5cbiogICBgZXZlbnRmZF93YWtlX3VwX2xvY2tlZF9wb2xsYCAoc3RhdGljIGlubGluZSlcbiogICBgZXZlbnRmZF9zaWduYWxfbWFza2BcbiogICBgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVgXG4qICAgYGV2ZW50ZmRfcmVhZGBcbiogICBgZXZlbnRmZF93cml0ZWBcbiogICBgZXBfcG9sbF9jYWxsYmFja2BcbiogICBgZXBfZG9uZV9zY2FuYFxuKiAgIGBfX2VwX2V2ZW50cG9sbF9wb2xsYFxuKiAgIGBlcF9hbGxvY19lcGl0ZW1gXG4qICAgYGVwX2luc2VydGBcbiogICBgZXBfbW9kaWZ5YFxuKiAgIGBlcF9kZWxpdmVyX2V2ZW50YFxuKiAgIGBpc19ldmVudGZkX2ZpbGVgXG5cbk9rYXksIGEgY291cGxlIG9mIHRob3NlIGFyZSBzdGF0aWMgaW5saW5lIHNvIHRoZXkgd29uJ3QgaGF2ZSB1bmlxdWUgc3ltYm9sIGFkZHJlc3Nlcy4gQnV0IGBldmVudGZkX3NpZ25hbF9tYXNrYCwgYGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlYCwgYW5kIGBpc19ldmVudGZkX2ZpbGVgIGFyZSBhbGwgZ29vZCBjYW5kaWRhdGVzIHNpbmNlIHRoZXkgYXJlIG5vbi1zdGF0aWMuIFRoZSBmaWxlIG9wZXJhdGlvbnMgYGV2ZW50ZmRfcmVhZGAgYW5kIGBldmVudGZkX3dyaXRlYCBhcmUgc3RhdGljLCBidXQgdGhleSdyZSBzdGlsbCBhY3R1YWwgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbnMsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGVtLiBUaGUgcmVtYWluaW5nIGVwb2xsLXJlbGF0ZWQgZnVuY3Rpb25zLCBgZXBfcG9sbF9jYWxsYmFja2AsIGBlcF9pbnNlcnRgLCBgZXBfbW9kaWZ5YCwgYW5kIGBlcF9kZWxpdmVyX2V2ZW50YCBhcmUgc3RhdGljLCBidXQgdGhleSBhcmVuJ3QgaW5saW5lZCwgYW5kIGFyZSBsaWtlbHkgdG8gYmUgY3JpdGljYWwgaW4gdHJpZ2dlcmluZyB0aGUgb3B0aW1pemF0aW9uJ3MgbG9naWMuIFNvIHRoYXQgd2lsbCBiZSBvdXIgbGlzdDpcblxuKiAgIGBldmVudGZkX3NpZ25hbF9tYXNrYFxuKiAgIGBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZWBcbiogICBgZXZlbnRmZF9yZWFkYFxuKiAgIGBldmVudGZkX3dyaXRlYFxuKiAgIGBpc19ldmVudGZkX2ZpbGVgXG4qICAgYGVwX2RvbmVfc2NhbmBcbiogICBgX19lcF9ldmVudHBvbGxfcG9sbGBcbiogICBgZXBfcG9sbF9jYWxsYmFja2BcbiogICBgZXBfYWxsb2NfZXBpdGVtYFxuKiAgIGBlcF9pbnNlcnRgXG4qICAgYGVwX21vZGlmeWBcbiogICBgZXBfZGVsaXZlcl9ldmVudGBcblxuTm93IGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgRVZFTlRGRF9PUFRgLCB3aGljaCBkZXBlbmRzIG9uIGBFVkVOVEZEYCBhbmQgYEVQT0xMYC4gIFNvLCB3ZSdsbCBuZWVkIHRvIGVuYWJsZSBhbGwgb2YgdGhvc2UsIHdpdGggYEVWRU5URkRfT1BUYCBiZWluZyB0aGUgY3JpdGljYWwgb25lIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LlxuXG5Mb29rcyBsaWtlIHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBsZXQncyBjYWxsIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTUwLCJPdXRwdXRUb2tlbnMiOjIwNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMzowNzozOS4zNTI4NDk1MzFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzQwMDUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVZFTlRGRF9PUFRcIixcbiAgICBcIkVWRU5URkRcIixcbiAgICBcIkVQT0xMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXZlbnRmZF9zaWduYWxfbWFza1wiLFxuICAgIFwiZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWVcIixcbiAgICBcImV2ZW50ZmRfcmVhZFwiLFxuICAgIFwiZXZlbnRmZF93cml0ZVwiLFxuICAgIFwiaXNfZXZlbnRmZF9maWxlXCIsXG4gICAgXCJlcF9kb25lX3NjYW5cIixcbiAgICBcIl9fZXBfZXZlbnRwb2xsX3BvbGxcIixcbiAgICBcImVwX3BvbGxfY2FsbGJhY2tcIixcbiAgICBcImVwX2FsbG9jX2VwaXRlbVwiLFxuICAgIFwiZXBfaW5zZXJ0XCIsXG4gICAgXCJlcF9tb2RpZnlcIixcbiAgICBcImVwX2RlbGl2ZXJfZXZlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBvcHRpbWl6YXRpb24gZm9yIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGV2ZW50ZmQgYW5kIGVwb2xsLCBhZGRpbmcgYSBsb2NrbGVzcyBmYXN0LXBhdGggaW4gZXBfcG9sbF9jYWxsYmFjay4gVGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyBpbiBldmVudGZkIGFuZCBldmVudHBvbGwgc3Vic3lzdGVtcywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyB0byBlbnN1cmUgbm8gcmFjZSBjb25kaXRpb25zIG9yIGxvc3Qgd2FrZXVwcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFVkVOVEZEX09QVFwiLFxuICAgIFwiRVZFTlRGRFwiLFxuICAgIFwiRVBPTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJldmVudGZkX3NpZ25hbF9tYXNrXCIsXG4gICAgXCJldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZVwiLFxuICAgIFwiZXZlbnRmZF9yZWFkXCIsXG4gICAgXCJldmVudGZkX3dyaXRlXCIsXG4gICAgXCJpc19ldmVudGZkX2ZpbGVcIixcbiAgICBcImVwX2RvbmVfc2NhblwiLFxuICAgIFwiX19lcF9ldmVudHBvbGxfcG9sbFwiLFxuICAgIFwiZXBfcG9sbF9jYWxsYmFja1wiLFxuICAgIFwiZXBfYWxsb2NfZXBpdGVtXCIsXG4gICAgXCJlcF9pbnNlcnRcIixcbiAgICBcImVwX21vZGlmeVwiLFxuICAgIFwiZXBfZGVsaXZlcl9ldmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIG9wdGltaXphdGlvbiBmb3IgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gZXZlbnRmZCBhbmQgZXBvbGwsIGFkZGluZyBhIGxvY2tsZXNzIGZhc3QtcGF0aCBpbiBlcF9wb2xsX2NhbGxiYWNrLiBUaGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGluIGV2ZW50ZmQgYW5kIGV2ZW50cG9sbCBzdWJzeXN0ZW1zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIHRvIGVuc3VyZSBubyByYWNlIGNvbmRpdGlvbnMgb3IgbG9zdCB3YWtldXBzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowktrqr[1] Phase: Succeeded StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:07:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2] Phase: Succeeded StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:42:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 03:07:51 +0000 UTC FinishedAt: 2026-08-03 03:07:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.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-workflowktrqr/series-workflowktrqr-convert-artifact-1573856717/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 03:08:01 +0000 UTC FinishedAt: 2026-08-03 03:30:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 03:08:01 +0000 UTC FinishedAt: 2026-08-03 03:30:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*cc49a45f-3842-4fae-a377-98d4a0ea93cb,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-workflowktrqr/series-workflowktrqr-convert-artifact-1573856717/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": "cf7fa72b-6816-4ac4-a963-2f4a729b1a29", "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-workflowktrqr/series-workflowktrqr-build-action-3754124867/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 03:08:01 +0000 UTC FinishedAt: 2026-08-03 03:30:23 +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:*cc49a45f-3842-4fae-a377-98d4a0ea93cb,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-workflowktrqr/series-workflowktrqr-convert-artifact-1573856717/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": "cf7fa72b-6816-4ac4-a963-2f4a729b1a29", "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-workflowktrqr/series-workflowktrqr-build-action-3754124867/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 03:30:33 +0000 UTC FinishedAt: 2026-08-03 03:30:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 03:30:33 +0000 UTC FinishedAt: 2026-08-03 03:30:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 03:30:33 +0000 UTC FinishedAt: 2026-08-03 03:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 03:30:33 +0000 UTC FinishedAt: 2026-08-03 03:30:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.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-workflowktrqr/series-workflowktrqr-convert-artifact-735238696/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 03:30:44 +0000 UTC FinishedAt: 2026-08-03 03:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 03:30:44 +0000 UTC FinishedAt: 2026-08-03 03:32:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf7fa72b-6816-4ac4-a963-2f4a729b1a29,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-workflowktrqr/series-workflowktrqr-build-action-3754124867/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-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 03:32:51 +0000 UTC FinishedAt: 2026-08-03 03:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 03:32:51 +0000 UTC FinishedAt: 2026-08-03 03:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 03:32:51 +0000 UTC FinishedAt: 2026-08-03 03:42:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 03:32:51 +0000 UTC FinishedAt: 2026-08-03 03:42: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:*cc49a45f-3842-4fae-a377-98d4a0ea93cb,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-workflowktrqr/series-workflowktrqr-convert-artifact-735238696/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": "3231313d-9fcf-48a6-8b17-8434ff875ad2", "success": false },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-workflowktrqr/series-workflowktrqr-build-action-3676035028/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 03:32:51 +0000 UTC FinishedAt: 2026-08-03 03:42:26 +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:*cc49a45f-3842-4fae-a377-98d4a0ea93cb,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-workflowktrqr/series-workflowktrqr-convert-artifact-735238696/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": "3231313d-9fcf-48a6-8b17-8434ff875ad2", "success": false },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-workflowktrqr/series-workflowktrqr-build-action-3676035028/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Failed StartedAt: 2026-08-03 03:42:36 +0000 UTC FinishedAt: 2026-08-03 03:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowktrqr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["eventfd_signal_mask","eventfd_ctx_remove_wait_queue","eventfd_read","eventfd_write","is_eventfd_file","ep_done_scan","__ep_eventpoll_poll","ep_poll_callback","ep_alloc_epitem","ep_insert","ep_modify","ep_deliver_event"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6cdd5e04412e9d15455a4c1262fe3c0f5ec5362d","config_name":"upstream-apparmor-kasan.config","enable_configs":["EVENTFD_OPT","EVENTFD","EPOLL"],"series_id":"24d98c96-0d95-4055-820d-d990e00aa38e","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Failed StartedAt: 2026-08-03 03:42:36 +0000 UTC FinishedAt: 2026-08-03 03:42:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}