Name: series-workflowl4528 Phase: Succeeded StartedAt: 2026-07-17 20:33:18 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[0] Phase: Succeeded StartedAt: 2026-07-17 20:33:18 +0000 UTC FinishedAt: 2026-07-17 20:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 20:33:18 +0000 UTC FinishedAt: 2026-07-17 20:53:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f", "config_name": "upstream-apparmor-kasan.config", "series_id": "68c68be0-30d3-4657-8fa3-12913df5b9d7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sys_prctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3lzX3ByY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2ZGU1NGMzZGVjYjNjMTNmMjk0ZWE5MTFlOWM4Y2VkY2NmMmVmZDI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjA6NTM6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXG5pbmRleCAwMDU2YWI4MWZiYzM5YS4uYzc4MjQzZWQzYzJhOTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuY1xuQEAgLTI3OCw3ICYjNDM7Mjc4LDcgQEAgdm9pZCBwcm9jX2NvbW1fY29ubmVjdG9yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcdGV2LVx1MDAzZXdoYXQgPSBQUk9DX0VWRU5UX0NPTU07XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay1cdTAwM2VwaWQ7XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZXYtXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gXG4gXHRtZW1jcHkoXHUwMDI2bXNnLVx1MDAzZWlkLCBcdTAwMjZjbl9wcm9jX2V2ZW50X2lkLCBzaXplb2YobXNnLVx1MDAzZWlkKSk7XG4gXHRtc2ctXHUwMDNlYWNrID0gMDsgLyogbm90IHVzZWQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuaW5kZXggOGRmMjBiMDIxOGE5ZWUuLmQ1MDE2NTdhZDgwMTI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuQEAgLTMxMiw3ICYjNDM7MzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmo7XG4gXHRjaGFyIHRhc2tfY29tbVtUQVNLX0NPTU1fTEVOXTtcbiBcbi1cdGdldF90YXNrX2NvbW0odGFza19jb21tLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xuIFx0aWYgKCFvYmopXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXG5pbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCxcbiBcdC8qIFRoaXMgcmVmZXJlbmNlIGdldHMgcmVsZWFzZWQgaW4gYW1ka2ZkX2ZlbmNlX3JlbGVhc2UgKi9cbiBcdG1tZ3JhYihtbSk7XG4gXHRmZW5jZS1cdTAwM2VtbSA9IG1tO1xuLVx0Z2V0X3Rhc2tfY29tbShmZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZChmZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZmVuY2UtXHUwMDNlbG9jayk7XG4gXHRmZW5jZS1cdTAwM2Vzdm1fYm8gPSBzdm1fYm87XG4gXHRmZW5jZS1cdTAwM2Vjb250ZXh0X2lkID0gY29udGV4dF9pZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXG5pbmRleCBmNmI3NTIyYzNjODJmZi4uMDQ2MjQzZTNhM2NkMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcbkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRldl9mZW5jZS1cdTAwM2VldmZfbWdyID0gZXZmX21ncjtcbi1cdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWxvY2spO1xuIFx0ZG1hX2ZlbmNlX2luaXQ2NChcdTAwMjZldl9mZW5jZS1cdTAwM2ViYXNlLCBcdTAwMjZhbWRncHVfZXZpY3Rpb25fZmVuY2Vfb3BzLFxuIFx0XHRcdCBcdTAwMjZldl9mZW5jZS1cdTAwM2Vsb2NrLCBldmZfbWdyLVx1MDAzZWV2X2ZlbmNlX2N0eCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcbmluZGV4IDc2NGNkNDk1MDQwODNjLi5lNjBhNDcwYjU3ZWNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXG5AQCAtNDQ0NSw3ICYjNDM7NDQ0NSw3IEBAIGludCBhbWRncHVfcmFzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4gXHR9XG4gXG4gXHRjb24tXHUwMDNlaW5pdF90YXNrX3BpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbShjb24tXHUwMDNlaW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbi1cdTAwM2Vpbml0X3Rhc2tfY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y29uLVx1MDAzZWNyaXRpY2FsX3JlZ2lvbl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNvbi1cdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xuaW5kZXggZjc0YWQzNzhlNDA3NDIuLmY0MTg1NzQ3MzY0MWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jXG5AQCAtODUsNyAmIzQzOzg1LDcgQEAgaW50IGFtZGdwdV91c2VycV9mZW5jZV9kcml2ZXJfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4gXG4gXHRmZW5jZV9kcnYtXHUwMDNlYWRldiA9IGFkZXY7XG4gXHRmZW5jZV9kcnYtXHUwMDNlY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpO1xuLVx0Z2V0X3Rhc2tfY29tbShmZW5jZV9kcnYtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZmVuY2VfZHJ2LVx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHQqZmVuY2VfZHJ2X3JlcSA9IGZlbmNlX2RydjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXG5pbmRleCBiYjk5YjdjM2EwMTBlYS4uODRjMGIzMTBlOWMxNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmNcbkBAIC0yNTQyLDEwICYjNDM7MjU0MiwxMCBAQCB2b2lkIGFtZGdwdV92bV9zZXRfdGFza19pbmZvKHN0cnVjdCBhbWRncHVfdm0gKnZtKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0odm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQodm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2V0Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbSh2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNlcHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQodm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmNcbmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xuQEAgLTU2Myw3ICYjNDM7NTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLFxuIFx0fVxuIFxuIFx0dnJlcy1cdTAwM2V0YXNrLnBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbSh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQodnJlcy1cdTAwM2V0YXNrLmNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnZyZXMtXHUwMDNldnJlc19ub2RlLCBcdTAwMjZtZ3ItXHUwMDNlYWxsb2NhdGVkX3ZyZXNfbGlzdCk7XG4gXG4gXHRpZiAoYm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUyBcdTAwMjZcdTAwMjYgYWRqdXN0X2RjY19zaXplKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbmluZGV4IDY4ZWRlN2E3MjVlMjE5Li5lOGM1YzM2MDFiZjFkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbkBAIC0yOSw3ICYjNDM7MjksNyBAQCBpbnQgbGltYV9jdHhfY3JlYXRlKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2LCBzdHJ1Y3QgbGltYV9jdHhfbWdyICptZ3IsIHUzMiAqaWQpXG4gXHRcdGdvdG8gZXJyX291dDA7XG4gXG4gXHRjdHgtXHUwMDNlcGlkID0gdGFza19waWRfbnIoY3VycmVudCk7XG4tXHRnZXRfdGFza19jb21tKGN0eC1cdTAwM2VwbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoY3R4LVx1MDAzZXBuYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jXG5pbmRleCAzYTdmY2U0Mjg4OTg3Yi4uMTE5MzZjNGQzNTczNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xuQEAgLTM2LDcgJiM0MzszNiw3IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldixcbiBcdFx0XHRcdFx0c3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvKVxuIHtcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQoYm8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBmZGV2LVx1MDAzZWRlYnVnZnMuZ2Vtc19sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Ym8tXHUwMDNlZGVidWdmcy5ub2RlLCBcdTAwMjZwZmRldi1cdTAwM2VkZWJ1Z2ZzLmdlbXNfbGlzdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbkBAIC01NCw3ICYjNDM7NTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibylcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcbiBcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQoYm8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnB0ZGV2LVx1MDAzZWdlbXMubG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmJvLVx1MDAzZWRlYnVnZnMubm9kZSwgXHUwMDI2cHRkZXYtXHUwMDNlZ2Vtcy5ub2RlKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmNcbmluZGV4IDI5OGIwNDZjOTVlZGI4Li44MWM0NjU5YzBkN2JlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXG5AQCAtMzYxNyw3ICYjNDM7MzYxNyw3IEBAIHN0YXRpYyB2b2lkIGdyb3VwX2luaXRfdGFza19pbmZvKHN0cnVjdCBwYW50aG9yX2dyb3VwICpncm91cClcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyO1xuIFxuIFx0Z3JvdXAtXHUwMDNldGFza19pbmZvLnBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0Z2V0X3Rhc2tfY29tbShncm91cC1cdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzayk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXG5pbmRleCAzZDhlNGNjZGI3YzFmOC4uYjEwYTBlMWNiMWVkNzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmNcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fZ3B1X2NyZWF0ZV9jb250ZXh0X2xvY2tlZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LFxuIFx0fSBlbHNlIHtcbiBcdFx0Y2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dO1xuIFxuLVx0XHRnZXRfdGFza19jb21tKGRiZ25hbWUsIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoZGJnbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdFx0dmlydGlvX2dwdV9jbWRfY29udGV4dF9jcmVhdGUodmdkZXYsIHZmcHJpdi1cdTAwM2VjdHhfaWQsXG4gXHRcdFx0XHRcdCAgICAgIHZmcHJpdi1cdTAwM2Vjb250ZXh0X2luaXQsIHN0cmxlbihkYmduYW1lKSxcbiBcdFx0XHRcdFx0ICAgICAgZGJnbmFtZSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9od3RyYWNpbmcvc3RtL2NvcmUuYyBiL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbmluZGV4IGY0OGM2YThhMDY1NGU5Li5jNzcxNTQzOTk2NGU4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbkBAIC02MzQsNyAmIzQzOzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0XHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFx0XHRjaGFyICppZHNbXSA9IHsgY29tbSwgXCYjMzQ7ZGVmYXVsdFwmIzM0OywgTlVMTCB9O1xuIFxuLVx0XHRnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cdTAwM2VzdG0sIFx1MDAyNnN0bWYtXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xuIFx0XHQvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcbmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfYXVkaXQuY1xuQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyB2b2lkIHR0eV9hdWRpdF9sb2coY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGRldl90IGRldixcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyVzIHBpZD0ldSB1aWQ9JXUgYXVpZD0ldSBzZXM9JXUgbWFqb3I9JWQgbWlub3I9JWQgY29tbT1cJiMzNDssXG4gXHRcdFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcbiBcdFx0XHQgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7XG4tXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xuJiM0MztcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBkYXRhPVwmIzM0Oyk7XG4gXHRhdWRpdF9sb2dfbl9oZXgoYWIsIGRhdGEsIHNpemUpO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC0xNTU3LDcgJiM0MzsxNTU3LDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwLVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmM0ZDRlNTlmZjM0ZDFiIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0xMzcxLDcgJiM0MzsxMzcxLDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwLVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYXJyYXkuYyBiL2ZzL3Byb2MvYXJyYXkuY1xuaW5kZXggNDc5ZWE4Y2I0ZWY0M2QuLjA0OTBiOWVmMjc4ODUwIDEwMDY0NFxuLS0tIGEvZnMvcHJvYy9hcnJheS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9wcm9jL2FycmF5LmNcbkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKVxuIFx0ZWxzZSBpZiAocC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfS1RIUkVBRClcbiBcdFx0Z2V0X2t0aHJlYWRfY29tbSh0Y29tbSwgc2l6ZW9mKHRjb21tKSwgcCk7XG4gXHRlbHNlXG4tXHRcdGdldF90YXNrX2NvbW0odGNvbW0sIHApO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQodGNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4gXG4gXHRpZiAoZXNjYXBlKVxuIFx0XHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFwmIzM0O1xcblxcXFxcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxuaW5kZXggN2IzOGVlMmU3OTEzYmUuLmRlZTgyZTNjMzUwYWY1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcbkBAIC01OCw3ICYjNDM7NTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XG4gXHRkbyB7XHRcXFxuIFx0XHRjaGFyIGNvbW1bVEFTS19DT01NX0xFTl07XHRcXFxuIFx0XHQvKiBUaGlzIHdpbGwgYWx3YXlzIGJlIE5VTCB0ZXJtaW5hdGVkLiAqLyBcXFxuLVx0XHRtZW1jcHkoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBzaXplb2YoY29tbSkpOyBcXFxuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oY29tbSwgY3VycmVudCwgc2l6ZW9mKGNvbW0pKTsgXFxcbiBcdFx0cHJpbnRrX3JhdGVsaW1pdGVkKExldmVsIFwmIzM0O2NvcmVkdW1wOiAlZCglKnBFKTogXCYjMzQ7IEZvcm1hdCBcJiMzNDtcXG5cJiMzNDssXHRcXFxuIFx0XHRcdHRhc2tfdGdpZF92bnIoY3VycmVudCksIChpbnQpc3RybGVuKGNvbW0pLCBjb21tLCAjI19fVkFfQVJHU19fKTtcdFxcXG4gXHR9IHdoaWxlICgwKVx0XFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcbmluZGV4IDM3M2JjYzA1OThkMTBiLi4wZjFiNDBhNWRiYzYwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXG5AQCAtMzIzLDYgJiM0MzszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcbiAgKi9cbiBlbnVtIHtcbiBcdFRBU0tfQ09NTV9MRU4gPSAxNixcbiYjNDM7XHRUQVNLX0NPTU1fRVhUX0xFTiA9IDY0LFxuIH07XG4gXG4gZXh0ZXJuIHZvaWQgc2NoZWRfdGljayh2b2lkKTtcbkBAIC0xMTc4LDcgJiM0MzsxMTc5LDcgQEAgc3RydWN0IHRhc2tfc3RydWN0IHtcbiBcdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcbiBcdCAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkXG4gXHQgKi9cbi1cdGNoYXJcdFx0XHRcdGNvbW1bVEFTS19DT01NX0xFTl07XG4mIzQzO1x0Y2hhclx0XHRcdFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXG4gXHRzdHJ1Y3QgbmFtZWlkYXRhXHRcdCpuYW1laWRhdGE7XG4gXG5AQCAtMjAxNywyOCAmIzQzOzIwMTgsMjAgQEAgZXh0ZXJuIHZvaWQga2lja19wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTtcbiBcbiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7XG4gI2RlZmluZSBzZXRfdGFza19jb21tKHRzaywgZnJvbSkgKHtcdFx0XHRcXFxuLVx0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSAhPSBUQVNLX0NPTU1fTEVOKTtcdFxcXG4mIzQzO1x0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSBcdTAwM2MgVEFTS19DT01NX0xFTik7XHRcXFxuIFx0X19zZXRfdGFza19jb21tKHRzaywgZnJvbSwgZmFsc2UpO1x0XHRcXFxuIH0pXG4gXG4gLypcbi0gKiAtIFdoeSBub3QgdXNlIHRhc2tfbG9jaygpP1xuLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVyc1xuLSAqICAgZG9lc24mIzM5O3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2Vcbi0gKiAgIGNvbmRpdGlvbiBjb3VsZCBsZWFkIHRvIGxvbmctdGVybSBtaXhlZCByZXN1bHRzLlxuLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXNcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlblxuLSAqICAgcmVhZGVyIGFuZCB3cml0ZXIgaXMgbm90IGFuIGlzc3VlLlxuLSAqXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXG4tICogICBTaW5jZSB0aGUgY2FsbGVycyBkb24mIzM5O3QgcGVyZm9ybSBhbnkgcmV0dXJuIHZhbHVlIGNoZWNrcywgdGhpcyBzYWZlZ3VhcmQgaXNcbi0gKiAgIG5lY2Vzc2FyeS5cbiYjNDM7ICogQ29weSB0YXNrIG5hbWUgdG8gYSBidWZmZXIuIEZpbmFsIHJlc3VsdCBpcyBhbHdheXMgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuXG4gICovXG4tI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoe1x0XHRcdFxcXG4tXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJ1ZikgXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1x0XFxcbi1cdHN0cnNjcHlfcGFkKGJ1ZiwgKHRzayktXHUwMDNlY29tbSk7XHRcdFx0XFxcbi1cdGJ1ZjtcdFx0XHRcdFx0XHRcXFxuLX0pXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3QgY2hhciAqX3NyYyA9IHRzay1cdTAwM2Vjb21tO1xuJiM0MztcbiYjNDM7XHRtZW1jcHkoZHN0LCBfc3JjLCBsZW4pO1xuJiM0MztcdGRzdFtsZW4gLSAxXSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO31cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2NoZWR1bGVyX2lwaSh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaCBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oXG5pbmRleCBlMGQ4MzhjOWNlOTM4Mi4uOWIwMDk0ZmE0NGM2NDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcbkBAIC02MzcsMTAgJiM0Mzs2MzcsMTAgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcClcbiAgKlx0KlxuICAqXG4gICpcdFRQX2Zhc3RfYXNzaWduKFxuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7ICpcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xuICAqXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3ByaW9cdD0gcHJldi1cdTAwM2VwcmlvO1xuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldi1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7ICpcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2VwcmV2X2NvbW0sIHByZXYsIFRBU0tfQ09NTV9MRU4pO1xuICAqXHRcdF9fZW50cnktXHUwMDNlbmV4dF9waWRcdD0gbmV4dC1cdTAwM2VwaWQ7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3ByaW9cdD0gbmV4dC1cdTAwM2VwcmlvO1xuICAqXHQpLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG5pbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG5AQCAtMjEzLDcgJiM0MzsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLFxuIFxuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgcnEtXHUwMDNlY21kX2ZsYWdzKTtcbiBcdFx0X19nZXRfc3RyKGNtZClbMF0gPSAmIzM5O1xcMCYjMzk7O1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCYjMzQ7JWQsJWQgJXMgJXUgKCVzKSAlbGx1ICYjNDM7ICV1ICVzLCV1LCV1IFslc11cJiMzNDssXG5AQCAtNDEwLDcgJiM0Mzs0MTAsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX2JpbyxcbiBcdFx0X19lbnRyeS1cdTAwM2VzZWN0b3JcdFx0PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG4gXHRcdF9fZW50cnktXHUwMDNlbnJfc2VjdG9yXHQ9IGJpb19zZWN0b3JzKGJpbyk7XG4gXHRcdGJsa19maWxsX3J3YnMoX19lbnRyeS1cdTAwM2Vyd2JzLCBiaW8tXHUwMDNlYmlfb3BmKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwmIzM0OyVkLCVkICVzICVsbHUgJiM0MzsgJXUgWyVzXVwmIzM0OyxcbkBAIC00OTMsNyAmIzQzOzQ5Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3BsdWcsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtbJXNdXCYjMzQ7LCBfX2VudHJ5LVx1MDAzZWNvbW0pXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3VucGx1ZyxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZW5yX3JxID0gZGVwdGg7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtbJXNdICVkXCYjMzQ7LCBfX2VudHJ5LVx1MDAzZWNvbW0sIF9fZW50cnktXHUwMDNlbnJfcnEpXG5AQCAtNTYzLDcgJiM0Mzs1NjMsNyBAQCBUUkFDRV9FVkVOVChibG9ja19zcGxpdCxcbiBcdFx0X19lbnRyeS1cdTAwM2VzZWN0b3JcdFx0PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV3X3NlY3Rvclx0PSBuZXdfc2VjdG9yO1xuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgYmlvLVx1MDAzZWJpX29wZik7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDslZCwlZCAlcyAlbGx1IC8gJWxsdSBbJXNdXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG5pbmRleCBjN2I5YzUzZmM0OTg2OS4uZmRkMjBiYzQ2YmIwMjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG5AQCAtMzIsNyAmIzQzOzMyLDcgQEAgVFJBQ0VfRVZFTlQoY29yZWR1bXAsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VzaWcgPSBzaWc7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtzaWc9JWQgY29tbT0lc1wmIzM0OyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmhcbmluZGV4IDI3MGMxYTJjMjRjNDRhLi43ZDIyNjUwYjRjNzg1ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXG5AQCAtMjUwNSw3ICYjNDM7MjUwNSw3IEBAIFRSQUNFX0VWRU5UKGYyZnNfbG9ja19lbGFwc2VkX3RpbWUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87XG4gXHRcdF9fZW50cnktXHUwMDNlaW9wcmlvX2NsYXNzXHQ9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7XG5AQCAtMjU1OCw3ICYjNDM7MjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWxvY2tfbmFtZVx0PSBsb2NrX25hbWU7XG4gXHRcdF9fZW50cnktXHUwMDNlaXNfd3JpdGVcdD0gaXNfd3JpdGU7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxuaW5kZXggOWYwYTVkMTQ4MmM0NDguLjhiY2RjNGZmYzhkMzQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oXG5AQCAtMjMsNyAmIzQzOzIzLDcgQEAgVFJBQ0VfRVZFTlQob29tX3Njb3JlX2Fkal91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXHUwMDNlc2lnbmFsLVx1MDAzZW9vbV9zY29yZV9hZGo7XG4gXHQpLFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxuaW5kZXggM2Y0MjczNjIzODAxNGUuLjJjZjA0N2JiOWZiNzFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcbkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIFRSQUNFX0VWRU5UKHRocmVhZF9ub2lzZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlc3RhcnQgPSBzdGFydDtcbiBcdFx0X19lbnRyeS1cdTAwM2VkdXJhdGlvbiA9IGR1cmF0aW9uO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG5pbmRleCA1MzU4NjA1ODFmMTU5NC4uYWZiMjRlOWRhYzkxZTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG5AQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdD0gcC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJpb1x0XHQ9IHAtXHUwMDNlcHJpbzsgLyogWFhYIFNDSEVEX0RFQURMSU5FICovXG4gXHRcdF9fZW50cnktXHUwMDNldGFyZ2V0X2NwdVx0PSB0YXNrX2NwdShwKTtcbkBAIC0yMzcsMTEgJiM0MzsyMzcsMTEgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc3dpdGNoLFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VwcmV2X2NvbW0sIHByZXYtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9wcmlvXHQ9IHByZXYtXHUwMDNlcHJpbztcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3N0YXRlXHQ9IF9fdHJhY2Vfc2NoZWRfc3dpdGNoX3N0YXRlKHByZWVtcHQsIHByZXZfc3RhdGUsIHByZXYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV4dF9waWRcdD0gbmV4dC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV4dF9wcmlvXHQ9IG5leHQtXHUwMDNlcHJpbztcbiBcdFx0LyogWFhYIFNDSEVEX0RFQURMSU5FICovXG5AQCAtMzQ2LDcgJiM0MzszNDYsNyBAQCBUUkFDRV9FVkVOVChzY2hlZF9wcm9jZXNzX2V4aXQsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwX2RlYWRcdD0gZ3JvdXBfZGVhZDtcbkBAIC03ODcsNyAmIzQzOzc4Nyw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3NraXBfY3B1c2V0X251bWEsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHRzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdHNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0ID0gdGFza19waWRfbnIodHNrKTtcbiBcdFx0X19lbnRyeS1cdTAwM2V0Z2lkXHRcdCA9IHRhc2tfdGdpZF9ucih0c2spO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW5naWRcdFx0ID0gdGFza19udW1hX2dyb3VwX2lkKHRzayk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaFxuaW5kZXggMWRiN2U0YjA3YzAxNDguLjhmZmZlNmQ5YmRjY2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXG5AQCAtNjcsNyAmIzQzOzY3LDcgQEAgVFJBQ0VfRVZFTlQoc2lnbmFsX2dlbmVyYXRlLFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlc2lnXHQ9IHNpZztcbiBcdFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHQ9IHRhc2stXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwXHQ9IGdyb3VwO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXJlc3VsdFx0PSByZXN1bHQ7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oXG5pbmRleCBiOWExMjllYjU0ZDllYi4uNjJiN2RmNGQyMmQwNTAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxuQEAgLTIxLDcgJiM0MzsyMSw3IEBAIFRSQUNFX0VWRU5UKHRhc2tfbmV3dGFzayxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbkBAIC00Niw4ICYjNDM7NDYsOSBAQCBUUkFDRV9FVkVOVCh0YXNrX3JlbmFtZSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0XHRtZW1jcHkoZW50cnktXHUwMDNlb2xkY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbi1cdFx0c3Ryc2NweShlbnRyeS1cdTAwM2VuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKGVudHJ5LVx1MDAzZW9sZGNvbW0sIHRhc2ssIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0bWVtY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0ZW50cnktXHUwMDNlbmV3Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAmIzM5O1xcMCYjMzk7O1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcbkBAIC01Niw2ICYjNDM7NTYsOSBAQFxuICNkZWZpbmUgUFJfU0VUX05BTUUgICAgMTVcdFx0LyogU2V0IHByb2Nlc3MgbmFtZSAqL1xuICNkZWZpbmUgUFJfR0VUX05BTUUgICAgMTZcdFx0LyogR2V0IHByb2Nlc3MgbmFtZSAqL1xuIFxuJiM0MzsjZGVmaW5lIFBSX1NFVF9FWFRfTkFNRSAgICAxN1x0XHQvKiBTZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lICovXG4mIzQzOyNkZWZpbmUgUFJfR0VUX0VYVF9OQU1FICAgIDE4XHRcdC8qIEdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cbiYjNDM7XG4gLyogR2V0L3NldCBwcm9jZXNzIGVuZGlhbiAqL1xuICNkZWZpbmUgUFJfR0VUX0VORElBTlx0MTlcbiAjZGVmaW5lIFBSX1NFVF9FTkRJQU5cdDIwXG5kaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0LmMgYi9rZXJuZWwvYXVkaXQuY1xuaW5kZXggNTYyNDc2OTM3ZmE3OTMuLjFmMGI0NGQ0ZTVjNzVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2F1ZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9hdWRpdC5jXG5AQCAtMTY2Nyw3ICYjNDM7MTY2Nyw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ19tdWx0aWNhc3QoaW50IGdyb3VwLCBjb25zdCBjaGFyICpvcCwgaW50IGVycilcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpOyAvKiBzdWJqPSAqL1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IGNvbW09XCYjMzQ7KTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7IC8qIGV4ZT0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBubC1tY2dycD0lZCBvcD0lcyByZXM9JWRcJiMzNDssIGdyb3VwLCBvcCwgIWVycik7XG4gXHRhdWRpdF9sb2dfZW5kKGFiKTtcbkBAIC0yNDc2LDcgJiM0MzsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxuIFx0XHRcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBjb21tPVwmIzM0Oyk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7XG4gfVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXG5pbmRleCA2NjEwZTY2N2M3MjhhYS4uMWQ5MzBmMTY5ODU2ZDQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXRzYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXRzYy5jXG5AQCAtMjg3Nyw3ICYjNDM7Mjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcyxcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBwaWQ9JXVcJiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBjb21tPVwmIzM0Oyk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2VuZChhYik7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKF9fYXVkaXRfbG9nX25mY2ZnKTtcbkBAIC0yOTAwLDcgJiM0MzsyOTAxLDggQEAgc3RhdGljIHZvaWQgYXVkaXRfbG9nX3Rhc2soc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXG4gXHRcdFx0IHNlc3Npb25pZCk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBwaWQ9JWQgY29tbT1cJiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL25iY29uLmMgYi9rZXJuZWwvcHJpbnRrL25iY29uLmNcbmluZGV4IDRiMDNiMDE5Y2Q1ZWUyLi5mNGM1YWU4YTM1MzBmNyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvbmJjb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9uYmNvbi5jXG5AQCAtOTUyLDcgJiM0Mzs5NTIsNyBAQCBzdGF0aWMgdm9pZCB3Y3R4dF9sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IG5iY29uX3dyaXRlX2NvbnRleHQgKndjdHh0LFxuIHtcbiBcdHdjdHh0LVx1MDAzZWNwdSA9IHBtc2ctXHUwMDNlY3B1O1xuIFx0d2N0eHQtXHUwMDNlcGlkID0gcG1zZy1cdTAwM2VwaWQ7XG4tXHRtZW1jcHkod2N0eHQtXHUwMDNlY29tbSwgcG1zZy1cdTAwM2Vjb21tLCBzaXplb2Yod2N0eHQtXHUwMDNlY29tbSkpO1xuJiM0MztcdGNvcHlfdGFza19jb21tKHdjdHh0LVx1MDAzZWNvbW0sIHBtc2csIHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSk7XG4gXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9wcmludGsuYyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbmluZGV4IDJmZTlhOTYzYzgyM2E0Li5lYzBjNjczNGJiZTFjZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbkBAIC0yMjQ3LDcgJiM0MzsyMjQ3LDcgQEAgc3RhdGljIHUxNiBwcmludGtfc3ByaW50KGNoYXIgKnRleHQsIHUxNiBzaXplLCBpbnQgZmFjaWxpdHksXG4gc3RhdGljIHZvaWQgcHJpbnRrX3N0b3JlX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19pbmZvICppbmZvKVxuIHtcbiBcdGluZm8tXHUwMDNlY2FsbGVyX2lkMiA9IHByaW50a19jYWxsZXJfaWQyKCk7XG4tXHRnZXRfdGFza19jb21tKGluZm8tXHUwMDNlY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoaW5mby1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csXG5AQCAtMjI1NSw3ICYjNDM7MjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcbiB7XG4gXHRwbXNnLVx1MDAzZWNwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7XG4gXHRwbXNnLVx1MDAzZXBpZCA9IHByaW50a19pbmZvX2dldF9waWQoaW5mbyk7XG4tXHRtZW1jcHkocG1zZy1cdTAwM2Vjb21tLCBpbmZvLVx1MDAzZWNvbW0sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbiYjNDM7XHRjb3B5X3Rhc2tfY29tbShwbXNnLVx1MDAzZWNvbW0sIGluZm8sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbiBcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKHBtc2ctXHUwMDNlY29tbSkgPT0gc2l6ZW9mKGluZm8tXHUwMDNlY29tbSkpO1xuIH1cbiAjZWxzZVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuY1xuaW5kZXggZGY2OWJkNzFkZTAzMmMuLjI2ZDUwMjZmOTU5MDYxIDEwMDY0NFxuLS0tIGEva2VybmVsL3N5cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc3lzLmNcbkBAIC0yNTM1LDcgJiM0MzsyNTM1LDcgQEAgU1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbiBcdFx0dW5zaWduZWQgbG9uZywgYXJnNCwgdW5zaWduZWQgbG9uZywgYXJnNSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKm1lID0gY3VycmVudDtcbi1cdHVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtXHUwMDNlY29tbSldO1xuJiM0MztcdHVuc2lnbmVkIGNoYXIgY29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXHRsb25nIGVycm9yO1xuIFxuIFx0ZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7XG5AQCAtMjYwMSwxNiAmIzQzOzI2MDEsMjkgQEAgU1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbiBcdFx0XHRlcnJvciA9IC1FSU5WQUw7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9TRVRfTkFNRTpcbi1cdFx0Y29tbVtzaXplb2YobWUtXHUwMDNlY29tbSkgLSAxXSA9IDA7XG4mIzQzO1x0XHRjb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9IDA7XG4gXHRcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLFxuLVx0XHRcdFx0ICAgICAgc2l6ZW9mKG1lLVx1MDAzZWNvbW0pIC0gMSkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRzZXRfdGFza19jb21tKG1lLCBjb21tKTtcbiBcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9HRVRfTkFNRTpcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBtZSk7XG4tXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgc2l6ZW9mKGNvbW0pKSlcbiYjNDM7XHRcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0aWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBSX1NFVF9FWFRfTkFNRTpcbiYjNDM7XHRcdGNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7XG4mIzQzO1x0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcbiYjNDM7XHRcdFx0XHQgICAgICBUQVNLX0NPTU1fRVhUX0xFTiAtIDEpIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdHNldF90YXNrX2NvbW0obWUsIGNvbW0pO1xuJiM0MztcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBSX0dFVF9FWFRfTkFNRTpcbiYjNDM7XHRcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9FWFRfTEVOKTtcbiYjNDM7XHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJfR0VUX0VORElBTjpcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmNcbmluZGV4IDA4MTlhY2U1YjAyNzU3Li41ZDI2MDI5ZDJkMDEyZCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXG5AQCAtODgxLDYgJiM0Mzs4ODEsNDMgQEAgc3RhdGljIHZvaWQgc3RyaW5nX2JlbmNoX3N0cnJjaHIoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0U1RSSU5HX0JFTkNIX0JVRih0ZXN0LCBidWYsIGxlbiwgc3RycmNociwgYnVmLCAmIzM5O1xcMCYjMzk7KTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgVEFTS19OQU1FIFwmIzM0O3Rhc2tfbmFtZVwmIzM0O1xuJiM0MzsjZGVmaW5lIFRBU0tfTkFNRV9MRU4gOVxuJiM0MzsjZGVmaW5lIFRBU0tfTUFYX0xFTiBUQVNLX0NPTU1fRVhUX0xFTlxuJiM0MzsjZGVmaW5lIFNNQUxMRVJfTEVOIFRBU0tfTkFNRV9MRU4gLSAzXG4mIzQzOyNkZWZpbmUgQklHR0VSX0xFTiBUQVNLX01BWF9MRU4gJiM0MzsgM1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgc3RyaW5nX2NvcHlfdGFza19jb21tKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGNoYXIgc3RyW1RBU0tfTUFYX0xFTl0gPSBUQVNLX05BTUUsIGNvcHlbVEFTS19NQVhfTEVOXSxcbiYjNDM7XHQgICAgIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOXSwgYmlnZ2VyX2J1ZltCSUdHRVJfTEVOXTtcbiYjNDM7XHRzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0IHRhc2ssICp0c2sgPSBcdTAwMjZ0YXNrO1xuJiM0MztcdGludCBsZW4xLCBsZW4yLCBpO1xuJiM0MztcbiYjNDM7XHQvKiBzZXQgYW5kIGdldCB0YXNrIG5hbWUgKi9cbiYjNDM7XHRzZXRfdGFza19jb21tKHRzaywgc3RyKTtcbiYjNDM7XHRjb3B5X3Rhc2tfY29tbShjb3B5LCB0c2ssIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcbiYjNDM7XHRsZW4xID0gc3RybGVuKHN0cik7XG4mIzQzO1x0bGVuMiA9IHN0cmxlbihjb3B5KTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjEsIGxlbjIpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4yLCBUQVNLX05BTUVfTEVOKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgY29weVtsZW4yXSwgJiMzOTtcXDAmIzM5Oyk7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cmNtcChzdHIsIGNvcHkpKTtcbiYjNDM7XG4mIzQzO1x0LyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqL1xuJiM0MztcdGNvcHlfdGFza19jb21tKHNtYWxsZXJfYnVmLCB0c2ssIHNpemVvZihzbWFsbGVyX2J1ZikpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgc21hbGxlcl9idWYsIFNNQUxMRVJfTEVOIC0gMSkpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAmIzM5O1xcMCYjMzk7KTtcbiYjNDM7XG4mIzQzO1x0LyogY29weSB0byBhIGJpZ2dlciBkc3QgYnVmZmVyICovXG4mIzQzO1x0Y29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgYmlnZ2VyX2J1ZiwgVEFTS19OQU1FX0xFTikpO1xuJiM0MztcdGZvciAoaSA9IFRBU0tfTkFNRV9MRU47IGkgXHUwMDNjIEJJR0dFUl9MRU47IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGJpZ2dlcl9idWZbaV0sICYjMzk7XFwwJiMzOTspO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDMyKSxcbkBAIC05MTAsNiAmIzQzOzk0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RybmxlbiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJjaHIpLFxuIFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RycmNociksXG4mIzQzO1x0S1VOSVRfQ0FTRShzdHJpbmdfY29weV90YXNrX2NvbW0pLFxuIFx0e31cbiB9O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuaW5kZXggMDcwY2EzODhmOWFjZTguLjRlNjZjYjJkOTU0OWM2IDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xMDQsNyAmIzQzOzEwNCw3IEBAIHN0YXRpYyBib29sIGhjaV9zb2NrX2dlbl9jb29raWUoc3RydWN0IHNvY2sgKnNrKVxuIFx0XHRcdGlkID0gMHhmZmZmZmZmZjtcbiBcbiBcdFx0aGNpX3BpKHNrKS1cdTAwM2Vjb29raWUgPSBpZDtcbi1cdFx0Z2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoaGNpX3BpKHNrKS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCBhOWVhZjk0NTVjNzc4My4uYzU1NTVlZWQxYjYyZDIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC05NzE4LDkgJiM0Mzs5NzE4LDExIEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2ZpbGxfZ2VuX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKCFubGgpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuJiM0MztcdHN0cnNjcHlfcGFkKGJ1ZiwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiYjNDM7XG4gXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fSUQsIGh0b25sKG5mdF9iYXNlX3NlcShuZXQpKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9QUk9DX1BJRCwgaHRvbmwodGFza19waWRfbnIoY3VycmVudCkpKSB8fFxuLVx0ICAgIG5sYV9wdXRfc3RyaW5nKHNrYiwgTkZUQV9HRU5fUFJPQ19OQU1FLCBnZXRfdGFza19jb21tKGJ1ZiwgY3VycmVudCkpKVxuJiM0MztcdCAgICBubGFfcHV0X3N0cmluZyhza2IsIE5GVEFfR0VOX1BST0NfTkFNRSwgYnVmKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRubG1zZ19lbmQoc2tiLCBubGgpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuYyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xuaW5kZXggZDhkOWU1ZmYxY2QyMmIuLjk4MDYwMDYwOTI5ZGE5IDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmNcbkBAIC01NCw3ICYjNDM7NTQsOCBAQCB2b2lkIGludGVncml0eV9hdWRpdF9tZXNzYWdlKGludCBhdWRpdF9tc2dubywgc3RydWN0IGlub2RlICppbm9kZSxcbiBcdFx0XHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBvcD0lcyBjYXVzZT0lcyBjb21tPVwmIzM0Oywgb3AsIGNhdXNlKTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0obmFtZSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7XG4gXHRpZiAoZm5hbWUpIHtcbiBcdFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IG5hbWU9XCYjMzQ7KTtcbiBcdFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcbmluZGV4IDkzZmI1OWZiZGRkNjBiLi45MGE2YWNmYjdjZGZjZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zZWN1cml0eS9pcGUvYXVkaXQuY1xuQEAgLTE0NSw3ICYjNDM7MTQ1LDggQEAgdm9pZCBpcGVfYXVkaXRfbWF0Y2goY29uc3Qgc3RydWN0IGlwZV9ldmFsX2N0eCAqY29uc3QgY3R4LFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7aXBlX29wPSVzIGlwZV9ob29rPSVzIGVuZm9yY2luZz0lZCBwaWQ9JWQgY29tbT1cJiMzNDssXG4gXHRcdFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cdTAwM2Vob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLFxuIFx0XHRcdCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiYjNDM7XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcbiBcdGlmIChjdHgtXHUwMDNlZmlsZSkge1xuIFx0XHRhdWRpdF9sb2dfZF9wYXRoKGFiLCBcJiMzNDsgcGF0aD1cJiMzNDssIFx1MDAyNmN0eC1cdTAwM2VmaWxlLVx1MDAzZWZfcGF0aCk7XG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMgYi9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uY1xuaW5kZXggOWE4MzU1ZmNjZDI2ZWIuLmIyZmM3ZjcyMmQ2OTA4IDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXG5AQCAtMTAyLDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgc3RydWN0IGxhbmRsb2NrX2RldGFpbHMgKmdldF9jdXJyZW50X2RldGFpbHModm9pZClcbiBcdG1lbWNweShkZXRhaWxzLVx1MDAzZWV4ZV9wYXRoLCBwYXRoX3N0ciwgcGF0aF9zaXplKTtcbiBcdGRldGFpbHMtXHUwMDNlcGlkID0gZ2V0X3BpZCh0YXNrX3RnaWQoY3VycmVudCkpO1xuIFx0ZGV0YWlscy1cdTAwM2V1aWQgPSBmcm9tX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTtcbi1cdGdldF90YXNrX2NvbW0oZGV0YWlscy1cdTAwM2Vjb21tLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZChkZXRhaWxzLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRyZXR1cm4gZGV0YWlscztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuY1xuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXG5AQCAtMjc2LDggJiM0MzsyNzYsOCBAQCB2b2lkIGF1ZGl0X2xvZ19sc21fZGF0YShzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYixcbiBcdFx0XHRpZiAocGlkKSB7XG4gXHRcdFx0XHRjaGFyIHRza2NvbW1bc2l6ZW9mKHRzay1cdTAwM2Vjb21tKV07XG4gXHRcdFx0XHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcJiMzNDsgb3BpZD0lZCBvY29tbT1cJiMzNDssIHBpZCk7XG4tXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxuLVx0XHRcdFx0ICAgIGdldF90YXNrX2NvbW0odHNrY29tbSwgdHNrKSk7XG4mIzQzO1x0XHRcdFx0c3Ryc2NweV9wYWQodHNrY29tbSwgdHNrLVx1MDAzZWNvbW0pO1xuJiM0MztcdFx0XHRcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIHRza2NvbW0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRicmVhaztcbkBAIC00MTcsNyAmIzQzOzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXG4gXHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IHBpZD0lZCBjb21tPVwmIzM0OywgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfbHNtX2RhdGEoYWIsIGEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcbmluZGV4IDNmN2IxNDZkMzZkZmUxLi4wZjIwZjdkZWFjNjdmZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXG5AQCAtOSw5ICYjNDM7OSwxNyBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmhcJiMzNDtcbiBcbiYjNDM7I2lmbmRlZiBQUl9TRVRfRVhUX05BTUVcbiYjNDM7IyBkZWZpbmUgUFJfU0VUX0VYVF9OQU1FIDE3XG4mIzQzOyMgZGVmaW5lIFBSX0dFVF9FWFRfTkFNRSAxOFxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcJiMzNDtjaGFuZ2VuYW1lXCYjMzQ7XG4mIzQzOyNkZWZpbmUgTE9OR19OQU1FXHRcJiMzNDtjaGFuZ2VfdG9fdmVyeV9sb25nX2V4dGVuZGVkX25hbWVcJiMzNDtcbiYjNDM7I2RlZmluZSBMT05HX05BTUVfQ0FQXHRcJiMzNDtjaGFuZ2VfdG9fdmVyeV9cJiMzNDtcbiAjZGVmaW5lIEVNUFRZX05BTUUgXCYjMzQ7XCYjMzQ7XG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XG4mIzQzOyNkZWZpbmUgVEFTS19DT01NX0VYVF9MRU4gNjRcbiAjZGVmaW5lIE1BWF9QQVRIX0xFTiA1MFxuIFxuIGludCBzZXRfbmFtZShjaGFyICpuYW1lKVxuQEAgLTI1LDYgJiM0MzszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbiBcdHJldHVybiByZXM7XG4gfVxuIFxuJiM0MztpbnQgc2V0X2V4dF9uYW1lKGNoYXIgKm5hbWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmVzO1xuJiM0MztcbiYjNDM7XHRyZXMgPSBwcmN0bChQUl9TRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHRpZiAocmVzIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIC1lcnJubztcbiYjNDM7fVxuJiM0MztcbiBpbnQgY2hlY2tfaXNfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciBuYW1lW1RBU0tfQ09NTV9MRU5dO1xuQEAgLTM4LDYgJiM0Mzs1NiwxOSBAQCBpbnQgY2hlY2tfaXNfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4gXHRyZXR1cm4gIXN0cmNtcChuYW1lLCBjaGVja19uYW1lKTtcbiB9XG4gXG4mIzQzO2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIG5hbWVbVEFTS19DT01NX0VYVF9MRU5dO1xuJiM0MztcdGludCByZXM7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXMgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gLWVycm5vO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gIXN0cmNtcChuYW1lLCBjaGVja19uYW1lKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciAqbmFtZSA9IE5VTEw7XG5AQCAtODIsNiAmIzQzOzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7XG4gXHRFWFBFQ1RfR0Uoc2V0X25hbWUoQ0hBTkdFX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChDSEFOR0VfTkFNRSkpO1xuIFxuJiM0MztcdEVYUEVDVF9HRShzZXRfZXh0X25hbWUoTE9OR19OQU1FKSwgMCk7XG4mIzQzO1x0RVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTtcbiYjNDM7XHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoTE9OR19OQU1FX0NBUCkpO1xuJiM0MztcdEVYUEVDVF9UUlVFKGNoZWNrX25hbWUoKSk7XG4mIzQzO1xuIFx0RVhQRUNUX0dFKHNldF9uYW1lKEVNUFRZX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmRlNTRjM2RlY2IzYzEzZjI5NGVhOTExZTljOGNlZGNjZjJlZmQyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIwOjUzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jCmluZGV4IDAwNTZhYjgxZmJjMzlhLi5jNzgyNDNlZDNjMmE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYwpAQCAtMjc4LDcgJiM0MzsyNzgsNyBAQCB2b2lkIHByb2NfY29tbV9jb25uZWN0b3Ioc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogCWV2LSZndDt3aGF0ID0gUFJPQ19FVkVOVF9DT01NOwogCWV2LSZndDtldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay0mZ3Q7cGlkOwogCWV2LSZndDtldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay0mZ3Q7dGdpZDsKLQlnZXRfdGFza19jb21tKGV2LSZndDtldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7CiYjNDM7CXN0cnNjcHlfcGFkKGV2LSZndDtldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzay0mZ3Q7Y29tbSk7CiAKIAltZW1jcHkoJmFtcDttc2ctJmd0O2lkLCAmYW1wO2NuX3Byb2NfZXZlbnRfaWQsIHNpemVvZihtc2ctJmd0O2lkKSk7CiAJbXNnLSZndDthY2sgPSAwOyAvKiBub3QgdXNlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMKaW5kZXggOGRmMjBiMDIxOGE5ZWUuLmQ1MDE2NTdhZDgwMTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMKQEAgLTMxMiw3ICYjNDM7MzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAlzdHJ1Y3Qgc3luY190aW1lbGluZSAqb2JqOwogCWNoYXIgdGFza19jb21tW1RBU0tfQ09NTV9MRU5dOwogCi0JZ2V0X3Rhc2tfY29tbSh0YXNrX2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJb2JqID0gc3luY190aW1lbGluZV9jcmVhdGUodGFza19jb21tKTsKIAlpZiAoIW9iaikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYwppbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmMKQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCwKIAkvKiBUaGlzIHJlZmVyZW5jZSBnZXRzIHJlbGVhc2VkIGluIGFtZGtmZF9mZW5jZV9yZWxlYXNlICovCiAJbW1ncmFiKG1tKTsKIAlmZW5jZS0mZ3Q7bW0gPSBtbTsKLQlnZXRfdGFza19jb21tKGZlbmNlLSZndDt0aW1lbGluZV9uYW1lLCBjdXJyZW50KTsKJiM0MzsJc3Ryc2NweV9wYWQoZmVuY2UtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQtJmd0O2NvbW0pOwogCXNwaW5fbG9ja19pbml0KCZhbXA7ZmVuY2UtJmd0O2xvY2spOwogCWZlbmNlLSZndDtzdm1fYm8gPSBzdm1fYm87CiAJZmVuY2UtJmd0O2NvbnRleHRfaWQgPSBjb250ZXh0X2lkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYwppbmRleCBmNmI3NTIyYzNjODJmZi4uMDQ2MjQzZTNhM2NkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jCkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21nciwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlldl9mZW5jZS0mZ3Q7ZXZmX21nciA9IGV2Zl9tZ3I7Ci0JZ2V0X3Rhc2tfY29tbShldl9mZW5jZS0mZ3Q7dGltZWxpbmVfbmFtZSwgY3VycmVudCk7CiYjNDM7CXN0cnNjcHlfcGFkKGV2X2ZlbmNlLSZndDt0aW1lbGluZV9uYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2V2X2ZlbmNlLSZndDtsb2NrKTsKIAlkbWFfZmVuY2VfaW5pdDY0KCZhbXA7ZXZfZmVuY2UtJmd0O2Jhc2UsICZhbXA7YW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX29wcywKIAkJCSAmYW1wO2V2X2ZlbmNlLSZndDtsb2NrLCBldmZfbWdyLSZndDtldl9mZW5jZV9jdHgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMKaW5kZXggNzY0Y2Q0OTUwNDA4M2MuLmU2MGE0NzBiNTdlY2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jCkBAIC00NDQ1LDcgJiM0Mzs0NDQ1LDcgQEAgaW50IGFtZGdwdV9yYXNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiAKIAljb24tJmd0O2luaXRfdGFza19waWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTsKLQlnZXRfdGFza19jb21tKGNvbi0mZ3Q7aW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChjb24tJmd0O2luaXRfdGFza19jb21tLCBjdXJyZW50LSZndDtjb21tKTsKIAogCW11dGV4X2luaXQoJmFtcDtjb24tJmd0O2NyaXRpY2FsX3JlZ2lvbl9sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nvbi0mZ3Q7Y3JpdGljYWxfcmVnaW9uX2hlYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYwppbmRleCBmNzRhZDM3OGU0MDc0Mi4uZjQxODU3NDczNjQxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jCkBAIC04NSw3ICYjNDM7ODUsNyBAQCBpbnQgYW1kZ3B1X3VzZXJxX2ZlbmNlX2RyaXZlcl9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCWZlbmNlX2Rydi0mZ3Q7YWRldiA9IGFkZXY7CiAJZmVuY2VfZHJ2LSZndDtjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Ci0JZ2V0X3Rhc2tfY29tbShmZW5jZV9kcnYtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChmZW5jZV9kcnYtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJKmZlbmNlX2Rydl9yZXEgPSBmZW5jZV9kcnY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKaW5kZXggYmI5OWI3YzNhMDEwZWEuLjg0YzBiMzEwZTljMTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwpAQCAtMjU0MiwxMCAmIzQzOzI1NDIsMTAgQEAgdm9pZCBhbWRncHVfdm1fc2V0X3Rhc2tfaW5mbyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKIAkJcmV0dXJuOwogCiAJdm0tJmd0O3Rhc2tfaW5mby0mZ3Q7dGFzay5waWQgPSBjdXJyZW50LSZndDtwaWQ7Ci0JZ2V0X3Rhc2tfY29tbSh2bS0mZ3Q7dGFza19pbmZvLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh2bS0mZ3Q7dGFza19pbmZvLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJdm0tJmd0O3Rhc2tfaW5mby0mZ3Q7dGdpZCA9IGN1cnJlbnQtJmd0O3RnaWQ7Ci0JZ2V0X3Rhc2tfY29tbSh2bS0mZ3Q7dGFza19pbmZvLSZndDtwcm9jZXNzX25hbWUsIGN1cnJlbnQtJmd0O2dyb3VwX2xlYWRlcik7CiYjNDM7CXN0cnNjcHlfcGFkKHZtLSZndDt0YXNrX2luZm8tJmd0O3Byb2Nlc3NfbmFtZSwgY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyLSZndDtjb21tKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jCmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMKQEAgLTU2Myw3ICYjNDM7NTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCX0KIAogCXZyZXMtJmd0O3Rhc2sucGlkID0gdGFza19waWRfbnIoY3VycmVudCk7Ci0JZ2V0X3Rhc2tfY29tbSh2cmVzLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh2cmVzLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCWxpc3RfYWRkX3RhaWwoJmFtcDt2cmVzLSZndDt2cmVzX25vZGUsICZhbXA7bWdyLSZndDthbGxvY2F0ZWRfdnJlc19saXN0KTsKIAogCWlmIChiby0mZ3Q7ZmxhZ3MgJmFtcDsgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTICZhbXA7JmFtcDsgYWRqdXN0X2RjY19zaXplKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYwppbmRleCA2OGVkZTdhNzI1ZTIxOS4uZThjNWMzNjAxYmYxZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKQogCQlnb3RvIGVycl9vdXQwOwogCiAJY3R4LSZndDtwaWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTsKLQlnZXRfdGFza19jb21tKGN0eC0mZ3Q7cG5hbWUsIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChjdHgtJmd0O3BuYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKaW5kZXggM2E3ZmNlNDI4ODk4N2IuLjExOTM2YzRkMzU3MzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCkBAIC0zNiw3ICYjNDM7MzYsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fZGVidWdmc19ib19hZGQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJCQkJCXN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIHsKIAliby0mZ3Q7ZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LSZndDt0Z2lkOwotCWdldF90YXNrX2NvbW0oYm8tJmd0O2RlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtJmd0O2dyb3VwX2xlYWRlcik7CiYjNDM7CXN0cnNjcHlfcGFkKGJvLSZndDtkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LSZndDtncm91cF9sZWFkZXItJmd0O2NvbW0pOwogCiAJbXV0ZXhfbG9jaygmYW1wO3BmZGV2LSZndDtkZWJ1Z2ZzLmdlbXNfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2JvLSZndDtkZWJ1Z2ZzLm5vZGUsICZhbXA7cGZkZXYtJmd0O2RlYnVnZnMuZ2Vtc19saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCkBAIC01NCw3ICYjNDM7NTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibykKIAkJCQkJCSAgICBzdHJ1Y3QgcGFudGhvcl9kZXZpY2UsIGJhc2UpOwogCiAJYm8tJmd0O2RlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC0mZ3Q7dGdpZDsKLQlnZXRfdGFza19jb21tKGJvLSZndDtkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LSZndDtncm91cF9sZWFkZXIpOwomIzQzOwlzdHJzY3B5X3BhZChiby0mZ3Q7ZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyLSZndDtjb21tKTsKIAogCW11dGV4X2xvY2soJmFtcDtwdGRldi0mZ3Q7Z2Vtcy5sb2NrKTsKIAlsaXN0X2FkZF90YWlsKCZhbXA7Ym8tJmd0O2RlYnVnZnMubm9kZSwgJmFtcDtwdGRldi0mZ3Q7Z2Vtcy5ub2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYwppbmRleCAyOThiMDQ2Yzk1ZWRiOC4uODFjNDY1OWMwZDdiZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmMKQEAgLTM2MTcsNyAmIzQzOzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApCiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyOwogCiAJZ3JvdXAtJmd0O3Rhc2tfaW5mby5waWQgPSB0YXNrLSZndDtwaWQ7Ci0JZ2V0X3Rhc2tfY29tbShncm91cC0mZ3Q7dGFza19pbmZvLmNvbW0sIHRhc2spOwomIzQzOwlzdHJzY3B5X3BhZChncm91cC0mZ3Q7dGFza19pbmZvLmNvbW0sIHRhc2stJmd0O2NvbW0pOwogfQogCiBzdGF0aWMgdm9pZCBhZGRfZ3JvdXBfa2JvX3NpemVzKHN0cnVjdCBwYW50aG9yX2RldmljZSAqcHRkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jCmluZGV4IDNkOGU0Y2NkYjdjMWY4Li5iMTBhMGUxY2IxZWQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfY3JlYXRlX2NvbnRleHRfbG9ja2VkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsCiAJfSBlbHNlIHsKIAkJY2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dOwogCi0JCWdldF90YXNrX2NvbW0oZGJnbmFtZSwgY3VycmVudCk7CiYjNDM7CQlzdHJzY3B5X3BhZChkYmduYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAkJdmlydGlvX2dwdV9jbWRfY29udGV4dF9jcmVhdGUodmdkZXYsIHZmcHJpdi0mZ3Q7Y3R4X2lkLAogCQkJCQkgICAgICB2ZnByaXYtJmd0O2NvbnRleHRfaW5pdCwgc3RybGVuKGRiZ25hbWUpLAogCQkJCQkgICAgICBkYmduYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jCmluZGV4IGY0OGM2YThhMDY1NGU5Li5jNzcxNTQzOTk2NGU4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od3RyYWNpbmcvc3RtL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jCkBAIC02MzQsNyAmIzQzOzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQljaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtJmd0O2NvbW0pXTsKIAkJY2hhciAqaWRzW10gPSB7IGNvbW0sICYjMzQ7ZGVmYXVsdCYjMzQ7LCBOVUxMIH07CiAKLQkJZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KTsKJiM0MzsJCXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJCWVyciA9IHN0bV9hc3NpZ25fZmlyc3RfcG9saWN5KHN0bWYtJmd0O3N0bSwgJmFtcDtzdG1mLSZndDtvdXRwdXQsIGlkcywgMSk7CiAJCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfYXVkaXQuYyBiL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jCmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmMKQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyB2b2lkIHR0eV9hdWRpdF9sb2coY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGRldl90IGRldiwKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyVzIHBpZD0ldSB1aWQ9JXUgYXVpZD0ldSBzZXM9JXUgbWFqb3I9JWQgbWlub3I9JWQgY29tbT0mIzM0OywKIAkJCSBkZXNjcmlwdGlvbiwgcGlkLCB1aWQsIGxvZ2ludWlkLCBzZXNzaW9uaWQsCiAJCQkgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7Ci0JZ2V0X3Rhc2tfY29tbShuYW1lLCBjdXJyZW50KTsKJiM0MzsJc3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC0mZ3Q7Y29tbSk7CiAJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgZGF0YT0mIzM0Oyk7CiAJYXVkaXRfbG9nX25faGV4KGFiLCBkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuYwppbmRleCAxNmE1NmI2YjNmNmNhMS4uZDI1OTIyNDYwYjYzNzggMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbGYuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmMKQEAgLTE1NTcsNyAmIzQzOzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLAogCVNFVF9VSUQocHNpbmZvLSZndDtwcl91aWQsIGZyb21fa3VpZF9tdW5nZWQoY3JlZC0mZ3Q7dXNlcl9ucywgY3JlZC0mZ3Q7dWlkKSk7CiAJU0VUX0dJRChwc2luZm8tJmd0O3ByX2dpZCwgZnJvbV9rZ2lkX211bmdlZChjcmVkLSZndDt1c2VyX25zLCBjcmVkLSZndDtnaWQpKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKLQlnZXRfdGFza19jb21tKHBzaW5mby0mZ3Q7cHJfZm5hbWUsIHApOwomIzQzOwlzdHJzY3B5X3BhZChwc2luZm8tJmd0O3ByX2ZuYW1lLCBwLSZndDtjb21tKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZl9mZHBpYy5jIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jCmluZGV4IDdlMzEwODQ4OWM4M2NhLi5jNGQ0ZTU5ZmYzNGQxYiAxMDA2NDQKLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwpAQCAtMTM3MSw3ICYjNDM7MTM3MSw3IEBAIHN0YXRpYyBpbnQgZmlsbF9wc2luZm8oc3RydWN0IGVsZl9wcnBzaW5mbyAqcHNpbmZvLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsCiAJU0VUX1VJRChwc2luZm8tJmd0O3ByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLSZndDt1c2VyX25zLCBjcmVkLSZndDt1aWQpKTsKIAlTRVRfR0lEKHBzaW5mby0mZ3Q7cHJfZ2lkLCBmcm9tX2tnaWRfbXVuZ2VkKGNyZWQtJmd0O3VzZXJfbnMsIGNyZWQtJmd0O2dpZCkpOwogCXJjdV9yZWFkX3VubG9jaygpOwotCWdldF90YXNrX2NvbW0ocHNpbmZvLSZndDtwcl9mbmFtZSwgcCk7CiYjNDM7CXN0cnNjcHlfcGFkKHBzaW5mby0mZ3Q7cHJfZm5hbWUsIHAtJmd0O2NvbW0pOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9mcy9wcm9jL2FycmF5LmMgYi9mcy9wcm9jL2FycmF5LmMKaW5kZXggNDc5ZWE4Y2I0ZWY0M2QuLjA0OTBiOWVmMjc4ODUwIDEwMDY0NAotLS0gYS9mcy9wcm9jL2FycmF5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy9hcnJheS5jCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKQogCWVsc2UgaWYgKHAtJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpCiAJCWdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApOwogCWVsc2UKLQkJZ2V0X3Rhc2tfY29tbSh0Y29tbSwgcCk7CiYjNDM7CQlzdHJzY3B5X3BhZCh0Y29tbSwgcC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiAKIAlpZiAoZXNjYXBlKQogCQlzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsICYjMzQ7XG5cXCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaAppbmRleCA3YjM4ZWUyZTc5MTNiZS4uZGVlODJlM2MzNTBhZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgKQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIGV4dGVybiB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKTsKIAlkbyB7CVwKIAkJY2hhciBjb21tW1RBU0tfQ09NTV9MRU5dOwlcCiAJCS8qIFRoaXMgd2lsbCBhbHdheXMgYmUgTlVMIHRlcm1pbmF0ZWQuICovIFwKLQkJbWVtY3B5KGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIHNpemVvZihjb21tKSk7IFwKJiM0MzsJCWNvcHlfdGFza19jb21tKGNvbW0sIGN1cnJlbnQsIHNpemVvZihjb21tKSk7IFwKIAkJcHJpbnRrX3JhdGVsaW1pdGVkKExldmVsICYjMzQ7Y29yZWR1bXA6ICVkKCUqcEUpOiAmIzM0OyBGb3JtYXQgJiMzNDtcbiYjMzQ7LAlcCiAJCQl0YXNrX3RnaWRfdm5yKGN1cnJlbnQpLCAoaW50KXN0cmxlbihjb21tKSwgY29tbSwgIyNfX1ZBX0FSR1NfXyk7CVwKIAl9IHdoaWxlICgwKQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKaW5kZXggMzczYmNjMDU5OGQxMGIuLjBmMWI0MGE1ZGJjNjBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC0zMjMsNiAmIzQzOzMyMyw3IEBAIHN0cnVjdCB1c2VyX2V2ZW50X21tOwogICovCiBlbnVtIHsKIAlUQVNLX0NPTU1fTEVOID0gMTYsCiYjNDM7CVRBU0tfQ09NTV9FWFRfTEVOID0gNjQsCiB9OwogCiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpOwpAQCAtMTE3OCw3ICYjNDM7MTE3OSw3IEBAIHN0cnVjdCB0YXNrX3N0cnVjdCB7CiAJICogLSBzZXQgaXQgd2l0aCBzZXRfdGFza19jb21tKCkgdG8gZW5zdXJlIGl0IGlzIGFsd2F5cwogCSAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkCiAJICovCi0JY2hhcgkJCQljb21tW1RBU0tfQ09NTV9MRU5dOwomIzQzOwljaGFyCQkJCWNvbW1bVEFTS19DT01NX0VYVF9MRU5dOwogCiAJc3RydWN0IG5hbWVpZGF0YQkJKm5hbWVpZGF0YTsKIApAQCAtMjAxNywyOCAmIzQzOzIwMTgsMjAgQEAgZXh0ZXJuIHZvaWQga2lja19wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKIAogZXh0ZXJuIHZvaWQgX19zZXRfdGFza19jb21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjb25zdCBjaGFyICpmcm9tLCBib29sIGV4ZWMpOwogI2RlZmluZSBzZXRfdGFza19jb21tKHRzaywgZnJvbSkgKHsJCQlcCi0JQlVJTERfQlVHX09OKHNpemVvZihmcm9tKSAhPSBUQVNLX0NPTU1fTEVOKTsJXAomIzQzOwlCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICZsdDsgVEFTS19DT01NX0xFTik7CVwKIAlfX3NldF90YXNrX2NvbW0odHNrLCBmcm9tLCBmYWxzZSk7CQlcCiB9KQogCiAvKgotICogLSBXaHkgbm90IHVzZSB0YXNrX2xvY2soKT8KLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVycwotICogICBkb2VzbiYjMzk7dCBtYWtlIHNlbnNlLiBGb3Igd3JpdGVycywgbG9ja2luZyBpcyBwcm9iYWJseSBuZWNlc3NhcnksIGFzIGEgcmFjZQotICogICBjb25kaXRpb24gY291bGQgbGVhZCB0byBsb25nLXRlcm0gbWl4ZWQgcmVzdWx0cy4KLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXMKLSAqICAgYWx3YXlzIE5VTC10ZXJtaW5hdGVkIGFuZCB6ZXJvLXBhZGRlZC4gVGhlcmVmb3JlIHRoZSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuCi0gKiAgIHJlYWRlciBhbmQgd3JpdGVyIGlzIG5vdCBhbiBpc3N1ZS4KLSAqCi0gKiAtIEJVSUxEX0JVR19PTigpIGNhbiBoZWxwIHByZXZlbnQgdGhlIGJ1ZiBmcm9tIGJlaW5nIHRydW5jYXRlZC4KLSAqICAgU2luY2UgdGhlIGNhbGxlcnMgZG9uJiMzOTt0IHBlcmZvcm0gYW55IHJldHVybiB2YWx1ZSBjaGVja3MsIHRoaXMgc2FmZWd1YXJkIGlzCi0gKiAgIG5lY2Vzc2FyeS4KJiM0MzsgKiBDb3B5IHRhc2sgbmFtZSB0byBhIGJ1ZmZlci4gRmluYWwgcmVzdWx0IGlzIGFsd2F5cyBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KICAqLwotI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoewkJCVwKLQlCVUlMRF9CVUdfT04oc2l6ZW9mKGJ1ZikgJmx0OyBUQVNLX0NPTU1fTEVOKTsJXAotCXN0cnNjcHlfcGFkKGJ1ZiwgKHRzayktJmd0O2NvbW0pOwkJCVwKLQlidWY7CQkJCQkJXAotfSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgY29weV90YXNrX2NvbW0oY2hhciAqZHN0LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc2l6ZV90IGxlbikKJiM0Mzt7CiYjNDM7CWNvbnN0IGNoYXIgKl9zcmMgPSB0c2stJmd0O2NvbW07CiYjNDM7CiYjNDM7CW1lbWNweShkc3QsIF9zcmMsIGxlbik7CiYjNDM7CWRzdFtsZW4gLSAxXSA9ICYjMzk7XDAmIzM5OzsKJiM0Mzt9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBzY2hlZHVsZXJfaXBpKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaCBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oCmluZGV4IGUwZDgzOGM5Y2U5MzgyLi45YjAwOTRmYTQ0YzY0OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgKQEAgLTYzNywxMCAmIzQzOzYzNywxMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB0cmFjZXBvaW50ICp0cmFjZXBvaW50X3B0cl9kZXJlZih0cmFjZXBvaW50X3B0cl90ICpwKQogICoJKgogICoKICAqCVRQX2Zhc3RfYXNzaWduKAotICoJCW1lbWNweShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOyAqCQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pOwogICoJCV9fZW50cnktJmd0O3ByZXZfcGlkCT0gcHJldi0mZ3Q7cGlkOwogICoJCV9fZW50cnktJmd0O3ByZXZfcHJpbwk9IHByZXYtJmd0O3ByaW87Ci0gKgkJbWVtY3B5KF9fZW50cnktJmd0O3ByZXZfY29tbSwgcHJldi0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7ICoJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O3ByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7CiAgKgkJX19lbnRyeS0mZ3Q7bmV4dF9waWQJPSBuZXh0LSZndDtwaWQ7CiAgKgkJX19lbnRyeS0mZ3Q7bmV4dF9wcmlvCT0gbmV4dC0mZ3Q7cHJpbzsKICAqCSksCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaAppbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaApAQCAtMjEzLDcgJiM0MzsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLAogCiAJCWJsa19maWxsX3J3YnMoX19lbnRyeS0mZ3Q7cndicywgcnEtJmd0O2NtZF9mbGFncyk7CiAJCV9fZ2V0X3N0cihjbWQpWzBdID0gJiMzOTtcMCYjMzk7OwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCiAJVFBfcHJpbnRrKCYjMzQ7JWQsJWQgJXMgJXUgKCVzKSAlbGx1ICYjNDM7ICV1ICVzLCV1LCV1IFslc10mIzM0OywKQEAgLTQxMCw3ICYjNDM7NDEwLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW8sCiAJCV9fZW50cnktJmd0O3NlY3RvcgkJPSBiaW8tJmd0O2JpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LSZndDtucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhiaW8pOwogCQlibGtfZmlsbF9yd2JzKF9fZW50cnktJmd0O3J3YnMsIGJpby0mZ3Q7Ymlfb3BmKTsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0OyVkLCVkICVzICVsbHUgJiM0MzsgJXUgWyVzXSYjMzQ7LApAQCAtNDkzLDcgJiM0Mzs0OTMsNyBAQCBUUkFDRV9FVkVOVChibG9ja19wbHVnLAogCSksCiAKIAlUUF9mYXN0X2Fzc2lnbigKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O1slc10mIzM0OywgX19lbnRyeS0mZ3Q7Y29tbSkKQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja191bnBsdWcsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7bnJfcnEgPSBkZXB0aDsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O1slc10gJWQmIzM0OywgX19lbnRyeS0mZ3Q7Y29tbSwgX19lbnRyeS0mZ3Q7bnJfcnEpCkBAIC01NjMsNyAmIzQzOzU2Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3NwbGl0LAogCQlfX2VudHJ5LSZndDtzZWN0b3IJCT0gYmlvLSZndDtiaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0mZ3Q7bmV3X3NlY3Rvcgk9IG5ld19zZWN0b3I7CiAJCWJsa19maWxsX3J3YnMoX19lbnRyeS0mZ3Q7cndicywgYmlvLSZndDtiaV9vcGYpOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCiAJVFBfcHJpbnRrKCYjMzQ7JWQsJWQgJXMgJWxsdSAvICVsbHUgWyVzXSYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmgKaW5kZXggYzdiOWM1M2ZjNDk4NjkuLmZkZDIwYmM0NmJiMDI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmgKQEAgLTMyLDcgJiM0MzszMiw3IEBAIFRSQUNFX0VWRU5UKGNvcmVkdW1wLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktJmd0O3NpZyA9IHNpZzsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O3NpZz0lZCBjb21tPSVzJiMzNDssCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKaW5kZXggMjcwYzFhMmMyNGM0NGEuLjdkMjI2NTBiNGM3ODVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oCkBAIC0yNTA1LDcgJiM0MzsyNTA1LDcgQEAgVFJBQ0VfRVZFTlQoZjJmc19sb2NrX2VsYXBzZWRfdGltZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LSZndDtkZXYJCT0gc2JpLSZndDtzYi0mZ3Q7c19kZXY7Ci0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtwcmlvCQk9IHAtJmd0O3ByaW87CiAJCV9fZW50cnktJmd0O2lvcHJpb19jbGFzcwk9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7CkBAIC0yNTU4LDcgJiM0MzsyNTU4LDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhmMmZzX3ByaW9yaXR5X3VwZGF0ZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LSZndDtkZXYJCT0gc2JpLSZndDtzYi0mZ3Q7c19kZXY7Ci0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtsb2NrX25hbWUJPSBsb2NrX25hbWU7CiAJCV9fZW50cnktJmd0O2lzX3dyaXRlCT0gaXNfd3JpdGU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oCmluZGV4IDlmMGE1ZDE0ODJjNDQ4Li44YmNkYzRmZmM4ZDM0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgKQEAgLTIzLDcgJiM0MzsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktJmd0O3BpZCA9IHRhc2stJmd0O3BpZDsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIHRhc2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7CiAJCV9fZW50cnktJmd0O29vbV9zY29yZV9hZGogPSB0YXNrLSZndDtzaWduYWwtJmd0O29vbV9zY29yZV9hZGo7CiAJKSwKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oCmluZGV4IDNmNDI3MzYyMzgwMTRlLi4yY2YwNDdiYjlmYjcxZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaApAQCAtMTE2LDcgJiM0MzsxMTYsNyBAQCBUUkFDRV9FVkVOVCh0aHJlYWRfbm9pc2UsCiAJKSwKIAogCVRQX2Zhc3RfYXNzaWduKAotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0LCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtzdGFydCA9IHN0YXJ0OwogCQlfX2VudHJ5LSZndDtkdXJhdGlvbiA9IGR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmgKaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmgKQEAgLTE1Miw3ICYjNDM7MTUyLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhzY2hlZF93YWtldXBfdGVtcGxhdGUsCiAJKSwKIAogCVRQX2Zhc3RfYXNzaWduKAotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgcC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCQk9IHAtJmd0O3BpZDsKIAkJX19lbnRyeS0mZ3Q7cHJpbwkJPSBwLSZndDtwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi8KIAkJX19lbnRyeS0mZ3Q7dGFyZ2V0X2NwdQk9IHRhc2tfY3B1KHApOwpAQCAtMjM3LDExICYjNDM7MjM3LDExIEBAIFRSQUNFX0VWRU5UKHNjaGVkX3N3aXRjaCwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtwcmV2X2NvbW0sIHByZXYtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7cHJldl9jb21tLCBwcmV2LCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cHJldl9waWQJPSBwcmV2LSZndDtwaWQ7CiAJCV9fZW50cnktJmd0O3ByZXZfcHJpbwk9IHByZXYtJmd0O3ByaW87CiAJCV9fZW50cnktJmd0O3ByZXZfc3RhdGUJPSBfX3RyYWNlX3NjaGVkX3N3aXRjaF9zdGF0ZShwcmVlbXB0LCBwcmV2X3N0YXRlLCBwcmV2KTsKLQkJbWVtY3B5KF9fZW50cnktJmd0O25leHRfY29tbSwgbmV4dC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtuZXh0X3BpZAk9IG5leHQtJmd0O3BpZDsKIAkJX19lbnRyeS0mZ3Q7bmV4dF9wcmlvCT0gbmV4dC0mZ3Q7cHJpbzsKIAkJLyogWFhYIFNDSEVEX0RFQURMSU5FICovCkBAIC0zNDYsNyAmIzQzOzM0Niw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3Byb2Nlc3NfZXhpdCwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtwcmlvCQk9IHAtJmd0O3ByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqLwogCQlfX2VudHJ5LSZndDtncm91cF9kZWFkCT0gZ3JvdXBfZGVhZDsKQEAgLTc4Nyw3ICYjNDM7Nzg3LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc2tpcF9jcHVzZXRfbnVtYSwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCB0c2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgdHNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCQkgPSB0YXNrX3BpZF9ucih0c2spOwogCQlfX2VudHJ5LSZndDt0Z2lkCQkgPSB0YXNrX3RnaWRfbnIodHNrKTsKIAkJX19lbnRyeS0mZ3Q7bmdpZAkJID0gdGFza19udW1hX2dyb3VwX2lkKHRzayk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oCmluZGV4IDFkYjdlNGIwN2MwMTQ4Li44ZmZmZTZkOWJkY2NmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmgKQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIFRSQUNFX0VWRU5UKHNpZ25hbF9nZW5lcmF0ZSwKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7c2lnCT0gc2lnOwogCQlUUF9TVE9SRV9TSUdJTkZPKF9fZW50cnksIGluZm8pOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdGFzay0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCT0gdGFzay0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtncm91cAk9IGdyb3VwOwogCQlfX2VudHJ5LSZndDtyZXN1bHQJPSByZXN1bHQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmgKaW5kZXggYjlhMTI5ZWI1NGQ5ZWIuLjYyYjdkZjRkMjJkMDUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oCkBAIC0yMSw3ICYjNDM7MjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdGFzay0mZ3Q7cGlkOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdGFzay0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7Y2xvbmVfZmxhZ3MgPSBjbG9uZV9mbGFnczsKIAkJX19lbnRyeS0mZ3Q7b29tX3Njb3JlX2FkaiA9IHRhc2stJmd0O3NpZ25hbC0mZ3Q7b29tX3Njb3JlX2FkajsKIAkpLApAQCAtNDYsOCAmIzQzOzQ2LDkgQEAgVFJBQ0VfRVZFTlQodGFza19yZW5hbWUsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdGFzay0mZ3Q7cGlkOwotCQltZW1jcHkoZW50cnktJmd0O29sZGNvbW0sIHRhc2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwotCQlzdHJzY3B5KGVudHJ5LSZndDtuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKGVudHJ5LSZndDtvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCW1lbWNweShlbnRyeS0mZ3Q7bmV3Y29tbSwgY29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQllbnRyeS0mZ3Q7bmV3Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAmIzM5O1wwJiMzOTs7CiAJCV9fZW50cnktJmd0O29vbV9zY29yZV9hZGogPSB0YXNrLSZndDtzaWduYWwtJmd0O29vbV9zY29yZV9hZGo7CiAJKSwKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaAppbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oCkBAIC01Niw2ICYjNDM7NTYsOSBAQAogI2RlZmluZSBQUl9TRVRfTkFNRSAgICAxNQkJLyogU2V0IHByb2Nlc3MgbmFtZSAqLwogI2RlZmluZSBQUl9HRVRfTkFNRSAgICAxNgkJLyogR2V0IHByb2Nlc3MgbmFtZSAqLwogCiYjNDM7I2RlZmluZSBQUl9TRVRfRVhUX05BTUUgICAgMTcJCS8qIFNldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi8KJiM0MzsjZGVmaW5lIFBSX0dFVF9FWFRfTkFNRSAgICAxOAkJLyogR2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZSAqLwomIzQzOwogLyogR2V0L3NldCBwcm9jZXNzIGVuZGlhbiAqLwogI2RlZmluZSBQUl9HRVRfRU5ESUFOCTE5CiAjZGVmaW5lIFBSX1NFVF9FTkRJQU4JMjAKZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5jIGIva2VybmVsL2F1ZGl0LmMKaW5kZXggNTYyNDc2OTM3ZmE3OTMuLjFmMGI0NGQ0ZTVjNzVhIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXQuYwpAQCAtMTY2Nyw3ICYjNDM7MTY2Nyw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ19tdWx0aWNhc3QoaW50IGdyb3VwLCBjb25zdCBjaGFyICpvcCwgaW50IGVycikKIAlhdWRpdF9wdXRfdHR5KHR0eSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7IC8qIHN1Ymo9ICovCiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgY29tbT0mIzM0Oyk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAlhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC0mZ3Q7bW0pOyAvKiBleGU9ICovCiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgbmwtbWNncnA9JWQgb3A9JXMgcmVzPSVkJiMzNDssIGdyb3VwLCBvcCwgIWVycik7CiAJYXVkaXRfbG9nX2VuZChhYik7CkBAIC0yNDc2LDcgJiM0MzsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKQogCQkJIGF1ZGl0X2dldF9zZXNzaW9uaWQoY3VycmVudCkpOwogCWF1ZGl0X3B1dF90dHkodHR5KTsKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBjb21tPSYjMzQ7KTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pOwogCWF1ZGl0X2xvZ19kX3BhdGhfZXhlKGFiLCBjdXJyZW50LSZndDttbSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuYwppbmRleCA2NjEwZTY2N2M3MjhhYS4uMWQ5MzBmMTY5ODU2ZDQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9hdWRpdHNjLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2F1ZGl0c2MuYwpAQCAtMjg3Nyw3ICYjNDM7Mjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcywKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBwaWQ9JXUmIzM0OywgdGFza190Z2lkX25yKGN1cnJlbnQpKTsKIAlhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi8KIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBjb21tPSYjMzQ7KTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pOwogCWF1ZGl0X2xvZ19lbmQoYWIpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoX19hdWRpdF9sb2dfbmZjZmcpOwpAQCAtMjkwMCw3ICYjNDM7MjkwMSw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ190YXNrKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKQogCQkJIHNlc3Npb25pZCk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgcGlkPSVkIGNvbW09JiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAlhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC0mZ3Q7bW0pOwogfQogCmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL25iY29uLmMgYi9rZXJuZWwvcHJpbnRrL25iY29uLmMKaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NAotLS0gYS9rZXJuZWwvcHJpbnRrL25iY29uLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9uYmNvbi5jCkBAIC05NTIsNyAmIzQzOzk1Miw3IEBAIHN0YXRpYyB2b2lkIHdjdHh0X2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgbmJjb25fd3JpdGVfY29udGV4dCAqd2N0eHQsCiB7CiAJd2N0eHQtJmd0O2NwdSA9IHBtc2ctJmd0O2NwdTsKIAl3Y3R4dC0mZ3Q7cGlkID0gcG1zZy0mZ3Q7cGlkOwotCW1lbWNweSh3Y3R4dC0mZ3Q7Y29tbSwgcG1zZy0mZ3Q7Y29tbSwgc2l6ZW9mKHdjdHh0LSZndDtjb21tKSk7CiYjNDM7CWNvcHlfdGFza19jb21tKHdjdHh0LSZndDtjb21tLCBwbXNnLCBzaXplb2Yod2N0eHQtJmd0O2NvbW0pKTsKIAlzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC0mZ3Q7Y29tbSkgPT0gc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKIH0KICNlbHNlCmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL3ByaW50ay5jIGIva2VybmVsL3ByaW50ay9wcmludGsuYwppbmRleCAyZmU5YTk2M2M4MjNhNC4uZWMwYzY3MzRiYmUxY2QgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9wcmludGsuYwpAQCAtMjI0Nyw3ICYjNDM7MjI0Nyw3IEBAIHN0YXRpYyB1MTYgcHJpbnRrX3NwcmludChjaGFyICp0ZXh0LCB1MTYgc2l6ZSwgaW50IGZhY2lsaXR5LAogc3RhdGljIHZvaWQgcHJpbnRrX3N0b3JlX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19pbmZvICppbmZvKQogewogCWluZm8tJmd0O2NhbGxlcl9pZDIgPSBwcmludGtfY2FsbGVyX2lkMigpOwotCWdldF90YXNrX2NvbW0oaW5mby0mZ3Q7Y29tbSwgY3VycmVudCk7CiYjNDM7CXN0cnNjcHlfcGFkKGluZm8tJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogfQogCiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csCkBAIC0yMjU1LDcgJiM0MzsyMjU1LDcgQEAgc3RhdGljIHZvaWQgcG1zZ19sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19tZXNzYWdlICpwbXNnLAogewogCXBtc2ctJmd0O2NwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7CiAJcG1zZy0mZ3Q7cGlkID0gcHJpbnRrX2luZm9fZ2V0X3BpZChpbmZvKTsKLQltZW1jcHkocG1zZy0mZ3Q7Y29tbSwgaW5mby0mZ3Q7Y29tbSwgc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKJiM0MzsJY29weV90YXNrX2NvbW0ocG1zZy0mZ3Q7Y29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKIAlzdGF0aWNfYXNzZXJ0KHNpemVvZihwbXNnLSZndDtjb21tKSA9PSBzaXplb2YoaW5mby0mZ3Q7Y29tbSkpOwogfQogI2Vsc2UKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuYwppbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zeXMuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc3lzLmMKQEAgLTI1MzUsNyAmIzQzOzI1MzUsNyBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLAogCQl1bnNpZ25lZCBsb25nLCBhcmc0LCB1bnNpZ25lZCBsb25nLCBhcmc1KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqbWUgPSBjdXJyZW50OwotCXVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtJmd0O2NvbW0pXTsKJiM0MzsJdW5zaWduZWQgY2hhciBjb21tW1RBU0tfQ09NTV9FWFRfTEVOXTsKIAlsb25nIGVycm9yOwogCiAJZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CkBAIC0yNjAxLDE2ICYjNDM7MjYwMSwyOSBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLAogCQkJZXJyb3IgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIFBSX1NFVF9OQU1FOgotCQljb21tW3NpemVvZihtZS0mZ3Q7Y29tbSkgLSAxXSA9IDA7CiYjNDM7CQljb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9IDA7CiAJCWlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLAotCQkJCSAgICAgIHNpemVvZihtZS0mZ3Q7Y29tbSkgLSAxKSAmbHQ7IDApCiYjNDM7CQkJCSAgICAgIFRBU0tfQ09NTV9MRU4gLSAxKSAmbHQ7IDApCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJc2V0X3Rhc2tfY29tbShtZSwgY29tbSk7CiAJCXByb2NfY29tbV9jb25uZWN0b3IobWUpOwogCQlicmVhazsKIAljYXNlIFBSX0dFVF9OQU1FOgotCQlnZXRfdGFza19jb21tKGNvbW0sIG1lKTsKLQkJaWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBzaXplb2YoY29tbSkpKQomIzQzOwkJc3Ryc2NweV9wYWQoY29tbSwgbWUtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJaWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSkKJiM0MzsJCQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBSX1NFVF9FWFRfTkFNRToKJiM0MzsJCWNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7CiYjNDM7CQlpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMiwKJiM0MzsJCQkJICAgICAgVEFTS19DT01NX0VYVF9MRU4gLSAxKSAmbHQ7IDApCiYjNDM7CQkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CQlzZXRfdGFza19jb21tKG1lLCBjb21tKTsKJiM0MzsJCXByb2NfY29tbV9jb25uZWN0b3IobWUpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUFJfR0VUX0VYVF9OQU1FOgomIzQzOwkJc3Ryc2NweV9wYWQoY29tbSwgbWUtJmd0O2NvbW0sIFRBU0tfQ09NTV9FWFRfTEVOKTsKJiM0MzsJCWlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWJyZWFrOwogCWNhc2UgUFJfR0VUX0VORElBTjoKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYyBiL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYwppbmRleCAwODE5YWNlNWIwMjc1Ny4uNWQyNjAyOWQyZDAxMmQgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMKQEAgLTg4MSw2ICYjNDM7ODgxLDQzIEBAIHN0YXRpYyB2b2lkIHN0cmluZ19iZW5jaF9zdHJyY2hyKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlTVFJJTkdfQkVOQ0hfQlVGKHRlc3QsIGJ1ZiwgbGVuLCBzdHJyY2hyLCBidWYsICYjMzk7XDAmIzM5Oyk7CiB9CiAKJiM0MzsjZGVmaW5lIFRBU0tfTkFNRSAmIzM0O3Rhc2tfbmFtZSYjMzQ7CiYjNDM7I2RlZmluZSBUQVNLX05BTUVfTEVOIDkKJiM0MzsjZGVmaW5lIFRBU0tfTUFYX0xFTiBUQVNLX0NPTU1fRVhUX0xFTgomIzQzOyNkZWZpbmUgU01BTExFUl9MRU4gVEFTS19OQU1FX0xFTiAtIDMKJiM0MzsjZGVmaW5lIEJJR0dFUl9MRU4gVEFTS19NQVhfTEVOICYjNDM7IDMKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdHJpbmdfY29weV90YXNrX2NvbW0oc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJY2hhciBzdHJbVEFTS19NQVhfTEVOXSA9IFRBU0tfTkFNRSwgY29weVtUQVNLX01BWF9MRU5dLAomIzQzOwkgICAgIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOXSwgYmlnZ2VyX2J1ZltCSUdHRVJfTEVOXTsKJiM0MzsJc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNrLCAqdHNrID0gJmFtcDt0YXNrOwomIzQzOwlpbnQgbGVuMSwgbGVuMiwgaTsKJiM0MzsKJiM0MzsJLyogc2V0IGFuZCBnZXQgdGFzayBuYW1lICovCiYjNDM7CXNldF90YXNrX2NvbW0odHNrLCBzdHIpOwomIzQzOwljb3B5X3Rhc2tfY29tbShjb3B5LCB0c2ssIFRBU0tfQ09NTV9MRU4pOwomIzQzOwomIzQzOwlsZW4xID0gc3RybGVuKHN0cik7CiYjNDM7CWxlbjIgPSBzdHJsZW4oY29weSk7CiYjNDM7CiYjNDM7CUtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4xLCBsZW4yKTsKJiM0MzsJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjIsIFRBU0tfTkFNRV9MRU4pOwomIzQzOwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgY29weVtsZW4yXSwgJiMzOTtcMCYjMzk7KTsKJiM0MzsJS1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cmNtcChzdHIsIGNvcHkpKTsKJiM0MzsKJiM0MzsJLyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqLwomIzQzOwljb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTsKJiM0MzsJS1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBzbWFsbGVyX2J1ZiwgU01BTExFUl9MRU4gLSAxKSk7CiYjNDM7CUtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAmIzM5O1wwJiMzOTspOwomIzQzOwomIzQzOwkvKiBjb3B5IHRvIGEgYmlnZ2VyIGRzdCBidWZmZXIgKi8KJiM0MzsJY29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpOwomIzQzOwlLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCAhc3RybmNtcChzdHIsIGJpZ2dlcl9idWYsIFRBU0tfTkFNRV9MRU4pKTsKJiM0MzsJZm9yIChpID0gVEFTS19OQU1FX0xFTjsgaSAmbHQ7IEJJR0dFUl9MRU47IGkmIzQzOyYjNDM7KQomIzQzOwkJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIGJpZ2dlcl9idWZbaV0sICYjMzk7XDAmIzM5Oyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHN0cmluZ190ZXN0X2Nhc2VzW10gPSB7CiAJS1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksCiAJS1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQzMiksCkBAIC05MTAsNiAmIzQzOzk0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cm5sZW4pLAogCUtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksCiAJS1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RycmNociksCiYjNDM7CUtVTklUX0NBU0Uoc3RyaW5nX2NvcHlfdGFza19jb21tKSwKIAl7fQogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCmluZGV4IDA3MGNhMzg4ZjlhY2U4Li40ZTY2Y2IyZDk1NDljNiAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwpAQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBzdGF0aWMgYm9vbCBoY2lfc29ja19nZW5fY29va2llKHN0cnVjdCBzb2NrICpzaykKIAkJCWlkID0gMHhmZmZmZmZmZjsKIAogCQloY2lfcGkoc2spLSZndDtjb29raWUgPSBpZDsKLQkJZ2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLSZndDtjb21tLCBjdXJyZW50KTsKJiM0MzsJCXN0cnNjcHlfcGFkKGhjaV9waShzayktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMKaW5kZXggYTllYWY5NDU1Yzc3ODMuLmM1NTU1ZWVkMWI2MmQyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtOTcxOCw5ICYjNDM7OTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCwKIAlpZiAoIW5saCkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKJiM0MzsJc3Ryc2NweV9wYWQoYnVmLCBjdXJyZW50LSZndDtjb21tKTsKJiM0MzsKIAlpZiAobmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fSUQsIGh0b25sKG5mdF9iYXNlX3NlcShuZXQpKSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fUFJPQ19QSUQsIGh0b25sKHRhc2tfcGlkX25yKGN1cnJlbnQpKSkgfHwKLQkgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGdldF90YXNrX2NvbW0oYnVmLCBjdXJyZW50KSkpCiYjNDM7CSAgICBubGFfcHV0X3N0cmluZyhza2IsIE5GVEFfR0VOX1BST0NfTkFNRSwgYnVmKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlubG1zZ19lbmQoc2tiLCBubGgpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jCmluZGV4IGQ4ZDllNWZmMWNkMjJiLi45ODA2MDA2MDkyOWRhOSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuYwpAQCAtNTQsNyAmIzQzOzU0LDggQEAgdm9pZCBpbnRlZ3JpdHlfYXVkaXRfbWVzc2FnZShpbnQgYXVkaXRfbXNnbm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgb3A9JXMgY2F1c2U9JXMgY29tbT0mIzM0Oywgb3AsIGNhdXNlKTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIG5hbWUpOwogCWlmIChmbmFtZSkgewogCQlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBuYW1lPSYjMzQ7KTsKIAkJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaXBlL2F1ZGl0LmMgYi9zZWN1cml0eS9pcGUvYXVkaXQuYwppbmRleCA5M2ZiNTlmYmRkZDYwYi4uOTBhNmFjZmI3Y2RmY2YgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2lwZS9hdWRpdC5jCkBAIC0xNDUsNyAmIzQzOzE0NSw4IEBAIHZvaWQgaXBlX2F1ZGl0X21hdGNoKGNvbnN0IHN0cnVjdCBpcGVfZXZhbF9jdHggKmNvbnN0IGN0eCwKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0O2lwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09JiMzNDssCiAJCQkgb3AsIGF1ZGl0X2hvb2tfbmFtZXNbY3R4LSZndDtob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLAogCQkJIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAogCWlmIChjdHgtJmd0O2ZpbGUpIHsKIAkJYXVkaXRfbG9nX2RfcGF0aChhYiwgJiMzNDsgcGF0aD0mIzM0OywgJmFtcDtjdHgtJmd0O2ZpbGUtJmd0O2ZfcGF0aCk7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jCmluZGV4IDlhODM1NWZjY2QyNmViLi5iMmZjN2Y3MjJkNjkwOCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMKQEAgLTEwMiw3ICYjNDM7MTAyLDcgQEAgc3RhdGljIHN0cnVjdCBsYW5kbG9ja19kZXRhaWxzICpnZXRfY3VycmVudF9kZXRhaWxzKHZvaWQpCiAJbWVtY3B5KGRldGFpbHMtJmd0O2V4ZV9wYXRoLCBwYXRoX3N0ciwgcGF0aF9zaXplKTsKIAlkZXRhaWxzLSZndDtwaWQgPSBnZXRfcGlkKHRhc2tfdGdpZChjdXJyZW50KSk7CiAJZGV0YWlscy0mZ3Q7dWlkID0gZnJvbV9rdWlkKCZhbXA7aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTsKLQlnZXRfdGFza19jb21tKGRldGFpbHMtJmd0O2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChkZXRhaWxzLSZndDtjb21tLCBjdXJyZW50LSZndDtjb21tKTsKIAlyZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuYwppbmRleCA3MzdmNWEyNjNhOGY3OS4uYTU4N2ZmZWNkOTg1MmMgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2xzbV9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jCkBAIC0yNzYsOCAmIzQzOzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLAogCQkJaWYgKHBpZCkgewogCQkJCWNoYXIgdHNrY29tbVtzaXplb2YodHNrLSZndDtjb21tKV07CiAJCQkJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgb3BpZD0lZCBvY29tbT0mIzM0OywgcGlkKTsKLQkJCQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLAotCQkJCSAgICBnZXRfdGFza19jb21tKHRza2NvbW0sIHRzaykpOwomIzQzOwkJCQlzdHJzY3B5X3BhZCh0c2tjb21tLCB0c2stJmd0O2NvbW0pOwomIzQzOwkJCQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCB0c2tjb21tKTsKIAkJCX0KIAkJfQogCQlicmVhazsKQEAgLTQxNyw3ICYjNDM7NDE3LDggQEAgc3RhdGljIHZvaWQgZHVtcF9jb21tb25fYXVkaXRfZGF0YShzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYiwKIAljaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtJmd0O2NvbW0pXTsKIAogCWF1ZGl0X2xvZ19mb3JtYXQoYWIsICYjMzQ7IHBpZD0lZCBjb21tPSYjMzQ7LCB0YXNrX3RnaWRfbnIoY3VycmVudCkpOwotCWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpOwomIzQzOwlzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LSZndDtjb21tKTsKJiM0MzsJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7CiAJYXVkaXRfbG9nX2xzbV9kYXRhKGFiLCBhKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jCmluZGV4IDNmN2IxNDZkMzZkZmUxLi4wZjIwZjdkZWFjNjdmZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuYwpAQCAtOSw5ICYjNDM7OSwxNyBAQAogCiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmgmIzM0OwogCiYjNDM7I2lmbmRlZiBQUl9TRVRfRVhUX05BTUUKJiM0MzsjIGRlZmluZSBQUl9TRVRfRVhUX05BTUUgMTcKJiM0MzsjIGRlZmluZSBQUl9HRVRfRVhUX05BTUUgMTgKJiM0MzsjZW5kaWYKJiM0MzsKICNkZWZpbmUgQ0hBTkdFX05BTUUgJiMzNDtjaGFuZ2VuYW1lJiMzNDsKJiM0MzsjZGVmaW5lIExPTkdfTkFNRQkmIzM0O2NoYW5nZV90b192ZXJ5X2xvbmdfZXh0ZW5kZWRfbmFtZSYjMzQ7CiYjNDM7I2RlZmluZSBMT05HX05BTUVfQ0FQCSYjMzQ7Y2hhbmdlX3RvX3ZlcnlfJiMzNDsKICNkZWZpbmUgRU1QVFlfTkFNRSAmIzM0OyYjMzQ7CiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTYKJiM0MzsjZGVmaW5lIFRBU0tfQ09NTV9FWFRfTEVOIDY0CiAjZGVmaW5lIE1BWF9QQVRIX0xFTiA1MAogCiBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSkKQEAgLTI1LDYgJiM0MzszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSkKIAlyZXR1cm4gcmVzOwogfQogCiYjNDM7aW50IHNldF9leHRfbmFtZShjaGFyICpuYW1lKQomIzQzO3sKJiM0MzsJaW50IHJlczsKJiM0MzsKJiM0MzsJcmVzID0gcHJjdGwoUFJfU0VUX0VYVF9OQU1FLCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMKTsKJiM0MzsKJiM0MzsJaWYgKHJlcyAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLWVycm5vOwomIzQzO30KJiM0MzsKIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSkKIHsKIAljaGFyIG5hbWVbVEFTS19DT01NX0xFTl07CkBAIC0zOCw2ICYjNDM7NTYsMTkgQEAgaW50IGNoZWNrX2lzX25hbWVfY29ycmVjdChjaGFyICpjaGVja19uYW1lKQogCXJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpOwogfQogCiYjNDM7aW50IGNoZWNrX2lzX2V4dF9uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSkKJiM0Mzt7CiYjNDM7CWNoYXIgbmFtZVtUQVNLX0NPTU1fRVhUX0xFTl07CiYjNDM7CWludCByZXM7CiYjNDM7CiYjNDM7CXJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7CiYjNDM7CiYjNDM7CWlmIChyZXMgJmx0OyAwKQomIzQzOwkJcmV0dXJuIC1lcnJubzsKJiM0MzsKJiM0MzsJcmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7CiYjNDM7fQomIzQzOwogaW50IGNoZWNrX251bGxfcG9pbnRlcihjaGFyICpjaGVja19uYW1lKQogewogCWNoYXIgKm5hbWUgPSBOVUxMOwpAQCAtODIsNiAmIzQzOzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7CiAJRVhQRUNUX0dFKHNldF9uYW1lKENIQU5HRV9OQU1FKSwgMCk7CiAJRVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KENIQU5HRV9OQU1FKSk7CiAKJiM0MzsJRVhQRUNUX0dFKHNldF9leHRfbmFtZShMT05HX05BTUUpLCAwKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KExPTkdfTkFNRV9DQVApKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfbmFtZSgpKTsKJiM0MzsKIAlFWFBFQ1RfR0Uoc2V0X25hbWUoRU1QVFlfTkFNRSksIDApOwogCUVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyODYKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAxMDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBFeHRlbmRlZCBUYXNrIENvbW0gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBleHBhbmRpbmcgdGhlIGB0YXNrX2NvbW1gIGxlbmd0aCBhbmQgYWRkaW5nIG5ldyBgcHJjdGxgIG9wdGlvbnMuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHByY3RsYCwgYSBzeXNjYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCB0d28gbWFpbiBhcmVhczogZXh0ZW5kaW5nIHRoZSBgY29tbWAgYnVmZmVyIGluIGBzdHJ1Y3QgdGFza19zdHJ1Y3RgIGFuZCBhZGRpbmcgYFBSX1NFVF9FWFRfTkFNRWAgYW5kIGBQUl9HRVRfRVhUX05BTUVgIHRvIGBwcmN0bGAuICBUaGUgY2hhbmdlIHRvIHRoZSBgY29tbWAgbGVuZ3RoIGZyb20gYFRBU0tfQ09NTV9MRU5gICgxNikgdG8gYFRBU0tfQ09NTV9FWFRfTEVOYCAoNjQpIGlzIHN1YnN0YW50aWFsLCBhZmZlY3RpbmcgaG93IHByb2Nlc3MgbmFtZXMgYXJlIGhhbmRsZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLCBidXQgdGhlIG5ldyBwcmN0bCBvcHRpb25zIGFyZSB0aGUgZm9jdXMuCgpMb29raW5nIGF0IHRoZSBjb2RlIGFkZGVkIHRvIGBrZXJuZWwvc3lzLmNgLCB0aGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgUFJfU0VUX0VYVF9OQU1FYCBjb3BpZXMgYSB1c2VyLXByb3ZpZGVkIHN0cmluZyB0byBgbWUtJmd0O2NvbW1gIHZpYSBgc3RybmNweV9mcm9tX3VzZXJgIGFuZCBgc2V0X3Rhc2tfY29tbWAgYWZ0ZXIgbnVsbC10ZXJtaW5hdGluZyB0aGUgc3RyaW5nLCB3aGlsZSBgUFJfR0VUX0VYVF9OQU1FYCBjb3BpZXMgdGhlIGV4dGVuZGVkIG5hbWUgYmFjayB0byB1c2Vyc3BhY2UgdXNpbmcgYGNvcHlfdG9fdXNlcmAuICBDcml0aWNhbGx5LCBgcHJvY19jb21tX2Nvbm5lY3RvcmAgaXMgY2FsbGVkIGFmdGVyIHNldHRpbmcgdGhlIG5hbWU7IHRoaXMgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZGVwZW5kaW5nIG9uIGhvdyBpdCYjMzk7cyB1c2VkLiBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYHByb2NfY29tbV9jb25uZWN0b3JgJiMzOTtzIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIGBDT05GSUdfUFJPQ19FVkVOVFNgLCBidXQgdGhpcyBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgYHByY3RsYCBpdHNlbGYuCgpUaGUgYHByY3RsYCBzeXNjYWxsIGlzIG91ciBtYWluIGVudHJ5IHBvaW50IGhlcmU7IHNwZWNpZmljYWxseSwgYHN5c19wcmN0bGAgKG9yIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdmVyc2lvbiBvZiBpdCwgYnV0IFN5emthbGxlciBrbm93cyBhYm91dCBgcHJjdGxgKS4gIEkgZG91YmxlLWNoZWNrZWQgYGtlcm5lbC9zeXMuY2AgdG8gY29uZmlybSB0aGlzLiBXaGlsZSBgc2V0X3Rhc2tfY29tbWAgaXNuJiMzOTt0IGRpcmVjdGx5IG1vZGlmaWVkLCBpdCBjYWxscyBgX19zZXRfdGFza19jb21tYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgY29weV90YXNrX2NvbW1gLiAgQnV0IHRoZSBuZXcgaW5saW5lIGZ1bmN0aW9uIGBjb3B5X3Rhc2tfY29tbWAgaXMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2gsIGFsb25nIHdpdGggdGhlIG1haW4gbG9naWMgaW4gYHN5c19wcmN0bGAuIFNvIGBzeXNfcHJjdGxgIHdpbGwgYmUgb3VyIHByaW1hcnkgZm9jdXMuCgpTaW5jZSB0aGlzIHBhdGNoICphZGRzKiBuZXcgZnVuY3Rpb25hbGl0eSAoc2V0dGluZyBhbmQgZ2V0dGluZyBleHRlbmRlZCBwcm9jZXNzIG5hbWVzKSwgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuIFRoZSBuZXcgYHByY3RsYCBvcHRpb25zIGludHJvZHVjZSBhIG5ldyBjb2RlIHBhdGggdGhhdCYjMzk7cyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldC4KCkluIHRlcm1zIG9mIGNvbmZpZ3VyYXRpb24sIGBwcmN0bGAgaXRzZWxmIGRvZXNuJiMzOTt0IHJlcXVpcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWdzLCBzbyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLgoKRmluYWxseSwgd2UmIzM5O3JlIGRlZmluaXRlbHkgZ29pbmcgdG8gbGFiZWwgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBzeXNfcHJjdGxgLiBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBhbiBlbXB0eSBhcnJheSBhcyB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkZWQuIFRoZSByZWFzb25pbmcgaXMgc2ltcGxlOiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyBgcHJjdGxgIG9wdGlvbnMsIGRpcmVjdGx5IGFmZmVjdGluZyB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjI0LjQ4NjE4MTA1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTYxODM0ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN5c19wcmN0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjI0LjQ4NjE4NTY3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2NjgwNjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmRlNTRjM2RlY2IzYzEzZjI5NGVhOTExZTljOGNlZGNjZjJlZmQyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMDo1MzoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcXG5pbmRleCAwMDU2YWI4MWZiYzM5YS4uYzc4MjQzZWQzYzJhOTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXFxuKysrIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXFxuQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIHByb2NfY29tbV9jb25uZWN0b3Ioc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxcbiBcXHRldi1cXHUwMDNld2hhdCA9IFBST0NfRVZFTlRfQ09NTTtcXG4gXFx0ZXYtXFx1MDAzZWV2ZW50X2RhdGEuY29tbS5wcm9jZXNzX3BpZCAgPSB0YXNrLVxcdTAwM2VwaWQ7XFxuIFxcdGV2LVxcdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cXHUwMDNldGdpZDtcXG4tXFx0Z2V0X3Rhc2tfY29tbShldi1cXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2spO1xcbitcXHRzdHJzY3B5X3BhZChldi1cXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2stXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZtc2ctXFx1MDAzZWlkLCBcXHUwMDI2Y25fcHJvY19ldmVudF9pZCwgc2l6ZW9mKG1zZy1cXHUwMDNlaWQpKTtcXG4gXFx0bXNnLVxcdTAwM2VhY2sgPSAwOyAvKiBub3QgdXNlZCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xcbmluZGV4IDhkZjIwYjAyMThhOWVlLi5kNTAxNjU3YWQ4MDEyOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXFxuKysrIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xcbkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0c3RydWN0IHN5bmNfdGltZWxpbmUgKm9iajtcXG4gXFx0Y2hhciB0YXNrX2NvbW1bVEFTS19DT01NX0xFTl07XFxuIFxcbi1cXHRnZXRfdGFza19jb21tKHRhc2tfY29tbSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKHRhc2tfY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xcbiBcXHRpZiAoIW9iailcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXFxuaW5kZXggNmEzNjQzNTc1MjJiOGEuLjEzYzg4NTdlNGZmYmExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xcbkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCxcXG4gXFx0LyogVGhpcyByZWZlcmVuY2UgZ2V0cyByZWxlYXNlZCBpbiBhbWRrZmRfZmVuY2VfcmVsZWFzZSAqL1xcbiBcXHRtbWdyYWIobW0pO1xcbiBcXHRmZW5jZS1cXHUwMDNlbW0gPSBtbTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShmZW5jZS1cXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKGZlbmNlLVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmZlbmNlLVxcdTAwM2Vsb2NrKTtcXG4gXFx0ZmVuY2UtXFx1MDAzZXN2bV9ibyA9IHN2bV9ibztcXG4gXFx0ZmVuY2UtXFx1MDAzZWNvbnRleHRfaWQgPSBjb250ZXh0X2lkO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXFxuaW5kZXggZjZiNzUyMmMzYzgyZmYuLjA0NjI0M2UzYTNjZDAzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcXG5AQCAtMTI4LDcgKzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRldl9mZW5jZS1cXHUwMDNlZXZmX21nciA9IGV2Zl9tZ3I7XFxuLVxcdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXFx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChldl9mZW5jZS1cXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZldl9mZW5jZS1cXHUwMDNlbG9jayk7XFxuIFxcdGRtYV9mZW5jZV9pbml0NjQoXFx1MDAyNmV2X2ZlbmNlLVxcdTAwM2ViYXNlLCBcXHUwMDI2YW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX29wcyxcXG4gXFx0XFx0XFx0IFxcdTAwMjZldl9mZW5jZS1cXHUwMDNlbG9jaywgZXZmX21nci1cXHUwMDNlZXZfZmVuY2VfY3R4LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcXG5pbmRleCA3NjRjZDQ5NTA0MDgzYy4uZTYwYTQ3MGI1N2VjYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXFxuQEAgLTQ0NDUsNyArNDQ0NSw3IEBAIGludCBhbWRncHVfcmFzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuIFxcdH1cXG4gXFxuIFxcdGNvbi1cXHUwMDNlaW5pdF90YXNrX3BpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xcbi1cXHRnZXRfdGFza19jb21tKGNvbi1cXHUwMDNlaW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChjb24tXFx1MDAzZWluaXRfdGFza19jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNmNvbi1cXHUwMDNlY3JpdGljYWxfcmVnaW9uX2xvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y29uLVxcdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcXG5pbmRleCBmNzRhZDM3OGU0MDc0Mi4uZjQxODU3NDczNjQxYmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xcbkBAIC04NSw3ICs4NSw3IEBAIGludCBhbWRncHVfdXNlcnFfZmVuY2VfZHJpdmVyX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbiBcXG4gXFx0ZmVuY2VfZHJ2LVxcdTAwM2VhZGV2ID0gYWRldjtcXG4gXFx0ZmVuY2VfZHJ2LVxcdTAwM2Vjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7XFxuLVxcdGdldF90YXNrX2NvbW0oZmVuY2VfZHJ2LVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoZmVuY2VfZHJ2LVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdCpmZW5jZV9kcnZfcmVxID0gZmVuY2VfZHJ2O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xcbmluZGV4IGJiOTliN2MzYTAxMGVhLi44NGMwYjMxMGU5YzE0NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXFxuQEAgLTI1NDIsMTAgKzI1NDIsMTAgQEAgdm9pZCBhbWRncHVfdm1fc2V0X3Rhc2tfaW5mbyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0dm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVxcdTAwM2VwaWQ7XFxuLVxcdGdldF90YXNrX2NvbW0odm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQodm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdHZtLVxcdTAwM2V0YXNrX2luZm8tXFx1MDAzZXRnaWQgPSBjdXJyZW50LVxcdTAwM2V0Z2lkO1xcbi1cXHRnZXRfdGFza19jb21tKHZtLVxcdTAwM2V0YXNrX2luZm8tXFx1MDAzZXByb2Nlc3NfbmFtZSwgY3VycmVudC1cXHUwMDNlZ3JvdXBfbGVhZGVyKTtcXG4rXFx0c3Ryc2NweV9wYWQodm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNlcHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXItXFx1MDAzZWNvbW0pO1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xcbmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXFxuQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sXFxuIFxcdH1cXG4gXFxuIFxcdHZyZXMtXFx1MDAzZXRhc2sucGlkID0gdGFza19waWRfbnIoY3VycmVudCk7XFxuLVxcdGdldF90YXNrX2NvbW0odnJlcy1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQodnJlcy1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2dnJlcy1cXHUwMDNldnJlc19ub2RlLCBcXHUwMDI2bWdyLVxcdTAwM2VhbGxvY2F0ZWRfdnJlc19saXN0KTtcXG4gXFxuIFxcdGlmIChiby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMgXFx1MDAyNlxcdTAwMjYgYWRqdXN0X2RjY19zaXplKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jXFxuaW5kZXggNjhlZGU3YTcyNWUyMTkuLmU4YzVjMzYwMWJmMWQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jXFxuQEAgLTI5LDcgKzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKVxcbiBcXHRcXHRnb3RvIGVycl9vdXQwO1xcbiBcXG4gXFx0Y3R4LVxcdTAwM2VwaWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShjdHgtXFx1MDAzZXBuYW1lLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoY3R4LVxcdTAwM2VwbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xcbmluZGV4IDNhN2ZjZTQyODg5ODdiLi4xMTkzNmM0ZDM1NzM2YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcXG5AQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fZGVidWdmc19ib19hZGQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibylcXG4ge1xcbiBcXHRiby1cXHUwMDNlZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LVxcdTAwM2V0Z2lkO1xcbi1cXHRnZXRfdGFza19jb21tKGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXIpO1xcbitcXHRzdHJzY3B5X3BhZChiby1cXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cXHUwMDNlZ3JvdXBfbGVhZGVyLVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBmZGV2LVxcdTAwM2VkZWJ1Z2ZzLmdlbXNfbG9jayk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJvLVxcdTAwM2VkZWJ1Z2ZzLm5vZGUsIFxcdTAwMjZwZmRldi1cXHUwMDNlZGVidWdmcy5nZW1zX2xpc3QpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uY1xcbmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uY1xcbkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHBhbnRob3JfZ2VtX2RlYnVnZnNfYm9fYWRkKHN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcXG4gXFxuIFxcdGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IudGdpZCA9IGN1cnJlbnQtXFx1MDAzZXRnaWQ7XFxuLVxcdGdldF90YXNrX2NvbW0oYm8tXFx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXFx1MDAzZWdyb3VwX2xlYWRlcik7XFxuK1xcdHN0cnNjcHlfcGFkKGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXItXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHRkZXYtXFx1MDAzZWdlbXMubG9jayk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJvLVxcdTAwM2VkZWJ1Z2ZzLm5vZGUsIFxcdTAwMjZwdGRldi1cXHUwMDNlZ2Vtcy5ub2RlKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXFxuaW5kZXggMjk4YjA0NmM5NWVkYjguLjgxYzQ2NTljMGQ3YmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xcbkBAIC0zNjE3LDcgKzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApXFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IGN1cnJlbnQtXFx1MDAzZWdyb3VwX2xlYWRlcjtcXG4gXFxuIFxcdGdyb3VwLVxcdTAwM2V0YXNrX2luZm8ucGlkID0gdGFzay1cXHUwMDNlcGlkO1xcbi1cXHRnZXRfdGFza19jb21tKGdyb3VwLVxcdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzayk7XFxuK1xcdHN0cnNjcHlfcGFkKGdyb3VwLVxcdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzay1cXHUwMDNlY29tbSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xcbmluZGV4IDNkOGU0Y2NkYjdjMWY4Li5iMTBhMGUxY2IxZWQ3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXFxuQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgdmlydGlvX2dwdV9jcmVhdGVfY29udGV4dF9sb2NrZWQoc3RydWN0IHZpcnRpb19ncHVfZGV2aWNlICp2Z2RldixcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0Y2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dO1xcbiBcXG4tXFx0XFx0Z2V0X3Rhc2tfY29tbShkYmduYW1lLCBjdXJyZW50KTtcXG4rXFx0XFx0c3Ryc2NweV9wYWQoZGJnbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdFxcdHZpcnRpb19ncHVfY21kX2NvbnRleHRfY3JlYXRlKHZnZGV2LCB2ZnByaXYtXFx1MDAzZWN0eF9pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgdmZwcml2LVxcdTAwM2Vjb250ZXh0X2luaXQsIHN0cmxlbihkYmduYW1lKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgZGJnbmFtZSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXFxuaW5kZXggZjQ4YzZhOGEwNjU0ZTkuLmM3NzE1NDM5OTY0ZTgxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXFxuQEAgLTYzNCw3ICs2MzQsNyBAQCBzdGF0aWMgc3NpemVfdCBzdG1fY2hhcl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4gXFx0XFx0Y2hhciBjb21tW3NpemVvZihjdXJyZW50LVxcdTAwM2Vjb21tKV07XFxuIFxcdFxcdGNoYXIgKmlkc1tdID0geyBjb21tLCBcXFwiZGVmYXVsdFxcXCIsIE5VTEwgfTtcXG4gXFxuLVxcdFxcdGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCk7XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0XFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cXHUwMDNlc3RtLCBcXHUwMDI2c3RtZi1cXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xcbiBcXHRcXHQvKlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfYXVkaXQuYyBiL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXFxuaW5kZXggZDAxNGFmNmFiMDYwZTUuLmQ1MTRhODFkMGE1YzhlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXFxuKysrIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcXG5AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCB0dHlfYXVkaXRfbG9nKGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBkZXZfdCBkZXYsXFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIlcyBwaWQ9JXUgdWlkPSV1IGF1aWQ9JXUgc2VzPSV1IG1ham9yPSVkIG1pbm9yPSVkIGNvbW09XFxcIixcXG4gXFx0XFx0XFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcXG4gXFx0XFx0XFx0IE1BSk9SKGRldiksIE1JTk9SKGRldikpO1xcbi1cXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChuYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7XFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgZGF0YT1cXFwiKTtcXG4gXFx0YXVkaXRfbG9nX25faGV4KGFiLCBkYXRhLCBzaXplKTtcXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZi5jIGIvZnMvYmluZm10X2VsZi5jXFxuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxcbi0tLSBhL2ZzL2JpbmZtdF9lbGYuY1xcbisrKyBiL2ZzL2JpbmZtdF9lbGYuY1xcbkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbiBcXHRTRVRfVUlEKHBzaW5mby1cXHUwMDNlcHJfdWlkLCBmcm9tX2t1aWRfbXVuZ2VkKGNyZWQtXFx1MDAzZXVzZXJfbnMsIGNyZWQtXFx1MDAzZXVpZCkpO1xcbiBcXHRTRVRfR0lEKHBzaW5mby1cXHUwMDNlcHJfZ2lkLCBmcm9tX2tnaWRfbXVuZ2VkKGNyZWQtXFx1MDAzZXVzZXJfbnMsIGNyZWQtXFx1MDAzZWdpZCkpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShwc2luZm8tXFx1MDAzZXByX2ZuYW1lLCBwKTtcXG4rXFx0c3Ryc2NweV9wYWQocHNpbmZvLVxcdTAwM2Vwcl9mbmFtZSwgcC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmMgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG5pbmRleCA3ZTMxMDg0ODljODNjYS4uYzRkNGU1OWZmMzRkMWIgMTAwNjQ0XFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXFxuKysrIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jXFxuQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0YXRpYyBpbnQgZmlsbF9wc2luZm8oc3RydWN0IGVsZl9wcnBzaW5mbyAqcHNpbmZvLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsXFxuIFxcdFNFVF9VSUQocHNpbmZvLVxcdTAwM2Vwcl91aWQsIGZyb21fa3VpZF9tdW5nZWQoY3JlZC1cXHUwMDNldXNlcl9ucywgY3JlZC1cXHUwMDNldWlkKSk7XFxuIFxcdFNFVF9HSUQocHNpbmZvLVxcdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cXHUwMDNldXNlcl9ucywgY3JlZC1cXHUwMDNlZ2lkKSk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi1cXHRnZXRfdGFza19jb21tKHBzaW5mby1cXHUwMDNlcHJfZm5hbWUsIHApO1xcbitcXHRzdHJzY3B5X3BhZChwc2luZm8tXFx1MDAzZXByX2ZuYW1lLCBwLVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYXJyYXkuYyBiL2ZzL3Byb2MvYXJyYXkuY1xcbmluZGV4IDQ3OWVhOGNiNGVmNDNkLi4wNDkwYjllZjI3ODg1MCAxMDA2NDRcXG4tLS0gYS9mcy9wcm9jL2FycmF5LmNcXG4rKysgYi9mcy9wcm9jL2FycmF5LmNcXG5AQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKVxcbiBcXHRlbHNlIGlmIChwLVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX0tUSFJFQUQpXFxuIFxcdFxcdGdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGdldF90YXNrX2NvbW0odGNvbW0sIHApO1xcbitcXHRcXHRzdHJzY3B5X3BhZCh0Y29tbSwgcC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuIFxcbiBcXHRpZiAoZXNjYXBlKVxcbiBcXHRcXHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFxcXCJcXFxcblxcXFxcXFxcXFxcIik7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxcbmluZGV4IDdiMzhlZTJlNzkxM2JlLi5kZWU4MmUzYzM1MGFmNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcXG5AQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XFxuIFxcdGRvIHtcXHRcXFxcXFxuIFxcdFxcdGNoYXIgY29tbVtUQVNLX0NPTU1fTEVOXTtcXHRcXFxcXFxuIFxcdFxcdC8qIFRoaXMgd2lsbCBhbHdheXMgYmUgTlVMIHRlcm1pbmF0ZWQuICovIFxcXFxcXG4tXFx0XFx0bWVtY3B5KGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0sIHNpemVvZihjb21tKSk7IFxcXFxcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oY29tbSwgY3VycmVudCwgc2l6ZW9mKGNvbW0pKTsgXFxcXFxcbiBcXHRcXHRwcmludGtfcmF0ZWxpbWl0ZWQoTGV2ZWwgXFxcImNvcmVkdW1wOiAlZCglKnBFKTogXFxcIiBGb3JtYXQgXFxcIlxcXFxuXFxcIixcXHRcXFxcXFxuIFxcdFxcdFxcdHRhc2tfdGdpZF92bnIoY3VycmVudCksIChpbnQpc3RybGVuKGNvbW0pLCBjb21tLCAjI19fVkFfQVJHU19fKTtcXHRcXFxcXFxuIFxcdH0gd2hpbGUgKDApXFx0XFxcXFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcXG5pbmRleCAzNzNiY2MwNTk4ZDEwYi4uMGYxYjQwYTVkYmM2MGIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXFxuQEAgLTMyMyw2ICszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcXG4gICovXFxuIGVudW0ge1xcbiBcXHRUQVNLX0NPTU1fTEVOID0gMTYsXFxuK1xcdFRBU0tfQ09NTV9FWFRfTEVOID0gNjQsXFxuIH07XFxuIFxcbiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpO1xcbkBAIC0xMTc4LDcgKzExNzksNyBAQCBzdHJ1Y3QgdGFza19zdHJ1Y3Qge1xcbiBcXHQgKiAtIHNldCBpdCB3aXRoIHNldF90YXNrX2NvbW0oKSB0byBlbnN1cmUgaXQgaXMgYWx3YXlzXFxuIFxcdCAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkXFxuIFxcdCAqL1xcbi1cXHRjaGFyXFx0XFx0XFx0XFx0Y29tbVtUQVNLX0NPTU1fTEVOXTtcXG4rXFx0Y2hhclxcdFxcdFxcdFxcdGNvbW1bVEFTS19DT01NX0VYVF9MRU5dO1xcbiBcXG4gXFx0c3RydWN0IG5hbWVpZGF0YVxcdFxcdCpuYW1laWRhdGE7XFxuIFxcbkBAIC0yMDE3LDI4ICsyMDE4LDIwIEBAIGV4dGVybiB2b2lkIGtpY2tfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7XFxuIFxcbiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7XFxuICNkZWZpbmUgc2V0X3Rhc2tfY29tbSh0c2ssIGZyb20pICh7XFx0XFx0XFx0XFxcXFxcbi1cXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICE9IFRBU0tfQ09NTV9MRU4pO1xcdFxcXFxcXG4rXFx0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSBcXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1xcdFxcXFxcXG4gXFx0X19zZXRfdGFza19jb21tKHRzaywgZnJvbSwgZmFsc2UpO1xcdFxcdFxcXFxcXG4gfSlcXG4gXFxuIC8qXFxuLSAqIC0gV2h5IG5vdCB1c2UgdGFza19sb2NrKCk/XFxuLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVyc1xcbi0gKiAgIGRvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2VcXG4tICogICBjb25kaXRpb24gY291bGQgbGVhZCB0byBsb25nLXRlcm0gbWl4ZWQgcmVzdWx0cy5cXG4tICogICBUaGUgc3Ryc2NweV9wYWQoKSBpbiBfX3NldF90YXNrX2NvbW0oKSBjYW4gZW5zdXJlIHRoYXQgdGhlIHRhc2sgY29tbSBpc1xcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2Vlblxcbi0gKiAgIHJlYWRlciBhbmQgd3JpdGVyIGlzIG5vdCBhbiBpc3N1ZS5cXG4tICpcXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXFxuLSAqICAgU2luY2UgdGhlIGNhbGxlcnMgZG9uJ3QgcGVyZm9ybSBhbnkgcmV0dXJuIHZhbHVlIGNoZWNrcywgdGhpcyBzYWZlZ3VhcmQgaXNcXG4tICogICBuZWNlc3NhcnkuXFxuKyAqIENvcHkgdGFzayBuYW1lIHRvIGEgYnVmZmVyLiBGaW5hbCByZXN1bHQgaXMgYWx3YXlzIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLlxcbiAgKi9cXG4tI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoe1xcdFxcdFxcdFxcXFxcXG4tXFx0QlVJTERfQlVHX09OKHNpemVvZihidWYpIFxcdTAwM2MgVEFTS19DT01NX0xFTik7XFx0XFxcXFxcbi1cXHRzdHJzY3B5X3BhZChidWYsICh0c2spLVxcdTAwM2Vjb21tKTtcXHRcXHRcXHRcXFxcXFxuLVxcdGJ1ZjtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLX0pXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxcbit7XFxuK1xcdGNvbnN0IGNoYXIgKl9zcmMgPSB0c2stXFx1MDAzZWNvbW07XFxuK1xcbitcXHRtZW1jcHkoZHN0LCBfc3JjLCBsZW4pO1xcbitcXHRkc3RbbGVuIC0gMV0gPSAnXFxcXDAnO1xcbit9XFxuIFxcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2NoZWR1bGVyX2lwaSh2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oIGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcXG5pbmRleCBlMGQ4MzhjOWNlOTM4Mi4uOWIwMDk0ZmE0NGM2NDkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxcbkBAIC02MzcsMTAgKzYzNywxMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB0cmFjZXBvaW50ICp0cmFjZXBvaW50X3B0cl9kZXJlZih0cmFjZXBvaW50X3B0cl90ICpwKVxcbiAgKlxcdCpcXG4gICpcXG4gICpcXHRUUF9mYXN0X2Fzc2lnbihcXG4tICpcXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlbmV4dF9jb21tLCBuZXh0LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rICpcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xcbiAgKlxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcGlkXFx0PSBwcmV2LVxcdTAwM2VwaWQ7XFxuICAqXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJldl9wcmlvXFx0PSBwcmV2LVxcdTAwM2VwcmlvO1xcbi0gKlxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2VwcmV2X2NvbW0sIHByZXYtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbisgKlxcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XFxuICAqXFx0XFx0X19lbnRyeS1cXHUwMDNlbmV4dF9waWRcXHQ9IG5leHQtXFx1MDAzZXBpZDtcXG4gICpcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3ByaW9cXHQ9IG5leHQtXFx1MDAzZXByaW87XFxuICAqXFx0KSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmhcXG5pbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmhcXG5AQCAtMjEzLDcgKzIxMyw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfcnEsXFxuIFxcbiBcXHRcXHRibGtfZmlsbF9yd2JzKF9fZW50cnktXFx1MDAzZXJ3YnMsIHJxLVxcdTAwM2VjbWRfZmxhZ3MpO1xcbiBcXHRcXHRfX2dldF9zdHIoY21kKVswXSA9ICdcXFxcMCc7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcIiVkLCVkICVzICV1ICglcykgJWxsdSArICV1ICVzLCV1LCV1IFslc11cXFwiLFxcbkBAIC00MTAsNyArNDEwLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW8sXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXNlY3RvclxcdFxcdD0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlbnJfc2VjdG9yXFx0PSBiaW9fc2VjdG9ycyhiaW8pO1xcbiBcXHRcXHRibGtfZmlsbF9yd2JzKF9fZW50cnktXFx1MDAzZXJ3YnMsIGJpby1cXHUwMDNlYmlfb3BmKTtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX3ByaW50ayhcXFwiJWQsJWQgJXMgJWxsdSArICV1IFslc11cXFwiLFxcbkBAIC00OTMsNyArNDkzLDcgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfcGx1ZyxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHQpLFxcbiBcXG4gXFx0VFBfcHJpbnRrKFxcXCJbJXNdXFxcIiwgX19lbnRyeS1cXHUwMDNlY29tbSlcXG5AQCAtNTEyLDcgKzUxMiw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfdW5wbHVnLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZW5yX3JxID0gZGVwdGg7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcIlslc10gJWRcXFwiLCBfX2VudHJ5LVxcdTAwM2Vjb21tLCBfX2VudHJ5LVxcdTAwM2Vucl9ycSlcXG5AQCAtNTYzLDcgKzU2Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3NwbGl0LFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzZWN0b3JcXHRcXHQ9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZW5ld19zZWN0b3JcXHQ9IG5ld19zZWN0b3I7XFxuIFxcdFxcdGJsa19maWxsX3J3YnMoX19lbnRyeS1cXHUwMDNlcndicywgYmlvLVxcdTAwM2ViaV9vcGYpO1xcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHQpLFxcbiBcXG4gXFx0VFBfcHJpbnRrKFxcXCIlZCwlZCAlcyAlbGx1IC8gJWxsdSBbJXNdXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmhcXG5pbmRleCBjN2I5YzUzZmM0OTg2OS4uZmRkMjBiYzQ2YmIwMjcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmhcXG5AQCAtMzIsNyArMzIsNyBAQCBUUkFDRV9FVkVOVChjb3JlZHVtcCxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzaWcgPSBzaWc7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcInNpZz0lZCBjb21tPSVzXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXFxuaW5kZXggMjcwYzFhMmMyNGM0NGEuLjdkMjI2NTBiNGM3ODVmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxcbkBAIC0yNTA1LDcgKzI1MDUsNyBAQCBUUkFDRV9FVkVOVChmMmZzX2xvY2tfZWxhcHNlZF90aW1lLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWRldlxcdFxcdD0gc2JpLVxcdTAwM2VzYi1cXHUwMDNlc19kZXY7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdD0gcC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwcmlvXFx0XFx0PSBwLVxcdTAwM2VwcmlvO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vpb3ByaW9fY2xhc3NcXHQ9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7XFxuQEAgLTI1NTgsNyArMjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlZGV2XFx0XFx0PSBzYmktXFx1MDAzZXNiLVxcdTAwM2VzX2RldjtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHAtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkXFx0XFx0PSBwLVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWxvY2tfbmFtZVxcdD0gbG9ja19uYW1lO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vpc193cml0ZVxcdD0gaXNfd3JpdGU7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcXG5pbmRleCA5ZjBhNWQxNDgyYzQ0OC4uOGJjZGM0ZmZjOGQzNDQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxcbkBAIC0yMyw3ICsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZCA9IHRhc2stXFx1MDAzZXBpZDtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2stXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXFx1MDAzZXNpZ25hbC1cXHUwMDNlb29tX3Njb3JlX2FkajtcXG4gXFx0KSxcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxcbmluZGV4IDNmNDI3MzYyMzgwMTRlLi4yY2YwNDdiYjlmYjcxZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcXG5AQCAtMTE2LDcgKzExNiw3IEBAIFRSQUNFX0VWRU5UKHRocmVhZF9ub2lzZSxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgdC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwaWQgPSB0LVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXN0YXJ0ID0gc3RhcnQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWR1cmF0aW9uID0gZHVyYXRpb247XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXFxuaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgcC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwaWRcXHRcXHQ9IHAtXFx1MDAzZXBpZDtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJpb1xcdFxcdD0gcC1cXHUwMDNlcHJpbzsgLyogWFhYIFNDSEVEX0RFQURMSU5FICovXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXRhcmdldF9jcHVcXHQ9IHRhc2tfY3B1KHApO1xcbkBAIC0yMzcsMTEgKzIzNywxMSBAQCBUUkFDRV9FVkVOVChzY2hlZF9zd2l0Y2gsXFxuIFxcdCksXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldi1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcGlkXFx0PSBwcmV2LVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcHJpb1xcdD0gcHJldi1cXHUwMDNlcHJpbztcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJldl9zdGF0ZVxcdD0gX190cmFjZV9zY2hlZF9zd2l0Y2hfc3RhdGUocHJlZW1wdCwgcHJldl9zdGF0ZSwgcHJldik7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3BpZFxcdD0gbmV4dC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3ByaW9cXHQ9IG5leHQtXFx1MDAzZXByaW87XFxuIFxcdFxcdC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xcbkBAIC0zNDYsNyArMzQ2LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfcHJvY2Vzc19leGl0LFxcbiBcXHQpLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdD0gcC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwcmlvXFx0XFx0PSBwLVxcdTAwM2VwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi9cXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlZ3JvdXBfZGVhZFxcdD0gZ3JvdXBfZGVhZDtcXG5AQCAtNzg3LDcgKzc4Nyw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3NraXBfY3B1c2V0X251bWEsXFxuIFxcdCksXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRzay1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHRzaywgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdCA9IHRhc2tfcGlkX25yKHRzayk7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXRnaWRcXHRcXHQgPSB0YXNrX3RnaWRfbnIodHNrKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlbmdpZFxcdFxcdCA9IHRhc2tfbnVtYV9ncm91cF9pZCh0c2spO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXFxuaW5kZXggMWRiN2U0YjA3YzAxNDguLjhmZmZlNmQ5YmRjY2YwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcXG5AQCAtNjcsNyArNjcsNyBAQCBUUkFDRV9FVkVOVChzaWduYWxfZ2VuZXJhdGUsXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzaWdcXHQ9IHNpZztcXG4gXFx0XFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2stXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkXFx0PSB0YXNrLVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWdyb3VwXFx0PSBncm91cDtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcmVzdWx0XFx0PSByZXN1bHQ7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxcbmluZGV4IGI5YTEyOWViNTRkOWViLi42MmI3ZGY0ZDIyZDA1MCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcXG5AQCAtMjEsNyArMjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkID0gdGFzay1cXHUwMDNlcGlkO1xcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgdGFzay1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2ssIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vvb21fc2NvcmVfYWRqID0gdGFzay1cXHUwMDNlc2lnbmFsLVxcdTAwM2Vvb21fc2NvcmVfYWRqO1xcbiBcXHQpLFxcbkBAIC00Niw4ICs0Niw5IEBAIFRSQUNFX0VWRU5UKHRhc2tfcmVuYW1lLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZCA9IHRhc2stXFx1MDAzZXBpZDtcXG4tXFx0XFx0bWVtY3B5KGVudHJ5LVxcdTAwM2VvbGRjb21tLCB0YXNrLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4tXFx0XFx0c3Ryc2NweShlbnRyeS1cXHUwMDNlbmV3Y29tbSwgY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKGVudHJ5LVxcdTAwM2VvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0bWVtY3B5KGVudHJ5LVxcdTAwM2VuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0ZW50cnktXFx1MDAzZW5ld2NvbW1bVEFTS19DT01NX0xFTiAtIDFdID0gJ1xcXFwwJztcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXFx1MDAzZXNpZ25hbC1cXHUwMDNlb29tX3Njb3JlX2FkajtcXG4gXFx0KSxcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxcbkBAIC01Niw2ICs1Niw5IEBAXFxuICNkZWZpbmUgUFJfU0VUX05BTUUgICAgMTVcXHRcXHQvKiBTZXQgcHJvY2VzcyBuYW1lICovXFxuICNkZWZpbmUgUFJfR0VUX05BTUUgICAgMTZcXHRcXHQvKiBHZXQgcHJvY2VzcyBuYW1lICovXFxuIFxcbisjZGVmaW5lIFBSX1NFVF9FWFRfTkFNRSAgICAxN1xcdFxcdC8qIFNldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cXG4rI2RlZmluZSBQUl9HRVRfRVhUX05BTUUgICAgMThcXHRcXHQvKiBHZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lICovXFxuK1xcbiAvKiBHZXQvc2V0IHByb2Nlc3MgZW5kaWFuICovXFxuICNkZWZpbmUgUFJfR0VUX0VORElBTlxcdDE5XFxuICNkZWZpbmUgUFJfU0VUX0VORElBTlxcdDIwXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5jIGIva2VybmVsL2F1ZGl0LmNcXG5pbmRleCA1NjI0NzY5MzdmYTc5My4uMWYwYjQ0ZDRlNWM3NWEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2F1ZGl0LmNcXG4rKysgYi9rZXJuZWwvYXVkaXQuY1xcbkBAIC0xNjY3LDcgKzE2NjcsOCBAQCBzdGF0aWMgdm9pZCBhdWRpdF9sb2dfbXVsdGljYXN0KGludCBncm91cCwgY29uc3QgY2hhciAqb3AsIGludCBlcnIpXFxuIFxcdGF1ZGl0X3B1dF90dHkodHR5KTtcXG4gXFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7IC8qIHN1Ymo9ICovXFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgY29tbT1cXFwiKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcXG4gXFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXFx1MDAzZW1tKTsgLyogZXhlPSAqL1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIG5sLW1jZ3JwPSVkIG9wPSVzIHJlcz0lZFxcXCIsIGdyb3VwLCBvcCwgIWVycik7XFxuIFxcdGF1ZGl0X2xvZ19lbmQoYWIpO1xcbkBAIC0yNDc2LDcgKzI0NzcsOCBAQCB2b2lkIGF1ZGl0X2xvZ190YXNrX2luZm8oc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXFxuIFxcdFxcdFxcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcXG4gXFx0YXVkaXRfcHV0X3R0eSh0dHkpO1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIGNvbW09XFxcIik7XFxuLVxcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xcbitcXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XFxuIFxcdGF1ZGl0X2xvZ19kX3BhdGhfZXhlKGFiLCBjdXJyZW50LVxcdTAwM2VtbSk7XFxuIFxcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXFxuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjFkOTMwZjE2OTg1NmQ0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcXG4rKysgYi9rZXJuZWwvYXVkaXRzYy5jXFxuQEAgLTI4NzcsNyArMjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcyxcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBwaWQ9JXVcXFwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xcbiBcXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBjb21tPVxcXCIpO1xcbi1cXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcXG4rXFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuK1xcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xcbiBcXHRhdWRpdF9sb2dfZW5kKGFiKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChfX2F1ZGl0X2xvZ19uZmNmZyk7XFxuQEAgLTI5MDAsNyArMjkwMSw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ190YXNrKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxcbiBcXHRcXHRcXHQgc2Vzc2lvbmlkKTtcXG4gXFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7XFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgcGlkPSVkIGNvbW09XFxcIiwgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcXG4gXFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXFx1MDAzZW1tKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9uYmNvbi5jIGIva2VybmVsL3ByaW50ay9uYmNvbi5jXFxuaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9wcmludGsvbmJjb24uY1xcbisrKyBiL2tlcm5lbC9wcmludGsvbmJjb24uY1xcbkBAIC05NTIsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgd2N0eHRfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBuYmNvbl93cml0ZV9jb250ZXh0ICp3Y3R4dCxcXG4ge1xcbiBcXHR3Y3R4dC1cXHUwMDNlY3B1ID0gcG1zZy1cXHUwMDNlY3B1O1xcbiBcXHR3Y3R4dC1cXHUwMDNlcGlkID0gcG1zZy1cXHUwMDNlcGlkO1xcbi1cXHRtZW1jcHkod2N0eHQtXFx1MDAzZWNvbW0sIHBtc2ctXFx1MDAzZWNvbW0sIHNpemVvZih3Y3R4dC1cXHUwMDNlY29tbSkpO1xcbitcXHRjb3B5X3Rhc2tfY29tbSh3Y3R4dC1cXHUwMDNlY29tbSwgcG1zZywgc2l6ZW9mKHdjdHh0LVxcdTAwM2Vjb21tKSk7XFxuIFxcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjdHh0LVxcdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cXHUwMDNlY29tbSkpO1xcbiB9XFxuICNlbHNlXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmMgYi9rZXJuZWwvcHJpbnRrL3ByaW50ay5jXFxuaW5kZXggMmZlOWE5NjNjODIzYTQuLmVjMGM2NzM0YmJlMWNkIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcXG4rKysgYi9rZXJuZWwvcHJpbnRrL3ByaW50ay5jXFxuQEAgLTIyNDcsNyArMjI0Nyw3IEBAIHN0YXRpYyB1MTYgcHJpbnRrX3NwcmludChjaGFyICp0ZXh0LCB1MTYgc2l6ZSwgaW50IGZhY2lsaXR5LFxcbiBzdGF0aWMgdm9pZCBwcmludGtfc3RvcmVfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX2luZm8gKmluZm8pXFxuIHtcXG4gXFx0aW5mby1cXHUwMDNlY2FsbGVyX2lkMiA9IHByaW50a19jYWxsZXJfaWQyKCk7XFxuLVxcdGdldF90YXNrX2NvbW0oaW5mby1cXHUwMDNlY29tbSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKGluZm8tXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csXFxuQEAgLTIyNTUsNyArMjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcXG4ge1xcbiBcXHRwbXNnLVxcdTAwM2VjcHUgPSBwcmludGtfaW5mb19nZXRfY3B1KGluZm8pO1xcbiBcXHRwbXNnLVxcdTAwM2VwaWQgPSBwcmludGtfaW5mb19nZXRfcGlkKGluZm8pO1xcbi1cXHRtZW1jcHkocG1zZy1cXHUwMDNlY29tbSwgaW5mby1cXHUwMDNlY29tbSwgc2l6ZW9mKHBtc2ctXFx1MDAzZWNvbW0pKTtcXG4rXFx0Y29weV90YXNrX2NvbW0ocG1zZy1cXHUwMDNlY29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctXFx1MDAzZWNvbW0pKTtcXG4gXFx0c3RhdGljX2Fzc2VydChzaXplb2YocG1zZy1cXHUwMDNlY29tbSkgPT0gc2l6ZW9mKGluZm8tXFx1MDAzZWNvbW0pKTtcXG4gfVxcbiAjZWxzZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvc3lzLmMgYi9rZXJuZWwvc3lzLmNcXG5pbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3N5cy5jXFxuKysrIGIva2VybmVsL3N5cy5jXFxuQEAgLTI1MzUsNyArMjUzNSw3IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXFxuIFxcdFxcdHVuc2lnbmVkIGxvbmcsIGFyZzQsIHVuc2lnbmVkIGxvbmcsIGFyZzUpXFxuIHtcXG4gXFx0c3RydWN0IHRhc2tfc3RydWN0ICptZSA9IGN1cnJlbnQ7XFxuLVxcdHVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtXFx1MDAzZWNvbW0pXTtcXG4rXFx0dW5zaWduZWQgY2hhciBjb21tW1RBU0tfQ09NTV9FWFRfTEVOXTtcXG4gXFx0bG9uZyBlcnJvcjtcXG4gXFxuIFxcdGVycm9yID0gc2VjdXJpdHlfdGFza19wcmN0bChvcHRpb24sIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpO1xcbkBAIC0yNjAxLDE2ICsyNjAxLDI5IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXFxuIFxcdFxcdFxcdGVycm9yID0gLUVJTlZBTDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfU0VUX05BTUU6XFxuLVxcdFxcdGNvbW1bc2l6ZW9mKG1lLVxcdTAwM2Vjb21tKSAtIDFdID0gMDtcXG4rXFx0XFx0Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAwO1xcbiBcXHRcXHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcXG4tXFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKG1lLVxcdTAwM2Vjb21tKSAtIDEpIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0XFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdHNldF90YXNrX2NvbW0obWUsIGNvbW0pO1xcbiBcXHRcXHRwcm9jX2NvbW1fY29ubmVjdG9yKG1lKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfR0VUX05BTUU6XFxuLVxcdFxcdGdldF90YXNrX2NvbW0oY29tbSwgbWUpO1xcbi1cXHRcXHRpZiAoY29weV90b191c2VyKChjaGFyIF9fdXNlciAqKWFyZzIsIGNvbW0sIHNpemVvZihjb21tKSkpXFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0aWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFBSX1NFVF9FWFRfTkFNRTpcXG4rXFx0XFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTiAtIDFdID0gMDtcXG4rXFx0XFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGNvbW0sIChjaGFyIF9fdXNlciAqKWFyZzIsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFRBU0tfQ09NTV9FWFRfTEVOIC0gMSkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0c2V0X3Rhc2tfY29tbShtZSwgY29tbSk7XFxuK1xcdFxcdHByb2NfY29tbV9jb25uZWN0b3IobWUpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQUl9HRVRfRVhUX05BTUU6XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fRVhUX0xFTik7XFxuK1xcdFxcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfR0VUX0VORElBTjpcXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jIGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXFxuaW5kZXggMDgxOWFjZTViMDI3NTcuLjVkMjYwMjlkMmQwMTJkIDEwMDY0NFxcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xcbisrKyBiL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xcbkBAIC04ODEsNiArODgxLDQzIEBAIHN0YXRpYyB2b2lkIHN0cmluZ19iZW5jaF9zdHJyY2hyKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4gXFx0U1RSSU5HX0JFTkNIX0JVRih0ZXN0LCBidWYsIGxlbiwgc3RycmNociwgYnVmLCAnXFxcXDAnKTtcXG4gfVxcbiBcXG4rI2RlZmluZSBUQVNLX05BTUUgXFxcInRhc2tfbmFtZVxcXCJcXG4rI2RlZmluZSBUQVNLX05BTUVfTEVOIDlcXG4rI2RlZmluZSBUQVNLX01BWF9MRU4gVEFTS19DT01NX0VYVF9MRU5cXG4rI2RlZmluZSBTTUFMTEVSX0xFTiBUQVNLX05BTUVfTEVOIC0gM1xcbisjZGVmaW5lIEJJR0dFUl9MRU4gVEFTS19NQVhfTEVOICsgM1xcbitcXG4rc3RhdGljIHZvaWQgc3RyaW5nX2NvcHlfdGFza19jb21tKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRjaGFyIHN0cltUQVNLX01BWF9MRU5dID0gVEFTS19OQU1FLCBjb3B5W1RBU0tfTUFYX0xFTl0sXFxuK1xcdCAgICAgc21hbGxlcl9idWZbU01BTExFUl9MRU5dLCBiaWdnZXJfYnVmW0JJR0dFUl9MRU5dO1xcbitcXHRzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0IHRhc2ssICp0c2sgPSBcXHUwMDI2dGFzaztcXG4rXFx0aW50IGxlbjEsIGxlbjIsIGk7XFxuK1xcbitcXHQvKiBzZXQgYW5kIGdldCB0YXNrIG5hbWUgKi9cXG4rXFx0c2V0X3Rhc2tfY29tbSh0c2ssIHN0cik7XFxuK1xcdGNvcHlfdGFza19jb21tKGNvcHksIHRzaywgVEFTS19DT01NX0xFTik7XFxuK1xcbitcXHRsZW4xID0gc3RybGVuKHN0cik7XFxuK1xcdGxlbjIgPSBzdHJsZW4oY29weSk7XFxuK1xcbitcXHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgbGVuMSwgbGVuMik7XFxuK1xcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4yLCBUQVNLX05BTUVfTEVOKTtcXG4rXFx0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGNvcHlbbGVuMl0sICdcXFxcMCcpO1xcbitcXHRLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCAhc3RyY21wKHN0ciwgY29weSkpO1xcbitcXG4rXFx0LyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqL1xcbitcXHRjb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTtcXG4rXFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBzbWFsbGVyX2J1ZiwgU01BTExFUl9MRU4gLSAxKSk7XFxuK1xcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAnXFxcXDAnKTtcXG4rXFxuK1xcdC8qIGNvcHkgdG8gYSBiaWdnZXIgZHN0IGJ1ZmZlciAqL1xcbitcXHRjb3B5X3Rhc2tfY29tbShiaWdnZXJfYnVmLCB0c2ssIHNpemVvZihiaWdnZXJfYnVmKSk7XFxuK1xcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgYmlnZ2VyX2J1ZiwgVEFTS19OQU1FX0xFTikpO1xcbitcXHRmb3IgKGkgPSBUQVNLX05BTUVfTEVOOyBpIFxcdTAwM2MgQklHR0VSX0xFTjsgaSsrKVxcbitcXHRcXHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgYmlnZ2VyX2J1ZltpXSwgJ1xcXFwwJyk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDE2KSxcXG4gXFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQzMiksXFxuQEAgLTkxMCw2ICs5NDcsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2Ugc3RyaW5nX3Rlc3RfY2FzZXNbXSA9IHtcXG4gXFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RybmxlbiksXFxuIFxcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksXFxuIFxcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cnJjaHIpLFxcbitcXHRLVU5JVF9DQVNFKHN0cmluZ19jb3B5X3Rhc2tfY29tbSksXFxuIFxcdHt9XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG5pbmRleCAwNzBjYTM4OGY5YWNlOC4uNGU2NmNiMmQ5NTQ5YzYgMTAwNjQ0XFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbCBoY2lfc29ja19nZW5fY29va2llKHN0cnVjdCBzb2NrICpzaylcXG4gXFx0XFx0XFx0aWQgPSAweGZmZmZmZmZmO1xcbiBcXG4gXFx0XFx0aGNpX3BpKHNrKS1cXHUwMDNlY29va2llID0gaWQ7XFxuLVxcdFxcdGdldF90YXNrX2NvbW0oaGNpX3BpKHNrKS1cXHUwMDNlY29tbSwgY3VycmVudCk7XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGhjaV9waShzayktXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbmluZGV4IGE5ZWFmOTQ1NWM3NzgzLi5jNTU1NWVlZDFiNjJkMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTk3MTgsOSArOTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0aWYgKCFubGgpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4rXFx0c3Ryc2NweV9wYWQoYnVmLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFxuIFxcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9JRCwgaHRvbmwobmZ0X2Jhc2Vfc2VxKG5ldCkpKSB8fFxcbiBcXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fUFJPQ19QSUQsIGh0b25sKHRhc2tfcGlkX25yKGN1cnJlbnQpKSkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfc3RyaW5nKHNrYiwgTkZUQV9HRU5fUFJPQ19OQU1FLCBnZXRfdGFza19jb21tKGJ1ZiwgY3VycmVudCkpKVxcbitcXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGJ1ZikpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0bmxtc2dfZW5kKHNrYiwgbmxoKTtcXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXFxuaW5kZXggZDhkOWU1ZmYxY2QyMmIuLjk4MDYwMDYwOTI5ZGE5IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xcbisrKyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xcbkBAIC01NCw3ICs1NCw4IEBAIHZvaWQgaW50ZWdyaXR5X2F1ZGl0X21lc3NhZ2UoaW50IGF1ZGl0X21zZ25vLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbiBcXHRcXHRcXHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XFxuIFxcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpO1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIG9wPSVzIGNhdXNlPSVzIGNvbW09XFxcIiwgb3AsIGNhdXNlKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShuYW1lLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcXG4gXFx0aWYgKGZuYW1lKSB7XFxuIFxcdFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgbmFtZT1cXFwiKTtcXG4gXFx0XFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9pcGUvYXVkaXQuYyBiL3NlY3VyaXR5L2lwZS9hdWRpdC5jXFxuaW5kZXggOTNmYjU5ZmJkZGQ2MGIuLjkwYTZhY2ZiN2NkZmNmIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXFxuKysrIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcXG5AQCAtMTQ1LDcgKzE0NSw4IEBAIHZvaWQgaXBlX2F1ZGl0X21hdGNoKGNvbnN0IHN0cnVjdCBpcGVfZXZhbF9jdHggKmNvbnN0IGN0eCxcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcImlwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09XFxcIixcXG4gXFx0XFx0XFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cXHUwMDNlaG9va10sIFJFQURfT05DRShlbmZvcmNlKSxcXG4gXFx0XFx0XFx0IHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XFxuLVxcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xcbitcXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XFxuIFxcbiBcXHRpZiAoY3R4LVxcdTAwM2VmaWxlKSB7XFxuIFxcdFxcdGF1ZGl0X2xvZ19kX3BhdGgoYWIsIFxcXCIgcGF0aD1cXFwiLCBcXHUwMDI2Y3R4LVxcdTAwM2VmaWxlLVxcdTAwM2VmX3BhdGgpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXFxuaW5kZXggOWE4MzU1ZmNjZDI2ZWIuLmIyZmM3ZjcyMmQ2OTA4IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXFxuKysrIGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcXG5AQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGFuZGxvY2tfZGV0YWlscyAqZ2V0X2N1cnJlbnRfZGV0YWlscyh2b2lkKVxcbiBcXHRtZW1jcHkoZGV0YWlscy1cXHUwMDNlZXhlX3BhdGgsIHBhdGhfc3RyLCBwYXRoX3NpemUpO1xcbiBcXHRkZXRhaWxzLVxcdTAwM2VwaWQgPSBnZXRfcGlkKHRhc2tfdGdpZChjdXJyZW50KSk7XFxuIFxcdGRldGFpbHMtXFx1MDAzZXVpZCA9IGZyb21fa3VpZChcXHUwMDI2aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShkZXRhaWxzLVxcdTAwM2Vjb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoZGV0YWlscy1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdHJldHVybiBkZXRhaWxzO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sc21fYXVkaXQuYyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXFxuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2xzbV9hdWRpdC5jXFxuKysrIGIvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcXG5AQCAtMjc2LDggKzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLFxcbiBcXHRcXHRcXHRpZiAocGlkKSB7XFxuIFxcdFxcdFxcdFxcdGNoYXIgdHNrY29tbVtzaXplb2YodHNrLVxcdTAwM2Vjb21tKV07XFxuIFxcdFxcdFxcdFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgb3BpZD0lZCBvY29tbT1cXFwiLCBwaWQpO1xcbi1cXHRcXHRcXHRcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxcbi1cXHRcXHRcXHRcXHQgICAgZ2V0X3Rhc2tfY29tbSh0c2tjb21tLCB0c2spKTtcXG4rXFx0XFx0XFx0XFx0c3Ryc2NweV9wYWQodHNrY29tbSwgdHNrLVxcdTAwM2Vjb21tKTtcXG4rXFx0XFx0XFx0XFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgdHNrY29tbSk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG5AQCAtNDE3LDcgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXFxuIFxcdGNoYXIgY29tbVtzaXplb2YoY3VycmVudC1cXHUwMDNlY29tbSldO1xcbiBcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBwaWQ9JWQgY29tbT1cXFwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xcbi1cXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcXG4rXFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuK1xcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xcbiBcXHRhdWRpdF9sb2dfbHNtX2RhdGEoYWIsIGEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcXG5pbmRleCAzZjdiMTQ2ZDM2ZGZlMS4uMGYyMGY3ZGVhYzY3ZmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXFxuQEAgLTksOSArOSwxNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdF9oYXJuZXNzLmhcXFwiXFxuIFxcbisjaWZuZGVmIFBSX1NFVF9FWFRfTkFNRVxcbisjIGRlZmluZSBQUl9TRVRfRVhUX05BTUUgMTdcXG4rIyBkZWZpbmUgUFJfR0VUX0VYVF9OQU1FIDE4XFxuKyNlbmRpZlxcbitcXG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcXFwiY2hhbmdlbmFtZVxcXCJcXG4rI2RlZmluZSBMT05HX05BTUVcXHRcXFwiY2hhbmdlX3RvX3ZlcnlfbG9uZ19leHRlbmRlZF9uYW1lXFxcIlxcbisjZGVmaW5lIExPTkdfTkFNRV9DQVBcXHRcXFwiY2hhbmdlX3RvX3ZlcnlfXFxcIlxcbiAjZGVmaW5lIEVNUFRZX05BTUUgXFxcIlxcXCJcXG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XFxuKyNkZWZpbmUgVEFTS19DT01NX0VYVF9MRU4gNjRcXG4gI2RlZmluZSBNQVhfUEFUSF9MRU4gNTBcXG4gXFxuIGludCBzZXRfbmFtZShjaGFyICpuYW1lKVxcbkBAIC0yNSw2ICszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcXG4gXFx0cmV0dXJuIHJlcztcXG4gfVxcbiBcXG4raW50IHNldF9leHRfbmFtZShjaGFyICpuYW1lKVxcbit7XFxuK1xcdGludCByZXM7XFxuK1xcbitcXHRyZXMgPSBwcmN0bChQUl9TRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xcbitcXG4rXFx0aWYgKHJlcyBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtZXJybm87XFxuK31cXG4rXFxuIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcXG4ge1xcbiBcXHRjaGFyIG5hbWVbVEFTS19DT01NX0xFTl07XFxuQEAgLTM4LDYgKzU2LDE5IEBAIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcXG4gXFx0cmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7XFxuIH1cXG4gXFxuK2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXFxuK3tcXG4rXFx0Y2hhciBuYW1lW1RBU0tfQ09NTV9FWFRfTEVOXTtcXG4rXFx0aW50IHJlcztcXG4rXFxuK1xcdHJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7XFxuK1xcbitcXHRpZiAocmVzIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIC1lcnJubztcXG4rXFxuK1xcdHJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpO1xcbit9XFxuK1xcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXFxuIHtcXG4gXFx0Y2hhciAqbmFtZSA9IE5VTEw7XFxuQEAgLTgyLDYgKzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7XFxuIFxcdEVYUEVDVF9HRShzZXRfbmFtZShDSEFOR0VfTkFNRSksIDApO1xcbiBcXHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoQ0hBTkdFX05BTUUpKTtcXG4gXFxuK1xcdEVYUEVDVF9HRShzZXRfZXh0X25hbWUoTE9OR19OQU1FKSwgMCk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX2V4dF9uYW1lX2NvcnJlY3QoTE9OR19OQU1FKSk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChMT05HX05BTUVfQ0FQKSk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX25hbWUoKSk7XFxuK1xcbiBcXHRFWFBFQ1RfR0Uoc2V0X25hbWUoRU1QVFlfTkFNRSksIDApO1xcbiBcXHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoRU1QVFlfTkFNRSkpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjA6NTM6MjUuMjMzNTU2MTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxNDQ1MTY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzeXNfcHJjdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBwcmN0bCBvcHRpb25zIFBSX1NFVF9FWFRfTkFNRSBhbmQgUFJfR0VUX0VYVF9OQU1FIHRvIHNldCBhbmQgZ2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZkZTU0YzNkZWNiM2MxM2YyOTRlYTkxMWU5YzhjZWRjY2YyZWZkMjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMDo1MzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuY1xuaW5kZXggMDA1NmFiODFmYmMzOWEuLmM3ODI0M2VkM2MyYTk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXG4rKysgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcbkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBwcm9jX2NvbW1fY29ubmVjdG9yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcdGV2LVx1MDAzZXdoYXQgPSBQUk9DX0VWRU5UX0NPTU07XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay1cdTAwM2VwaWQ7XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7XG4rXHRzdHJzY3B5X3BhZChldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzay1cdTAwM2Vjb21tKTtcbiBcbiBcdG1lbWNweShcdTAwMjZtc2ctXHUwMDNlaWQsIFx1MDAyNmNuX3Byb2NfZXZlbnRfaWQsIHNpemVvZihtc2ctXHUwMDNlaWQpKTtcbiBcdG1zZy1cdTAwM2VhY2sgPSAwOyAvKiBub3QgdXNlZCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMgYi9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG5pbmRleCA4ZGYyMGIwMjE4YTllZS4uZDUwMTY1N2FkODAxMjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG4rKysgYi9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG5AQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbnQgc3dfc3luY19kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRzdHJ1Y3Qgc3luY190aW1lbGluZSAqb2JqO1xuIFx0Y2hhciB0YXNrX2NvbW1bVEFTS19DT01NX0xFTl07XG4gXG4tXHRnZXRfdGFza19jb21tKHRhc2tfY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xuIFx0aWYgKCFvYmopXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXG5pbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IGFtZGdwdV9hbWRrZmRfZmVuY2UgKmFtZGdwdV9hbWRrZmRfZmVuY2VfY3JlYXRlKHU2NCBjb250ZXh0LFxuIFx0LyogVGhpcyByZWZlcmVuY2UgZ2V0cyByZWxlYXNlZCBpbiBhbWRrZmRfZmVuY2VfcmVsZWFzZSAqL1xuIFx0bW1ncmFiKG1tKTtcbiBcdGZlbmNlLVx1MDAzZW1tID0gbW07XG4tXHRnZXRfdGFza19jb21tKGZlbmNlLVx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQoZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmZlbmNlLVx1MDAzZWxvY2spO1xuIFx0ZmVuY2UtXHUwMDNlc3ZtX2JvID0gc3ZtX2JvO1xuIFx0ZmVuY2UtXHUwMDNlY29udGV4dF9pZCA9IGNvbnRleHRfaWQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuY1xuaW5kZXggZjZiNzUyMmMzYzgyZmYuLjA0NjI0M2UzYTNjZDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXG5AQCAtMTI4LDcgKzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRldl9mZW5jZS1cdTAwM2VldmZfbWdyID0gZXZmX21ncjtcbi1cdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZChldl9mZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZXZfZmVuY2UtXHUwMDNlbG9jayk7XG4gXHRkbWFfZmVuY2VfaW5pdDY0KFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWJhc2UsIFx1MDAyNmFtZGdwdV9ldmljdGlvbl9mZW5jZV9vcHMsXG4gXHRcdFx0IFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWxvY2ssIGV2Zl9tZ3ItXHUwMDNlZXZfZmVuY2VfY3R4LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuY1xuaW5kZXggNzY0Y2Q0OTUwNDA4M2MuLmU2MGE0NzBiNTdlY2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcbkBAIC00NDQ1LDcgKzQ0NDUsNyBAQCBpbnQgYW1kZ3B1X3Jhc19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuIFx0fVxuIFxuIFx0Y29uLVx1MDAzZWluaXRfdGFza19waWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTtcbi1cdGdldF90YXNrX2NvbW0oY29uLVx1MDAzZWluaXRfdGFza19jb21tLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGNvbi1cdTAwM2Vpbml0X3Rhc2tfY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y29uLVx1MDAzZWNyaXRpY2FsX3JlZ2lvbl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNvbi1cdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xuaW5kZXggZjc0YWQzNzhlNDA3NDIuLmY0MTg1NzQ3MzY0MWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jXG5AQCAtODUsNyArODUsNyBAQCBpbnQgYW1kZ3B1X3VzZXJxX2ZlbmNlX2RyaXZlcl9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbiBcbiBcdGZlbmNlX2Rydi1cdTAwM2VhZGV2ID0gYWRldjtcbiBcdGZlbmNlX2Rydi1cdTAwM2Vjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7XG4tXHRnZXRfdGFza19jb21tKGZlbmNlX2Rydi1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGZlbmNlX2Rydi1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0KmZlbmNlX2Rydl9yZXEgPSBmZW5jZV9kcnY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xuaW5kZXggYmI5OWI3YzNhMDEwZWEuLjg0YzBiMzEwZTljMTQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXG5AQCAtMjU0MiwxMCArMjU0MiwxMCBAQCB2b2lkIGFtZGdwdV92bV9zZXRfdGFza19pbmZvKHN0cnVjdCBhbWRncHVfdm0gKnZtKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0odm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0dm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRnaWQgPSBjdXJyZW50LVx1MDAzZXRnaWQ7XG4tXHRnZXRfdGFza19jb21tKHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2Vwcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyKTtcbitcdHN0cnNjcHlfcGFkKHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2Vwcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXG5pbmRleCAyYTI0MWE1YjEyYzQyMC4uZjhjZTU5ZDg1ODdhMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmNcbkBAIC01NjMsNyArNTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLFxuIFx0fVxuIFxuIFx0dnJlcy1cdTAwM2V0YXNrLnBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbSh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dnJlcy1cdTAwM2V2cmVzX25vZGUsIFx1MDAyNm1nci1cdTAwM2VhbGxvY2F0ZWRfdnJlc19saXN0KTtcbiBcbiBcdGlmIChiby1cdTAwM2VmbGFncyBcdTAwMjYgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTIFx1MDAyNlx1MDAyNiBhZGp1c3RfZGNjX3NpemUpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuaW5kZXggNjhlZGU3YTcyNWUyMTkuLmU4YzVjMzYwMWJmMWQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuQEAgLTI5LDcgKzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKVxuIFx0XHRnb3RvIGVycl9vdXQwO1xuIFxuIFx0Y3R4LVx1MDAzZXBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbShjdHgtXHUwMDNlcG5hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQoY3R4LVx1MDAzZXBuYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jXG5pbmRleCAzYTdmY2U0Mjg4OTg3Yi4uMTE5MzZjNGQzNTczNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xuQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIHZvaWQgcGFuZnJvc3RfZ2VtX2RlYnVnZnNfYm9fYWRkKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LFxuIFx0XHRcdFx0XHRzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pXG4ge1xuIFx0Ym8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LVx1MDAzZXRnaWQ7XG4tXHRnZXRfdGFza19jb21tKGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyKTtcbitcdHN0cnNjcHlfcGFkKGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyLVx1MDAzZWNvbW0pO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwZmRldi1cdTAwM2VkZWJ1Z2ZzLmdlbXNfbG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmJvLVx1MDAzZWRlYnVnZnMubm9kZSwgXHUwMDI2cGZkZXYtXHUwMDNlZGVidWdmcy5nZW1zX2xpc3QpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG5pbmRleCBhMWUyZWIxY2E3YmJlNi4uZWJiMzY2NGU0MzAzY2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG5AQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibylcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcbiBcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4rXHRzdHJzY3B5X3BhZChiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlci1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHRkZXYtXHUwMDNlZ2Vtcy5sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Ym8tXHUwMDNlZGVidWdmcy5ub2RlLCBcdTAwMjZwdGRldi1cdTAwM2VnZW1zLm5vZGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xuaW5kZXggMjk4YjA0NmM5NWVkYjguLjgxYzQ2NTljMGQ3YmU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmNcbkBAIC0zNjE3LDcgKzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApXG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcjtcbiBcbiBcdGdyb3VwLVx1MDAzZXRhc2tfaW5mby5waWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0oZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2spO1xuK1x0c3Ryc2NweV9wYWQoZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXG5pbmRleCAzZDhlNGNjZGI3YzFmOC4uYjEwYTBlMWNiMWVkNzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmNcbkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfY3JlYXRlX2NvbnRleHRfbG9ja2VkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsXG4gXHR9IGVsc2Uge1xuIFx0XHRjaGFyIGRiZ25hbWVbVEFTS19DT01NX0xFTl07XG4gXG4tXHRcdGdldF90YXNrX2NvbW0oZGJnbmFtZSwgY3VycmVudCk7XG4rXHRcdHN0cnNjcHlfcGFkKGRiZ25hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRcdHZpcnRpb19ncHVfY21kX2NvbnRleHRfY3JlYXRlKHZnZGV2LCB2ZnByaXYtXHUwMDNlY3R4X2lkLFxuIFx0XHRcdFx0XHQgICAgICB2ZnByaXYtXHUwMDNlY29udGV4dF9pbml0LCBzdHJsZW4oZGJnbmFtZSksXG4gXHRcdFx0XHRcdCAgICAgIGRiZ25hbWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG5pbmRleCBmNDhjNmE4YTA2NTRlOS4uYzc3MTU0Mzk5NjRlODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG4rKysgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG5AQCAtNjM0LDcgKzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0XHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFx0XHRjaGFyICppZHNbXSA9IHsgY29tbSwgXCJkZWZhdWx0XCIsIE5VTEwgfTtcbiBcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KTtcbitcdFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cdTAwM2VzdG0sIFx1MDAyNnN0bWYtXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xuIFx0XHQvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcbmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfYXVkaXQuY1xuQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgdHR5X2F1ZGl0X2xvZyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgZGV2X3QgZGV2LFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIlcyBwaWQ9JXUgdWlkPSV1IGF1aWQ9JXUgc2VzPSV1IG1ham9yPSVkIG1pbm9yPSVkIGNvbW09XCIsXG4gXHRcdFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcbiBcdFx0XHQgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7XG4tXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIG5hbWUpO1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgZGF0YT1cIik7XG4gXHRhdWRpdF9sb2dfbl9oZXgoYWIsIGRhdGEsIHNpemUpO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4rKysgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuIFx0U0VUX1VJRChwc2luZm8tXHUwMDNlcHJfdWlkLCBmcm9tX2t1aWRfbXVuZ2VkKGNyZWQtXHUwMDNldXNlcl9ucywgY3JlZC1cdTAwM2V1aWQpKTtcbiBcdFNFVF9HSUQocHNpbmZvLVx1MDAzZXByX2dpZCwgZnJvbV9rZ2lkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNlZ2lkKSk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdGdldF90YXNrX2NvbW0ocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwKTtcbitcdHN0cnNjcHlfcGFkKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcC1cdTAwM2Vjb21tKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmMgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbmluZGV4IDdlMzEwODQ4OWM4M2NhLi5jNGQ0ZTU5ZmYzNGQxYiAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuKysrIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jXG5AQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4rXHRzdHJzY3B5X3BhZChwc2luZm8tXHUwMDNlcHJfZm5hbWUsIHAtXHUwMDNlY29tbSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZnMvcHJvYy9hcnJheS5jIGIvZnMvcHJvYy9hcnJheS5jXG5pbmRleCA0NzllYThjYjRlZjQzZC4uMDQ5MGI5ZWYyNzg4NTAgMTAwNjQ0XG4tLS0gYS9mcy9wcm9jL2FycmF5LmNcbisrKyBiL2ZzL3Byb2MvYXJyYXkuY1xuQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIHByb2NfdGFza19uYW1lKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBib29sIGVzY2FwZSlcbiBcdGVsc2UgaWYgKHAtXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX0tUSFJFQUQpXG4gXHRcdGdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApO1xuIFx0ZWxzZVxuLVx0XHRnZXRfdGFza19jb21tKHRjb21tLCBwKTtcbitcdFx0c3Ryc2NweV9wYWQodGNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4gXG4gXHRpZiAoZXNjYXBlKVxuIFx0XHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFwiXFxuXFxcXFwiKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmggYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcbmluZGV4IDdiMzhlZTJlNzkxM2JlLi5kZWU4MmUzYzM1MGFmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxuKysrIGIvaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oXG5AQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XG4gXHRkbyB7XHRcXFxuIFx0XHRjaGFyIGNvbW1bVEFTS19DT01NX0xFTl07XHRcXFxuIFx0XHQvKiBUaGlzIHdpbGwgYWx3YXlzIGJlIE5VTCB0ZXJtaW5hdGVkLiAqLyBcXFxuLVx0XHRtZW1jcHkoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBzaXplb2YoY29tbSkpOyBcXFxuK1x0XHRjb3B5X3Rhc2tfY29tbShjb21tLCBjdXJyZW50LCBzaXplb2YoY29tbSkpOyBcXFxuIFx0XHRwcmludGtfcmF0ZWxpbWl0ZWQoTGV2ZWwgXCJjb3JlZHVtcDogJWQoJSpwRSk6IFwiIEZvcm1hdCBcIlxcblwiLFx0XFxcbiBcdFx0XHR0YXNrX3RnaWRfdm5yKGN1cnJlbnQpLCAoaW50KXN0cmxlbihjb21tKSwgY29tbSwgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIFx0fSB3aGlsZSAoMClcdFxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXG5pbmRleCAzNzNiY2MwNTk4ZDEwYi4uMGYxYjQwYTVkYmM2MGIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaFxuQEAgLTMyMyw2ICszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcbiAgKi9cbiBlbnVtIHtcbiBcdFRBU0tfQ09NTV9MRU4gPSAxNixcbitcdFRBU0tfQ09NTV9FWFRfTEVOID0gNjQsXG4gfTtcbiBcbiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpO1xuQEAgLTExNzgsNyArMTE3OSw3IEBAIHN0cnVjdCB0YXNrX3N0cnVjdCB7XG4gXHQgKiAtIHNldCBpdCB3aXRoIHNldF90YXNrX2NvbW0oKSB0byBlbnN1cmUgaXQgaXMgYWx3YXlzXG4gXHQgKiAgIE5VTC10ZXJtaW5hdGVkIGFuZCB6ZXJvLXBhZGRlZFxuIFx0ICovXG4tXHRjaGFyXHRcdFx0XHRjb21tW1RBU0tfQ09NTV9MRU5dO1xuK1x0Y2hhclx0XHRcdFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXG4gXHRzdHJ1Y3QgbmFtZWlkYXRhXHRcdCpuYW1laWRhdGE7XG4gXG5AQCAtMjAxNywyOCArMjAxOCwyMCBAQCBleHRlcm4gdm9pZCBraWNrX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0c2spO1xuIFxuIGV4dGVybiB2b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqZnJvbSwgYm9vbCBleGVjKTtcbiAjZGVmaW5lIHNldF90YXNrX2NvbW0odHNrLCBmcm9tKSAoe1x0XHRcdFxcXG4tXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICE9IFRBU0tfQ09NTV9MRU4pO1x0XFxcbitcdEJVSUxEX0JVR19PTihzaXplb2YoZnJvbSkgXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1x0XFxcbiBcdF9fc2V0X3Rhc2tfY29tbSh0c2ssIGZyb20sIGZhbHNlKTtcdFx0XFxcbiB9KVxuIFxuIC8qXG4tICogLSBXaHkgbm90IHVzZSB0YXNrX2xvY2soKT9cbi0gKiAgIFVzZXIgc3BhY2UgY2FuIHJhbmRvbWx5IGNoYW5nZSB0aGVpciBuYW1lcyBhbnl3YXksIHNvIGxvY2tpbmcgZm9yIHJlYWRlcnNcbi0gKiAgIGRvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2Vcbi0gKiAgIGNvbmRpdGlvbiBjb3VsZCBsZWFkIHRvIGxvbmctdGVybSBtaXhlZCByZXN1bHRzLlxuLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXNcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlblxuLSAqICAgcmVhZGVyIGFuZCB3cml0ZXIgaXMgbm90IGFuIGlzc3VlLlxuLSAqXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXG4tICogICBTaW5jZSB0aGUgY2FsbGVycyBkb24ndCBwZXJmb3JtIGFueSByZXR1cm4gdmFsdWUgY2hlY2tzLCB0aGlzIHNhZmVndWFyZCBpc1xuLSAqICAgbmVjZXNzYXJ5LlxuKyAqIENvcHkgdGFzayBuYW1lIHRvIGEgYnVmZmVyLiBGaW5hbCByZXN1bHQgaXMgYWx3YXlzIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLlxuICAqL1xuLSNkZWZpbmUgZ2V0X3Rhc2tfY29tbShidWYsIHRzaykgKHtcdFx0XHRcXFxuLVx0QlVJTERfQlVHX09OKHNpemVvZihidWYpIFx1MDAzYyBUQVNLX0NPTU1fTEVOKTtcdFxcXG4tXHRzdHJzY3B5X3BhZChidWYsICh0c2spLVx1MDAzZWNvbW0pO1x0XHRcdFxcXG4tXHRidWY7XHRcdFx0XHRcdFx0XFxcbi19KVxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxuK3tcbitcdGNvbnN0IGNoYXIgKl9zcmMgPSB0c2stXHUwMDNlY29tbTtcbitcbitcdG1lbWNweShkc3QsIF9zcmMsIGxlbik7XG4rXHRkc3RbbGVuIC0gMV0gPSAnXFwwJztcbit9XG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHNjaGVkdWxlcl9pcGkodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmggYi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxuaW5kZXggZTBkODM4YzljZTkzODIuLjliMDA5NGZhNDRjNjQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oXG5AQCAtNjM3LDEwICs2MzcsMTAgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcClcbiAgKlx0KlxuICAqXG4gICpcdFRQX2Zhc3RfYXNzaWduKFxuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbisgKlx0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dCwgVEFTS19DT01NX0xFTik7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3BpZFx0PSBwcmV2LVx1MDAzZXBpZDtcbiAgKlx0XHRfX2VudHJ5LVx1MDAzZXByZXZfcHJpb1x0PSBwcmV2LVx1MDAzZXByaW87XG4tICpcdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuKyAqXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LCBUQVNLX0NPTU1fTEVOKTtcbiAgKlx0XHRfX2VudHJ5LVx1MDAzZW5leHRfcGlkXHQ9IG5leHQtXHUwMDNlcGlkO1xuICAqXHRcdF9fZW50cnktXHUwMDNlbmV4dF9wcmlvXHQ9IG5leHQtXHUwMDNlcHJpbztcbiAgKlx0KSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuaW5kZXggOWM5N2ExNjg1MGI5MjIuLjFlM2E5ZGVkMDNiZDRmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuQEAgLTIxMyw3ICsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLFxuIFxuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgcnEtXHUwMDNlY21kX2ZsYWdzKTtcbiBcdFx0X19nZXRfc3RyKGNtZClbMF0gPSAnXFwwJztcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCIlZCwlZCAlcyAldSAoJXMpICVsbHUgKyAldSAlcywldSwldSBbJXNdXCIsXG5AQCAtNDEwLDcgKzQxMCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfYmlvLFxuIFx0XHRfX2VudHJ5LVx1MDAzZXNlY3Rvclx0XHQ9IGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcbiBcdFx0X19lbnRyeS1cdTAwM2Vucl9zZWN0b3JcdD0gYmlvX3NlY3RvcnMoYmlvKTtcbiBcdFx0YmxrX2ZpbGxfcndicyhfX2VudHJ5LVx1MDAzZXJ3YnMsIGJpby1cdTAwM2ViaV9vcGYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcIiVkLCVkICVzICVsbHUgKyAldSBbJXNdXCIsXG5AQCAtNDkzLDcgKzQ5Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3BsdWcsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwiWyVzXVwiLCBfX2VudHJ5LVx1MDAzZWNvbW0pXG5AQCAtNTEyLDcgKzUxMiw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfdW5wbHVnLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlbnJfcnEgPSBkZXB0aDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCJbJXNdICVkXCIsIF9fZW50cnktXHUwMDNlY29tbSwgX19lbnRyeS1cdTAwM2Vucl9ycSlcbkBAIC01NjMsNyArNTYzLDcgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfc3BsaXQsXG4gXHRcdF9fZW50cnktXHUwMDNlc2VjdG9yXHRcdD0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW5ld19zZWN0b3JcdD0gbmV3X3NlY3RvcjtcbiBcdFx0YmxrX2ZpbGxfcndicyhfX2VudHJ5LVx1MDAzZXJ3YnMsIGJpby1cdTAwM2ViaV9vcGYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcIiVkLCVkICVzICVsbHUgLyAlbGx1IFslc11cIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuaW5kZXggYzdiOWM1M2ZjNDk4NjkuLmZkZDIwYmM0NmJiMDI3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuQEAgLTMyLDcgKzMyLDcgQEAgVFJBQ0VfRVZFTlQoY29yZWR1bXAsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VzaWcgPSBzaWc7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwic2lnPSVkIGNvbW09JXNcIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmhcbmluZGV4IDI3MGMxYTJjMjRjNDRhLi43ZDIyNjUwYjRjNzg1ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXG5AQCAtMjUwNSw3ICsyNTA1LDcgQEAgVFJBQ0VfRVZFTlQoZjJmc19sb2NrX2VsYXBzZWRfdGltZSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZWRldlx0XHQ9IHNiaS1cdTAwM2VzYi1cdTAwM2VzX2Rldjtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0PSBwLVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmlvXHRcdD0gcC1cdTAwM2VwcmlvO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWlvcHJpb19jbGFzc1x0PSBJT1BSSU9fUFJJT19DTEFTUyhpb3ByaW8pO1xuQEAgLTI1NTgsNyArMjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdD0gcC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlbG9ja19uYW1lXHQ9IGxvY2tfbmFtZTtcbiBcdFx0X19lbnRyeS1cdTAwM2Vpc193cml0ZVx0PSBpc193cml0ZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oXG5pbmRleCA5ZjBhNWQxNDgyYzQ0OC4uOGJjZGM0ZmZjOGQzNDQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcbkBAIC0yMyw3ICsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdGFzay1cdTAwM2VwaWQ7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHRhc2stXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXHUwMDNlc2lnbmFsLVx1MDAzZW9vbV9zY29yZV9hZGo7XG4gXHQpLFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxuaW5kZXggM2Y0MjczNjIzODAxNGUuLjJjZjA0N2JiOWZiNzFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcbkBAIC0xMTYsNyArMTE2LDcgQEAgVFJBQ0VfRVZFTlQodGhyZWFkX25vaXNlLFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCB0LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHQtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXN0YXJ0ID0gc3RhcnQ7XG4gXHRcdF9fZW50cnktXHUwMDNlZHVyYXRpb24gPSBkdXJhdGlvbjtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0PSBwLVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmlvXHRcdD0gcC1cdTAwM2VwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi9cbiBcdFx0X19lbnRyeS1cdTAwM2V0YXJnZXRfY3B1XHQ9IHRhc2tfY3B1KHApO1xuQEAgLTIzNywxMSArMjM3LDExIEBAIFRSQUNFX0VWRU5UKHNjaGVkX3N3aXRjaCxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9wcmlvXHQ9IHByZXYtXHUwMDNlcHJpbztcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3N0YXRlXHQ9IF9fdHJhY2Vfc2NoZWRfc3dpdGNoX3N0YXRlKHByZWVtcHQsIHByZXZfc3RhdGUsIHByZXYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlbmV4dF9jb21tLCBuZXh0LCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3BpZFx0PSBuZXh0LVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3ByaW9cdD0gbmV4dC1cdTAwM2VwcmlvO1xuIFx0XHQvKiBYWFggU0NIRURfREVBRExJTkUgKi9cbkBAIC0zNDYsNyArMzQ2LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfcHJvY2Vzc19leGl0LFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBwLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwX2RlYWRcdD0gZ3JvdXBfZGVhZDtcbkBAIC03ODcsNyArNzg3LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc2tpcF9jcHVzZXRfbnVtYSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdHNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHRzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdCA9IHRhc2tfcGlkX25yKHRzayk7XG4gXHRcdF9fZW50cnktXHUwMDNldGdpZFx0XHQgPSB0YXNrX3RnaWRfbnIodHNrKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZ2lkXHRcdCA9IHRhc2tfbnVtYV9ncm91cF9pZCh0c2spO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcbmluZGV4IDFkYjdlNGIwN2MwMTQ4Li44ZmZmZTZkOWJkY2NmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaFxuQEAgLTY3LDcgKzY3LDcgQEAgVFJBQ0VfRVZFTlQoc2lnbmFsX2dlbmVyYXRlLFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlc2lnXHQ9IHNpZztcbiBcdFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdD0gdGFzay1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlZ3JvdXBcdD0gZ3JvdXA7XG4gXHRcdF9fZW50cnktXHUwMDNlcmVzdWx0XHQ9IHJlc3VsdDtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcbmluZGV4IGI5YTEyOWViNTRkOWViLi42MmI3ZGY0ZDIyZDA1MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oXG5AQCAtMjEsNyArMjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbkBAIC00Niw4ICs0Niw5IEBAIFRSQUNFX0VWRU5UKHRhc2tfcmVuYW1lLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdGFzay1cdTAwM2VwaWQ7XG4tXHRcdG1lbWNweShlbnRyeS1cdTAwM2VvbGRjb21tLCB0YXNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuLVx0XHRzdHJzY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShlbnRyeS1cdTAwM2VvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0bWVtY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRlbnRyeS1cdTAwM2VuZXdjb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9ICdcXDAnO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcbkBAIC01Niw2ICs1Niw5IEBAXG4gI2RlZmluZSBQUl9TRVRfTkFNRSAgICAxNVx0XHQvKiBTZXQgcHJvY2VzcyBuYW1lICovXG4gI2RlZmluZSBQUl9HRVRfTkFNRSAgICAxNlx0XHQvKiBHZXQgcHJvY2VzcyBuYW1lICovXG4gXG4rI2RlZmluZSBQUl9TRVRfRVhUX05BTUUgICAgMTdcdFx0LyogU2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZSAqL1xuKyNkZWZpbmUgUFJfR0VUX0VYVF9OQU1FICAgIDE4XHRcdC8qIEdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cbitcbiAvKiBHZXQvc2V0IHByb2Nlc3MgZW5kaWFuICovXG4gI2RlZmluZSBQUl9HRVRfRU5ESUFOXHQxOVxuICNkZWZpbmUgUFJfU0VUX0VORElBTlx0MjBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXQuYyBiL2tlcm5lbC9hdWRpdC5jXG5pbmRleCA1NjI0NzY5MzdmYTc5My4uMWYwYjQ0ZDRlNWM3NWEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXQuY1xuKysrIGIva2VybmVsL2F1ZGl0LmNcbkBAIC0xNjY3LDcgKzE2NjcsOCBAQCBzdGF0aWMgdm9pZCBhdWRpdF9sb2dfbXVsdGljYXN0KGludCBncm91cCwgY29uc3QgY2hhciAqb3AsIGludCBlcnIpXG4gXHRhdWRpdF9wdXRfdHR5KHR0eSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIGNvbW09XCIpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7IC8qIGV4ZT0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG5sLW1jZ3JwPSVkIG9wPSVzIHJlcz0lZFwiLCBncm91cCwgb3AsICFlcnIpO1xuIFx0YXVkaXRfbG9nX2VuZChhYik7XG5AQCAtMjQ3Niw3ICsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxuIFx0XHRcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIGNvbW09XCIpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0c2MuYyBiL2tlcm5lbC9hdWRpdHNjLmNcbmluZGV4IDY2MTBlNjY3YzcyOGFhLi4xZDkzMGYxNjk4NTZkNCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcbisrKyBiL2tlcm5lbC9hdWRpdHNjLmNcbkBAIC0yODc3LDcgKzI4NzcsOCBAQCB2b2lkIF9fYXVkaXRfbG9nX25mY2ZnKGNvbnN0IGNoYXIgKm5hbWUsIHU4IGFmLCB1bnNpZ25lZCBpbnQgbmVudHJpZXMsXG4gXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcIiBwaWQ9JXVcIiwgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpOyAvKiBzdWJqPSAqL1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgY29tbT1cIik7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcdGF1ZGl0X2xvZ19lbmQoYWIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChfX2F1ZGl0X2xvZ19uZmNmZyk7XG5AQCAtMjkwMCw3ICsyOTAxLDggQEAgc3RhdGljIHZvaWQgYXVkaXRfbG9nX3Rhc2soc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXG4gXHRcdFx0IHNlc3Npb25pZCk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIHBpZD0lZCBjb21tPVwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9wcmludGsvbmJjb24uYyBiL2tlcm5lbC9wcmludGsvbmJjb24uY1xuaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NFxuLS0tIGEva2VybmVsL3ByaW50ay9uYmNvbi5jXG4rKysgYi9rZXJuZWwvcHJpbnRrL25iY29uLmNcbkBAIC05NTIsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgd2N0eHRfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBuYmNvbl93cml0ZV9jb250ZXh0ICp3Y3R4dCxcbiB7XG4gXHR3Y3R4dC1cdTAwM2VjcHUgPSBwbXNnLVx1MDAzZWNwdTtcbiBcdHdjdHh0LVx1MDAzZXBpZCA9IHBtc2ctXHUwMDNlcGlkO1xuLVx0bWVtY3B5KHdjdHh0LVx1MDAzZWNvbW0sIHBtc2ctXHUwMDNlY29tbSwgc2l6ZW9mKHdjdHh0LVx1MDAzZWNvbW0pKTtcbitcdGNvcHlfdGFza19jb21tKHdjdHh0LVx1MDAzZWNvbW0sIHBtc2csIHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSk7XG4gXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9wcmludGsuYyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbmluZGV4IDJmZTlhOTYzYzgyM2E0Li5lYzBjNjczNGJiZTFjZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbisrKyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBzdGF0aWMgdTE2IHByaW50a19zcHJpbnQoY2hhciAqdGV4dCwgdTE2IHNpemUsIGludCBmYWNpbGl0eSxcbiBzdGF0aWMgdm9pZCBwcmludGtfc3RvcmVfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX2luZm8gKmluZm8pXG4ge1xuIFx0aW5mby1cdTAwM2VjYWxsZXJfaWQyID0gcHJpbnRrX2NhbGxlcl9pZDIoKTtcbi1cdGdldF90YXNrX2NvbW0oaW5mby1cdTAwM2Vjb21tLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGluZm8tXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcG1zZ19sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19tZXNzYWdlICpwbXNnLFxuQEAgLTIyNTUsNyArMjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcbiB7XG4gXHRwbXNnLVx1MDAzZWNwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7XG4gXHRwbXNnLVx1MDAzZXBpZCA9IHByaW50a19pbmZvX2dldF9waWQoaW5mbyk7XG4tXHRtZW1jcHkocG1zZy1cdTAwM2Vjb21tLCBpbmZvLVx1MDAzZWNvbW0sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbitcdGNvcHlfdGFza19jb21tKHBtc2ctXHUwMDNlY29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctXHUwMDNlY29tbSkpO1xuIFx0c3RhdGljX2Fzc2VydChzaXplb2YocG1zZy1cdTAwM2Vjb21tKSA9PSBzaXplb2YoaW5mby1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3N5cy5jIGIva2VybmVsL3N5cy5jXG5pbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc3lzLmNcbisrKyBiL2tlcm5lbC9zeXMuY1xuQEAgLTI1MzUsNyArMjUzNSw3IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXG4gXHRcdHVuc2lnbmVkIGxvbmcsIGFyZzQsIHVuc2lnbmVkIGxvbmcsIGFyZzUpXG4ge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICptZSA9IGN1cnJlbnQ7XG4tXHR1bnNpZ25lZCBjaGFyIGNvbW1bc2l6ZW9mKG1lLVx1MDAzZWNvbW0pXTtcbitcdHVuc2lnbmVkIGNoYXIgY29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXHRsb25nIGVycm9yO1xuIFxuIFx0ZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7XG5AQCAtMjYwMSwxNiArMjYwMSwyOSBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLFxuIFx0XHRcdGVycm9yID0gLUVJTlZBTDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBSX1NFVF9OQU1FOlxuLVx0XHRjb21tW3NpemVvZihtZS1cdTAwM2Vjb21tKSAtIDFdID0gMDtcbitcdFx0Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAwO1xuIFx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcbi1cdFx0XHRcdCAgICAgIHNpemVvZihtZS1cdTAwM2Vjb21tKSAtIDEpIFx1MDAzYyAwKVxuK1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRzZXRfdGFza19jb21tKG1lLCBjb21tKTtcbiBcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9HRVRfTkFNRTpcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBtZSk7XG4tXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgc2l6ZW9mKGNvbW0pKSlcbitcdFx0c3Ryc2NweV9wYWQoY29tbSwgbWUtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0xFTikpXG4rXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQUl9TRVRfRVhUX05BTUU6XG4rXHRcdGNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7XG4rXHRcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLFxuK1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0VYVF9MRU4gLSAxKSBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0c2V0X3Rhc2tfY29tbShtZSwgY29tbSk7XG4rXHRcdHByb2NfY29tbV9jb25uZWN0b3IobWUpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUFJfR0VUX0VYVF9OQU1FOlxuK1x0XHRzdHJzY3B5X3BhZChjb21tLCBtZS1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fRVhUX0xFTik7XG4rXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJfR0VUX0VORElBTjpcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmNcbmluZGV4IDA4MTlhY2U1YjAyNzU3Li41ZDI2MDI5ZDJkMDEyZCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xuKysrIGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXG5AQCAtODgxLDYgKzg4MSw0MyBAQCBzdGF0aWMgdm9pZCBzdHJpbmdfYmVuY2hfc3RycmNocihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gXHRTVFJJTkdfQkVOQ0hfQlVGKHRlc3QsIGJ1ZiwgbGVuLCBzdHJyY2hyLCBidWYsICdcXDAnKTtcbiB9XG4gXG4rI2RlZmluZSBUQVNLX05BTUUgXCJ0YXNrX25hbWVcIlxuKyNkZWZpbmUgVEFTS19OQU1FX0xFTiA5XG4rI2RlZmluZSBUQVNLX01BWF9MRU4gVEFTS19DT01NX0VYVF9MRU5cbisjZGVmaW5lIFNNQUxMRVJfTEVOIFRBU0tfTkFNRV9MRU4gLSAzXG4rI2RlZmluZSBCSUdHRVJfTEVOIFRBU0tfTUFYX0xFTiArIDNcbitcbitzdGF0aWMgdm9pZCBzdHJpbmdfY29weV90YXNrX2NvbW0oc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdGNoYXIgc3RyW1RBU0tfTUFYX0xFTl0gPSBUQVNLX05BTUUsIGNvcHlbVEFTS19NQVhfTEVOXSxcbitcdCAgICAgc21hbGxlcl9idWZbU01BTExFUl9MRU5dLCBiaWdnZXJfYnVmW0JJR0dFUl9MRU5dO1xuK1x0c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNrLCAqdHNrID0gXHUwMDI2dGFzaztcbitcdGludCBsZW4xLCBsZW4yLCBpO1xuK1xuK1x0Lyogc2V0IGFuZCBnZXQgdGFzayBuYW1lICovXG4rXHRzZXRfdGFza19jb21tKHRzaywgc3RyKTtcbitcdGNvcHlfdGFza19jb21tKGNvcHksIHRzaywgVEFTS19DT01NX0xFTik7XG4rXG4rXHRsZW4xID0gc3RybGVuKHN0cik7XG4rXHRsZW4yID0gc3RybGVuKGNvcHkpO1xuK1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjEsIGxlbjIpO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjIsIFRBU0tfTkFNRV9MRU4pO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGNvcHlbbGVuMl0sICdcXDAnKTtcbitcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJjbXAoc3RyLCBjb3B5KSk7XG4rXG4rXHQvKiBjb3B5IHRvIGEgc21hbGxlciBkc3QgYnVmZmVyICovXG4rXHRjb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTtcbitcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgc21hbGxlcl9idWYsIFNNQUxMRVJfTEVOIC0gMSkpO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOIC0gMV0sICdcXDAnKTtcbitcbitcdC8qIGNvcHkgdG8gYSBiaWdnZXIgZHN0IGJ1ZmZlciAqL1xuK1x0Y29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpO1xuK1x0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBiaWdnZXJfYnVmLCBUQVNLX05BTUVfTEVOKSk7XG4rXHRmb3IgKGkgPSBUQVNLX05BTUVfTEVOOyBpIFx1MDAzYyBCSUdHRVJfTEVOOyBpKyspXG4rXHRcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBiaWdnZXJfYnVmW2ldLCAnXFwwJyk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDMyKSxcbkBAIC05MTAsNiArOTQ3LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHN0cmluZ190ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJubGVuKSxcbiBcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJyY2hyKSxcbitcdEtVTklUX0NBU0Uoc3RyaW5nX2NvcHlfdGFza19jb21tKSxcbiBcdHt9XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbmluZGV4IDA3MGNhMzg4ZjlhY2U4Li40ZTY2Y2IyZDk1NDljNiAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5AQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBib29sIGhjaV9zb2NrX2dlbl9jb29raWUoc3RydWN0IHNvY2sgKnNrKVxuIFx0XHRcdGlkID0gMHhmZmZmZmZmZjtcbiBcbiBcdFx0aGNpX3BpKHNrKS1cdTAwM2Vjb29raWUgPSBpZDtcbi1cdFx0Z2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQpO1xuK1x0XHRzdHJzY3B5X3BhZChoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGE5ZWFmOTQ1NWM3NzgzLi5jNTU1NWVlZDFiNjJkMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuQEAgLTk3MTgsOSArOTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmICghbmxoKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbitcdHN0cnNjcHlfcGFkKGJ1ZiwgY3VycmVudC1cdTAwM2Vjb21tKTtcbitcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9JRCwgaHRvbmwobmZ0X2Jhc2Vfc2VxKG5ldCkpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIE5GVEFfR0VOX1BST0NfUElELCBodG9ubCh0YXNrX3BpZF9ucihjdXJyZW50KSkpIHx8XG4tXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGdldF90YXNrX2NvbW0oYnVmLCBjdXJyZW50KSkpXG4rXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGJ1ZikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0bmxtc2dfZW5kKHNrYiwgbmxoKTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmMgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmNcbmluZGV4IGQ4ZDllNWZmMWNkMjJiLi45ODA2MDA2MDkyOWRhOSAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xuKysrIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXG5AQCAtNTQsNyArNTQsOCBAQCB2b2lkIGludGVncml0eV9hdWRpdF9tZXNzYWdlKGludCBhdWRpdF9tc2dubywgc3RydWN0IGlub2RlICppbm9kZSxcbiBcdFx0XHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG9wPSVzIGNhdXNlPSVzIGNvbW09XCIsIG9wLCBjYXVzZSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcbiBcdGlmIChmbmFtZSkge1xuIFx0XHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcIiBuYW1lPVwiKTtcbiBcdFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcbmluZGV4IDkzZmI1OWZiZGRkNjBiLi45MGE2YWNmYjdjZGZjZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXG4rKysgYi9zZWN1cml0eS9pcGUvYXVkaXQuY1xuQEAgLTE0NSw3ICsxNDUsOCBAQCB2b2lkIGlwZV9hdWRpdF9tYXRjaChjb25zdCBzdHJ1Y3QgaXBlX2V2YWxfY3R4ICpjb25zdCBjdHgsXG4gXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcImlwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09XCIsXG4gXHRcdFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cdTAwM2Vob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLFxuIFx0XHRcdCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWZpbGUpIHtcbiBcdFx0YXVkaXRfbG9nX2RfcGF0aChhYiwgXCIgcGF0aD1cIiwgXHUwMDI2Y3R4LVx1MDAzZWZpbGUtXHUwMDNlZl9wYXRoKTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXG5pbmRleCA5YTgzNTVmY2NkMjZlYi4uYjJmYzdmNzIyZDY5MDggMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uY1xuKysrIGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcbkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBsYW5kbG9ja19kZXRhaWxzICpnZXRfY3VycmVudF9kZXRhaWxzKHZvaWQpXG4gXHRtZW1jcHkoZGV0YWlscy1cdTAwM2VleGVfcGF0aCwgcGF0aF9zdHIsIHBhdGhfc2l6ZSk7XG4gXHRkZXRhaWxzLVx1MDAzZXBpZCA9IGdldF9waWQodGFza190Z2lkKGN1cnJlbnQpKTtcbiBcdGRldGFpbHMtXHUwMDNldWlkID0gZnJvbV9rdWlkKFx1MDAyNmluaXRfdXNlcl9ucywgY3VycmVudF91aWQoKSk7XG4tXHRnZXRfdGFza19jb21tKGRldGFpbHMtXHUwMDNlY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZChkZXRhaWxzLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRyZXR1cm4gZGV0YWlscztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuY1xuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcbisrKyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXG5AQCAtMjc2LDggKzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLFxuIFx0XHRcdGlmIChwaWQpIHtcbiBcdFx0XHRcdGNoYXIgdHNrY29tbVtzaXplb2YodHNrLVx1MDAzZWNvbW0pXTtcbiBcdFx0XHRcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG9waWQ9JWQgb2NvbW09XCIsIHBpZCk7XG4tXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxuLVx0XHRcdFx0ICAgIGdldF90YXNrX2NvbW0odHNrY29tbSwgdHNrKSk7XG4rXHRcdFx0XHRzdHJzY3B5X3BhZCh0c2tjb21tLCB0c2stXHUwMDNlY29tbSk7XG4rXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCB0c2tjb21tKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNDE3LDcgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXG4gXHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgcGlkPSVkIGNvbW09XCIsIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcdGF1ZGl0X2xvZ19sc21fZGF0YShhYiwgYSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuY1xuaW5kZXggM2Y3YjE0NmQzNmRmZTEuLjBmMjBmN2RlYWM2N2ZkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcbkBAIC05LDkgKzksMTcgQEBcbiBcbiAjaW5jbHVkZSBcImtzZWxmdGVzdF9oYXJuZXNzLmhcIlxuIFxuKyNpZm5kZWYgUFJfU0VUX0VYVF9OQU1FXG4rIyBkZWZpbmUgUFJfU0VUX0VYVF9OQU1FIDE3XG4rIyBkZWZpbmUgUFJfR0VUX0VYVF9OQU1FIDE4XG4rI2VuZGlmXG4rXG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcImNoYW5nZW5hbWVcIlxuKyNkZWZpbmUgTE9OR19OQU1FXHRcImNoYW5nZV90b192ZXJ5X2xvbmdfZXh0ZW5kZWRfbmFtZVwiXG4rI2RlZmluZSBMT05HX05BTUVfQ0FQXHRcImNoYW5nZV90b192ZXJ5X1wiXG4gI2RlZmluZSBFTVBUWV9OQU1FIFwiXCJcbiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTZcbisjZGVmaW5lIFRBU0tfQ09NTV9FWFRfTEVOIDY0XG4gI2RlZmluZSBNQVhfUEFUSF9MRU4gNTBcbiBcbiBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbkBAIC0yNSw2ICszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbiBcdHJldHVybiByZXM7XG4gfVxuIFxuK2ludCBzZXRfZXh0X25hbWUoY2hhciAqbmFtZSlcbit7XG4rXHRpbnQgcmVzO1xuK1xuK1x0cmVzID0gcHJjdGwoUFJfU0VUX0VYVF9OQU1FLCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMKTtcbitcbitcdGlmIChyZXMgXHUwMDNjIDApXG4rXHRcdHJldHVybiAtZXJybm87XG4rfVxuK1xuIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcbiB7XG4gXHRjaGFyIG5hbWVbVEFTS19DT01NX0xFTl07XG5AQCAtMzgsNiArNTYsMTkgQEAgaW50IGNoZWNrX2lzX25hbWVfY29ycmVjdChjaGFyICpjaGVja19uYW1lKVxuIFx0cmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7XG4gfVxuIFxuK2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4re1xuK1x0Y2hhciBuYW1lW1RBU0tfQ09NTV9FWFRfTEVOXTtcbitcdGludCByZXM7XG4rXG4rXHRyZXMgPSBwcmN0bChQUl9HRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xuK1xuK1x0aWYgKHJlcyBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC1lcnJubztcbitcbitcdHJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpO1xuK31cbitcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciAqbmFtZSA9IE5VTEw7XG5AQCAtODIsNiArMTEzLDExIEBAIFRFU1QocmVuYW1lX3Byb2Nlc3MpIHtcbiBcdEVYUEVDVF9HRShzZXRfbmFtZShDSEFOR0VfTkFNRSksIDApO1xuIFx0RVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KENIQU5HRV9OQU1FKSk7XG4gXG4rXHRFWFBFQ1RfR0Uoc2V0X2V4dF9uYW1lKExPTkdfTkFNRSksIDApO1xuK1x0RVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTtcbitcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChMT05HX05BTUVfQ0FQKSk7XG4rXHRFWFBFQ1RfVFJVRShjaGVja19uYW1lKCkpO1xuK1xuIFx0RVhQRUNUX0dFKHNldF9uYW1lKEVNUFRZX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMDo1MzoyNS4yMzM1NTczNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxNDQxNzg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgRXh0ZW5kZWQgVGFzayBDb21tIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgZXhwYW5kaW5nIHRoZSBgdGFza19jb21tYCBsZW5ndGggYW5kIGFkZGluZyBuZXcgYHByY3RsYCBvcHRpb25zLiBMZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgcHJjdGxgLCBhIHN5c2NhbGwgZXhwb3NlZCB0byB1c2Vyc3BhY2UuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCByZXZvbHZlcyBhcm91bmQgdHdvIG1haW4gYXJlYXM6IGV4dGVuZGluZyB0aGUgYGNvbW1gIGJ1ZmZlciBpbiBgc3RydWN0IHRhc2tfc3RydWN0YCBhbmQgYWRkaW5nIGBQUl9TRVRfRVhUX05BTUVgIGFuZCBgUFJfR0VUX0VYVF9OQU1FYCB0byBgcHJjdGxgLiAgVGhlIGNoYW5nZSB0byB0aGUgYGNvbW1gIGxlbmd0aCBmcm9tIGBUQVNLX0NPTU1fTEVOYCAoMTYpIHRvIGBUQVNLX0NPTU1fRVhUX0xFTmAgKDY0KSBpcyBzdWJzdGFudGlhbCwgYWZmZWN0aW5nIGhvdyBwcm9jZXNzIG5hbWVzIGFyZSBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIGtlcm5lbCwgYnV0IHRoZSBuZXcgcHJjdGwgb3B0aW9ucyBhcmUgdGhlIGZvY3VzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIGFkZGVkIHRvIGBrZXJuZWwvc3lzLmNgLCB0aGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgUFJfU0VUX0VYVF9OQU1FYCBjb3BpZXMgYSB1c2VyLXByb3ZpZGVkIHN0cmluZyB0byBgbWUtXHUwMDNlY29tbWAgdmlhIGBzdHJuY3B5X2Zyb21fdXNlcmAgYW5kIGBzZXRfdGFza19jb21tYCBhZnRlciBudWxsLXRlcm1pbmF0aW5nIHRoZSBzdHJpbmcsIHdoaWxlIGBQUl9HRVRfRVhUX05BTUVgIGNvcGllcyB0aGUgZXh0ZW5kZWQgbmFtZSBiYWNrIHRvIHVzZXJzcGFjZSB1c2luZyBgY29weV90b191c2VyYC4gIENyaXRpY2FsbHksIGBwcm9jX2NvbW1fY29ubmVjdG9yYCBpcyBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGUgbmFtZTsgdGhpcyBtaWdodCBiZSBpbnRlcmVzdGluZyBkZXBlbmRpbmcgb24gaG93IGl0J3MgdXNlZC4gV2UgbmVlZCB0byByZW1lbWJlciB0aGF0IGBwcm9jX2NvbW1fY29ubmVjdG9yYCdzIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIGBDT05GSUdfUFJPQ19FVkVOVFNgLCBidXQgdGhpcyBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCBgcHJjdGxgIGl0c2VsZi5cblxuVGhlIGBwcmN0bGAgc3lzY2FsbCBpcyBvdXIgbWFpbiBlbnRyeSBwb2ludCBoZXJlOyBzcGVjaWZpY2FsbHksIGBzeXNfcHJjdGxgIChvciB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHZlcnNpb24gb2YgaXQsIGJ1dCBTeXprYWxsZXIga25vd3MgYWJvdXQgYHByY3RsYCkuICBJIGRvdWJsZS1jaGVja2VkIGBrZXJuZWwvc3lzLmNgIHRvIGNvbmZpcm0gdGhpcy4gV2hpbGUgYHNldF90YXNrX2NvbW1gIGlzbid0IGRpcmVjdGx5IG1vZGlmaWVkLCBpdCBjYWxscyBgX19zZXRfdGFza19jb21tYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgY29weV90YXNrX2NvbW1gLiAgQnV0IHRoZSBuZXcgaW5saW5lIGZ1bmN0aW9uIGBjb3B5X3Rhc2tfY29tbWAgaXMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2gsIGFsb25nIHdpdGggdGhlIG1haW4gbG9naWMgaW4gYHN5c19wcmN0bGAuIFNvIGBzeXNfcHJjdGxgIHdpbGwgYmUgb3VyIHByaW1hcnkgZm9jdXMuXG5cblNpbmNlIHRoaXMgcGF0Y2ggKmFkZHMqIG5ldyBmdW5jdGlvbmFsaXR5IChzZXR0aW5nIGFuZCBnZXR0aW5nIGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMpLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBwcmlvcml0aXplIGZvciBmdXp6aW5nLiBUaGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBpbnRyb2R1Y2UgYSBuZXcgY29kZSBwYXRoIHRoYXQncyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldC5cblxuSW4gdGVybXMgb2YgY29uZmlndXJhdGlvbiwgYHByY3RsYCBpdHNlbGYgZG9lc24ndCByZXF1aXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlncywgc28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuRmluYWxseSwgd2UncmUgZGVmaW5pdGVseSBnb2luZyB0byBsYWJlbCB0aGlzIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYHN5c19wcmN0bGAuIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGFuIGVtcHR5IGFycmF5IGFzIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWdzIG5lZWRlZC4gVGhlIHJlYXNvbmluZyBpcyBzaW1wbGU6IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IGBwcmN0bGAgb3B0aW9ucywgZGlyZWN0bHkgYWZmZWN0aW5nIHVzZXJzcGFjZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mjg2LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjM4LjA0Nzk3NzQ1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzeXNfcHJjdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBwcmN0bCBvcHRpb25zIFBSX1NFVF9FWFRfTkFNRSBhbmQgUFJfR0VUX0VYVF9OQU1FIHRvIHNldCBhbmQgZ2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN5c19wcmN0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 20:33:18 +0000 UTC FinishedAt: 2026-07-17 20:53:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f", "config_name": "upstream-apparmor-kasan.config", "series_id": "68c68be0-30d3-4657-8fa3-12913df5b9d7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sys_prctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIwOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3lzX3ByY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2ZGU1NGMzZGVjYjNjMTNmMjk0ZWE5MTFlOWM4Y2VkY2NmMmVmZDI5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjA6NTM6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXG5pbmRleCAwMDU2YWI4MWZiYzM5YS4uYzc4MjQzZWQzYzJhOTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuY1xuQEAgLTI3OCw3ICYjNDM7Mjc4LDcgQEAgdm9pZCBwcm9jX2NvbW1fY29ubmVjdG9yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcdGV2LVx1MDAzZXdoYXQgPSBQUk9DX0VWRU5UX0NPTU07XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay1cdTAwM2VwaWQ7XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZXYtXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gXG4gXHRtZW1jcHkoXHUwMDI2bXNnLVx1MDAzZWlkLCBcdTAwMjZjbl9wcm9jX2V2ZW50X2lkLCBzaXplb2YobXNnLVx1MDAzZWlkKSk7XG4gXHRtc2ctXHUwMDNlYWNrID0gMDsgLyogbm90IHVzZWQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuaW5kZXggOGRmMjBiMDIxOGE5ZWUuLmQ1MDE2NTdhZDgwMTI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xuQEAgLTMxMiw3ICYjNDM7MzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmo7XG4gXHRjaGFyIHRhc2tfY29tbVtUQVNLX0NPTU1fTEVOXTtcbiBcbi1cdGdldF90YXNrX2NvbW0odGFza19jb21tLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xuIFx0aWYgKCFvYmopXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXG5pbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCxcbiBcdC8qIFRoaXMgcmVmZXJlbmNlIGdldHMgcmVsZWFzZWQgaW4gYW1ka2ZkX2ZlbmNlX3JlbGVhc2UgKi9cbiBcdG1tZ3JhYihtbSk7XG4gXHRmZW5jZS1cdTAwM2VtbSA9IG1tO1xuLVx0Z2V0X3Rhc2tfY29tbShmZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZChmZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZmVuY2UtXHUwMDNlbG9jayk7XG4gXHRmZW5jZS1cdTAwM2Vzdm1fYm8gPSBzdm1fYm87XG4gXHRmZW5jZS1cdTAwM2Vjb250ZXh0X2lkID0gY29udGV4dF9pZDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXG5pbmRleCBmNmI3NTIyYzNjODJmZi4uMDQ2MjQzZTNhM2NkMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcbkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRldl9mZW5jZS1cdTAwM2VldmZfbWdyID0gZXZmX21ncjtcbi1cdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWxvY2spO1xuIFx0ZG1hX2ZlbmNlX2luaXQ2NChcdTAwMjZldl9mZW5jZS1cdTAwM2ViYXNlLCBcdTAwMjZhbWRncHVfZXZpY3Rpb25fZmVuY2Vfb3BzLFxuIFx0XHRcdCBcdTAwMjZldl9mZW5jZS1cdTAwM2Vsb2NrLCBldmZfbWdyLVx1MDAzZWV2X2ZlbmNlX2N0eCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcbmluZGV4IDc2NGNkNDk1MDQwODNjLi5lNjBhNDcwYjU3ZWNjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXG5AQCAtNDQ0NSw3ICYjNDM7NDQ0NSw3IEBAIGludCBhbWRncHVfcmFzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4gXHR9XG4gXG4gXHRjb24tXHUwMDNlaW5pdF90YXNrX3BpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbShjb24tXHUwMDNlaW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbi1cdTAwM2Vpbml0X3Rhc2tfY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y29uLVx1MDAzZWNyaXRpY2FsX3JlZ2lvbl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNvbi1cdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xuaW5kZXggZjc0YWQzNzhlNDA3NDIuLmY0MTg1NzQ3MzY0MWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jXG5AQCAtODUsNyAmIzQzOzg1LDcgQEAgaW50IGFtZGdwdV91c2VycV9mZW5jZV9kcml2ZXJfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4gXG4gXHRmZW5jZV9kcnYtXHUwMDNlYWRldiA9IGFkZXY7XG4gXHRmZW5jZV9kcnYtXHUwMDNlY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpO1xuLVx0Z2V0X3Rhc2tfY29tbShmZW5jZV9kcnYtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZmVuY2VfZHJ2LVx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHQqZmVuY2VfZHJ2X3JlcSA9IGZlbmNlX2RydjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXG5pbmRleCBiYjk5YjdjM2EwMTBlYS4uODRjMGIzMTBlOWMxNDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmNcbkBAIC0yNTQyLDEwICYjNDM7MjU0MiwxMCBAQCB2b2lkIGFtZGdwdV92bV9zZXRfdGFza19pbmZvKHN0cnVjdCBhbWRncHVfdm0gKnZtKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0odm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQodm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2V0Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbSh2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNlcHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQodm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmNcbmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xuQEAgLTU2Myw3ICYjNDM7NTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLFxuIFx0fVxuIFxuIFx0dnJlcy1cdTAwM2V0YXNrLnBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbSh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQodnJlcy1cdTAwM2V0YXNrLmNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNnZyZXMtXHUwMDNldnJlc19ub2RlLCBcdTAwMjZtZ3ItXHUwMDNlYWxsb2NhdGVkX3ZyZXNfbGlzdCk7XG4gXG4gXHRpZiAoYm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUyBcdTAwMjZcdTAwMjYgYWRqdXN0X2RjY19zaXplKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbmluZGV4IDY4ZWRlN2E3MjVlMjE5Li5lOGM1YzM2MDFiZjFkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcbkBAIC0yOSw3ICYjNDM7MjksNyBAQCBpbnQgbGltYV9jdHhfY3JlYXRlKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2LCBzdHJ1Y3QgbGltYV9jdHhfbWdyICptZ3IsIHUzMiAqaWQpXG4gXHRcdGdvdG8gZXJyX291dDA7XG4gXG4gXHRjdHgtXHUwMDNlcGlkID0gdGFza19waWRfbnIoY3VycmVudCk7XG4tXHRnZXRfdGFza19jb21tKGN0eC1cdTAwM2VwbmFtZSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoY3R4LVx1MDAzZXBuYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jXG5pbmRleCAzYTdmY2U0Mjg4OTg3Yi4uMTE5MzZjNGQzNTczNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xuQEAgLTM2LDcgJiM0MzszNiw3IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldixcbiBcdFx0XHRcdFx0c3RydWN0IHBhbmZyb3N0X2dlbV9vYmplY3QgKmJvKVxuIHtcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQoYm8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBmZGV2LVx1MDAzZWRlYnVnZnMuZ2Vtc19sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Ym8tXHUwMDNlZGVidWdmcy5ub2RlLCBcdTAwMjZwZmRldi1cdTAwM2VkZWJ1Z2ZzLmdlbXNfbGlzdCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmNcbkBAIC01NCw3ICYjNDM7NTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibylcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcbiBcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4mIzQzO1x0c3Ryc2NweV9wYWQoYm8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cdTAwM2Vncm91cF9sZWFkZXItXHUwMDNlY29tbSk7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnB0ZGV2LVx1MDAzZWdlbXMubG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmJvLVx1MDAzZWRlYnVnZnMubm9kZSwgXHUwMDI2cHRkZXYtXHUwMDNlZ2Vtcy5ub2RlKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmNcbmluZGV4IDI5OGIwNDZjOTVlZGI4Li44MWM0NjU5YzBkN2JlOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXG5AQCAtMzYxNyw3ICYjNDM7MzYxNyw3IEBAIHN0YXRpYyB2b2lkIGdyb3VwX2luaXRfdGFza19pbmZvKHN0cnVjdCBwYW50aG9yX2dyb3VwICpncm91cClcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyO1xuIFxuIFx0Z3JvdXAtXHUwMDNldGFza19pbmZvLnBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0Z2V0X3Rhc2tfY29tbShncm91cC1cdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzayk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXG5pbmRleCAzZDhlNGNjZGI3YzFmOC4uYjEwYTBlMWNiMWVkNzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmNcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fZ3B1X2NyZWF0ZV9jb250ZXh0X2xvY2tlZChzdHJ1Y3QgdmlydGlvX2dwdV9kZXZpY2UgKnZnZGV2LFxuIFx0fSBlbHNlIHtcbiBcdFx0Y2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dO1xuIFxuLVx0XHRnZXRfdGFza19jb21tKGRiZ25hbWUsIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoZGJnbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdFx0dmlydGlvX2dwdV9jbWRfY29udGV4dF9jcmVhdGUodmdkZXYsIHZmcHJpdi1cdTAwM2VjdHhfaWQsXG4gXHRcdFx0XHRcdCAgICAgIHZmcHJpdi1cdTAwM2Vjb250ZXh0X2luaXQsIHN0cmxlbihkYmduYW1lKSxcbiBcdFx0XHRcdFx0ICAgICAgZGJnbmFtZSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9od3RyYWNpbmcvc3RtL2NvcmUuYyBiL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbmluZGV4IGY0OGM2YThhMDY1NGU5Li5jNzcxNTQzOTk2NGU4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcbkBAIC02MzQsNyAmIzQzOzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0XHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFx0XHRjaGFyICppZHNbXSA9IHsgY29tbSwgXCYjMzQ7ZGVmYXVsdFwmIzM0OywgTlVMTCB9O1xuIFxuLVx0XHRnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cdTAwM2VzdG0sIFx1MDAyNnN0bWYtXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xuIFx0XHQvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcbmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3R0eS90dHlfYXVkaXQuY1xuQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyB2b2lkIHR0eV9hdWRpdF9sb2coY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGRldl90IGRldixcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyVzIHBpZD0ldSB1aWQ9JXUgYXVpZD0ldSBzZXM9JXUgbWFqb3I9JWQgbWlub3I9JWQgY29tbT1cJiMzNDssXG4gXHRcdFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcbiBcdFx0XHQgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7XG4tXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xuJiM0MztcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBkYXRhPVwmIzM0Oyk7XG4gXHRhdWRpdF9sb2dfbl9oZXgoYWIsIGRhdGEsIHNpemUpO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC0xNTU3LDcgJiM0MzsxNTU3LDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwLVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmM0ZDRlNTlmZjM0ZDFiIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0xMzcxLDcgJiM0MzsxMzcxLDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwLVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYXJyYXkuYyBiL2ZzL3Byb2MvYXJyYXkuY1xuaW5kZXggNDc5ZWE4Y2I0ZWY0M2QuLjA0OTBiOWVmMjc4ODUwIDEwMDY0NFxuLS0tIGEvZnMvcHJvYy9hcnJheS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9wcm9jL2FycmF5LmNcbkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKVxuIFx0ZWxzZSBpZiAocC1cdTAwM2VmbGFncyBcdTAwMjYgUEZfS1RIUkVBRClcbiBcdFx0Z2V0X2t0aHJlYWRfY29tbSh0Y29tbSwgc2l6ZW9mKHRjb21tKSwgcCk7XG4gXHRlbHNlXG4tXHRcdGdldF90YXNrX2NvbW0odGNvbW0sIHApO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQodGNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4gXG4gXHRpZiAoZXNjYXBlKVxuIFx0XHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFwmIzM0O1xcblxcXFxcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxuaW5kZXggN2IzOGVlMmU3OTEzYmUuLmRlZTgyZTNjMzUwYWY1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcbkBAIC01OCw3ICYjNDM7NTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XG4gXHRkbyB7XHRcXFxuIFx0XHRjaGFyIGNvbW1bVEFTS19DT01NX0xFTl07XHRcXFxuIFx0XHQvKiBUaGlzIHdpbGwgYWx3YXlzIGJlIE5VTCB0ZXJtaW5hdGVkLiAqLyBcXFxuLVx0XHRtZW1jcHkoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBzaXplb2YoY29tbSkpOyBcXFxuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oY29tbSwgY3VycmVudCwgc2l6ZW9mKGNvbW0pKTsgXFxcbiBcdFx0cHJpbnRrX3JhdGVsaW1pdGVkKExldmVsIFwmIzM0O2NvcmVkdW1wOiAlZCglKnBFKTogXCYjMzQ7IEZvcm1hdCBcJiMzNDtcXG5cJiMzNDssXHRcXFxuIFx0XHRcdHRhc2tfdGdpZF92bnIoY3VycmVudCksIChpbnQpc3RybGVuKGNvbW0pLCBjb21tLCAjI19fVkFfQVJHU19fKTtcdFxcXG4gXHR9IHdoaWxlICgwKVx0XFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcbmluZGV4IDM3M2JjYzA1OThkMTBiLi4wZjFiNDBhNWRiYzYwYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXG5AQCAtMzIzLDYgJiM0MzszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcbiAgKi9cbiBlbnVtIHtcbiBcdFRBU0tfQ09NTV9MRU4gPSAxNixcbiYjNDM7XHRUQVNLX0NPTU1fRVhUX0xFTiA9IDY0LFxuIH07XG4gXG4gZXh0ZXJuIHZvaWQgc2NoZWRfdGljayh2b2lkKTtcbkBAIC0xMTc4LDcgJiM0MzsxMTc5LDcgQEAgc3RydWN0IHRhc2tfc3RydWN0IHtcbiBcdCAqIC0gc2V0IGl0IHdpdGggc2V0X3Rhc2tfY29tbSgpIHRvIGVuc3VyZSBpdCBpcyBhbHdheXNcbiBcdCAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkXG4gXHQgKi9cbi1cdGNoYXJcdFx0XHRcdGNvbW1bVEFTS19DT01NX0xFTl07XG4mIzQzO1x0Y2hhclx0XHRcdFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXG4gXHRzdHJ1Y3QgbmFtZWlkYXRhXHRcdCpuYW1laWRhdGE7XG4gXG5AQCAtMjAxNywyOCAmIzQzOzIwMTgsMjAgQEAgZXh0ZXJuIHZvaWQga2lja19wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTtcbiBcbiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7XG4gI2RlZmluZSBzZXRfdGFza19jb21tKHRzaywgZnJvbSkgKHtcdFx0XHRcXFxuLVx0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSAhPSBUQVNLX0NPTU1fTEVOKTtcdFxcXG4mIzQzO1x0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSBcdTAwM2MgVEFTS19DT01NX0xFTik7XHRcXFxuIFx0X19zZXRfdGFza19jb21tKHRzaywgZnJvbSwgZmFsc2UpO1x0XHRcXFxuIH0pXG4gXG4gLypcbi0gKiAtIFdoeSBub3QgdXNlIHRhc2tfbG9jaygpP1xuLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVyc1xuLSAqICAgZG9lc24mIzM5O3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2Vcbi0gKiAgIGNvbmRpdGlvbiBjb3VsZCBsZWFkIHRvIGxvbmctdGVybSBtaXhlZCByZXN1bHRzLlxuLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXNcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlblxuLSAqICAgcmVhZGVyIGFuZCB3cml0ZXIgaXMgbm90IGFuIGlzc3VlLlxuLSAqXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXG4tICogICBTaW5jZSB0aGUgY2FsbGVycyBkb24mIzM5O3QgcGVyZm9ybSBhbnkgcmV0dXJuIHZhbHVlIGNoZWNrcywgdGhpcyBzYWZlZ3VhcmQgaXNcbi0gKiAgIG5lY2Vzc2FyeS5cbiYjNDM7ICogQ29weSB0YXNrIG5hbWUgdG8gYSBidWZmZXIuIEZpbmFsIHJlc3VsdCBpcyBhbHdheXMgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcuXG4gICovXG4tI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoe1x0XHRcdFxcXG4tXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJ1ZikgXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1x0XFxcbi1cdHN0cnNjcHlfcGFkKGJ1ZiwgKHRzayktXHUwMDNlY29tbSk7XHRcdFx0XFxcbi1cdGJ1ZjtcdFx0XHRcdFx0XHRcXFxuLX0pXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3QgY2hhciAqX3NyYyA9IHRzay1cdTAwM2Vjb21tO1xuJiM0MztcbiYjNDM7XHRtZW1jcHkoZHN0LCBfc3JjLCBsZW4pO1xuJiM0MztcdGRzdFtsZW4gLSAxXSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO31cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2NoZWR1bGVyX2lwaSh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaCBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oXG5pbmRleCBlMGQ4MzhjOWNlOTM4Mi4uOWIwMDk0ZmE0NGM2NDkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcbkBAIC02MzcsMTAgJiM0Mzs2MzcsMTAgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcClcbiAgKlx0KlxuICAqXG4gICpcdFRQX2Zhc3RfYXNzaWduKFxuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7ICpcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xuICAqXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3ByaW9cdD0gcHJldi1cdTAwM2VwcmlvO1xuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldi1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7ICpcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2VwcmV2X2NvbW0sIHByZXYsIFRBU0tfQ09NTV9MRU4pO1xuICAqXHRcdF9fZW50cnktXHUwMDNlbmV4dF9waWRcdD0gbmV4dC1cdTAwM2VwaWQ7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3ByaW9cdD0gbmV4dC1cdTAwM2VwcmlvO1xuICAqXHQpLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG5pbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oXG5AQCAtMjEzLDcgJiM0MzsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLFxuIFxuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgcnEtXHUwMDNlY21kX2ZsYWdzKTtcbiBcdFx0X19nZXRfc3RyKGNtZClbMF0gPSAmIzM5O1xcMCYjMzk7O1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCYjMzQ7JWQsJWQgJXMgJXUgKCVzKSAlbGx1ICYjNDM7ICV1ICVzLCV1LCV1IFslc11cJiMzNDssXG5AQCAtNDEwLDcgJiM0Mzs0MTAsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX2JpbyxcbiBcdFx0X19lbnRyeS1cdTAwM2VzZWN0b3JcdFx0PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG4gXHRcdF9fZW50cnktXHUwMDNlbnJfc2VjdG9yXHQ9IGJpb19zZWN0b3JzKGJpbyk7XG4gXHRcdGJsa19maWxsX3J3YnMoX19lbnRyeS1cdTAwM2Vyd2JzLCBiaW8tXHUwMDNlYmlfb3BmKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwmIzM0OyVkLCVkICVzICVsbHUgJiM0MzsgJXUgWyVzXVwmIzM0OyxcbkBAIC00OTMsNyAmIzQzOzQ5Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3BsdWcsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtbJXNdXCYjMzQ7LCBfX2VudHJ5LVx1MDAzZWNvbW0pXG5AQCAtNTEyLDcgJiM0Mzs1MTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3VucGx1ZyxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZW5yX3JxID0gZGVwdGg7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtbJXNdICVkXCYjMzQ7LCBfX2VudHJ5LVx1MDAzZWNvbW0sIF9fZW50cnktXHUwMDNlbnJfcnEpXG5AQCAtNTYzLDcgJiM0Mzs1NjMsNyBAQCBUUkFDRV9FVkVOVChibG9ja19zcGxpdCxcbiBcdFx0X19lbnRyeS1cdTAwM2VzZWN0b3JcdFx0PSBiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV3X3NlY3Rvclx0PSBuZXdfc2VjdG9yO1xuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgYmlvLVx1MDAzZWJpX29wZik7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDslZCwlZCAlcyAlbGx1IC8gJWxsdSBbJXNdXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG5pbmRleCBjN2I5YzUzZmM0OTg2OS4uZmRkMjBiYzQ2YmIwMjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oXG5AQCAtMzIsNyAmIzQzOzMyLDcgQEAgVFJBQ0VfRVZFTlQoY29yZWR1bXAsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VzaWcgPSBzaWc7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcJiMzNDtzaWc9JWQgY29tbT0lc1wmIzM0OyxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmhcbmluZGV4IDI3MGMxYTJjMjRjNDRhLi43ZDIyNjUwYjRjNzg1ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXG5AQCAtMjUwNSw3ICYjNDM7MjUwNSw3IEBAIFRSQUNFX0VWRU5UKGYyZnNfbG9ja19lbGFwc2VkX3RpbWUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87XG4gXHRcdF9fZW50cnktXHUwMDNlaW9wcmlvX2NsYXNzXHQ9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7XG5AQCAtMjU1OCw3ICYjNDM7MjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWxvY2tfbmFtZVx0PSBsb2NrX25hbWU7XG4gXHRcdF9fZW50cnktXHUwMDNlaXNfd3JpdGVcdD0gaXNfd3JpdGU7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxuaW5kZXggOWYwYTVkMTQ4MmM0NDguLjhiY2RjNGZmYzhkMzQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oXG5AQCAtMjMsNyAmIzQzOzIzLDcgQEAgVFJBQ0VfRVZFTlQob29tX3Njb3JlX2Fkal91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXHUwMDNlc2lnbmFsLVx1MDAzZW9vbV9zY29yZV9hZGo7XG4gXHQpLFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxuaW5kZXggM2Y0MjczNjIzODAxNGUuLjJjZjA0N2JiOWZiNzFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcbkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIFRSQUNFX0VWRU5UKHRocmVhZF9ub2lzZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlc3RhcnQgPSBzdGFydDtcbiBcdFx0X19lbnRyeS1cdTAwM2VkdXJhdGlvbiA9IGR1cmF0aW9uO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG5pbmRleCA1MzU4NjA1ODFmMTU5NC4uYWZiMjRlOWRhYzkxZTEgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXG5AQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdD0gcC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJpb1x0XHQ9IHAtXHUwMDNlcHJpbzsgLyogWFhYIFNDSEVEX0RFQURMSU5FICovXG4gXHRcdF9fZW50cnktXHUwMDNldGFyZ2V0X2NwdVx0PSB0YXNrX2NwdShwKTtcbkBAIC0yMzcsMTEgJiM0MzsyMzcsMTEgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc3dpdGNoLFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VwcmV2X2NvbW0sIHByZXYtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9wcmlvXHQ9IHByZXYtXHUwMDNlcHJpbztcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3N0YXRlXHQ9IF9fdHJhY2Vfc2NoZWRfc3dpdGNoX3N0YXRlKHByZWVtcHQsIHByZXZfc3RhdGUsIHByZXYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV4dF9waWRcdD0gbmV4dC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlbmV4dF9wcmlvXHQ9IG5leHQtXHUwMDNlcHJpbztcbiBcdFx0LyogWFhYIFNDSEVEX0RFQURMSU5FICovXG5AQCAtMzQ2LDcgJiM0MzszNDYsNyBAQCBUUkFDRV9FVkVOVChzY2hlZF9wcm9jZXNzX2V4aXQsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4mIzQzO1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwX2RlYWRcdD0gZ3JvdXBfZGVhZDtcbkBAIC03ODcsNyAmIzQzOzc4Nyw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3NraXBfY3B1c2V0X251bWEsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHRzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdHNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0ID0gdGFza19waWRfbnIodHNrKTtcbiBcdFx0X19lbnRyeS1cdTAwM2V0Z2lkXHRcdCA9IHRhc2tfdGdpZF9ucih0c2spO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW5naWRcdFx0ID0gdGFza19udW1hX2dyb3VwX2lkKHRzayk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaFxuaW5kZXggMWRiN2U0YjA3YzAxNDguLjhmZmZlNmQ5YmRjY2YwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXG5AQCAtNjcsNyAmIzQzOzY3LDcgQEAgVFJBQ0VfRVZFTlQoc2lnbmFsX2dlbmVyYXRlLFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlc2lnXHQ9IHNpZztcbiBcdFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHQ9IHRhc2stXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwXHQ9IGdyb3VwO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXJlc3VsdFx0PSByZXN1bHQ7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oXG5pbmRleCBiOWExMjllYjU0ZDllYi4uNjJiN2RmNGQyMmQwNTAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxuQEAgLTIxLDcgJiM0MzsyMSw3IEBAIFRSQUNFX0VWRU5UKHRhc2tfbmV3dGFzayxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbkBAIC00Niw4ICYjNDM7NDYsOSBAQCBUUkFDRV9FVkVOVCh0YXNrX3JlbmFtZSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHRhc2stXHUwMDNlcGlkO1xuLVx0XHRtZW1jcHkoZW50cnktXHUwMDNlb2xkY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbi1cdFx0c3Ryc2NweShlbnRyeS1cdTAwM2VuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTtcbiYjNDM7XHRcdGNvcHlfdGFza19jb21tKGVudHJ5LVx1MDAzZW9sZGNvbW0sIHRhc2ssIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0bWVtY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0ZW50cnktXHUwMDNlbmV3Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAmIzM5O1xcMCYjMzk7O1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcbkBAIC01Niw2ICYjNDM7NTYsOSBAQFxuICNkZWZpbmUgUFJfU0VUX05BTUUgICAgMTVcdFx0LyogU2V0IHByb2Nlc3MgbmFtZSAqL1xuICNkZWZpbmUgUFJfR0VUX05BTUUgICAgMTZcdFx0LyogR2V0IHByb2Nlc3MgbmFtZSAqL1xuIFxuJiM0MzsjZGVmaW5lIFBSX1NFVF9FWFRfTkFNRSAgICAxN1x0XHQvKiBTZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lICovXG4mIzQzOyNkZWZpbmUgUFJfR0VUX0VYVF9OQU1FICAgIDE4XHRcdC8qIEdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cbiYjNDM7XG4gLyogR2V0L3NldCBwcm9jZXNzIGVuZGlhbiAqL1xuICNkZWZpbmUgUFJfR0VUX0VORElBTlx0MTlcbiAjZGVmaW5lIFBSX1NFVF9FTkRJQU5cdDIwXG5kaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0LmMgYi9rZXJuZWwvYXVkaXQuY1xuaW5kZXggNTYyNDc2OTM3ZmE3OTMuLjFmMGI0NGQ0ZTVjNzVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2F1ZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9hdWRpdC5jXG5AQCAtMTY2Nyw3ICYjNDM7MTY2Nyw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ19tdWx0aWNhc3QoaW50IGdyb3VwLCBjb25zdCBjaGFyICpvcCwgaW50IGVycilcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpOyAvKiBzdWJqPSAqL1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IGNvbW09XCYjMzQ7KTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7IC8qIGV4ZT0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBubC1tY2dycD0lZCBvcD0lcyByZXM9JWRcJiMzNDssIGdyb3VwLCBvcCwgIWVycik7XG4gXHRhdWRpdF9sb2dfZW5kKGFiKTtcbkBAIC0yNDc2LDcgJiM0MzsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxuIFx0XHRcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBjb21tPVwmIzM0Oyk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7XG4gfVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXG5pbmRleCA2NjEwZTY2N2M3MjhhYS4uMWQ5MzBmMTY5ODU2ZDQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXRzYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXRzYy5jXG5AQCAtMjg3Nyw3ICYjNDM7Mjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcyxcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBwaWQ9JXVcJiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBjb21tPVwmIzM0Oyk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2VuZChhYik7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKF9fYXVkaXRfbG9nX25mY2ZnKTtcbkBAIC0yOTAwLDcgJiM0MzsyOTAxLDggQEAgc3RhdGljIHZvaWQgYXVkaXRfbG9nX3Rhc2soc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXG4gXHRcdFx0IHNlc3Npb25pZCk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBwaWQ9JWQgY29tbT1cJiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbiYjNDM7XHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuJiM0MztcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xuIFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL25iY29uLmMgYi9rZXJuZWwvcHJpbnRrL25iY29uLmNcbmluZGV4IDRiMDNiMDE5Y2Q1ZWUyLi5mNGM1YWU4YTM1MzBmNyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvbmJjb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9uYmNvbi5jXG5AQCAtOTUyLDcgJiM0Mzs5NTIsNyBAQCBzdGF0aWMgdm9pZCB3Y3R4dF9sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IG5iY29uX3dyaXRlX2NvbnRleHQgKndjdHh0LFxuIHtcbiBcdHdjdHh0LVx1MDAzZWNwdSA9IHBtc2ctXHUwMDNlY3B1O1xuIFx0d2N0eHQtXHUwMDNlcGlkID0gcG1zZy1cdTAwM2VwaWQ7XG4tXHRtZW1jcHkod2N0eHQtXHUwMDNlY29tbSwgcG1zZy1cdTAwM2Vjb21tLCBzaXplb2Yod2N0eHQtXHUwMDNlY29tbSkpO1xuJiM0MztcdGNvcHlfdGFza19jb21tKHdjdHh0LVx1MDAzZWNvbW0sIHBtc2csIHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSk7XG4gXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9wcmludGsuYyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbmluZGV4IDJmZTlhOTYzYzgyM2E0Li5lYzBjNjczNGJiZTFjZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbkBAIC0yMjQ3LDcgJiM0MzsyMjQ3LDcgQEAgc3RhdGljIHUxNiBwcmludGtfc3ByaW50KGNoYXIgKnRleHQsIHUxNiBzaXplLCBpbnQgZmFjaWxpdHksXG4gc3RhdGljIHZvaWQgcHJpbnRrX3N0b3JlX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19pbmZvICppbmZvKVxuIHtcbiBcdGluZm8tXHUwMDNlY2FsbGVyX2lkMiA9IHByaW50a19jYWxsZXJfaWQyKCk7XG4tXHRnZXRfdGFza19jb21tKGluZm8tXHUwMDNlY29tbSwgY3VycmVudCk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoaW5mby1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csXG5AQCAtMjI1NSw3ICYjNDM7MjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcbiB7XG4gXHRwbXNnLVx1MDAzZWNwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7XG4gXHRwbXNnLVx1MDAzZXBpZCA9IHByaW50a19pbmZvX2dldF9waWQoaW5mbyk7XG4tXHRtZW1jcHkocG1zZy1cdTAwM2Vjb21tLCBpbmZvLVx1MDAzZWNvbW0sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbiYjNDM7XHRjb3B5X3Rhc2tfY29tbShwbXNnLVx1MDAzZWNvbW0sIGluZm8sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbiBcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKHBtc2ctXHUwMDNlY29tbSkgPT0gc2l6ZW9mKGluZm8tXHUwMDNlY29tbSkpO1xuIH1cbiAjZWxzZVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuY1xuaW5kZXggZGY2OWJkNzFkZTAzMmMuLjI2ZDUwMjZmOTU5MDYxIDEwMDY0NFxuLS0tIGEva2VybmVsL3N5cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc3lzLmNcbkBAIC0yNTM1LDcgJiM0MzsyNTM1LDcgQEAgU1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbiBcdFx0dW5zaWduZWQgbG9uZywgYXJnNCwgdW5zaWduZWQgbG9uZywgYXJnNSlcbiB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKm1lID0gY3VycmVudDtcbi1cdHVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtXHUwMDNlY29tbSldO1xuJiM0MztcdHVuc2lnbmVkIGNoYXIgY29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXHRsb25nIGVycm9yO1xuIFxuIFx0ZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7XG5AQCAtMjYwMSwxNiAmIzQzOzI2MDEsMjkgQEAgU1lTQ0FMTF9ERUZJTkU1KHByY3RsLCBpbnQsIG9wdGlvbiwgdW5zaWduZWQgbG9uZywgYXJnMiwgdW5zaWduZWQgbG9uZywgYXJnMyxcbiBcdFx0XHRlcnJvciA9IC1FSU5WQUw7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9TRVRfTkFNRTpcbi1cdFx0Y29tbVtzaXplb2YobWUtXHUwMDNlY29tbSkgLSAxXSA9IDA7XG4mIzQzO1x0XHRjb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9IDA7XG4gXHRcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLFxuLVx0XHRcdFx0ICAgICAgc2l6ZW9mKG1lLVx1MDAzZWNvbW0pIC0gMSkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRzZXRfdGFza19jb21tKG1lLCBjb21tKTtcbiBcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9HRVRfTkFNRTpcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBtZSk7XG4tXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgc2l6ZW9mKGNvbW0pKSlcbiYjNDM7XHRcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcdFx0aWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBSX1NFVF9FWFRfTkFNRTpcbiYjNDM7XHRcdGNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7XG4mIzQzO1x0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcbiYjNDM7XHRcdFx0XHQgICAgICBUQVNLX0NPTU1fRVhUX0xFTiAtIDEpIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdHNldF90YXNrX2NvbW0obWUsIGNvbW0pO1xuJiM0MztcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBSX0dFVF9FWFRfTkFNRTpcbiYjNDM7XHRcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9FWFRfTEVOKTtcbiYjNDM7XHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJfR0VUX0VORElBTjpcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmNcbmluZGV4IDA4MTlhY2U1YjAyNzU3Li41ZDI2MDI5ZDJkMDEyZCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXG5AQCAtODgxLDYgJiM0Mzs4ODEsNDMgQEAgc3RhdGljIHZvaWQgc3RyaW5nX2JlbmNoX3N0cnJjaHIoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0U1RSSU5HX0JFTkNIX0JVRih0ZXN0LCBidWYsIGxlbiwgc3RycmNociwgYnVmLCAmIzM5O1xcMCYjMzk7KTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgVEFTS19OQU1FIFwmIzM0O3Rhc2tfbmFtZVwmIzM0O1xuJiM0MzsjZGVmaW5lIFRBU0tfTkFNRV9MRU4gOVxuJiM0MzsjZGVmaW5lIFRBU0tfTUFYX0xFTiBUQVNLX0NPTU1fRVhUX0xFTlxuJiM0MzsjZGVmaW5lIFNNQUxMRVJfTEVOIFRBU0tfTkFNRV9MRU4gLSAzXG4mIzQzOyNkZWZpbmUgQklHR0VSX0xFTiBUQVNLX01BWF9MRU4gJiM0MzsgM1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgc3RyaW5nX2NvcHlfdGFza19jb21tKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdGNoYXIgc3RyW1RBU0tfTUFYX0xFTl0gPSBUQVNLX05BTUUsIGNvcHlbVEFTS19NQVhfTEVOXSxcbiYjNDM7XHQgICAgIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOXSwgYmlnZ2VyX2J1ZltCSUdHRVJfTEVOXTtcbiYjNDM7XHRzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0IHRhc2ssICp0c2sgPSBcdTAwMjZ0YXNrO1xuJiM0MztcdGludCBsZW4xLCBsZW4yLCBpO1xuJiM0MztcbiYjNDM7XHQvKiBzZXQgYW5kIGdldCB0YXNrIG5hbWUgKi9cbiYjNDM7XHRzZXRfdGFza19jb21tKHRzaywgc3RyKTtcbiYjNDM7XHRjb3B5X3Rhc2tfY29tbShjb3B5LCB0c2ssIFRBU0tfQ09NTV9MRU4pO1xuJiM0MztcbiYjNDM7XHRsZW4xID0gc3RybGVuKHN0cik7XG4mIzQzO1x0bGVuMiA9IHN0cmxlbihjb3B5KTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjEsIGxlbjIpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4yLCBUQVNLX05BTUVfTEVOKTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgY29weVtsZW4yXSwgJiMzOTtcXDAmIzM5Oyk7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cmNtcChzdHIsIGNvcHkpKTtcbiYjNDM7XG4mIzQzO1x0LyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqL1xuJiM0MztcdGNvcHlfdGFza19jb21tKHNtYWxsZXJfYnVmLCB0c2ssIHNpemVvZihzbWFsbGVyX2J1ZikpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgc21hbGxlcl9idWYsIFNNQUxMRVJfTEVOIC0gMSkpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAmIzM5O1xcMCYjMzk7KTtcbiYjNDM7XG4mIzQzO1x0LyogY29weSB0byBhIGJpZ2dlciBkc3QgYnVmZmVyICovXG4mIzQzO1x0Y29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpO1xuJiM0MztcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgYmlnZ2VyX2J1ZiwgVEFTS19OQU1FX0xFTikpO1xuJiM0MztcdGZvciAoaSA9IFRBU0tfTkFNRV9MRU47IGkgXHUwMDNjIEJJR0dFUl9MRU47IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGJpZ2dlcl9idWZbaV0sICYjMzk7XFwwJiMzOTspO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDMyKSxcbkBAIC05MTAsNiAmIzQzOzk0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RybmxlbiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJjaHIpLFxuIFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RycmNociksXG4mIzQzO1x0S1VOSVRfQ0FTRShzdHJpbmdfY29weV90YXNrX2NvbW0pLFxuIFx0e31cbiB9O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuaW5kZXggMDcwY2EzODhmOWFjZTguLjRlNjZjYjJkOTU0OWM2IDEwMDY0NFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbkBAIC0xMDQsNyAmIzQzOzEwNCw3IEBAIHN0YXRpYyBib29sIGhjaV9zb2NrX2dlbl9jb29raWUoc3RydWN0IHNvY2sgKnNrKVxuIFx0XHRcdGlkID0gMHhmZmZmZmZmZjtcbiBcbiBcdFx0aGNpX3BpKHNrKS1cdTAwM2Vjb29raWUgPSBpZDtcbi1cdFx0Z2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQpO1xuJiM0MztcdFx0c3Ryc2NweV9wYWQoaGNpX3BpKHNrKS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCBhOWVhZjk0NTVjNzc4My4uYzU1NTVlZWQxYjYyZDIgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC05NzE4LDkgJiM0Mzs5NzE4LDExIEBAIHN0YXRpYyBpbnQgbmZfdGFibGVzX2ZpbGxfZ2VuX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKCFubGgpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuJiM0MztcdHN0cnNjcHlfcGFkKGJ1ZiwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiYjNDM7XG4gXHRpZiAobmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fSUQsIGh0b25sKG5mdF9iYXNlX3NlcShuZXQpKSkgfHxcbiBcdCAgICBubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9QUk9DX1BJRCwgaHRvbmwodGFza19waWRfbnIoY3VycmVudCkpKSB8fFxuLVx0ICAgIG5sYV9wdXRfc3RyaW5nKHNrYiwgTkZUQV9HRU5fUFJPQ19OQU1FLCBnZXRfdGFza19jb21tKGJ1ZiwgY3VycmVudCkpKVxuJiM0MztcdCAgICBubGFfcHV0X3N0cmluZyhza2IsIE5GVEFfR0VOX1BST0NfTkFNRSwgYnVmKSlcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4gXHRubG1zZ19lbmQoc2tiLCBubGgpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuYyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xuaW5kZXggZDhkOWU1ZmYxY2QyMmIuLjk4MDYwMDYwOTI5ZGE5IDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmNcbkBAIC01NCw3ICYjNDM7NTQsOCBAQCB2b2lkIGludGVncml0eV9hdWRpdF9tZXNzYWdlKGludCBhdWRpdF9tc2dubywgc3RydWN0IGlub2RlICppbm9kZSxcbiBcdFx0XHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwmIzM0OyBvcD0lcyBjYXVzZT0lcyBjb21tPVwmIzM0Oywgb3AsIGNhdXNlKTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0obmFtZSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7XG4gXHRpZiAoZm5hbWUpIHtcbiBcdFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IG5hbWU9XCYjMzQ7KTtcbiBcdFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcbmluZGV4IDkzZmI1OWZiZGRkNjBiLi45MGE2YWNmYjdjZGZjZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zZWN1cml0eS9pcGUvYXVkaXQuY1xuQEAgLTE0NSw3ICYjNDM7MTQ1LDggQEAgdm9pZCBpcGVfYXVkaXRfbWF0Y2goY29uc3Qgc3RydWN0IGlwZV9ldmFsX2N0eCAqY29uc3QgY3R4LFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7aXBlX29wPSVzIGlwZV9ob29rPSVzIGVuZm9yY2luZz0lZCBwaWQ9JWQgY29tbT1cJiMzNDssXG4gXHRcdFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cdTAwM2Vob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLFxuIFx0XHRcdCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4mIzQzO1x0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiYjNDM7XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcbiBcdGlmIChjdHgtXHUwMDNlZmlsZSkge1xuIFx0XHRhdWRpdF9sb2dfZF9wYXRoKGFiLCBcJiMzNDsgcGF0aD1cJiMzNDssIFx1MDAyNmN0eC1cdTAwM2VmaWxlLVx1MDAzZWZfcGF0aCk7XG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMgYi9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uY1xuaW5kZXggOWE4MzU1ZmNjZDI2ZWIuLmIyZmM3ZjcyMmQ2OTA4IDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXG5AQCAtMTAyLDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgc3RydWN0IGxhbmRsb2NrX2RldGFpbHMgKmdldF9jdXJyZW50X2RldGFpbHModm9pZClcbiBcdG1lbWNweShkZXRhaWxzLVx1MDAzZWV4ZV9wYXRoLCBwYXRoX3N0ciwgcGF0aF9zaXplKTtcbiBcdGRldGFpbHMtXHUwMDNlcGlkID0gZ2V0X3BpZCh0YXNrX3RnaWQoY3VycmVudCkpO1xuIFx0ZGV0YWlscy1cdTAwM2V1aWQgPSBmcm9tX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTtcbi1cdGdldF90YXNrX2NvbW0oZGV0YWlscy1cdTAwM2Vjb21tLCBjdXJyZW50KTtcbiYjNDM7XHRzdHJzY3B5X3BhZChkZXRhaWxzLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRyZXR1cm4gZGV0YWlscztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuY1xuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXG5AQCAtMjc2LDggJiM0MzsyNzYsOCBAQCB2b2lkIGF1ZGl0X2xvZ19sc21fZGF0YShzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYixcbiBcdFx0XHRpZiAocGlkKSB7XG4gXHRcdFx0XHRjaGFyIHRza2NvbW1bc2l6ZW9mKHRzay1cdTAwM2Vjb21tKV07XG4gXHRcdFx0XHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcJiMzNDsgb3BpZD0lZCBvY29tbT1cJiMzNDssIHBpZCk7XG4tXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxuLVx0XHRcdFx0ICAgIGdldF90YXNrX2NvbW0odHNrY29tbSwgdHNrKSk7XG4mIzQzO1x0XHRcdFx0c3Ryc2NweV9wYWQodHNrY29tbSwgdHNrLVx1MDAzZWNvbW0pO1xuJiM0MztcdFx0XHRcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIHRza2NvbW0pO1xuIFx0XHRcdH1cbiBcdFx0fVxuIFx0XHRicmVhaztcbkBAIC00MTcsNyAmIzQzOzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXG4gXHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCYjMzQ7IHBpZD0lZCBjb21tPVwmIzM0OywgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcbi1cdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xuJiM0MztcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4mIzQzO1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfbHNtX2RhdGEoYWIsIGEpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcbmluZGV4IDNmN2IxNDZkMzZkZmUxLi4wZjIwZjdkZWFjNjdmZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXG5AQCAtOSw5ICYjNDM7OSwxNyBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmhcJiMzNDtcbiBcbiYjNDM7I2lmbmRlZiBQUl9TRVRfRVhUX05BTUVcbiYjNDM7IyBkZWZpbmUgUFJfU0VUX0VYVF9OQU1FIDE3XG4mIzQzOyMgZGVmaW5lIFBSX0dFVF9FWFRfTkFNRSAxOFxuJiM0MzsjZW5kaWZcbiYjNDM7XG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcJiMzNDtjaGFuZ2VuYW1lXCYjMzQ7XG4mIzQzOyNkZWZpbmUgTE9OR19OQU1FXHRcJiMzNDtjaGFuZ2VfdG9fdmVyeV9sb25nX2V4dGVuZGVkX25hbWVcJiMzNDtcbiYjNDM7I2RlZmluZSBMT05HX05BTUVfQ0FQXHRcJiMzNDtjaGFuZ2VfdG9fdmVyeV9cJiMzNDtcbiAjZGVmaW5lIEVNUFRZX05BTUUgXCYjMzQ7XCYjMzQ7XG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XG4mIzQzOyNkZWZpbmUgVEFTS19DT01NX0VYVF9MRU4gNjRcbiAjZGVmaW5lIE1BWF9QQVRIX0xFTiA1MFxuIFxuIGludCBzZXRfbmFtZShjaGFyICpuYW1lKVxuQEAgLTI1LDYgJiM0MzszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbiBcdHJldHVybiByZXM7XG4gfVxuIFxuJiM0MztpbnQgc2V0X2V4dF9uYW1lKGNoYXIgKm5hbWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmVzO1xuJiM0MztcbiYjNDM7XHRyZXMgPSBwcmN0bChQUl9TRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xuJiM0MztcbiYjNDM7XHRpZiAocmVzIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIC1lcnJubztcbiYjNDM7fVxuJiM0MztcbiBpbnQgY2hlY2tfaXNfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciBuYW1lW1RBU0tfQ09NTV9MRU5dO1xuQEAgLTM4LDYgJiM0Mzs1NiwxOSBAQCBpbnQgY2hlY2tfaXNfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4gXHRyZXR1cm4gIXN0cmNtcChuYW1lLCBjaGVja19uYW1lKTtcbiB9XG4gXG4mIzQzO2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIG5hbWVbVEFTS19DT01NX0VYVF9MRU5dO1xuJiM0MztcdGludCByZXM7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXMgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gLWVycm5vO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gIXN0cmNtcChuYW1lLCBjaGVja19uYW1lKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciAqbmFtZSA9IE5VTEw7XG5AQCAtODIsNiAmIzQzOzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7XG4gXHRFWFBFQ1RfR0Uoc2V0X25hbWUoQ0hBTkdFX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChDSEFOR0VfTkFNRSkpO1xuIFxuJiM0MztcdEVYUEVDVF9HRShzZXRfZXh0X25hbWUoTE9OR19OQU1FKSwgMCk7XG4mIzQzO1x0RVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTtcbiYjNDM7XHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoTE9OR19OQU1FX0NBUCkpO1xuJiM0MztcdEVYUEVDVF9UUlVFKGNoZWNrX25hbWUoKSk7XG4mIzQzO1xuIFx0RVhQRUNUX0dFKHNldF9uYW1lKEVNUFRZX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmRlNTRjM2RlY2IzYzEzZjI5NGVhOTExZTljOGNlZGNjZjJlZmQyOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIwOjUzOjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jCmluZGV4IDAwNTZhYjgxZmJjMzlhLi5jNzgyNDNlZDNjMmE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYwpAQCAtMjc4LDcgJiM0MzsyNzgsNyBAQCB2b2lkIHByb2NfY29tbV9jb25uZWN0b3Ioc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogCWV2LSZndDt3aGF0ID0gUFJPQ19FVkVOVF9DT01NOwogCWV2LSZndDtldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay0mZ3Q7cGlkOwogCWV2LSZndDtldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay0mZ3Q7dGdpZDsKLQlnZXRfdGFza19jb21tKGV2LSZndDtldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7CiYjNDM7CXN0cnNjcHlfcGFkKGV2LSZndDtldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzay0mZ3Q7Y29tbSk7CiAKIAltZW1jcHkoJmFtcDttc2ctJmd0O2lkLCAmYW1wO2NuX3Byb2NfZXZlbnRfaWQsIHNpemVvZihtc2ctJmd0O2lkKSk7CiAJbXNnLSZndDthY2sgPSAwOyAvKiBub3QgdXNlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMKaW5kZXggOGRmMjBiMDIxOGE5ZWUuLmQ1MDE2NTdhZDgwMTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMKQEAgLTMxMiw3ICYjNDM7MzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAlzdHJ1Y3Qgc3luY190aW1lbGluZSAqb2JqOwogCWNoYXIgdGFza19jb21tW1RBU0tfQ09NTV9MRU5dOwogCi0JZ2V0X3Rhc2tfY29tbSh0YXNrX2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJb2JqID0gc3luY190aW1lbGluZV9jcmVhdGUodGFza19jb21tKTsKIAlpZiAoIW9iaikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYwppbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmMKQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCwKIAkvKiBUaGlzIHJlZmVyZW5jZSBnZXRzIHJlbGVhc2VkIGluIGFtZGtmZF9mZW5jZV9yZWxlYXNlICovCiAJbW1ncmFiKG1tKTsKIAlmZW5jZS0mZ3Q7bW0gPSBtbTsKLQlnZXRfdGFza19jb21tKGZlbmNlLSZndDt0aW1lbGluZV9uYW1lLCBjdXJyZW50KTsKJiM0MzsJc3Ryc2NweV9wYWQoZmVuY2UtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQtJmd0O2NvbW0pOwogCXNwaW5fbG9ja19pbml0KCZhbXA7ZmVuY2UtJmd0O2xvY2spOwogCWZlbmNlLSZndDtzdm1fYm8gPSBzdm1fYm87CiAJZmVuY2UtJmd0O2NvbnRleHRfaWQgPSBjb250ZXh0X2lkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYwppbmRleCBmNmI3NTIyYzNjODJmZi4uMDQ2MjQzZTNhM2NkMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jCkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21nciwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlldl9mZW5jZS0mZ3Q7ZXZmX21nciA9IGV2Zl9tZ3I7Ci0JZ2V0X3Rhc2tfY29tbShldl9mZW5jZS0mZ3Q7dGltZWxpbmVfbmFtZSwgY3VycmVudCk7CiYjNDM7CXN0cnNjcHlfcGFkKGV2X2ZlbmNlLSZndDt0aW1lbGluZV9uYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2V2X2ZlbmNlLSZndDtsb2NrKTsKIAlkbWFfZmVuY2VfaW5pdDY0KCZhbXA7ZXZfZmVuY2UtJmd0O2Jhc2UsICZhbXA7YW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX29wcywKIAkJCSAmYW1wO2V2X2ZlbmNlLSZndDtsb2NrLCBldmZfbWdyLSZndDtldl9mZW5jZV9jdHgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMKaW5kZXggNzY0Y2Q0OTUwNDA4M2MuLmU2MGE0NzBiNTdlY2MxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jCkBAIC00NDQ1LDcgJiM0Mzs0NDQ1LDcgQEAgaW50IGFtZGdwdV9yYXNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl9CiAKIAljb24tJmd0O2luaXRfdGFza19waWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTsKLQlnZXRfdGFza19jb21tKGNvbi0mZ3Q7aW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChjb24tJmd0O2luaXRfdGFza19jb21tLCBjdXJyZW50LSZndDtjb21tKTsKIAogCW11dGV4X2luaXQoJmFtcDtjb24tJmd0O2NyaXRpY2FsX3JlZ2lvbl9sb2NrKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO2Nvbi0mZ3Q7Y3JpdGljYWxfcmVnaW9uX2hlYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYwppbmRleCBmNzRhZDM3OGU0MDc0Mi4uZjQxODU3NDczNjQxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jCkBAIC04NSw3ICYjNDM7ODUsNyBAQCBpbnQgYW1kZ3B1X3VzZXJxX2ZlbmNlX2RyaXZlcl9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCWZlbmNlX2Rydi0mZ3Q7YWRldiA9IGFkZXY7CiAJZmVuY2VfZHJ2LSZndDtjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Ci0JZ2V0X3Rhc2tfY29tbShmZW5jZV9kcnYtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChmZW5jZV9kcnYtJmd0O3RpbWVsaW5lX25hbWUsIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJKmZlbmNlX2Rydl9yZXEgPSBmZW5jZV9kcnY7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKaW5kZXggYmI5OWI3YzNhMDEwZWEuLjg0YzBiMzEwZTljMTQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwpAQCAtMjU0MiwxMCAmIzQzOzI1NDIsMTAgQEAgdm9pZCBhbWRncHVfdm1fc2V0X3Rhc2tfaW5mbyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKIAkJcmV0dXJuOwogCiAJdm0tJmd0O3Rhc2tfaW5mby0mZ3Q7dGFzay5waWQgPSBjdXJyZW50LSZndDtwaWQ7Ci0JZ2V0X3Rhc2tfY29tbSh2bS0mZ3Q7dGFza19pbmZvLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh2bS0mZ3Q7dGFza19pbmZvLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJdm0tJmd0O3Rhc2tfaW5mby0mZ3Q7dGdpZCA9IGN1cnJlbnQtJmd0O3RnaWQ7Ci0JZ2V0X3Rhc2tfY29tbSh2bS0mZ3Q7dGFza19pbmZvLSZndDtwcm9jZXNzX25hbWUsIGN1cnJlbnQtJmd0O2dyb3VwX2xlYWRlcik7CiYjNDM7CXN0cnNjcHlfcGFkKHZtLSZndDt0YXNrX2luZm8tJmd0O3Byb2Nlc3NfbmFtZSwgY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyLSZndDtjb21tKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jCmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMKQEAgLTU2Myw3ICYjNDM7NTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLAogCX0KIAogCXZyZXMtJmd0O3Rhc2sucGlkID0gdGFza19waWRfbnIoY3VycmVudCk7Ci0JZ2V0X3Rhc2tfY29tbSh2cmVzLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZCh2cmVzLSZndDt0YXNrLmNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCWxpc3RfYWRkX3RhaWwoJmFtcDt2cmVzLSZndDt2cmVzX25vZGUsICZhbXA7bWdyLSZndDthbGxvY2F0ZWRfdnJlc19saXN0KTsKIAogCWlmIChiby0mZ3Q7ZmxhZ3MgJmFtcDsgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTICZhbXA7JmFtcDsgYWRqdXN0X2RjY19zaXplKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYwppbmRleCA2OGVkZTdhNzI1ZTIxOS4uZThjNWMzNjAxYmYxZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguYwpAQCAtMjksNyAmIzQzOzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKQogCQlnb3RvIGVycl9vdXQwOwogCiAJY3R4LSZndDtwaWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTsKLQlnZXRfdGFza19jb21tKGN0eC0mZ3Q7cG5hbWUsIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChjdHgtJmd0O3BuYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAogCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKaW5kZXggM2E3ZmNlNDI4ODk4N2IuLjExOTM2YzRkMzU3MzZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jCkBAIC0zNiw3ICYjNDM7MzYsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fZGVidWdmc19ib19hZGQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsCiAJCQkJCXN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibykKIHsKIAliby0mZ3Q7ZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LSZndDt0Z2lkOwotCWdldF90YXNrX2NvbW0oYm8tJmd0O2RlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtJmd0O2dyb3VwX2xlYWRlcik7CiYjNDM7CXN0cnNjcHlfcGFkKGJvLSZndDtkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LSZndDtncm91cF9sZWFkZXItJmd0O2NvbW0pOwogCiAJbXV0ZXhfbG9jaygmYW1wO3BmZGV2LSZndDtkZWJ1Z2ZzLmdlbXNfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2JvLSZndDtkZWJ1Z2ZzLm5vZGUsICZhbXA7cGZkZXYtJmd0O2RlYnVnZnMuZ2Vtc19saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jCkBAIC01NCw3ICYjNDM7NTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibykKIAkJCQkJCSAgICBzdHJ1Y3QgcGFudGhvcl9kZXZpY2UsIGJhc2UpOwogCiAJYm8tJmd0O2RlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC0mZ3Q7dGdpZDsKLQlnZXRfdGFza19jb21tKGJvLSZndDtkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LSZndDtncm91cF9sZWFkZXIpOwomIzQzOwlzdHJzY3B5X3BhZChiby0mZ3Q7ZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyLSZndDtjb21tKTsKIAogCW11dGV4X2xvY2soJmFtcDtwdGRldi0mZ3Q7Z2Vtcy5sb2NrKTsKIAlsaXN0X2FkZF90YWlsKCZhbXA7Ym8tJmd0O2RlYnVnZnMubm9kZSwgJmFtcDtwdGRldi0mZ3Q7Z2Vtcy5ub2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYwppbmRleCAyOThiMDQ2Yzk1ZWRiOC4uODFjNDY1OWMwZDdiZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmMKQEAgLTM2MTcsNyAmIzQzOzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApCiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gY3VycmVudC0mZ3Q7Z3JvdXBfbGVhZGVyOwogCiAJZ3JvdXAtJmd0O3Rhc2tfaW5mby5waWQgPSB0YXNrLSZndDtwaWQ7Ci0JZ2V0X3Rhc2tfY29tbShncm91cC0mZ3Q7dGFza19pbmZvLmNvbW0sIHRhc2spOwomIzQzOwlzdHJzY3B5X3BhZChncm91cC0mZ3Q7dGFza19pbmZvLmNvbW0sIHRhc2stJmd0O2NvbW0pOwogfQogCiBzdGF0aWMgdm9pZCBhZGRfZ3JvdXBfa2JvX3NpemVzKHN0cnVjdCBwYW50aG9yX2RldmljZSAqcHRkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jCmluZGV4IDNkOGU0Y2NkYjdjMWY4Li5iMTBhMGUxY2IxZWQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfY3JlYXRlX2NvbnRleHRfbG9ja2VkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsCiAJfSBlbHNlIHsKIAkJY2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dOwogCi0JCWdldF90YXNrX2NvbW0oZGJnbmFtZSwgY3VycmVudCk7CiYjNDM7CQlzdHJzY3B5X3BhZChkYmduYW1lLCBjdXJyZW50LSZndDtjb21tKTsKIAkJdmlydGlvX2dwdV9jbWRfY29udGV4dF9jcmVhdGUodmdkZXYsIHZmcHJpdi0mZ3Q7Y3R4X2lkLAogCQkJCQkgICAgICB2ZnByaXYtJmd0O2NvbnRleHRfaW5pdCwgc3RybGVuKGRiZ25hbWUpLAogCQkJCQkgICAgICBkYmduYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jCmluZGV4IGY0OGM2YThhMDY1NGU5Li5jNzcxNTQzOTk2NGU4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od3RyYWNpbmcvc3RtL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jCkBAIC02MzQsNyAmIzQzOzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQljaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtJmd0O2NvbW0pXTsKIAkJY2hhciAqaWRzW10gPSB7IGNvbW0sICYjMzQ7ZGVmYXVsdCYjMzQ7LCBOVUxMIH07CiAKLQkJZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KTsKJiM0MzsJCXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCiAJCWVyciA9IHN0bV9hc3NpZ25fZmlyc3RfcG9saWN5KHN0bWYtJmd0O3N0bSwgJmFtcDtzdG1mLSZndDtvdXRwdXQsIGlkcywgMSk7CiAJCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfYXVkaXQuYyBiL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jCmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmMKQEAgLTc3LDcgJiM0Mzs3Nyw3IEBAIHN0YXRpYyB2b2lkIHR0eV9hdWRpdF9sb2coY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGRldl90IGRldiwKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyVzIHBpZD0ldSB1aWQ9JXUgYXVpZD0ldSBzZXM9JXUgbWFqb3I9JWQgbWlub3I9JWQgY29tbT0mIzM0OywKIAkJCSBkZXNjcmlwdGlvbiwgcGlkLCB1aWQsIGxvZ2ludWlkLCBzZXNzaW9uaWQsCiAJCQkgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7Ci0JZ2V0X3Rhc2tfY29tbShuYW1lLCBjdXJyZW50KTsKJiM0MzsJc3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC0mZ3Q7Y29tbSk7CiAJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgZGF0YT0mIzM0Oyk7CiAJYXVkaXRfbG9nX25faGV4KGFiLCBkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuYwppbmRleCAxNmE1NmI2YjNmNmNhMS4uZDI1OTIyNDYwYjYzNzggMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbGYuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmMKQEAgLTE1NTcsNyAmIzQzOzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLAogCVNFVF9VSUQocHNpbmZvLSZndDtwcl91aWQsIGZyb21fa3VpZF9tdW5nZWQoY3JlZC0mZ3Q7dXNlcl9ucywgY3JlZC0mZ3Q7dWlkKSk7CiAJU0VUX0dJRChwc2luZm8tJmd0O3ByX2dpZCwgZnJvbV9rZ2lkX211bmdlZChjcmVkLSZndDt1c2VyX25zLCBjcmVkLSZndDtnaWQpKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKLQlnZXRfdGFza19jb21tKHBzaW5mby0mZ3Q7cHJfZm5hbWUsIHApOwomIzQzOwlzdHJzY3B5X3BhZChwc2luZm8tJmd0O3ByX2ZuYW1lLCBwLSZndDtjb21tKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZl9mZHBpYy5jIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jCmluZGV4IDdlMzEwODQ4OWM4M2NhLi5jNGQ0ZTU5ZmYzNGQxYiAxMDA2NDQKLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwpAQCAtMTM3MSw3ICYjNDM7MTM3MSw3IEBAIHN0YXRpYyBpbnQgZmlsbF9wc2luZm8oc3RydWN0IGVsZl9wcnBzaW5mbyAqcHNpbmZvLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsCiAJU0VUX1VJRChwc2luZm8tJmd0O3ByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLSZndDt1c2VyX25zLCBjcmVkLSZndDt1aWQpKTsKIAlTRVRfR0lEKHBzaW5mby0mZ3Q7cHJfZ2lkLCBmcm9tX2tnaWRfbXVuZ2VkKGNyZWQtJmd0O3VzZXJfbnMsIGNyZWQtJmd0O2dpZCkpOwogCXJjdV9yZWFkX3VubG9jaygpOwotCWdldF90YXNrX2NvbW0ocHNpbmZvLSZndDtwcl9mbmFtZSwgcCk7CiYjNDM7CXN0cnNjcHlfcGFkKHBzaW5mby0mZ3Q7cHJfZm5hbWUsIHAtJmd0O2NvbW0pOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9mcy9wcm9jL2FycmF5LmMgYi9mcy9wcm9jL2FycmF5LmMKaW5kZXggNDc5ZWE4Y2I0ZWY0M2QuLjA0OTBiOWVmMjc4ODUwIDEwMDY0NAotLS0gYS9mcy9wcm9jL2FycmF5LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvcHJvYy9hcnJheS5jCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKQogCWVsc2UgaWYgKHAtJmd0O2ZsYWdzICZhbXA7IFBGX0tUSFJFQUQpCiAJCWdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApOwogCWVsc2UKLQkJZ2V0X3Rhc2tfY29tbSh0Y29tbSwgcCk7CiYjNDM7CQlzdHJzY3B5X3BhZCh0Y29tbSwgcC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiAKIAlpZiAoZXNjYXBlKQogCQlzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsICYjMzQ7XG5cXCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaAppbmRleCA3YjM4ZWUyZTc5MTNiZS4uZGVlODJlM2MzNTBhZjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmgKQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIGV4dGVybiB2b2lkIHZmc19jb3JlZHVtcChjb25zdCBrZXJuZWxfc2lnaW5mb190ICpzaWdpbmZvKTsKIAlkbyB7CVwKIAkJY2hhciBjb21tW1RBU0tfQ09NTV9MRU5dOwlcCiAJCS8qIFRoaXMgd2lsbCBhbHdheXMgYmUgTlVMIHRlcm1pbmF0ZWQuICovIFwKLQkJbWVtY3B5KGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIHNpemVvZihjb21tKSk7IFwKJiM0MzsJCWNvcHlfdGFza19jb21tKGNvbW0sIGN1cnJlbnQsIHNpemVvZihjb21tKSk7IFwKIAkJcHJpbnRrX3JhdGVsaW1pdGVkKExldmVsICYjMzQ7Y29yZWR1bXA6ICVkKCUqcEUpOiAmIzM0OyBGb3JtYXQgJiMzNDtcbiYjMzQ7LAlcCiAJCQl0YXNrX3RnaWRfdm5yKGN1cnJlbnQpLCAoaW50KXN0cmxlbihjb21tKSwgY29tbSwgIyNfX1ZBX0FSR1NfXyk7CVwKIAl9IHdoaWxlICgwKQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKaW5kZXggMzczYmNjMDU5OGQxMGIuLjBmMWI0MGE1ZGJjNjBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC0zMjMsNiAmIzQzOzMyMyw3IEBAIHN0cnVjdCB1c2VyX2V2ZW50X21tOwogICovCiBlbnVtIHsKIAlUQVNLX0NPTU1fTEVOID0gMTYsCiYjNDM7CVRBU0tfQ09NTV9FWFRfTEVOID0gNjQsCiB9OwogCiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpOwpAQCAtMTE3OCw3ICYjNDM7MTE3OSw3IEBAIHN0cnVjdCB0YXNrX3N0cnVjdCB7CiAJICogLSBzZXQgaXQgd2l0aCBzZXRfdGFza19jb21tKCkgdG8gZW5zdXJlIGl0IGlzIGFsd2F5cwogCSAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkCiAJICovCi0JY2hhcgkJCQljb21tW1RBU0tfQ09NTV9MRU5dOwomIzQzOwljaGFyCQkJCWNvbW1bVEFTS19DT01NX0VYVF9MRU5dOwogCiAJc3RydWN0IG5hbWVpZGF0YQkJKm5hbWVpZGF0YTsKIApAQCAtMjAxNywyOCAmIzQzOzIwMTgsMjAgQEAgZXh0ZXJuIHZvaWQga2lja19wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKIAogZXh0ZXJuIHZvaWQgX19zZXRfdGFza19jb21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjb25zdCBjaGFyICpmcm9tLCBib29sIGV4ZWMpOwogI2RlZmluZSBzZXRfdGFza19jb21tKHRzaywgZnJvbSkgKHsJCQlcCi0JQlVJTERfQlVHX09OKHNpemVvZihmcm9tKSAhPSBUQVNLX0NPTU1fTEVOKTsJXAomIzQzOwlCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICZsdDsgVEFTS19DT01NX0xFTik7CVwKIAlfX3NldF90YXNrX2NvbW0odHNrLCBmcm9tLCBmYWxzZSk7CQlcCiB9KQogCiAvKgotICogLSBXaHkgbm90IHVzZSB0YXNrX2xvY2soKT8KLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVycwotICogICBkb2VzbiYjMzk7dCBtYWtlIHNlbnNlLiBGb3Igd3JpdGVycywgbG9ja2luZyBpcyBwcm9iYWJseSBuZWNlc3NhcnksIGFzIGEgcmFjZQotICogICBjb25kaXRpb24gY291bGQgbGVhZCB0byBsb25nLXRlcm0gbWl4ZWQgcmVzdWx0cy4KLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXMKLSAqICAgYWx3YXlzIE5VTC10ZXJtaW5hdGVkIGFuZCB6ZXJvLXBhZGRlZC4gVGhlcmVmb3JlIHRoZSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuCi0gKiAgIHJlYWRlciBhbmQgd3JpdGVyIGlzIG5vdCBhbiBpc3N1ZS4KLSAqCi0gKiAtIEJVSUxEX0JVR19PTigpIGNhbiBoZWxwIHByZXZlbnQgdGhlIGJ1ZiBmcm9tIGJlaW5nIHRydW5jYXRlZC4KLSAqICAgU2luY2UgdGhlIGNhbGxlcnMgZG9uJiMzOTt0IHBlcmZvcm0gYW55IHJldHVybiB2YWx1ZSBjaGVja3MsIHRoaXMgc2FmZWd1YXJkIGlzCi0gKiAgIG5lY2Vzc2FyeS4KJiM0MzsgKiBDb3B5IHRhc2sgbmFtZSB0byBhIGJ1ZmZlci4gRmluYWwgcmVzdWx0IGlzIGFsd2F5cyBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZy4KICAqLwotI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoewkJCVwKLQlCVUlMRF9CVUdfT04oc2l6ZW9mKGJ1ZikgJmx0OyBUQVNLX0NPTU1fTEVOKTsJXAotCXN0cnNjcHlfcGFkKGJ1ZiwgKHRzayktJmd0O2NvbW0pOwkJCVwKLQlidWY7CQkJCQkJXAotfSkKJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgY29weV90YXNrX2NvbW0oY2hhciAqZHN0LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc2l6ZV90IGxlbikKJiM0Mzt7CiYjNDM7CWNvbnN0IGNoYXIgKl9zcmMgPSB0c2stJmd0O2NvbW07CiYjNDM7CiYjNDM7CW1lbWNweShkc3QsIF9zcmMsIGxlbik7CiYjNDM7CWRzdFtsZW4gLSAxXSA9ICYjMzk7XDAmIzM5OzsKJiM0Mzt9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBzY2hlZHVsZXJfaXBpKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaCBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oCmluZGV4IGUwZDgzOGM5Y2U5MzgyLi45YjAwOTRmYTQ0YzY0OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgKQEAgLTYzNywxMCAmIzQzOzYzNywxMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB0cmFjZXBvaW50ICp0cmFjZXBvaW50X3B0cl9kZXJlZih0cmFjZXBvaW50X3B0cl90ICpwKQogICoJKgogICoKICAqCVRQX2Zhc3RfYXNzaWduKAotICoJCW1lbWNweShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOyAqCQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pOwogICoJCV9fZW50cnktJmd0O3ByZXZfcGlkCT0gcHJldi0mZ3Q7cGlkOwogICoJCV9fZW50cnktJmd0O3ByZXZfcHJpbwk9IHByZXYtJmd0O3ByaW87Ci0gKgkJbWVtY3B5KF9fZW50cnktJmd0O3ByZXZfY29tbSwgcHJldi0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7ICoJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O3ByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7CiAgKgkJX19lbnRyeS0mZ3Q7bmV4dF9waWQJPSBuZXh0LSZndDtwaWQ7CiAgKgkJX19lbnRyeS0mZ3Q7bmV4dF9wcmlvCT0gbmV4dC0mZ3Q7cHJpbzsKICAqCSksCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaAppbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaApAQCAtMjEzLDcgJiM0MzsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLAogCiAJCWJsa19maWxsX3J3YnMoX19lbnRyeS0mZ3Q7cndicywgcnEtJmd0O2NtZF9mbGFncyk7CiAJCV9fZ2V0X3N0cihjbWQpWzBdID0gJiMzOTtcMCYjMzk7OwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCiAJVFBfcHJpbnRrKCYjMzQ7JWQsJWQgJXMgJXUgKCVzKSAlbGx1ICYjNDM7ICV1ICVzLCV1LCV1IFslc10mIzM0OywKQEAgLTQxMCw3ICYjNDM7NDEwLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW8sCiAJCV9fZW50cnktJmd0O3NlY3RvcgkJPSBiaW8tJmd0O2JpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LSZndDtucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhiaW8pOwogCQlibGtfZmlsbF9yd2JzKF9fZW50cnktJmd0O3J3YnMsIGJpby0mZ3Q7Ymlfb3BmKTsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0OyVkLCVkICVzICVsbHUgJiM0MzsgJXUgWyVzXSYjMzQ7LApAQCAtNDkzLDcgJiM0Mzs0OTMsNyBAQCBUUkFDRV9FVkVOVChibG9ja19wbHVnLAogCSksCiAKIAlUUF9mYXN0X2Fzc2lnbigKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O1slc10mIzM0OywgX19lbnRyeS0mZ3Q7Y29tbSkKQEAgLTUxMiw3ICYjNDM7NTEyLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja191bnBsdWcsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7bnJfcnEgPSBkZXB0aDsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O1slc10gJWQmIzM0OywgX19lbnRyeS0mZ3Q7Y29tbSwgX19lbnRyeS0mZ3Q7bnJfcnEpCkBAIC01NjMsNyAmIzQzOzU2Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3NwbGl0LAogCQlfX2VudHJ5LSZndDtzZWN0b3IJCT0gYmlvLSZndDtiaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0mZ3Q7bmV3X3NlY3Rvcgk9IG5ld19zZWN0b3I7CiAJCWJsa19maWxsX3J3YnMoX19lbnRyeS0mZ3Q7cndicywgYmlvLSZndDtiaV9vcGYpOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCiAJVFBfcHJpbnRrKCYjMzQ7JWQsJWQgJXMgJWxsdSAvICVsbHUgWyVzXSYjMzQ7LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmgKaW5kZXggYzdiOWM1M2ZjNDk4NjkuLmZkZDIwYmM0NmJiMDI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmgKQEAgLTMyLDcgJiM0MzszMiw3IEBAIFRSQUNFX0VWRU5UKGNvcmVkdW1wLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktJmd0O3NpZyA9IHNpZzsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7CiAJKSwKIAogCVRQX3ByaW50aygmIzM0O3NpZz0lZCBjb21tPSVzJiMzNDssCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKaW5kZXggMjcwYzFhMmMyNGM0NGEuLjdkMjI2NTBiNGM3ODVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oCkBAIC0yNTA1LDcgJiM0MzsyNTA1LDcgQEAgVFJBQ0VfRVZFTlQoZjJmc19sb2NrX2VsYXBzZWRfdGltZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LSZndDtkZXYJCT0gc2JpLSZndDtzYi0mZ3Q7c19kZXY7Ci0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtwcmlvCQk9IHAtJmd0O3ByaW87CiAJCV9fZW50cnktJmd0O2lvcHJpb19jbGFzcwk9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7CkBAIC0yNTU4LDcgJiM0MzsyNTU4LDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhmMmZzX3ByaW9yaXR5X3VwZGF0ZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LSZndDtkZXYJCT0gc2JpLSZndDtzYi0mZ3Q7c19kZXY7Ci0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtsb2NrX25hbWUJPSBsb2NrX25hbWU7CiAJCV9fZW50cnktJmd0O2lzX3dyaXRlCT0gaXNfd3JpdGU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oCmluZGV4IDlmMGE1ZDE0ODJjNDQ4Li44YmNkYzRmZmM4ZDM0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmgKQEAgLTIzLDcgJiM0MzsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktJmd0O3BpZCA9IHRhc2stJmd0O3BpZDsKLQkJbWVtY3B5KF9fZW50cnktJmd0O2NvbW0sIHRhc2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7CiAJCV9fZW50cnktJmd0O29vbV9zY29yZV9hZGogPSB0YXNrLSZndDtzaWduYWwtJmd0O29vbV9zY29yZV9hZGo7CiAJKSwKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oCmluZGV4IDNmNDI3MzYyMzgwMTRlLi4yY2YwNDdiYjlmYjcxZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaApAQCAtMTE2LDcgJiM0MzsxMTYsNyBAQCBUUkFDRV9FVkVOVCh0aHJlYWRfbm9pc2UsCiAJKSwKIAogCVRQX2Zhc3RfYXNzaWduKAotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0LCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtzdGFydCA9IHN0YXJ0OwogCQlfX2VudHJ5LSZndDtkdXJhdGlvbiA9IGR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmgKaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmgKQEAgLTE1Miw3ICYjNDM7MTUyLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhzY2hlZF93YWtldXBfdGVtcGxhdGUsCiAJKSwKIAogCVRQX2Zhc3RfYXNzaWduKAotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgcC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCQk9IHAtJmd0O3BpZDsKIAkJX19lbnRyeS0mZ3Q7cHJpbwkJPSBwLSZndDtwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi8KIAkJX19lbnRyeS0mZ3Q7dGFyZ2V0X2NwdQk9IHRhc2tfY3B1KHApOwpAQCAtMjM3LDExICYjNDM7MjM3LDExIEBAIFRSQUNFX0VWRU5UKHNjaGVkX3N3aXRjaCwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtwcmV2X2NvbW0sIHByZXYtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7cHJldl9jb21tLCBwcmV2LCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cHJldl9waWQJPSBwcmV2LSZndDtwaWQ7CiAJCV9fZW50cnktJmd0O3ByZXZfcHJpbwk9IHByZXYtJmd0O3ByaW87CiAJCV9fZW50cnktJmd0O3ByZXZfc3RhdGUJPSBfX3RyYWNlX3NjaGVkX3N3aXRjaF9zdGF0ZShwcmVlbXB0LCBwcmV2X3N0YXRlLCBwcmV2KTsKLQkJbWVtY3B5KF9fZW50cnktJmd0O25leHRfY29tbSwgbmV4dC0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtuZXh0X3BpZAk9IG5leHQtJmd0O3BpZDsKIAkJX19lbnRyeS0mZ3Q7bmV4dF9wcmlvCT0gbmV4dC0mZ3Q7cHJpbzsKIAkJLyogWFhYIFNDSEVEX0RFQURMSU5FICovCkBAIC0zNDYsNyAmIzQzOzM0Niw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3Byb2Nlc3NfZXhpdCwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCBwLSZndDtjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKF9fZW50cnktJmd0O2NvbW0sIHAsIFRBU0tfQ09NTV9MRU4pOwogCQlfX2VudHJ5LSZndDtwaWQJCT0gcC0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtwcmlvCQk9IHAtJmd0O3ByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqLwogCQlfX2VudHJ5LSZndDtncm91cF9kZWFkCT0gZ3JvdXBfZGVhZDsKQEAgLTc4Nyw3ICYjNDM7Nzg3LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc2tpcF9jcHVzZXRfbnVtYSwKIAkpLAogCiAJVFBfZmFzdF9hc3NpZ24oCi0JCW1lbWNweShfX2VudHJ5LSZndDtjb21tLCB0c2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJY29weV90YXNrX2NvbW0oX19lbnRyeS0mZ3Q7Y29tbSwgdHNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCQkgPSB0YXNrX3BpZF9ucih0c2spOwogCQlfX2VudHJ5LSZndDt0Z2lkCQkgPSB0YXNrX3RnaWRfbnIodHNrKTsKIAkJX19lbnRyeS0mZ3Q7bmdpZAkJID0gdGFza19udW1hX2dyb3VwX2lkKHRzayk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oCmluZGV4IDFkYjdlNGIwN2MwMTQ4Li44ZmZmZTZkOWJkY2NmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmgKQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIFRSQUNFX0VWRU5UKHNpZ25hbF9nZW5lcmF0ZSwKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7c2lnCT0gc2lnOwogCQlUUF9TVE9SRV9TSUdJTkZPKF9fZW50cnksIGluZm8pOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdGFzay0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7cGlkCT0gdGFzay0mZ3Q7cGlkOwogCQlfX2VudHJ5LSZndDtncm91cAk9IGdyb3VwOwogCQlfX2VudHJ5LSZndDtyZXN1bHQJPSByZXN1bHQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmgKaW5kZXggYjlhMTI5ZWI1NGQ5ZWIuLjYyYjdkZjRkMjJkMDUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oCkBAIC0yMSw3ICYjNDM7MjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdGFzay0mZ3Q7cGlkOwotCQltZW1jcHkoX19lbnRyeS0mZ3Q7Y29tbSwgdGFzay0mZ3Q7Y29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQljb3B5X3Rhc2tfY29tbShfX2VudHJ5LSZndDtjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKIAkJX19lbnRyeS0mZ3Q7Y2xvbmVfZmxhZ3MgPSBjbG9uZV9mbGFnczsKIAkJX19lbnRyeS0mZ3Q7b29tX3Njb3JlX2FkaiA9IHRhc2stJmd0O3NpZ25hbC0mZ3Q7b29tX3Njb3JlX2FkajsKIAkpLApAQCAtNDYsOCAmIzQzOzQ2LDkgQEAgVFJBQ0VfRVZFTlQodGFza19yZW5hbWUsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0mZ3Q7cGlkID0gdGFzay0mZ3Q7cGlkOwotCQltZW1jcHkoZW50cnktJmd0O29sZGNvbW0sIHRhc2stJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwotCQlzdHJzY3B5KGVudHJ5LSZndDtuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCWNvcHlfdGFza19jb21tKGVudHJ5LSZndDtvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTsKJiM0MzsJCW1lbWNweShlbnRyeS0mZ3Q7bmV3Y29tbSwgY29tbSwgVEFTS19DT01NX0xFTik7CiYjNDM7CQllbnRyeS0mZ3Q7bmV3Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAmIzM5O1wwJiMzOTs7CiAJCV9fZW50cnktJmd0O29vbV9zY29yZV9hZGogPSB0YXNrLSZndDtzaWduYWwtJmd0O29vbV9zY29yZV9hZGo7CiAJKSwKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaAppbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oCkBAIC01Niw2ICYjNDM7NTYsOSBAQAogI2RlZmluZSBQUl9TRVRfTkFNRSAgICAxNQkJLyogU2V0IHByb2Nlc3MgbmFtZSAqLwogI2RlZmluZSBQUl9HRVRfTkFNRSAgICAxNgkJLyogR2V0IHByb2Nlc3MgbmFtZSAqLwogCiYjNDM7I2RlZmluZSBQUl9TRVRfRVhUX05BTUUgICAgMTcJCS8qIFNldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi8KJiM0MzsjZGVmaW5lIFBSX0dFVF9FWFRfTkFNRSAgICAxOAkJLyogR2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZSAqLwomIzQzOwogLyogR2V0L3NldCBwcm9jZXNzIGVuZGlhbiAqLwogI2RlZmluZSBQUl9HRVRfRU5ESUFOCTE5CiAjZGVmaW5lIFBSX1NFVF9FTkRJQU4JMjAKZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5jIGIva2VybmVsL2F1ZGl0LmMKaW5kZXggNTYyNDc2OTM3ZmE3OTMuLjFmMGI0NGQ0ZTVjNzVhIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYXVkaXQuYwpAQCAtMTY2Nyw3ICYjNDM7MTY2Nyw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ19tdWx0aWNhc3QoaW50IGdyb3VwLCBjb25zdCBjaGFyICpvcCwgaW50IGVycikKIAlhdWRpdF9wdXRfdHR5KHR0eSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7IC8qIHN1Ymo9ICovCiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgY29tbT0mIzM0Oyk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAlhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC0mZ3Q7bW0pOyAvKiBleGU9ICovCiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgbmwtbWNncnA9JWQgb3A9JXMgcmVzPSVkJiMzNDssIGdyb3VwLCBvcCwgIWVycik7CiAJYXVkaXRfbG9nX2VuZChhYik7CkBAIC0yNDc2LDcgJiM0MzsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKQogCQkJIGF1ZGl0X2dldF9zZXNzaW9uaWQoY3VycmVudCkpOwogCWF1ZGl0X3B1dF90dHkodHR5KTsKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBjb21tPSYjMzQ7KTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pOwogCWF1ZGl0X2xvZ19kX3BhdGhfZXhlKGFiLCBjdXJyZW50LSZndDttbSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuYwppbmRleCA2NjEwZTY2N2M3MjhhYS4uMWQ5MzBmMTY5ODU2ZDQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9hdWRpdHNjLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2F1ZGl0c2MuYwpAQCAtMjg3Nyw3ICYjNDM7Mjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcywKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBwaWQ9JXUmIzM0OywgdGFza190Z2lkX25yKGN1cnJlbnQpKTsKIAlhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi8KIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBjb21tPSYjMzQ7KTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pOwogCWF1ZGl0X2xvZ19lbmQoYWIpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoX19hdWRpdF9sb2dfbmZjZmcpOwpAQCAtMjkwMCw3ICYjNDM7MjkwMSw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ190YXNrKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKQogCQkJIHNlc3Npb25pZCk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgcGlkPSVkIGNvbW09JiMzNDssIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAlhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC0mZ3Q7bW0pOwogfQogCmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL25iY29uLmMgYi9rZXJuZWwvcHJpbnRrL25iY29uLmMKaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NAotLS0gYS9rZXJuZWwvcHJpbnRrL25iY29uLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9uYmNvbi5jCkBAIC05NTIsNyAmIzQzOzk1Miw3IEBAIHN0YXRpYyB2b2lkIHdjdHh0X2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgbmJjb25fd3JpdGVfY29udGV4dCAqd2N0eHQsCiB7CiAJd2N0eHQtJmd0O2NwdSA9IHBtc2ctJmd0O2NwdTsKIAl3Y3R4dC0mZ3Q7cGlkID0gcG1zZy0mZ3Q7cGlkOwotCW1lbWNweSh3Y3R4dC0mZ3Q7Y29tbSwgcG1zZy0mZ3Q7Y29tbSwgc2l6ZW9mKHdjdHh0LSZndDtjb21tKSk7CiYjNDM7CWNvcHlfdGFza19jb21tKHdjdHh0LSZndDtjb21tLCBwbXNnLCBzaXplb2Yod2N0eHQtJmd0O2NvbW0pKTsKIAlzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC0mZ3Q7Y29tbSkgPT0gc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKIH0KICNlbHNlCmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL3ByaW50ay5jIGIva2VybmVsL3ByaW50ay9wcmludGsuYwppbmRleCAyZmU5YTk2M2M4MjNhNC4uZWMwYzY3MzRiYmUxY2QgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL3ByaW50ay9wcmludGsuYwpAQCAtMjI0Nyw3ICYjNDM7MjI0Nyw3IEBAIHN0YXRpYyB1MTYgcHJpbnRrX3NwcmludChjaGFyICp0ZXh0LCB1MTYgc2l6ZSwgaW50IGZhY2lsaXR5LAogc3RhdGljIHZvaWQgcHJpbnRrX3N0b3JlX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19pbmZvICppbmZvKQogewogCWluZm8tJmd0O2NhbGxlcl9pZDIgPSBwcmludGtfY2FsbGVyX2lkMigpOwotCWdldF90YXNrX2NvbW0oaW5mby0mZ3Q7Y29tbSwgY3VycmVudCk7CiYjNDM7CXN0cnNjcHlfcGFkKGluZm8tJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogfQogCiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csCkBAIC0yMjU1LDcgJiM0MzsyMjU1LDcgQEAgc3RhdGljIHZvaWQgcG1zZ19sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19tZXNzYWdlICpwbXNnLAogewogCXBtc2ctJmd0O2NwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7CiAJcG1zZy0mZ3Q7cGlkID0gcHJpbnRrX2luZm9fZ2V0X3BpZChpbmZvKTsKLQltZW1jcHkocG1zZy0mZ3Q7Y29tbSwgaW5mby0mZ3Q7Y29tbSwgc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKJiM0MzsJY29weV90YXNrX2NvbW0ocG1zZy0mZ3Q7Y29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctJmd0O2NvbW0pKTsKIAlzdGF0aWNfYXNzZXJ0KHNpemVvZihwbXNnLSZndDtjb21tKSA9PSBzaXplb2YoaW5mby0mZ3Q7Y29tbSkpOwogfQogI2Vsc2UKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuYwppbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zeXMuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvc3lzLmMKQEAgLTI1MzUsNyAmIzQzOzI1MzUsNyBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLAogCQl1bnNpZ25lZCBsb25nLCBhcmc0LCB1bnNpZ25lZCBsb25nLCBhcmc1KQogewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqbWUgPSBjdXJyZW50OwotCXVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtJmd0O2NvbW0pXTsKJiM0MzsJdW5zaWduZWQgY2hhciBjb21tW1RBU0tfQ09NTV9FWFRfTEVOXTsKIAlsb25nIGVycm9yOwogCiAJZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CkBAIC0yNjAxLDE2ICYjNDM7MjYwMSwyOSBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLAogCQkJZXJyb3IgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIFBSX1NFVF9OQU1FOgotCQljb21tW3NpemVvZihtZS0mZ3Q7Y29tbSkgLSAxXSA9IDA7CiYjNDM7CQljb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9IDA7CiAJCWlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLAotCQkJCSAgICAgIHNpemVvZihtZS0mZ3Q7Y29tbSkgLSAxKSAmbHQ7IDApCiYjNDM7CQkJCSAgICAgIFRBU0tfQ09NTV9MRU4gLSAxKSAmbHQ7IDApCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJc2V0X3Rhc2tfY29tbShtZSwgY29tbSk7CiAJCXByb2NfY29tbV9jb25uZWN0b3IobWUpOwogCQlicmVhazsKIAljYXNlIFBSX0dFVF9OQU1FOgotCQlnZXRfdGFza19jb21tKGNvbW0sIG1lKTsKLQkJaWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBzaXplb2YoY29tbSkpKQomIzQzOwkJc3Ryc2NweV9wYWQoY29tbSwgbWUtJmd0O2NvbW0sIFRBU0tfQ09NTV9MRU4pOwomIzQzOwkJaWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSkKJiM0MzsJCQlyZXR1cm4gLUVGQVVMVDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBSX1NFVF9FWFRfTkFNRToKJiM0MzsJCWNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7CiYjNDM7CQlpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMiwKJiM0MzsJCQkJICAgICAgVEFTS19DT01NX0VYVF9MRU4gLSAxKSAmbHQ7IDApCiYjNDM7CQkJcmV0dXJuIC1FRkFVTFQ7CiYjNDM7CQlzZXRfdGFza19jb21tKG1lLCBjb21tKTsKJiM0MzsJCXByb2NfY29tbV9jb25uZWN0b3IobWUpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgUFJfR0VUX0VYVF9OQU1FOgomIzQzOwkJc3Ryc2NweV9wYWQoY29tbSwgbWUtJmd0O2NvbW0sIFRBU0tfQ09NTV9FWFRfTEVOKTsKJiM0MzsJCWlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKQogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCWJyZWFrOwogCWNhc2UgUFJfR0VUX0VORElBTjoKZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYyBiL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYwppbmRleCAwODE5YWNlNWIwMjc1Ny4uNWQyNjAyOWQyZDAxMmQgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMKQEAgLTg4MSw2ICYjNDM7ODgxLDQzIEBAIHN0YXRpYyB2b2lkIHN0cmluZ19iZW5jaF9zdHJyY2hyKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlTVFJJTkdfQkVOQ0hfQlVGKHRlc3QsIGJ1ZiwgbGVuLCBzdHJyY2hyLCBidWYsICYjMzk7XDAmIzM5Oyk7CiB9CiAKJiM0MzsjZGVmaW5lIFRBU0tfTkFNRSAmIzM0O3Rhc2tfbmFtZSYjMzQ7CiYjNDM7I2RlZmluZSBUQVNLX05BTUVfTEVOIDkKJiM0MzsjZGVmaW5lIFRBU0tfTUFYX0xFTiBUQVNLX0NPTU1fRVhUX0xFTgomIzQzOyNkZWZpbmUgU01BTExFUl9MRU4gVEFTS19OQU1FX0xFTiAtIDMKJiM0MzsjZGVmaW5lIEJJR0dFUl9MRU4gVEFTS19NQVhfTEVOICYjNDM7IDMKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzdHJpbmdfY29weV90YXNrX2NvbW0oc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJY2hhciBzdHJbVEFTS19NQVhfTEVOXSA9IFRBU0tfTkFNRSwgY29weVtUQVNLX01BWF9MRU5dLAomIzQzOwkgICAgIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOXSwgYmlnZ2VyX2J1ZltCSUdHRVJfTEVOXTsKJiM0MzsJc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNrLCAqdHNrID0gJmFtcDt0YXNrOwomIzQzOwlpbnQgbGVuMSwgbGVuMiwgaTsKJiM0MzsKJiM0MzsJLyogc2V0IGFuZCBnZXQgdGFzayBuYW1lICovCiYjNDM7CXNldF90YXNrX2NvbW0odHNrLCBzdHIpOwomIzQzOwljb3B5X3Rhc2tfY29tbShjb3B5LCB0c2ssIFRBU0tfQ09NTV9MRU4pOwomIzQzOwomIzQzOwlsZW4xID0gc3RybGVuKHN0cik7CiYjNDM7CWxlbjIgPSBzdHJsZW4oY29weSk7CiYjNDM7CiYjNDM7CUtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4xLCBsZW4yKTsKJiM0MzsJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjIsIFRBU0tfTkFNRV9MRU4pOwomIzQzOwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgY29weVtsZW4yXSwgJiMzOTtcMCYjMzk7KTsKJiM0MzsJS1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cmNtcChzdHIsIGNvcHkpKTsKJiM0MzsKJiM0MzsJLyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqLwomIzQzOwljb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTsKJiM0MzsJS1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBzbWFsbGVyX2J1ZiwgU01BTExFUl9MRU4gLSAxKSk7CiYjNDM7CUtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAmIzM5O1wwJiMzOTspOwomIzQzOwomIzQzOwkvKiBjb3B5IHRvIGEgYmlnZ2VyIGRzdCBidWZmZXIgKi8KJiM0MzsJY29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpOwomIzQzOwlLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCAhc3RybmNtcChzdHIsIGJpZ2dlcl9idWYsIFRBU0tfTkFNRV9MRU4pKTsKJiM0MzsJZm9yIChpID0gVEFTS19OQU1FX0xFTjsgaSAmbHQ7IEJJR0dFUl9MRU47IGkmIzQzOyYjNDM7KQomIzQzOwkJS1VOSVRfQVNTRVJUX0VRKHRlc3QsIGJpZ2dlcl9idWZbaV0sICYjMzk7XDAmIzM5Oyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHN0cmluZ190ZXN0X2Nhc2VzW10gPSB7CiAJS1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksCiAJS1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQzMiksCkBAIC05MTAsNiAmIzQzOzk0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cm5sZW4pLAogCUtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksCiAJS1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RycmNociksCiYjNDM7CUtVTklUX0NBU0Uoc3RyaW5nX2NvcHlfdGFza19jb21tKSwKIAl7fQogfTsKIApkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCmluZGV4IDA3MGNhMzg4ZjlhY2U4Li40ZTY2Y2IyZDk1NDljNiAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9ibHVldG9vdGgvaGNpX3NvY2suYwpAQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBzdGF0aWMgYm9vbCBoY2lfc29ja19nZW5fY29va2llKHN0cnVjdCBzb2NrICpzaykKIAkJCWlkID0gMHhmZmZmZmZmZjsKIAogCQloY2lfcGkoc2spLSZndDtjb29raWUgPSBpZDsKLQkJZ2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLSZndDtjb21tLCBjdXJyZW50KTsKJiM0MzsJCXN0cnNjcHlfcGFkKGhjaV9waShzayktJmd0O2NvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMKaW5kZXggYTllYWY5NDU1Yzc3ODMuLmM1NTU1ZWVkMWI2MmQyIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtOTcxOCw5ICYjNDM7OTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCwKIAlpZiAoIW5saCkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKJiM0MzsJc3Ryc2NweV9wYWQoYnVmLCBjdXJyZW50LSZndDtjb21tKTsKJiM0MzsKIAlpZiAobmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fSUQsIGh0b25sKG5mdF9iYXNlX3NlcShuZXQpKSkgfHwKIAkgICAgbmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fUFJPQ19QSUQsIGh0b25sKHRhc2tfcGlkX25yKGN1cnJlbnQpKSkgfHwKLQkgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGdldF90YXNrX2NvbW0oYnVmLCBjdXJyZW50KSkpCiYjNDM7CSAgICBubGFfcHV0X3N0cmluZyhza2IsIE5GVEFfR0VOX1BST0NfTkFNRSwgYnVmKSkKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKIAlubG1zZ19lbmQoc2tiLCBubGgpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jCmluZGV4IGQ4ZDllNWZmMWNkMjJiLi45ODA2MDA2MDkyOWRhOSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuYwpAQCAtNTQsNyAmIzQzOzU0LDggQEAgdm9pZCBpbnRlZ3JpdHlfYXVkaXRfbWVzc2FnZShpbnQgYXVkaXRfbXNnbm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQkgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7CiAJYXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7CiAJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgb3A9JXMgY2F1c2U9JXMgY29tbT0mIzM0Oywgb3AsIGNhdXNlKTsKLQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpKTsKJiM0MzsJc3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC0mZ3Q7Y29tbSk7CiYjNDM7CWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIG5hbWUpOwogCWlmIChmbmFtZSkgewogCQlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0OyBuYW1lPSYjMzQ7KTsKIAkJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpOwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaXBlL2F1ZGl0LmMgYi9zZWN1cml0eS9pcGUvYXVkaXQuYwppbmRleCA5M2ZiNTlmYmRkZDYwYi4uOTBhNmFjZmI3Y2RmY2YgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2lwZS9hdWRpdC5jCkBAIC0xNDUsNyAmIzQzOzE0NSw4IEBAIHZvaWQgaXBlX2F1ZGl0X21hdGNoKGNvbnN0IHN0cnVjdCBpcGVfZXZhbF9jdHggKmNvbnN0IGN0eCwKIAlhdWRpdF9sb2dfZm9ybWF0KGFiLCAmIzM0O2lwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09JiMzNDssCiAJCQkgb3AsIGF1ZGl0X2hvb2tfbmFtZXNbY3R4LSZndDtob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLAogCQkJIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7Ci0JYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7CiYjNDM7CXN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtJmd0O2NvbW0pOwomIzQzOwlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTsKIAogCWlmIChjdHgtJmd0O2ZpbGUpIHsKIAkJYXVkaXRfbG9nX2RfcGF0aChhYiwgJiMzNDsgcGF0aD0mIzM0OywgJmFtcDtjdHgtJmd0O2ZpbGUtJmd0O2ZfcGF0aCk7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jCmluZGV4IDlhODM1NWZjY2QyNmViLi5iMmZjN2Y3MjJkNjkwOCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmMKQEAgLTEwMiw3ICYjNDM7MTAyLDcgQEAgc3RhdGljIHN0cnVjdCBsYW5kbG9ja19kZXRhaWxzICpnZXRfY3VycmVudF9kZXRhaWxzKHZvaWQpCiAJbWVtY3B5KGRldGFpbHMtJmd0O2V4ZV9wYXRoLCBwYXRoX3N0ciwgcGF0aF9zaXplKTsKIAlkZXRhaWxzLSZndDtwaWQgPSBnZXRfcGlkKHRhc2tfdGdpZChjdXJyZW50KSk7CiAJZGV0YWlscy0mZ3Q7dWlkID0gZnJvbV9rdWlkKCZhbXA7aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTsKLQlnZXRfdGFza19jb21tKGRldGFpbHMtJmd0O2NvbW0sIGN1cnJlbnQpOwomIzQzOwlzdHJzY3B5X3BhZChkZXRhaWxzLSZndDtjb21tLCBjdXJyZW50LSZndDtjb21tKTsKIAlyZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuYwppbmRleCA3MzdmNWEyNjNhOGY3OS4uYTU4N2ZmZWNkOTg1MmMgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2xzbV9hdWRpdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jCkBAIC0yNzYsOCAmIzQzOzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLAogCQkJaWYgKHBpZCkgewogCQkJCWNoYXIgdHNrY29tbVtzaXplb2YodHNrLSZndDtjb21tKV07CiAJCQkJYXVkaXRfbG9nX2Zvcm1hdChhYiwgJiMzNDsgb3BpZD0lZCBvY29tbT0mIzM0OywgcGlkKTsKLQkJCQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLAotCQkJCSAgICBnZXRfdGFza19jb21tKHRza2NvbW0sIHRzaykpOwomIzQzOwkJCQlzdHJzY3B5X3BhZCh0c2tjb21tLCB0c2stJmd0O2NvbW0pOwomIzQzOwkJCQlhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCB0c2tjb21tKTsKIAkJCX0KIAkJfQogCQlicmVhazsKQEAgLTQxNyw3ICYjNDM7NDE3LDggQEAgc3RhdGljIHZvaWQgZHVtcF9jb21tb25fYXVkaXRfZGF0YShzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYiwKIAljaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtJmd0O2NvbW0pXTsKIAogCWF1ZGl0X2xvZ19mb3JtYXQoYWIsICYjMzQ7IHBpZD0lZCBjb21tPSYjMzQ7LCB0YXNrX3RnaWRfbnIoY3VycmVudCkpOwotCWF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpOwomIzQzOwlzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LSZndDtjb21tKTsKJiM0MzsJYXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7CiAJYXVkaXRfbG9nX2xzbV9kYXRhKGFiLCBhKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jCmluZGV4IDNmN2IxNDZkMzZkZmUxLi4wZjIwZjdkZWFjNjdmZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuYwpAQCAtOSw5ICYjNDM7OSwxNyBAQAogCiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdF9oYXJuZXNzLmgmIzM0OwogCiYjNDM7I2lmbmRlZiBQUl9TRVRfRVhUX05BTUUKJiM0MzsjIGRlZmluZSBQUl9TRVRfRVhUX05BTUUgMTcKJiM0MzsjIGRlZmluZSBQUl9HRVRfRVhUX05BTUUgMTgKJiM0MzsjZW5kaWYKJiM0MzsKICNkZWZpbmUgQ0hBTkdFX05BTUUgJiMzNDtjaGFuZ2VuYW1lJiMzNDsKJiM0MzsjZGVmaW5lIExPTkdfTkFNRQkmIzM0O2NoYW5nZV90b192ZXJ5X2xvbmdfZXh0ZW5kZWRfbmFtZSYjMzQ7CiYjNDM7I2RlZmluZSBMT05HX05BTUVfQ0FQCSYjMzQ7Y2hhbmdlX3RvX3ZlcnlfJiMzNDsKICNkZWZpbmUgRU1QVFlfTkFNRSAmIzM0OyYjMzQ7CiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTYKJiM0MzsjZGVmaW5lIFRBU0tfQ09NTV9FWFRfTEVOIDY0CiAjZGVmaW5lIE1BWF9QQVRIX0xFTiA1MAogCiBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSkKQEAgLTI1LDYgJiM0MzszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSkKIAlyZXR1cm4gcmVzOwogfQogCiYjNDM7aW50IHNldF9leHRfbmFtZShjaGFyICpuYW1lKQomIzQzO3sKJiM0MzsJaW50IHJlczsKJiM0MzsKJiM0MzsJcmVzID0gcHJjdGwoUFJfU0VUX0VYVF9OQU1FLCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMKTsKJiM0MzsKJiM0MzsJaWYgKHJlcyAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLWVycm5vOwomIzQzO30KJiM0MzsKIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSkKIHsKIAljaGFyIG5hbWVbVEFTS19DT01NX0xFTl07CkBAIC0zOCw2ICYjNDM7NTYsMTkgQEAgaW50IGNoZWNrX2lzX25hbWVfY29ycmVjdChjaGFyICpjaGVja19uYW1lKQogCXJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpOwogfQogCiYjNDM7aW50IGNoZWNrX2lzX2V4dF9uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSkKJiM0Mzt7CiYjNDM7CWNoYXIgbmFtZVtUQVNLX0NPTU1fRVhUX0xFTl07CiYjNDM7CWludCByZXM7CiYjNDM7CiYjNDM7CXJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7CiYjNDM7CiYjNDM7CWlmIChyZXMgJmx0OyAwKQomIzQzOwkJcmV0dXJuIC1lcnJubzsKJiM0MzsKJiM0MzsJcmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7CiYjNDM7fQomIzQzOwogaW50IGNoZWNrX251bGxfcG9pbnRlcihjaGFyICpjaGVja19uYW1lKQogewogCWNoYXIgKm5hbWUgPSBOVUxMOwpAQCAtODIsNiAmIzQzOzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7CiAJRVhQRUNUX0dFKHNldF9uYW1lKENIQU5HRV9OQU1FKSwgMCk7CiAJRVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KENIQU5HRV9OQU1FKSk7CiAKJiM0MzsJRVhQRUNUX0dFKHNldF9leHRfbmFtZShMT05HX05BTUUpLCAwKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KExPTkdfTkFNRV9DQVApKTsKJiM0MzsJRVhQRUNUX1RSVUUoY2hlY2tfbmFtZSgpKTsKJiM0MzsKIAlFWFBFQ1RfR0Uoc2V0X25hbWUoRU1QVFlfTkFNRSksIDApOwogCUVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyODYKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAxMDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBFeHRlbmRlZCBUYXNrIENvbW0gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBleHBhbmRpbmcgdGhlIGB0YXNrX2NvbW1gIGxlbmd0aCBhbmQgYWRkaW5nIG5ldyBgcHJjdGxgIG9wdGlvbnMuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHByY3RsYCwgYSBzeXNjYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCB0d28gbWFpbiBhcmVhczogZXh0ZW5kaW5nIHRoZSBgY29tbWAgYnVmZmVyIGluIGBzdHJ1Y3QgdGFza19zdHJ1Y3RgIGFuZCBhZGRpbmcgYFBSX1NFVF9FWFRfTkFNRWAgYW5kIGBQUl9HRVRfRVhUX05BTUVgIHRvIGBwcmN0bGAuICBUaGUgY2hhbmdlIHRvIHRoZSBgY29tbWAgbGVuZ3RoIGZyb20gYFRBU0tfQ09NTV9MRU5gICgxNikgdG8gYFRBU0tfQ09NTV9FWFRfTEVOYCAoNjQpIGlzIHN1YnN0YW50aWFsLCBhZmZlY3RpbmcgaG93IHByb2Nlc3MgbmFtZXMgYXJlIGhhbmRsZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLCBidXQgdGhlIG5ldyBwcmN0bCBvcHRpb25zIGFyZSB0aGUgZm9jdXMuCgpMb29raW5nIGF0IHRoZSBjb2RlIGFkZGVkIHRvIGBrZXJuZWwvc3lzLmNgLCB0aGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgUFJfU0VUX0VYVF9OQU1FYCBjb3BpZXMgYSB1c2VyLXByb3ZpZGVkIHN0cmluZyB0byBgbWUtJmd0O2NvbW1gIHZpYSBgc3RybmNweV9mcm9tX3VzZXJgIGFuZCBgc2V0X3Rhc2tfY29tbWAgYWZ0ZXIgbnVsbC10ZXJtaW5hdGluZyB0aGUgc3RyaW5nLCB3aGlsZSBgUFJfR0VUX0VYVF9OQU1FYCBjb3BpZXMgdGhlIGV4dGVuZGVkIG5hbWUgYmFjayB0byB1c2Vyc3BhY2UgdXNpbmcgYGNvcHlfdG9fdXNlcmAuICBDcml0aWNhbGx5LCBgcHJvY19jb21tX2Nvbm5lY3RvcmAgaXMgY2FsbGVkIGFmdGVyIHNldHRpbmcgdGhlIG5hbWU7IHRoaXMgbWlnaHQgYmUgaW50ZXJlc3RpbmcgZGVwZW5kaW5nIG9uIGhvdyBpdCYjMzk7cyB1c2VkLiBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYHByb2NfY29tbV9jb25uZWN0b3JgJiMzOTtzIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIGBDT05GSUdfUFJPQ19FVkVOVFNgLCBidXQgdGhpcyBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgYHByY3RsYCBpdHNlbGYuCgpUaGUgYHByY3RsYCBzeXNjYWxsIGlzIG91ciBtYWluIGVudHJ5IHBvaW50IGhlcmU7IHNwZWNpZmljYWxseSwgYHN5c19wcmN0bGAgKG9yIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdmVyc2lvbiBvZiBpdCwgYnV0IFN5emthbGxlciBrbm93cyBhYm91dCBgcHJjdGxgKS4gIEkgZG91YmxlLWNoZWNrZWQgYGtlcm5lbC9zeXMuY2AgdG8gY29uZmlybSB0aGlzLiBXaGlsZSBgc2V0X3Rhc2tfY29tbWAgaXNuJiMzOTt0IGRpcmVjdGx5IG1vZGlmaWVkLCBpdCBjYWxscyBgX19zZXRfdGFza19jb21tYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgY29weV90YXNrX2NvbW1gLiAgQnV0IHRoZSBuZXcgaW5saW5lIGZ1bmN0aW9uIGBjb3B5X3Rhc2tfY29tbWAgaXMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2gsIGFsb25nIHdpdGggdGhlIG1haW4gbG9naWMgaW4gYHN5c19wcmN0bGAuIFNvIGBzeXNfcHJjdGxgIHdpbGwgYmUgb3VyIHByaW1hcnkgZm9jdXMuCgpTaW5jZSB0aGlzIHBhdGNoICphZGRzKiBuZXcgZnVuY3Rpb25hbGl0eSAoc2V0dGluZyBhbmQgZ2V0dGluZyBleHRlbmRlZCBwcm9jZXNzIG5hbWVzKSwgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuIFRoZSBuZXcgYHByY3RsYCBvcHRpb25zIGludHJvZHVjZSBhIG5ldyBjb2RlIHBhdGggdGhhdCYjMzk7cyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldC4KCkluIHRlcm1zIG9mIGNvbmZpZ3VyYXRpb24sIGBwcmN0bGAgaXRzZWxmIGRvZXNuJiMzOTt0IHJlcXVpcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWdzLCBzbyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLgoKRmluYWxseSwgd2UmIzM5O3JlIGRlZmluaXRlbHkgZ29pbmcgdG8gbGFiZWwgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBzeXNfcHJjdGxgLiBgRW5hYmxlQ29uZmlnc2Agd2lsbCBiZSBhbiBlbXB0eSBhcnJheSBhcyB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkZWQuIFRoZSByZWFzb25pbmcgaXMgc2ltcGxlOiB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBpbnRyb2R1Y2VzIG5ldyBgcHJjdGxgIG9wdGlvbnMsIGRpcmVjdGx5IGFmZmVjdGluZyB1c2Vyc3BhY2UgaW50ZXJhY3Rpb24gd2l0aCB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzeXNfcHJjdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBuZXcgcHJjdGwgb3B0aW9ucyBQUl9TRVRfRVhUX05BTUUgYW5kIFBSX0dFVF9FWFRfTkFNRSB0byBzZXQgYW5kIGdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWVzLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjI0LjQ4NjE4MTA1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTYxODM0ODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN5c19wcmN0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjI0LjQ4NjE4NTY3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ2NjgwNjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNmRlNTRjM2RlY2IzYzEzZjI5NGVhOTExZTljOGNlZGNjZjJlZmQyOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMDo1MzoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcXG5pbmRleCAwMDU2YWI4MWZiYzM5YS4uYzc4MjQzZWQzYzJhOTYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXFxuKysrIGIvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXFxuQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIHByb2NfY29tbV9jb25uZWN0b3Ioc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKVxcbiBcXHRldi1cXHUwMDNld2hhdCA9IFBST0NfRVZFTlRfQ09NTTtcXG4gXFx0ZXYtXFx1MDAzZWV2ZW50X2RhdGEuY29tbS5wcm9jZXNzX3BpZCAgPSB0YXNrLVxcdTAwM2VwaWQ7XFxuIFxcdGV2LVxcdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cXHUwMDNldGdpZDtcXG4tXFx0Z2V0X3Rhc2tfY29tbShldi1cXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2spO1xcbitcXHRzdHJzY3B5X3BhZChldi1cXHUwMDNlZXZlbnRfZGF0YS5jb21tLmNvbW0sIHRhc2stXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZtc2ctXFx1MDAzZWlkLCBcXHUwMDI2Y25fcHJvY19ldmVudF9pZCwgc2l6ZW9mKG1zZy1cXHUwMDNlaWQpKTtcXG4gXFx0bXNnLVxcdTAwM2VhY2sgPSAwOyAvKiBub3QgdXNlZCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xcbmluZGV4IDhkZjIwYjAyMThhOWVlLi5kNTAxNjU3YWQ4MDEyOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXFxuKysrIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuY1xcbkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGludCBzd19zeW5jX2RlYnVnZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0c3RydWN0IHN5bmNfdGltZWxpbmUgKm9iajtcXG4gXFx0Y2hhciB0YXNrX2NvbW1bVEFTS19DT01NX0xFTl07XFxuIFxcbi1cXHRnZXRfdGFza19jb21tKHRhc2tfY29tbSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKHRhc2tfY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xcbiBcXHRpZiAoIW9iailcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXFxuaW5kZXggNmEzNjQzNTc1MjJiOGEuLjEzYzg4NTdlNGZmYmExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xcbkBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBhbWRncHVfYW1ka2ZkX2ZlbmNlICphbWRncHVfYW1ka2ZkX2ZlbmNlX2NyZWF0ZSh1NjQgY29udGV4dCxcXG4gXFx0LyogVGhpcyByZWZlcmVuY2UgZ2V0cyByZWxlYXNlZCBpbiBhbWRrZmRfZmVuY2VfcmVsZWFzZSAqL1xcbiBcXHRtbWdyYWIobW0pO1xcbiBcXHRmZW5jZS1cXHUwMDNlbW0gPSBtbTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShmZW5jZS1cXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKGZlbmNlLVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmZlbmNlLVxcdTAwM2Vsb2NrKTtcXG4gXFx0ZmVuY2UtXFx1MDAzZXN2bV9ibyA9IHN2bV9ibztcXG4gXFx0ZmVuY2UtXFx1MDAzZWNvbnRleHRfaWQgPSBjb250ZXh0X2lkO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXFxuaW5kZXggZjZiNzUyMmMzYzgyZmYuLjA0NjI0M2UzYTNjZDAzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcXG5AQCAtMTI4LDcgKzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRldl9mZW5jZS1cXHUwMDNlZXZmX21nciA9IGV2Zl9tZ3I7XFxuLVxcdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXFx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChldl9mZW5jZS1cXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZldl9mZW5jZS1cXHUwMDNlbG9jayk7XFxuIFxcdGRtYV9mZW5jZV9pbml0NjQoXFx1MDAyNmV2X2ZlbmNlLVxcdTAwM2ViYXNlLCBcXHUwMDI2YW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX29wcyxcXG4gXFx0XFx0XFx0IFxcdTAwMjZldl9mZW5jZS1cXHUwMDNlbG9jaywgZXZmX21nci1cXHUwMDNlZXZfZmVuY2VfY3R4LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcXG5pbmRleCA3NjRjZDQ5NTA0MDgzYy4uZTYwYTQ3MGI1N2VjYzEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXFxuQEAgLTQ0NDUsNyArNDQ0NSw3IEBAIGludCBhbWRncHVfcmFzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuIFxcdH1cXG4gXFxuIFxcdGNvbi1cXHUwMDNlaW5pdF90YXNrX3BpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xcbi1cXHRnZXRfdGFza19jb21tKGNvbi1cXHUwMDNlaW5pdF90YXNrX2NvbW0sIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChjb24tXFx1MDAzZWluaXRfdGFza19jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNmNvbi1cXHUwMDNlY3JpdGljYWxfcmVnaW9uX2xvY2spO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2Y29uLVxcdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcXG5pbmRleCBmNzRhZDM3OGU0MDc0Mi4uZjQxODU3NDczNjQxYmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xcbkBAIC04NSw3ICs4NSw3IEBAIGludCBhbWRncHVfdXNlcnFfZmVuY2VfZHJpdmVyX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbiBcXG4gXFx0ZmVuY2VfZHJ2LVxcdTAwM2VhZGV2ID0gYWRldjtcXG4gXFx0ZmVuY2VfZHJ2LVxcdTAwM2Vjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7XFxuLVxcdGdldF90YXNrX2NvbW0oZmVuY2VfZHJ2LVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoZmVuY2VfZHJ2LVxcdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdCpmZW5jZV9kcnZfcmVxID0gZmVuY2VfZHJ2O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xcbmluZGV4IGJiOTliN2MzYTAxMGVhLi44NGMwYjMxMGU5YzE0NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXFxuQEAgLTI1NDIsMTAgKzI1NDIsMTAgQEAgdm9pZCBhbWRncHVfdm1fc2V0X3Rhc2tfaW5mbyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0dm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVxcdTAwM2VwaWQ7XFxuLVxcdGdldF90YXNrX2NvbW0odm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQodm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdHZtLVxcdTAwM2V0YXNrX2luZm8tXFx1MDAzZXRnaWQgPSBjdXJyZW50LVxcdTAwM2V0Z2lkO1xcbi1cXHRnZXRfdGFza19jb21tKHZtLVxcdTAwM2V0YXNrX2luZm8tXFx1MDAzZXByb2Nlc3NfbmFtZSwgY3VycmVudC1cXHUwMDNlZ3JvdXBfbGVhZGVyKTtcXG4rXFx0c3Ryc2NweV9wYWQodm0tXFx1MDAzZXRhc2tfaW5mby1cXHUwMDNlcHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXItXFx1MDAzZWNvbW0pO1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xcbmluZGV4IDJhMjQxYTViMTJjNDIwLi5mOGNlNTlkODU4N2ExZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXFxuQEAgLTU2Myw3ICs1NjMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sXFxuIFxcdH1cXG4gXFxuIFxcdHZyZXMtXFx1MDAzZXRhc2sucGlkID0gdGFza19waWRfbnIoY3VycmVudCk7XFxuLVxcdGdldF90YXNrX2NvbW0odnJlcy1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQodnJlcy1cXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2dnJlcy1cXHUwMDNldnJlc19ub2RlLCBcXHUwMDI2bWdyLVxcdTAwM2VhbGxvY2F0ZWRfdnJlc19saXN0KTtcXG4gXFxuIFxcdGlmIChiby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBTURHUFVfR0VNX0NSRUFURV9WUkFNX0NPTlRJR1VPVVMgXFx1MDAyNlxcdTAwMjYgYWRqdXN0X2RjY19zaXplKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jXFxuaW5kZXggNjhlZGU3YTcyNWUyMTkuLmU4YzVjMzYwMWJmMWQ1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfY3R4LmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jXFxuQEAgLTI5LDcgKzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKVxcbiBcXHRcXHRnb3RvIGVycl9vdXQwO1xcbiBcXG4gXFx0Y3R4LVxcdTAwM2VwaWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShjdHgtXFx1MDAzZXBuYW1lLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoY3R4LVxcdTAwM2VwbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xcbmluZGV4IDNhN2ZjZTQyODg5ODdiLi4xMTkzNmM0ZDM1NzM2YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcXG5AQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9nZW1fZGVidWdmc19ib19hZGQoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibylcXG4ge1xcbiBcXHRiby1cXHUwMDNlZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LVxcdTAwM2V0Z2lkO1xcbi1cXHRnZXRfdGFza19jb21tKGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXIpO1xcbitcXHRzdHJzY3B5X3BhZChiby1cXHUwMDNlZGVidWdmcy5jcmVhdG9yLnByb2Nlc3NfbmFtZSwgY3VycmVudC1cXHUwMDNlZ3JvdXBfbGVhZGVyLVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBmZGV2LVxcdTAwM2VkZWJ1Z2ZzLmdlbXNfbG9jayk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJvLVxcdTAwM2VkZWJ1Z2ZzLm5vZGUsIFxcdTAwMjZwZmRldi1cXHUwMDNlZGVidWdmcy5nZW1zX2xpc3QpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uY1xcbmluZGV4IGExZTJlYjFjYTdiYmU2Li5lYmIzNjY0ZTQzMDNjYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9nZW0uY1xcbkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkIHBhbnRob3JfZ2VtX2RlYnVnZnNfYm9fYWRkKHN0cnVjdCBwYW50aG9yX2dlbV9vYmplY3QgKmJvKVxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcXG4gXFxuIFxcdGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IudGdpZCA9IGN1cnJlbnQtXFx1MDAzZXRnaWQ7XFxuLVxcdGdldF90YXNrX2NvbW0oYm8tXFx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXFx1MDAzZWdyb3VwX2xlYWRlcik7XFxuK1xcdHN0cnNjcHlfcGFkKGJvLVxcdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVxcdTAwM2Vncm91cF9sZWFkZXItXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHRkZXYtXFx1MDAzZWdlbXMubG9jayk7XFxuIFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmJvLVxcdTAwM2VkZWJ1Z2ZzLm5vZGUsIFxcdTAwMjZwdGRldi1cXHUwMDNlZ2Vtcy5ub2RlKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXFxuaW5kZXggMjk4YjA0NmM5NWVkYjguLjgxYzQ2NTljMGQ3YmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xcbkBAIC0zNjE3LDcgKzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApXFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayA9IGN1cnJlbnQtXFx1MDAzZWdyb3VwX2xlYWRlcjtcXG4gXFxuIFxcdGdyb3VwLVxcdTAwM2V0YXNrX2luZm8ucGlkID0gdGFzay1cXHUwMDNlcGlkO1xcbi1cXHRnZXRfdGFza19jb21tKGdyb3VwLVxcdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzayk7XFxuK1xcdHN0cnNjcHlfcGFkKGdyb3VwLVxcdTAwM2V0YXNrX2luZm8uY29tbSwgdGFzay1cXHUwMDNlY29tbSk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xcbmluZGV4IDNkOGU0Y2NkYjdjMWY4Li5iMTBhMGUxY2IxZWQ3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXFxuQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgdmlydGlvX2dwdV9jcmVhdGVfY29udGV4dF9sb2NrZWQoc3RydWN0IHZpcnRpb19ncHVfZGV2aWNlICp2Z2RldixcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0Y2hhciBkYmduYW1lW1RBU0tfQ09NTV9MRU5dO1xcbiBcXG4tXFx0XFx0Z2V0X3Rhc2tfY29tbShkYmduYW1lLCBjdXJyZW50KTtcXG4rXFx0XFx0c3Ryc2NweV9wYWQoZGJnbmFtZSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdFxcdHZpcnRpb19ncHVfY21kX2NvbnRleHRfY3JlYXRlKHZnZGV2LCB2ZnByaXYtXFx1MDAzZWN0eF9pZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgdmZwcml2LVxcdTAwM2Vjb250ZXh0X2luaXQsIHN0cmxlbihkYmduYW1lKSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgZGJnbmFtZSk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXFxuaW5kZXggZjQ4YzZhOGEwNjU0ZTkuLmM3NzE1NDM5OTY0ZTgxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXFxuQEAgLTYzNCw3ICs2MzQsNyBAQCBzdGF0aWMgc3NpemVfdCBzdG1fY2hhcl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4gXFx0XFx0Y2hhciBjb21tW3NpemVvZihjdXJyZW50LVxcdTAwM2Vjb21tKV07XFxuIFxcdFxcdGNoYXIgKmlkc1tdID0geyBjb21tLCBcXFwiZGVmYXVsdFxcXCIsIE5VTEwgfTtcXG4gXFxuLVxcdFxcdGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCk7XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiBcXG4gXFx0XFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cXHUwMDNlc3RtLCBcXHUwMDI2c3RtZi1cXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xcbiBcXHRcXHQvKlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfYXVkaXQuYyBiL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXFxuaW5kZXggZDAxNGFmNmFiMDYwZTUuLmQ1MTRhODFkMGE1YzhlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXFxuKysrIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcXG5AQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCB0dHlfYXVkaXRfbG9nKGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBkZXZfdCBkZXYsXFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIlcyBwaWQ9JXUgdWlkPSV1IGF1aWQ9JXUgc2VzPSV1IG1ham9yPSVkIG1pbm9yPSVkIGNvbW09XFxcIixcXG4gXFx0XFx0XFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcXG4gXFx0XFx0XFx0IE1BSk9SKGRldiksIE1JTk9SKGRldikpO1xcbi1cXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xcbitcXHRzdHJzY3B5X3BhZChuYW1lLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4gXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgbmFtZSk7XFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgZGF0YT1cXFwiKTtcXG4gXFx0YXVkaXRfbG9nX25faGV4KGFiLCBkYXRhLCBzaXplKTtcXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZi5jIGIvZnMvYmluZm10X2VsZi5jXFxuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxcbi0tLSBhL2ZzL2JpbmZtdF9lbGYuY1xcbisrKyBiL2ZzL2JpbmZtdF9lbGYuY1xcbkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxcbiBcXHRTRVRfVUlEKHBzaW5mby1cXHUwMDNlcHJfdWlkLCBmcm9tX2t1aWRfbXVuZ2VkKGNyZWQtXFx1MDAzZXVzZXJfbnMsIGNyZWQtXFx1MDAzZXVpZCkpO1xcbiBcXHRTRVRfR0lEKHBzaW5mby1cXHUwMDNlcHJfZ2lkLCBmcm9tX2tnaWRfbXVuZ2VkKGNyZWQtXFx1MDAzZXVzZXJfbnMsIGNyZWQtXFx1MDAzZWdpZCkpO1xcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShwc2luZm8tXFx1MDAzZXByX2ZuYW1lLCBwKTtcXG4rXFx0c3Ryc2NweV9wYWQocHNpbmZvLVxcdTAwM2Vwcl9mbmFtZSwgcC1cXHUwMDNlY29tbSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmMgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG5pbmRleCA3ZTMxMDg0ODljODNjYS4uYzRkNGU1OWZmMzRkMWIgMTAwNjQ0XFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXFxuKysrIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jXFxuQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0YXRpYyBpbnQgZmlsbF9wc2luZm8oc3RydWN0IGVsZl9wcnBzaW5mbyAqcHNpbmZvLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsXFxuIFxcdFNFVF9VSUQocHNpbmZvLVxcdTAwM2Vwcl91aWQsIGZyb21fa3VpZF9tdW5nZWQoY3JlZC1cXHUwMDNldXNlcl9ucywgY3JlZC1cXHUwMDNldWlkKSk7XFxuIFxcdFNFVF9HSUQocHNpbmZvLVxcdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cXHUwMDNldXNlcl9ucywgY3JlZC1cXHUwMDNlZ2lkKSk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi1cXHRnZXRfdGFza19jb21tKHBzaW5mby1cXHUwMDNlcHJfZm5hbWUsIHApO1xcbitcXHRzdHJzY3B5X3BhZChwc2luZm8tXFx1MDAzZXByX2ZuYW1lLCBwLVxcdTAwM2Vjb21tKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2ZzL3Byb2MvYXJyYXkuYyBiL2ZzL3Byb2MvYXJyYXkuY1xcbmluZGV4IDQ3OWVhOGNiNGVmNDNkLi4wNDkwYjllZjI3ODg1MCAxMDA2NDRcXG4tLS0gYS9mcy9wcm9jL2FycmF5LmNcXG4rKysgYi9mcy9wcm9jL2FycmF5LmNcXG5AQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgcHJvY190YXNrX25hbWUoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGJvb2wgZXNjYXBlKVxcbiBcXHRlbHNlIGlmIChwLVxcdTAwM2VmbGFncyBcXHUwMDI2IFBGX0tUSFJFQUQpXFxuIFxcdFxcdGdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGdldF90YXNrX2NvbW0odGNvbW0sIHApO1xcbitcXHRcXHRzdHJzY3B5X3BhZCh0Y29tbSwgcC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuIFxcbiBcXHRpZiAoZXNjYXBlKVxcbiBcXHRcXHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFxcXCJcXFxcblxcXFxcXFxcXFxcIik7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaCBiL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxcbmluZGV4IDdiMzhlZTJlNzkxM2JlLi5kZWU4MmUzYzM1MGFmNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcXG5AQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XFxuIFxcdGRvIHtcXHRcXFxcXFxuIFxcdFxcdGNoYXIgY29tbVtUQVNLX0NPTU1fTEVOXTtcXHRcXFxcXFxuIFxcdFxcdC8qIFRoaXMgd2lsbCBhbHdheXMgYmUgTlVMIHRlcm1pbmF0ZWQuICovIFxcXFxcXG4tXFx0XFx0bWVtY3B5KGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0sIHNpemVvZihjb21tKSk7IFxcXFxcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oY29tbSwgY3VycmVudCwgc2l6ZW9mKGNvbW0pKTsgXFxcXFxcbiBcXHRcXHRwcmludGtfcmF0ZWxpbWl0ZWQoTGV2ZWwgXFxcImNvcmVkdW1wOiAlZCglKnBFKTogXFxcIiBGb3JtYXQgXFxcIlxcXFxuXFxcIixcXHRcXFxcXFxuIFxcdFxcdFxcdHRhc2tfdGdpZF92bnIoY3VycmVudCksIChpbnQpc3RybGVuKGNvbW0pLCBjb21tLCAjI19fVkFfQVJHU19fKTtcXHRcXFxcXFxuIFxcdH0gd2hpbGUgKDApXFx0XFxcXFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcXG5pbmRleCAzNzNiY2MwNTk4ZDEwYi4uMGYxYjQwYTVkYmM2MGIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9zY2hlZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXFxuQEAgLTMyMyw2ICszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcXG4gICovXFxuIGVudW0ge1xcbiBcXHRUQVNLX0NPTU1fTEVOID0gMTYsXFxuK1xcdFRBU0tfQ09NTV9FWFRfTEVOID0gNjQsXFxuIH07XFxuIFxcbiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpO1xcbkBAIC0xMTc4LDcgKzExNzksNyBAQCBzdHJ1Y3QgdGFza19zdHJ1Y3Qge1xcbiBcXHQgKiAtIHNldCBpdCB3aXRoIHNldF90YXNrX2NvbW0oKSB0byBlbnN1cmUgaXQgaXMgYWx3YXlzXFxuIFxcdCAqICAgTlVMLXRlcm1pbmF0ZWQgYW5kIHplcm8tcGFkZGVkXFxuIFxcdCAqL1xcbi1cXHRjaGFyXFx0XFx0XFx0XFx0Y29tbVtUQVNLX0NPTU1fTEVOXTtcXG4rXFx0Y2hhclxcdFxcdFxcdFxcdGNvbW1bVEFTS19DT01NX0VYVF9MRU5dO1xcbiBcXG4gXFx0c3RydWN0IG5hbWVpZGF0YVxcdFxcdCpuYW1laWRhdGE7XFxuIFxcbkBAIC0yMDE3LDI4ICsyMDE4LDIwIEBAIGV4dGVybiB2b2lkIGtpY2tfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7XFxuIFxcbiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7XFxuICNkZWZpbmUgc2V0X3Rhc2tfY29tbSh0c2ssIGZyb20pICh7XFx0XFx0XFx0XFxcXFxcbi1cXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICE9IFRBU0tfQ09NTV9MRU4pO1xcdFxcXFxcXG4rXFx0QlVJTERfQlVHX09OKHNpemVvZihmcm9tKSBcXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1xcdFxcXFxcXG4gXFx0X19zZXRfdGFza19jb21tKHRzaywgZnJvbSwgZmFsc2UpO1xcdFxcdFxcXFxcXG4gfSlcXG4gXFxuIC8qXFxuLSAqIC0gV2h5IG5vdCB1c2UgdGFza19sb2NrKCk/XFxuLSAqICAgVXNlciBzcGFjZSBjYW4gcmFuZG9tbHkgY2hhbmdlIHRoZWlyIG5hbWVzIGFueXdheSwgc28gbG9ja2luZyBmb3IgcmVhZGVyc1xcbi0gKiAgIGRvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2VcXG4tICogICBjb25kaXRpb24gY291bGQgbGVhZCB0byBsb25nLXRlcm0gbWl4ZWQgcmVzdWx0cy5cXG4tICogICBUaGUgc3Ryc2NweV9wYWQoKSBpbiBfX3NldF90YXNrX2NvbW0oKSBjYW4gZW5zdXJlIHRoYXQgdGhlIHRhc2sgY29tbSBpc1xcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2Vlblxcbi0gKiAgIHJlYWRlciBhbmQgd3JpdGVyIGlzIG5vdCBhbiBpc3N1ZS5cXG4tICpcXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXFxuLSAqICAgU2luY2UgdGhlIGNhbGxlcnMgZG9uJ3QgcGVyZm9ybSBhbnkgcmV0dXJuIHZhbHVlIGNoZWNrcywgdGhpcyBzYWZlZ3VhcmQgaXNcXG4tICogICBuZWNlc3NhcnkuXFxuKyAqIENvcHkgdGFzayBuYW1lIHRvIGEgYnVmZmVyLiBGaW5hbCByZXN1bHQgaXMgYWx3YXlzIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLlxcbiAgKi9cXG4tI2RlZmluZSBnZXRfdGFza19jb21tKGJ1ZiwgdHNrKSAoe1xcdFxcdFxcdFxcXFxcXG4tXFx0QlVJTERfQlVHX09OKHNpemVvZihidWYpIFxcdTAwM2MgVEFTS19DT01NX0xFTik7XFx0XFxcXFxcbi1cXHRzdHJzY3B5X3BhZChidWYsICh0c2spLVxcdTAwM2Vjb21tKTtcXHRcXHRcXHRcXFxcXFxuLVxcdGJ1ZjtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLX0pXFxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxcbit7XFxuK1xcdGNvbnN0IGNoYXIgKl9zcmMgPSB0c2stXFx1MDAzZWNvbW07XFxuK1xcbitcXHRtZW1jcHkoZHN0LCBfc3JjLCBsZW4pO1xcbitcXHRkc3RbbGVuIC0gMV0gPSAnXFxcXDAnO1xcbit9XFxuIFxcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2NoZWR1bGVyX2lwaSh2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oIGIvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcXG5pbmRleCBlMGQ4MzhjOWNlOTM4Mi4uOWIwMDk0ZmE0NGM2NDkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxcbkBAIC02MzcsMTAgKzYzNywxMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB0cmFjZXBvaW50ICp0cmFjZXBvaW50X3B0cl9kZXJlZih0cmFjZXBvaW50X3B0cl90ICpwKVxcbiAgKlxcdCpcXG4gICpcXG4gICpcXHRUUF9mYXN0X2Fzc2lnbihcXG4tICpcXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlbmV4dF9jb21tLCBuZXh0LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rICpcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xcbiAgKlxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcGlkXFx0PSBwcmV2LVxcdTAwM2VwaWQ7XFxuICAqXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJldl9wcmlvXFx0PSBwcmV2LVxcdTAwM2VwcmlvO1xcbi0gKlxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2VwcmV2X2NvbW0sIHByZXYtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbisgKlxcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XFxuICAqXFx0XFx0X19lbnRyeS1cXHUwMDNlbmV4dF9waWRcXHQ9IG5leHQtXFx1MDAzZXBpZDtcXG4gICpcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3ByaW9cXHQ9IG5leHQtXFx1MDAzZXByaW87XFxuICAqXFx0KSxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmhcXG5pbmRleCA5Yzk3YTE2ODUwYjkyMi4uMWUzYTlkZWQwM2JkNGYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmhcXG5AQCAtMjEzLDcgKzIxMyw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfcnEsXFxuIFxcbiBcXHRcXHRibGtfZmlsbF9yd2JzKF9fZW50cnktXFx1MDAzZXJ3YnMsIHJxLVxcdTAwM2VjbWRfZmxhZ3MpO1xcbiBcXHRcXHRfX2dldF9zdHIoY21kKVswXSA9ICdcXFxcMCc7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcIiVkLCVkICVzICV1ICglcykgJWxsdSArICV1ICVzLCV1LCV1IFslc11cXFwiLFxcbkBAIC00MTAsNyArNDEwLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW8sXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXNlY3RvclxcdFxcdD0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlbnJfc2VjdG9yXFx0PSBiaW9fc2VjdG9ycyhiaW8pO1xcbiBcXHRcXHRibGtfZmlsbF9yd2JzKF9fZW50cnktXFx1MDAzZXJ3YnMsIGJpby1cXHUwMDNlYmlfb3BmKTtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX3ByaW50ayhcXFwiJWQsJWQgJXMgJWxsdSArICV1IFslc11cXFwiLFxcbkBAIC00OTMsNyArNDkzLDcgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfcGx1ZyxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHQpLFxcbiBcXG4gXFx0VFBfcHJpbnRrKFxcXCJbJXNdXFxcIiwgX19lbnRyeS1cXHUwMDNlY29tbSlcXG5AQCAtNTEyLDcgKzUxMiw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfdW5wbHVnLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZW5yX3JxID0gZGVwdGg7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcIlslc10gJWRcXFwiLCBfX2VudHJ5LVxcdTAwM2Vjb21tLCBfX2VudHJ5LVxcdTAwM2Vucl9ycSlcXG5AQCAtNTYzLDcgKzU2Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3NwbGl0LFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzZWN0b3JcXHRcXHQ9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9zZWN0b3I7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZW5ld19zZWN0b3JcXHQ9IG5ld19zZWN0b3I7XFxuIFxcdFxcdGJsa19maWxsX3J3YnMoX19lbnRyeS1cXHUwMDNlcndicywgYmlvLVxcdTAwM2ViaV9vcGYpO1xcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHQpLFxcbiBcXG4gXFx0VFBfcHJpbnRrKFxcXCIlZCwlZCAlcyAlbGx1IC8gJWxsdSBbJXNdXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmhcXG5pbmRleCBjN2I5YzUzZmM0OTg2OS4uZmRkMjBiYzQ2YmIwMjcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2NvcmVkdW1wLmhcXG5AQCAtMzIsNyArMzIsNyBAQCBUUkFDRV9FVkVOVChjb3JlZHVtcCxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzaWcgPSBzaWc7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XFxuIFxcdCksXFxuIFxcbiBcXHRUUF9wcmludGsoXFxcInNpZz0lZCBjb21tPSVzXFxcIixcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXFxuaW5kZXggMjcwYzFhMmMyNGM0NGEuLjdkMjI2NTBiNGM3ODVmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxcbkBAIC0yNTA1LDcgKzI1MDUsNyBAQCBUUkFDRV9FVkVOVChmMmZzX2xvY2tfZWxhcHNlZF90aW1lLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWRldlxcdFxcdD0gc2JpLVxcdTAwM2VzYi1cXHUwMDNlc19kZXY7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdD0gcC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwcmlvXFx0XFx0PSBwLVxcdTAwM2VwcmlvO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vpb3ByaW9fY2xhc3NcXHQ9IElPUFJJT19QUklPX0NMQVNTKGlvcHJpbyk7XFxuQEAgLTI1NTgsNyArMjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlZGV2XFx0XFx0PSBzYmktXFx1MDAzZXNiLVxcdTAwM2VzX2RldjtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHAtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkXFx0XFx0PSBwLVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWxvY2tfbmFtZVxcdD0gbG9ja19uYW1lO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vpc193cml0ZVxcdD0gaXNfd3JpdGU7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcXG5pbmRleCA5ZjBhNWQxNDgyYzQ0OC4uOGJjZGM0ZmZjOGQzNDQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxcbkBAIC0yMyw3ICsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZCA9IHRhc2stXFx1MDAzZXBpZDtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2stXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXFx1MDAzZXNpZ25hbC1cXHUwMDNlb29tX3Njb3JlX2FkajtcXG4gXFx0KSxcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxcbmluZGV4IDNmNDI3MzYyMzgwMTRlLi4yY2YwNDdiYjlmYjcxZCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcXG5AQCAtMTE2LDcgKzExNiw3IEBAIFRSQUNFX0VWRU5UKHRocmVhZF9ub2lzZSxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgdC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwaWQgPSB0LVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXN0YXJ0ID0gc3RhcnQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWR1cmF0aW9uID0gZHVyYXRpb247XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXFxuaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NjaGVkLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oXFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcXG4gXFx0KSxcXG4gXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgcC1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwaWRcXHRcXHQ9IHAtXFx1MDAzZXBpZDtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJpb1xcdFxcdD0gcC1cXHUwMDNlcHJpbzsgLyogWFhYIFNDSEVEX0RFQURMSU5FICovXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXRhcmdldF9jcHVcXHQ9IHRhc2tfY3B1KHApO1xcbkBAIC0yMzcsMTEgKzIzNywxMSBAQCBUUkFDRV9FVkVOVChzY2hlZF9zd2l0Y2gsXFxuIFxcdCksXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldi1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcGlkXFx0PSBwcmV2LVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXByZXZfcHJpb1xcdD0gcHJldi1cXHUwMDNlcHJpbztcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcHJldl9zdGF0ZVxcdD0gX190cmFjZV9zY2hlZF9zd2l0Y2hfc3RhdGUocHJlZW1wdCwgcHJldl9zdGF0ZSwgcHJldik7XFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQtXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2VuZXh0X2NvbW0sIG5leHQsIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3BpZFxcdD0gbmV4dC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VuZXh0X3ByaW9cXHQ9IG5leHQtXFx1MDAzZXByaW87XFxuIFxcdFxcdC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xcbkBAIC0zNDYsNyArMzQ2LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfcHJvY2Vzc19leGl0LFxcbiBcXHQpLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuLVxcdFxcdG1lbWNweShfX2VudHJ5LVxcdTAwM2Vjb21tLCBwLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdD0gcC1cXHUwMDNlcGlkO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VwcmlvXFx0XFx0PSBwLVxcdTAwM2VwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi9cXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlZ3JvdXBfZGVhZFxcdD0gZ3JvdXBfZGVhZDtcXG5AQCAtNzg3LDcgKzc4Nyw3IEBAIFRSQUNFX0VWRU5UKHNjaGVkX3NraXBfY3B1c2V0X251bWEsXFxuIFxcdCksXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRzay1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHRzaywgVEFTS19DT01NX0xFTik7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZFxcdFxcdCA9IHRhc2tfcGlkX25yKHRzayk7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXRnaWRcXHRcXHQgPSB0YXNrX3RnaWRfbnIodHNrKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlbmdpZFxcdFxcdCA9IHRhc2tfbnVtYV9ncm91cF9pZCh0c2spO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXFxuaW5kZXggMWRiN2U0YjA3YzAxNDguLjhmZmZlNmQ5YmRjY2YwIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcXG5AQCAtNjcsNyArNjcsNyBAQCBUUkFDRV9FVkVOVChzaWduYWxfZ2VuZXJhdGUsXFxuIFxcdFRQX2Zhc3RfYXNzaWduKFxcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VzaWdcXHQ9IHNpZztcXG4gXFx0XFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcXG4tXFx0XFx0bWVtY3B5KF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2stXFx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xcbitcXHRcXHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVxcdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkXFx0PSB0YXNrLVxcdTAwM2VwaWQ7XFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZWdyb3VwXFx0PSBncm91cDtcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcmVzdWx0XFx0PSByZXN1bHQ7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxcbmluZGV4IGI5YTEyOWViNTRkOWViLi42MmI3ZGY0ZDIyZDA1MCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcXG5AQCAtMjEsNyArMjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssXFxuIFxcbiBcXHRUUF9mYXN0X2Fzc2lnbihcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlcGlkID0gdGFzay1cXHUwMDNlcGlkO1xcbi1cXHRcXHRtZW1jcHkoX19lbnRyeS1cXHUwMDNlY29tbSwgdGFzay1cXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKF9fZW50cnktXFx1MDAzZWNvbW0sIHRhc2ssIFRBU0tfQ09NTV9MRU4pO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xcbiBcXHRcXHRfX2VudHJ5LVxcdTAwM2Vvb21fc2NvcmVfYWRqID0gdGFzay1cXHUwMDNlc2lnbmFsLVxcdTAwM2Vvb21fc2NvcmVfYWRqO1xcbiBcXHQpLFxcbkBAIC00Niw4ICs0Niw5IEBAIFRSQUNFX0VWRU5UKHRhc2tfcmVuYW1lLFxcbiBcXG4gXFx0VFBfZmFzdF9hc3NpZ24oXFxuIFxcdFxcdF9fZW50cnktXFx1MDAzZXBpZCA9IHRhc2stXFx1MDAzZXBpZDtcXG4tXFx0XFx0bWVtY3B5KGVudHJ5LVxcdTAwM2VvbGRjb21tLCB0YXNrLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4tXFx0XFx0c3Ryc2NweShlbnRyeS1cXHUwMDNlbmV3Y29tbSwgY29tbSwgVEFTS19DT01NX0xFTik7XFxuK1xcdFxcdGNvcHlfdGFza19jb21tKGVudHJ5LVxcdTAwM2VvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0bWVtY3B5KGVudHJ5LVxcdTAwM2VuZXdjb21tLCBjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0ZW50cnktXFx1MDAzZW5ld2NvbW1bVEFTS19DT01NX0xFTiAtIDFdID0gJ1xcXFwwJztcXG4gXFx0XFx0X19lbnRyeS1cXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXFx1MDAzZXNpZ25hbC1cXHUwMDNlb29tX3Njb3JlX2FkajtcXG4gXFx0KSxcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxcbkBAIC01Niw2ICs1Niw5IEBAXFxuICNkZWZpbmUgUFJfU0VUX05BTUUgICAgMTVcXHRcXHQvKiBTZXQgcHJvY2VzcyBuYW1lICovXFxuICNkZWZpbmUgUFJfR0VUX05BTUUgICAgMTZcXHRcXHQvKiBHZXQgcHJvY2VzcyBuYW1lICovXFxuIFxcbisjZGVmaW5lIFBSX1NFVF9FWFRfTkFNRSAgICAxN1xcdFxcdC8qIFNldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cXG4rI2RlZmluZSBQUl9HRVRfRVhUX05BTUUgICAgMThcXHRcXHQvKiBHZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lICovXFxuK1xcbiAvKiBHZXQvc2V0IHByb2Nlc3MgZW5kaWFuICovXFxuICNkZWZpbmUgUFJfR0VUX0VORElBTlxcdDE5XFxuICNkZWZpbmUgUFJfU0VUX0VORElBTlxcdDIwXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5jIGIva2VybmVsL2F1ZGl0LmNcXG5pbmRleCA1NjI0NzY5MzdmYTc5My4uMWYwYjQ0ZDRlNWM3NWEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2F1ZGl0LmNcXG4rKysgYi9rZXJuZWwvYXVkaXQuY1xcbkBAIC0xNjY3LDcgKzE2NjcsOCBAQCBzdGF0aWMgdm9pZCBhdWRpdF9sb2dfbXVsdGljYXN0KGludCBncm91cCwgY29uc3QgY2hhciAqb3AsIGludCBlcnIpXFxuIFxcdGF1ZGl0X3B1dF90dHkodHR5KTtcXG4gXFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7IC8qIHN1Ymo9ICovXFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgY29tbT1cXFwiKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcXG4gXFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXFx1MDAzZW1tKTsgLyogZXhlPSAqL1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIG5sLW1jZ3JwPSVkIG9wPSVzIHJlcz0lZFxcXCIsIGdyb3VwLCBvcCwgIWVycik7XFxuIFxcdGF1ZGl0X2xvZ19lbmQoYWIpO1xcbkBAIC0yNDc2LDcgKzI0NzcsOCBAQCB2b2lkIGF1ZGl0X2xvZ190YXNrX2luZm8oc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXFxuIFxcdFxcdFxcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcXG4gXFx0YXVkaXRfcHV0X3R0eSh0dHkpO1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIGNvbW09XFxcIik7XFxuLVxcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xcbitcXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XFxuIFxcdGF1ZGl0X2xvZ19kX3BhdGhfZXhlKGFiLCBjdXJyZW50LVxcdTAwM2VtbSk7XFxuIFxcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNjLmMgYi9rZXJuZWwvYXVkaXRzYy5jXFxuaW5kZXggNjYxMGU2NjdjNzI4YWEuLjFkOTMwZjE2OTg1NmQ0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcXG4rKysgYi9rZXJuZWwvYXVkaXRzYy5jXFxuQEAgLTI4NzcsNyArMjg3Nyw4IEBAIHZvaWQgX19hdWRpdF9sb2dfbmZjZmcoY29uc3QgY2hhciAqbmFtZSwgdTggYWYsIHVuc2lnbmVkIGludCBuZW50cmllcyxcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBwaWQ9JXVcXFwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xcbiBcXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBjb21tPVxcXCIpO1xcbi1cXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcXG4rXFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuK1xcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xcbiBcXHRhdWRpdF9sb2dfZW5kKGFiKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChfX2F1ZGl0X2xvZ19uZmNmZyk7XFxuQEAgLTI5MDAsNyArMjkwMSw4IEBAIHN0YXRpYyB2b2lkIGF1ZGl0X2xvZ190YXNrKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxcbiBcXHRcXHRcXHQgc2Vzc2lvbmlkKTtcXG4gXFx0YXVkaXRfbG9nX3Rhc2tfY29udGV4dChhYik7XFxuIFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgcGlkPSVkIGNvbW09XFxcIiwgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcXG4gXFx0YXVkaXRfbG9nX2RfcGF0aF9leGUoYWIsIGN1cnJlbnQtXFx1MDAzZW1tKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9uYmNvbi5jIGIva2VybmVsL3ByaW50ay9uYmNvbi5jXFxuaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9wcmludGsvbmJjb24uY1xcbisrKyBiL2tlcm5lbC9wcmludGsvbmJjb24uY1xcbkBAIC05NTIsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgd2N0eHRfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBuYmNvbl93cml0ZV9jb250ZXh0ICp3Y3R4dCxcXG4ge1xcbiBcXHR3Y3R4dC1cXHUwMDNlY3B1ID0gcG1zZy1cXHUwMDNlY3B1O1xcbiBcXHR3Y3R4dC1cXHUwMDNlcGlkID0gcG1zZy1cXHUwMDNlcGlkO1xcbi1cXHRtZW1jcHkod2N0eHQtXFx1MDAzZWNvbW0sIHBtc2ctXFx1MDAzZWNvbW0sIHNpemVvZih3Y3R4dC1cXHUwMDNlY29tbSkpO1xcbitcXHRjb3B5X3Rhc2tfY29tbSh3Y3R4dC1cXHUwMDNlY29tbSwgcG1zZywgc2l6ZW9mKHdjdHh0LVxcdTAwM2Vjb21tKSk7XFxuIFxcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKHdjdHh0LVxcdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cXHUwMDNlY29tbSkpO1xcbiB9XFxuICNlbHNlXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmMgYi9rZXJuZWwvcHJpbnRrL3ByaW50ay5jXFxuaW5kZXggMmZlOWE5NjNjODIzYTQuLmVjMGM2NzM0YmJlMWNkIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcXG4rKysgYi9rZXJuZWwvcHJpbnRrL3ByaW50ay5jXFxuQEAgLTIyNDcsNyArMjI0Nyw3IEBAIHN0YXRpYyB1MTYgcHJpbnRrX3NwcmludChjaGFyICp0ZXh0LCB1MTYgc2l6ZSwgaW50IGZhY2lsaXR5LFxcbiBzdGF0aWMgdm9pZCBwcmludGtfc3RvcmVfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX2luZm8gKmluZm8pXFxuIHtcXG4gXFx0aW5mby1cXHUwMDNlY2FsbGVyX2lkMiA9IHByaW50a19jYWxsZXJfaWQyKCk7XFxuLVxcdGdldF90YXNrX2NvbW0oaW5mby1cXHUwMDNlY29tbSwgY3VycmVudCk7XFxuK1xcdHN0cnNjcHlfcGFkKGluZm8tXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBwbXNnX2xvYWRfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX21lc3NhZ2UgKnBtc2csXFxuQEAgLTIyNTUsNyArMjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcXG4ge1xcbiBcXHRwbXNnLVxcdTAwM2VjcHUgPSBwcmludGtfaW5mb19nZXRfY3B1KGluZm8pO1xcbiBcXHRwbXNnLVxcdTAwM2VwaWQgPSBwcmludGtfaW5mb19nZXRfcGlkKGluZm8pO1xcbi1cXHRtZW1jcHkocG1zZy1cXHUwMDNlY29tbSwgaW5mby1cXHUwMDNlY29tbSwgc2l6ZW9mKHBtc2ctXFx1MDAzZWNvbW0pKTtcXG4rXFx0Y29weV90YXNrX2NvbW0ocG1zZy1cXHUwMDNlY29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctXFx1MDAzZWNvbW0pKTtcXG4gXFx0c3RhdGljX2Fzc2VydChzaXplb2YocG1zZy1cXHUwMDNlY29tbSkgPT0gc2l6ZW9mKGluZm8tXFx1MDAzZWNvbW0pKTtcXG4gfVxcbiAjZWxzZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvc3lzLmMgYi9rZXJuZWwvc3lzLmNcXG5pbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL3N5cy5jXFxuKysrIGIva2VybmVsL3N5cy5jXFxuQEAgLTI1MzUsNyArMjUzNSw3IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXFxuIFxcdFxcdHVuc2lnbmVkIGxvbmcsIGFyZzQsIHVuc2lnbmVkIGxvbmcsIGFyZzUpXFxuIHtcXG4gXFx0c3RydWN0IHRhc2tfc3RydWN0ICptZSA9IGN1cnJlbnQ7XFxuLVxcdHVuc2lnbmVkIGNoYXIgY29tbVtzaXplb2YobWUtXFx1MDAzZWNvbW0pXTtcXG4rXFx0dW5zaWduZWQgY2hhciBjb21tW1RBU0tfQ09NTV9FWFRfTEVOXTtcXG4gXFx0bG9uZyBlcnJvcjtcXG4gXFxuIFxcdGVycm9yID0gc2VjdXJpdHlfdGFza19wcmN0bChvcHRpb24sIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpO1xcbkBAIC0yNjAxLDE2ICsyNjAxLDI5IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXFxuIFxcdFxcdFxcdGVycm9yID0gLUVJTlZBTDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfU0VUX05BTUU6XFxuLVxcdFxcdGNvbW1bc2l6ZW9mKG1lLVxcdTAwM2Vjb21tKSAtIDFdID0gMDtcXG4rXFx0XFx0Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAwO1xcbiBcXHRcXHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcXG4tXFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKG1lLVxcdTAwM2Vjb21tKSAtIDEpIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0XFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFxcdTAwM2MgMClcXG4gXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIFxcdFxcdHNldF90YXNrX2NvbW0obWUsIGNvbW0pO1xcbiBcXHRcXHRwcm9jX2NvbW1fY29ubmVjdG9yKG1lKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfR0VUX05BTUU6XFxuLVxcdFxcdGdldF90YXNrX2NvbW0oY29tbSwgbWUpO1xcbi1cXHRcXHRpZiAoY29weV90b191c2VyKChjaGFyIF9fdXNlciAqKWFyZzIsIGNvbW0sIHNpemVvZihjb21tKSkpXFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcXG4rXFx0XFx0aWYgKGNvcHlfdG9fdXNlcigoY2hhciBfX3VzZXIgKilhcmcyLCBjb21tLCBUQVNLX0NPTU1fTEVOKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIFBSX1NFVF9FWFRfTkFNRTpcXG4rXFx0XFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTiAtIDFdID0gMDtcXG4rXFx0XFx0aWYgKHN0cm5jcHlfZnJvbV91c2VyKGNvbW0sIChjaGFyIF9fdXNlciAqKWFyZzIsXFxuK1xcdFxcdFxcdFxcdCAgICAgIFRBU0tfQ09NTV9FWFRfTEVOIC0gMSkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0c2V0X3Rhc2tfY29tbShtZSwgY29tbSk7XFxuK1xcdFxcdHByb2NfY29tbV9jb25uZWN0b3IobWUpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQUl9HRVRfRVhUX05BTUU6XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGNvbW0sIG1lLVxcdTAwM2Vjb21tLCBUQVNLX0NPTU1fRVhUX0xFTik7XFxuK1xcdFxcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUFJfR0VUX0VORElBTjpcXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jIGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXFxuaW5kZXggMDgxOWFjZTViMDI3NTcuLjVkMjYwMjlkMmQwMTJkIDEwMDY0NFxcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xcbisrKyBiL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xcbkBAIC04ODEsNiArODgxLDQzIEBAIHN0YXRpYyB2b2lkIHN0cmluZ19iZW5jaF9zdHJyY2hyKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4gXFx0U1RSSU5HX0JFTkNIX0JVRih0ZXN0LCBidWYsIGxlbiwgc3RycmNociwgYnVmLCAnXFxcXDAnKTtcXG4gfVxcbiBcXG4rI2RlZmluZSBUQVNLX05BTUUgXFxcInRhc2tfbmFtZVxcXCJcXG4rI2RlZmluZSBUQVNLX05BTUVfTEVOIDlcXG4rI2RlZmluZSBUQVNLX01BWF9MRU4gVEFTS19DT01NX0VYVF9MRU5cXG4rI2RlZmluZSBTTUFMTEVSX0xFTiBUQVNLX05BTUVfTEVOIC0gM1xcbisjZGVmaW5lIEJJR0dFUl9MRU4gVEFTS19NQVhfTEVOICsgM1xcbitcXG4rc3RhdGljIHZvaWQgc3RyaW5nX2NvcHlfdGFza19jb21tKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRjaGFyIHN0cltUQVNLX01BWF9MRU5dID0gVEFTS19OQU1FLCBjb3B5W1RBU0tfTUFYX0xFTl0sXFxuK1xcdCAgICAgc21hbGxlcl9idWZbU01BTExFUl9MRU5dLCBiaWdnZXJfYnVmW0JJR0dFUl9MRU5dO1xcbitcXHRzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0IHRhc2ssICp0c2sgPSBcXHUwMDI2dGFzaztcXG4rXFx0aW50IGxlbjEsIGxlbjIsIGk7XFxuK1xcbitcXHQvKiBzZXQgYW5kIGdldCB0YXNrIG5hbWUgKi9cXG4rXFx0c2V0X3Rhc2tfY29tbSh0c2ssIHN0cik7XFxuK1xcdGNvcHlfdGFza19jb21tKGNvcHksIHRzaywgVEFTS19DT01NX0xFTik7XFxuK1xcbitcXHRsZW4xID0gc3RybGVuKHN0cik7XFxuK1xcdGxlbjIgPSBzdHJsZW4oY29weSk7XFxuK1xcbitcXHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgbGVuMSwgbGVuMik7XFxuK1xcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBsZW4yLCBUQVNLX05BTUVfTEVOKTtcXG4rXFx0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGNvcHlbbGVuMl0sICdcXFxcMCcpO1xcbitcXHRLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCAhc3RyY21wKHN0ciwgY29weSkpO1xcbitcXG4rXFx0LyogY29weSB0byBhIHNtYWxsZXIgZHN0IGJ1ZmZlciAqL1xcbitcXHRjb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTtcXG4rXFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBzbWFsbGVyX2J1ZiwgU01BTExFUl9MRU4gLSAxKSk7XFxuK1xcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBzbWFsbGVyX2J1ZltTTUFMTEVSX0xFTiAtIDFdLCAnXFxcXDAnKTtcXG4rXFxuK1xcdC8qIGNvcHkgdG8gYSBiaWdnZXIgZHN0IGJ1ZmZlciAqL1xcbitcXHRjb3B5X3Rhc2tfY29tbShiaWdnZXJfYnVmLCB0c2ssIHNpemVvZihiaWdnZXJfYnVmKSk7XFxuK1xcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgYmlnZ2VyX2J1ZiwgVEFTS19OQU1FX0xFTikpO1xcbitcXHRmb3IgKGkgPSBUQVNLX05BTUVfTEVOOyBpIFxcdTAwM2MgQklHR0VSX0xFTjsgaSsrKVxcbitcXHRcXHRLVU5JVF9BU1NFUlRfRVEodGVzdCwgYmlnZ2VyX2J1ZltpXSwgJ1xcXFwwJyk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xcbiBcXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDE2KSxcXG4gXFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQzMiksXFxuQEAgLTkxMCw2ICs5NDcsNyBAQCBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2Ugc3RyaW5nX3Rlc3RfY2FzZXNbXSA9IHtcXG4gXFx0S1VOSVRfQ0FTRShzdHJpbmdfYmVuY2hfc3RybmxlbiksXFxuIFxcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksXFxuIFxcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cnJjaHIpLFxcbitcXHRLVU5JVF9DQVNFKHN0cmluZ19jb3B5X3Rhc2tfY29tbSksXFxuIFxcdHt9XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcXG5pbmRleCAwNzBjYTM4OGY5YWNlOC4uNGU2NmNiMmQ5NTQ5YzYgMTAwNjQ0XFxuLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXFxuQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbCBoY2lfc29ja19nZW5fY29va2llKHN0cnVjdCBzb2NrICpzaylcXG4gXFx0XFx0XFx0aWQgPSAweGZmZmZmZmZmO1xcbiBcXG4gXFx0XFx0aGNpX3BpKHNrKS1cXHUwMDNlY29va2llID0gaWQ7XFxuLVxcdFxcdGdldF90YXNrX2NvbW0oaGNpX3BpKHNrKS1cXHUwMDNlY29tbSwgY3VycmVudCk7XFxuK1xcdFxcdHN0cnNjcHlfcGFkKGhjaV9waShzayktXFx1MDAzZWNvbW0sIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbmluZGV4IGE5ZWFmOTQ1NWM3NzgzLi5jNTU1NWVlZDFiNjJkMiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTk3MTgsOSArOTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0aWYgKCFubGgpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4rXFx0c3Ryc2NweV9wYWQoYnVmLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFxuIFxcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9JRCwgaHRvbmwobmZ0X2Jhc2Vfc2VxKG5ldCkpKSB8fFxcbiBcXHQgICAgbmxhX3B1dF9iZTMyKHNrYiwgTkZUQV9HRU5fUFJPQ19QSUQsIGh0b25sKHRhc2tfcGlkX25yKGN1cnJlbnQpKSkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfc3RyaW5nKHNrYiwgTkZUQV9HRU5fUFJPQ19OQU1FLCBnZXRfdGFza19jb21tKGJ1ZiwgY3VycmVudCkpKVxcbitcXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGJ1ZikpXFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbiBcXG4gXFx0bmxtc2dfZW5kKHNrYiwgbmxoKTtcXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXFxuaW5kZXggZDhkOWU1ZmYxY2QyMmIuLjk4MDYwMDYwOTI5ZGE5IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xcbisrKyBiL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xcbkBAIC01NCw3ICs1NCw4IEBAIHZvaWQgaW50ZWdyaXR5X2F1ZGl0X21lc3NhZ2UoaW50IGF1ZGl0X21zZ25vLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbiBcXHRcXHRcXHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XFxuIFxcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpO1xcbiBcXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcXFwiIG9wPSVzIGNhdXNlPSVzIGNvbW09XFxcIiwgb3AsIGNhdXNlKTtcXG4tXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShuYW1lLCBjdXJyZW50KSk7XFxuK1xcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXFx1MDAzZWNvbW0pO1xcbitcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcXG4gXFx0aWYgKGZuYW1lKSB7XFxuIFxcdFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgbmFtZT1cXFwiKTtcXG4gXFx0XFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9pcGUvYXVkaXQuYyBiL3NlY3VyaXR5L2lwZS9hdWRpdC5jXFxuaW5kZXggOTNmYjU5ZmJkZGQ2MGIuLjkwYTZhY2ZiN2NkZmNmIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXFxuKysrIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcXG5AQCAtMTQ1LDcgKzE0NSw4IEBAIHZvaWQgaXBlX2F1ZGl0X21hdGNoKGNvbnN0IHN0cnVjdCBpcGVfZXZhbF9jdHggKmNvbnN0IGN0eCxcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcImlwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09XFxcIixcXG4gXFx0XFx0XFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cXHUwMDNlaG9va10sIFJFQURfT05DRShlbmZvcmNlKSxcXG4gXFx0XFx0XFx0IHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XFxuLVxcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGdldF90YXNrX2NvbW0oY29tbSwgY3VycmVudCkpO1xcbitcXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVxcdTAwM2Vjb21tKTtcXG4rXFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XFxuIFxcbiBcXHRpZiAoY3R4LVxcdTAwM2VmaWxlKSB7XFxuIFxcdFxcdGF1ZGl0X2xvZ19kX3BhdGgoYWIsIFxcXCIgcGF0aD1cXFwiLCBcXHUwMDI2Y3R4LVxcdTAwM2VmaWxlLVxcdTAwM2VmX3BhdGgpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXFxuaW5kZXggOWE4MzU1ZmNjZDI2ZWIuLmIyZmM3ZjcyMmQ2OTA4IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXFxuKysrIGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcXG5AQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGFuZGxvY2tfZGV0YWlscyAqZ2V0X2N1cnJlbnRfZGV0YWlscyh2b2lkKVxcbiBcXHRtZW1jcHkoZGV0YWlscy1cXHUwMDNlZXhlX3BhdGgsIHBhdGhfc3RyLCBwYXRoX3NpemUpO1xcbiBcXHRkZXRhaWxzLVxcdTAwM2VwaWQgPSBnZXRfcGlkKHRhc2tfdGdpZChjdXJyZW50KSk7XFxuIFxcdGRldGFpbHMtXFx1MDAzZXVpZCA9IGZyb21fa3VpZChcXHUwMDI2aW5pdF91c2VyX25zLCBjdXJyZW50X3VpZCgpKTtcXG4tXFx0Z2V0X3Rhc2tfY29tbShkZXRhaWxzLVxcdTAwM2Vjb21tLCBjdXJyZW50KTtcXG4rXFx0c3Ryc2NweV9wYWQoZGV0YWlscy1cXHUwMDNlY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuIFxcdHJldHVybiBkZXRhaWxzO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sc21fYXVkaXQuYyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXFxuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2xzbV9hdWRpdC5jXFxuKysrIGIvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcXG5AQCAtMjc2LDggKzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLFxcbiBcXHRcXHRcXHRpZiAocGlkKSB7XFxuIFxcdFxcdFxcdFxcdGNoYXIgdHNrY29tbVtzaXplb2YodHNrLVxcdTAwM2Vjb21tKV07XFxuIFxcdFxcdFxcdFxcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFxcXCIgb3BpZD0lZCBvY29tbT1cXFwiLCBwaWQpO1xcbi1cXHRcXHRcXHRcXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxcbi1cXHRcXHRcXHRcXHQgICAgZ2V0X3Rhc2tfY29tbSh0c2tjb21tLCB0c2spKTtcXG4rXFx0XFx0XFx0XFx0c3Ryc2NweV9wYWQodHNrY29tbSwgdHNrLVxcdTAwM2Vjb21tKTtcXG4rXFx0XFx0XFx0XFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgdHNrY29tbSk7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbiBcXHRcXHRicmVhaztcXG5AQCAtNDE3LDcgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXFxuIFxcdGNoYXIgY29tbVtzaXplb2YoY3VycmVudC1cXHUwMDNlY29tbSldO1xcbiBcXG4gXFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXFxcIiBwaWQ9JWQgY29tbT1cXFwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xcbi1cXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcXG4rXFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cXHUwMDNlY29tbSk7XFxuK1xcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIGNvbW0pO1xcbiBcXHRhdWRpdF9sb2dfbHNtX2RhdGEoYWIsIGEpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcXG5pbmRleCAzZjdiMTQ2ZDM2ZGZlMS4uMGYyMGY3ZGVhYzY3ZmQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXFxuQEAgLTksOSArOSwxNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImtzZWxmdGVzdF9oYXJuZXNzLmhcXFwiXFxuIFxcbisjaWZuZGVmIFBSX1NFVF9FWFRfTkFNRVxcbisjIGRlZmluZSBQUl9TRVRfRVhUX05BTUUgMTdcXG4rIyBkZWZpbmUgUFJfR0VUX0VYVF9OQU1FIDE4XFxuKyNlbmRpZlxcbitcXG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcXFwiY2hhbmdlbmFtZVxcXCJcXG4rI2RlZmluZSBMT05HX05BTUVcXHRcXFwiY2hhbmdlX3RvX3ZlcnlfbG9uZ19leHRlbmRlZF9uYW1lXFxcIlxcbisjZGVmaW5lIExPTkdfTkFNRV9DQVBcXHRcXFwiY2hhbmdlX3RvX3ZlcnlfXFxcIlxcbiAjZGVmaW5lIEVNUFRZX05BTUUgXFxcIlxcXCJcXG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XFxuKyNkZWZpbmUgVEFTS19DT01NX0VYVF9MRU4gNjRcXG4gI2RlZmluZSBNQVhfUEFUSF9MRU4gNTBcXG4gXFxuIGludCBzZXRfbmFtZShjaGFyICpuYW1lKVxcbkBAIC0yNSw2ICszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcXG4gXFx0cmV0dXJuIHJlcztcXG4gfVxcbiBcXG4raW50IHNldF9leHRfbmFtZShjaGFyICpuYW1lKVxcbit7XFxuK1xcdGludCByZXM7XFxuK1xcbitcXHRyZXMgPSBwcmN0bChQUl9TRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xcbitcXG4rXFx0aWYgKHJlcyBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtZXJybm87XFxuK31cXG4rXFxuIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcXG4ge1xcbiBcXHRjaGFyIG5hbWVbVEFTS19DT01NX0xFTl07XFxuQEAgLTM4LDYgKzU2LDE5IEBAIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcXG4gXFx0cmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7XFxuIH1cXG4gXFxuK2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXFxuK3tcXG4rXFx0Y2hhciBuYW1lW1RBU0tfQ09NTV9FWFRfTEVOXTtcXG4rXFx0aW50IHJlcztcXG4rXFxuK1xcdHJlcyA9IHByY3RsKFBSX0dFVF9FWFRfTkFNRSwgbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCk7XFxuK1xcbitcXHRpZiAocmVzIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIC1lcnJubztcXG4rXFxuK1xcdHJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpO1xcbit9XFxuK1xcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXFxuIHtcXG4gXFx0Y2hhciAqbmFtZSA9IE5VTEw7XFxuQEAgLTgyLDYgKzExMywxMSBAQCBURVNUKHJlbmFtZV9wcm9jZXNzKSB7XFxuIFxcdEVYUEVDVF9HRShzZXRfbmFtZShDSEFOR0VfTkFNRSksIDApO1xcbiBcXHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoQ0hBTkdFX05BTUUpKTtcXG4gXFxuK1xcdEVYUEVDVF9HRShzZXRfZXh0X25hbWUoTE9OR19OQU1FKSwgMCk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX2V4dF9uYW1lX2NvcnJlY3QoTE9OR19OQU1FKSk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChMT05HX05BTUVfQ0FQKSk7XFxuK1xcdEVYUEVDVF9UUlVFKGNoZWNrX25hbWUoKSk7XFxuK1xcbiBcXHRFWFBFQ1RfR0Uoc2V0X25hbWUoRU1QVFlfTkFNRSksIDApO1xcbiBcXHRFWFBFQ1RfVFJVRShjaGVja19pc19uYW1lX2NvcnJlY3QoRU1QVFlfTkFNRSkpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjA6NTM6MjUuMjMzNTU2MTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxNDQ1MTY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzeXNfcHJjdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBwcmN0bCBvcHRpb25zIFBSX1NFVF9FWFRfTkFNRSBhbmQgUFJfR0VUX0VYVF9OQU1FIHRvIHNldCBhbmQgZ2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZkZTU0YzNkZWNiM2MxM2YyOTRlYTkxMWU5YzhjZWRjY2YyZWZkMjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMDo1MzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYyBiL2RyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuY1xuaW5kZXggMDA1NmFiODFmYmMzOWEuLmM3ODI0M2VkM2MyYTk2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jXG4rKysgYi9kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmNcbkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBwcm9jX2NvbW1fY29ubmVjdG9yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaylcbiBcdGV2LVx1MDAzZXdoYXQgPSBQUk9DX0VWRU5UX0NPTU07XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc19waWQgID0gdGFzay1cdTAwM2VwaWQ7XG4gXHRldi1cdTAwM2VldmVudF9kYXRhLmNvbW0ucHJvY2Vzc190Z2lkID0gdGFzay1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzayk7XG4rXHRzdHJzY3B5X3BhZChldi1cdTAwM2VldmVudF9kYXRhLmNvbW0uY29tbSwgdGFzay1cdTAwM2Vjb21tKTtcbiBcbiBcdG1lbWNweShcdTAwMjZtc2ctXHUwMDNlaWQsIFx1MDAyNmNuX3Byb2NfZXZlbnRfaWQsIHNpemVvZihtc2ctXHUwMDNlaWQpKTtcbiBcdG1zZy1cdTAwM2VhY2sgPSAwOyAvKiBub3QgdXNlZCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zd19zeW5jLmMgYi9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG5pbmRleCA4ZGYyMGIwMjE4YTllZS4uZDUwMTY1N2FkODAxMjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG4rKysgYi9kcml2ZXJzL2RtYS1idWYvc3dfc3luYy5jXG5AQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbnQgc3dfc3luY19kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRzdHJ1Y3Qgc3luY190aW1lbGluZSAqb2JqO1xuIFx0Y2hhciB0YXNrX2NvbW1bVEFTS19DT01NX0xFTl07XG4gXG4tXHRnZXRfdGFza19jb21tKHRhc2tfY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh0YXNrX2NvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXG4gXHRvYmogPSBzeW5jX3RpbWVsaW5lX2NyZWF0ZSh0YXNrX2NvbW0pO1xuIFx0aWYgKCFvYmopXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9mZW5jZS5jXG5pbmRleCA2YTM2NDM1NzUyMmI4YS4uMTNjODg1N2U0ZmZiYTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZmVuY2UuY1xuQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IGFtZGdwdV9hbWRrZmRfZmVuY2UgKmFtZGdwdV9hbWRrZmRfZmVuY2VfY3JlYXRlKHU2NCBjb250ZXh0LFxuIFx0LyogVGhpcyByZWZlcmVuY2UgZ2V0cyByZWxlYXNlZCBpbiBhbWRrZmRfZmVuY2VfcmVsZWFzZSAqL1xuIFx0bW1ncmFiKG1tKTtcbiBcdGZlbmNlLVx1MDAzZW1tID0gbW07XG4tXHRnZXRfdGFza19jb21tKGZlbmNlLVx1MDAzZXRpbWVsaW5lX25hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQoZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmZlbmNlLVx1MDAzZWxvY2spO1xuIFx0ZmVuY2UtXHUwMDNlc3ZtX2JvID0gc3ZtX2JvO1xuIFx0ZmVuY2UtXHUwMDNlY29udGV4dF9pZCA9IGNvbnRleHRfaWQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZXZpY3Rpb25fZmVuY2UuY1xuaW5kZXggZjZiNzUyMmMzYzgyZmYuLjA0NjI0M2UzYTNjZDAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9ldmljdGlvbl9mZW5jZS5jXG5AQCAtMTI4LDcgKzEyOCw3IEBAIGludCBhbWRncHVfZXZmX21ncl9yZWFybShzdHJ1Y3QgYW1kZ3B1X2V2aWN0aW9uX2ZlbmNlX21nciAqZXZmX21ncixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRldl9mZW5jZS1cdTAwM2VldmZfbWdyID0gZXZmX21ncjtcbi1cdGdldF90YXNrX2NvbW0oZXZfZmVuY2UtXHUwMDNldGltZWxpbmVfbmFtZSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZChldl9mZW5jZS1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZXZfZmVuY2UtXHUwMDNlbG9jayk7XG4gXHRkbWFfZmVuY2VfaW5pdDY0KFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWJhc2UsIFx1MDAyNmFtZGdwdV9ldmljdGlvbl9mZW5jZV9vcHMsXG4gXHRcdFx0IFx1MDAyNmV2X2ZlbmNlLVx1MDAzZWxvY2ssIGV2Zl9tZ3ItXHUwMDNlZXZfZmVuY2VfY3R4LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuY1xuaW5kZXggNzY0Y2Q0OTUwNDA4M2MuLmU2MGE0NzBiNTdlY2MxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmNcbkBAIC00NDQ1LDcgKzQ0NDUsNyBAQCBpbnQgYW1kZ3B1X3Jhc19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuIFx0fVxuIFxuIFx0Y29uLVx1MDAzZWluaXRfdGFza19waWQgPSB0YXNrX3BpZF9ucihjdXJyZW50KTtcbi1cdGdldF90YXNrX2NvbW0oY29uLVx1MDAzZWluaXRfdGFza19jb21tLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGNvbi1cdTAwM2Vpbml0X3Rhc2tfY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2luaXQoXHUwMDI2Y29uLVx1MDAzZWNyaXRpY2FsX3JlZ2lvbl9sb2NrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNvbi1cdTAwM2Vjcml0aWNhbF9yZWdpb25faGVhZCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuY1xuaW5kZXggZjc0YWQzNzhlNDA3NDIuLmY0MTg1NzQ3MzY0MWJjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jXG5AQCAtODUsNyArODUsNyBAQCBpbnQgYW1kZ3B1X3VzZXJxX2ZlbmNlX2RyaXZlcl9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcbiBcbiBcdGZlbmNlX2Rydi1cdTAwM2VhZGV2ID0gYWRldjtcbiBcdGZlbmNlX2Rydi1cdTAwM2Vjb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7XG4tXHRnZXRfdGFza19jb21tKGZlbmNlX2Rydi1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGZlbmNlX2Rydi1cdTAwM2V0aW1lbGluZV9uYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0KmZlbmNlX2Rydl9yZXEgPSBmZW5jZV9kcnY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uY1xuaW5kZXggYmI5OWI3YzNhMDEwZWEuLjg0YzBiMzEwZTljMTQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jXG5AQCAtMjU0MiwxMCArMjU0MiwxMCBAQCB2b2lkIGFtZGdwdV92bV9zZXRfdGFza19pbmZvKHN0cnVjdCBhbWRncHVfdm0gKnZtKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5waWQgPSBjdXJyZW50LVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0odm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh2bS1cdTAwM2V0YXNrX2luZm8tXHUwMDNldGFzay5jb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0dm0tXHUwMDNldGFza19pbmZvLVx1MDAzZXRnaWQgPSBjdXJyZW50LVx1MDAzZXRnaWQ7XG4tXHRnZXRfdGFza19jb21tKHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2Vwcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyKTtcbitcdHN0cnNjcHlfcGFkKHZtLVx1MDAzZXRhc2tfaW5mby1cdTAwM2Vwcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbiAvKipcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jXG5pbmRleCAyYTI0MWE1YjEyYzQyMC4uZjhjZTU5ZDg1ODdhMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmNcbkBAIC01NjMsNyArNTYzLDcgQEAgc3RhdGljIGludCBhbWRncHVfdnJhbV9tZ3JfbmV3KHN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuLFxuIFx0fVxuIFxuIFx0dnJlcy1cdTAwM2V0YXNrLnBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbSh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZCh2cmVzLVx1MDAzZXRhc2suY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2dnJlcy1cdTAwM2V2cmVzX25vZGUsIFx1MDAyNm1nci1cdTAwM2VhbGxvY2F0ZWRfdnJlc19saXN0KTtcbiBcbiBcdGlmIChiby1cdTAwM2VmbGFncyBcdTAwMjYgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTIFx1MDAyNlx1MDAyNiBhZGp1c3RfZGNjX3NpemUpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2N0eC5jIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuaW5kZXggNjhlZGU3YTcyNWUyMTkuLmU4YzVjMzYwMWJmMWQ1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9jdHguY1xuQEAgLTI5LDcgKzI5LDcgQEAgaW50IGxpbWFfY3R4X2NyZWF0ZShzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiwgc3RydWN0IGxpbWFfY3R4X21nciAqbWdyLCB1MzIgKmlkKVxuIFx0XHRnb3RvIGVycl9vdXQwO1xuIFxuIFx0Y3R4LVx1MDAzZXBpZCA9IHRhc2tfcGlkX25yKGN1cnJlbnQpO1xuLVx0Z2V0X3Rhc2tfY29tbShjdHgtXHUwMDNlcG5hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQoY3R4LVx1MDAzZXBuYW1lLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbS5jXG5pbmRleCAzYTdmY2U0Mjg4OTg3Yi4uMTE5MzZjNGQzNTczNmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtLmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW0uY1xuQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIHZvaWQgcGFuZnJvc3RfZ2VtX2RlYnVnZnNfYm9fYWRkKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LFxuIFx0XHRcdFx0XHRzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm8pXG4ge1xuIFx0Ym8tXHUwMDNlZGVidWdmcy5jcmVhdG9yLnRnaWQgPSBjdXJyZW50LVx1MDAzZXRnaWQ7XG4tXHRnZXRfdGFza19jb21tKGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyKTtcbitcdHN0cnNjcHlfcGFkKGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci5wcm9jZXNzX25hbWUsIGN1cnJlbnQtXHUwMDNlZ3JvdXBfbGVhZGVyLVx1MDAzZWNvbW0pO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwZmRldi1cdTAwM2VkZWJ1Z2ZzLmdlbXNfbG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmJvLVx1MDAzZWRlYnVnZnMubm9kZSwgXHUwMDI2cGZkZXYtXHUwMDNlZGVidWdmcy5nZW1zX2xpc3QpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3JfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG5pbmRleCBhMWUyZWIxY2E3YmJlNi4uZWJiMzY2NGU0MzAzY2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX2dlbS5jXG5AQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBwYW50aG9yX2dlbV9kZWJ1Z2ZzX2JvX2FkZChzdHJ1Y3QgcGFudGhvcl9nZW1fb2JqZWN0ICpibylcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IHBhbnRob3JfZGV2aWNlLCBiYXNlKTtcbiBcbiBcdGJvLVx1MDAzZWRlYnVnZnMuY3JlYXRvci50Z2lkID0gY3VycmVudC1cdTAwM2V0Z2lkO1xuLVx0Z2V0X3Rhc2tfY29tbShiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcik7XG4rXHRzdHJzY3B5X3BhZChiby1cdTAwM2VkZWJ1Z2ZzLmNyZWF0b3IucHJvY2Vzc19uYW1lLCBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlci1cdTAwM2Vjb21tKTtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHRkZXYtXHUwMDNlZ2Vtcy5sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Ym8tXHUwMDNlZGVidWdmcy5ub2RlLCBcdTAwMjZwdGRldi1cdTAwM2VnZW1zLm5vZGUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW50aG9yL3BhbnRob3Jfc2NoZWQuY1xuaW5kZXggMjk4YjA0NmM5NWVkYjguLjgxYzQ2NTljMGQ3YmU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbnRob3IvcGFudGhvcl9zY2hlZC5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFudGhvci9wYW50aG9yX3NjaGVkLmNcbkBAIC0zNjE3LDcgKzM2MTcsNyBAQCBzdGF0aWMgdm9pZCBncm91cF9pbml0X3Rhc2tfaW5mbyhzdHJ1Y3QgcGFudGhvcl9ncm91cCAqZ3JvdXApXG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sgPSBjdXJyZW50LVx1MDAzZWdyb3VwX2xlYWRlcjtcbiBcbiBcdGdyb3VwLVx1MDAzZXRhc2tfaW5mby5waWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdGdldF90YXNrX2NvbW0oZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2spO1xuK1x0c3Ryc2NweV9wYWQoZ3JvdXAtXHUwMDNldGFza19pbmZvLmNvbW0sIHRhc2stXHUwMDNlY29tbSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGFkZF9ncm91cF9rYm9fc2l6ZXMoc3RydWN0IHBhbnRob3JfZGV2aWNlICpwdGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jXG5pbmRleCAzZDhlNGNjZGI3YzFmOC4uYjEwYTBlMWNiMWVkNzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmNcbkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHZpcnRpb19ncHVfY3JlYXRlX2NvbnRleHRfbG9ja2VkKHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYsXG4gXHR9IGVsc2Uge1xuIFx0XHRjaGFyIGRiZ25hbWVbVEFTS19DT01NX0xFTl07XG4gXG4tXHRcdGdldF90YXNrX2NvbW0oZGJnbmFtZSwgY3VycmVudCk7XG4rXHRcdHN0cnNjcHlfcGFkKGRiZ25hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRcdHZpcnRpb19ncHVfY21kX2NvbnRleHRfY3JlYXRlKHZnZGV2LCB2ZnByaXYtXHUwMDNlY3R4X2lkLFxuIFx0XHRcdFx0XHQgICAgICB2ZnByaXYtXHUwMDNlY29udGV4dF9pbml0LCBzdHJsZW4oZGJnbmFtZSksXG4gXHRcdFx0XHRcdCAgICAgIGRiZ25hbWUpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5nL3N0bS9jb3JlLmMgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG5pbmRleCBmNDhjNmE4YTA2NTRlOS4uYzc3MTU0Mzk5NjRlODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG4rKysgYi9kcml2ZXJzL2h3dHJhY2luZy9zdG0vY29yZS5jXG5AQCAtNjM0LDcgKzYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IHN0bV9jaGFyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0XHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFx0XHRjaGFyICppZHNbXSA9IHsgY29tbSwgXCJkZWZhdWx0XCIsIE5VTEwgfTtcbiBcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KTtcbitcdFx0c3Ryc2NweV9wYWQoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcbiBcdFx0ZXJyID0gc3RtX2Fzc2lnbl9maXJzdF9wb2xpY3koc3RtZi1cdTAwM2VzdG0sIFx1MDAyNnN0bWYtXHUwMDNlb3V0cHV0LCBpZHMsIDEpO1xuIFx0XHQvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jIGIvZHJpdmVycy90dHkvdHR5X2F1ZGl0LmNcbmluZGV4IGQwMTRhZjZhYjA2MGU1Li5kNTE0YTgxZDBhNWM4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdHR5L3R0eV9hdWRpdC5jXG4rKysgYi9kcml2ZXJzL3R0eS90dHlfYXVkaXQuY1xuQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgdHR5X2F1ZGl0X2xvZyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgZGV2X3QgZGV2LFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIlcyBwaWQ9JXUgdWlkPSV1IGF1aWQ9JXUgc2VzPSV1IG1ham9yPSVkIG1pbm9yPSVkIGNvbW09XCIsXG4gXHRcdFx0IGRlc2NyaXB0aW9uLCBwaWQsIHVpZCwgbG9naW51aWQsIHNlc3Npb25pZCxcbiBcdFx0XHQgTUFKT1IoZGV2KSwgTUlOT1IoZGV2KSk7XG4tXHRnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpO1xuK1x0c3Ryc2NweV9wYWQobmFtZSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiBcdGF1ZGl0X2xvZ191bnRydXN0ZWRzdHJpbmcoYWIsIG5hbWUpO1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgZGF0YT1cIik7XG4gXHRhdWRpdF9sb2dfbl9oZXgoYWIsIGRhdGEsIHNpemUpO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmQyNTkyMjQ2MGI2Mzc4IDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4rKysgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBzdGF0aWMgaW50IGZpbGxfcHNpbmZvKHN0cnVjdCBlbGZfcHJwc2luZm8gKnBzaW5mbywgc3RydWN0IHRhc2tfc3RydWN0ICpwLFxuIFx0U0VUX1VJRChwc2luZm8tXHUwMDNlcHJfdWlkLCBmcm9tX2t1aWRfbXVuZ2VkKGNyZWQtXHUwMDNldXNlcl9ucywgY3JlZC1cdTAwM2V1aWQpKTtcbiBcdFNFVF9HSUQocHNpbmZvLVx1MDAzZXByX2dpZCwgZnJvbV9rZ2lkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNlZ2lkKSk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdGdldF90YXNrX2NvbW0ocHNpbmZvLVx1MDAzZXByX2ZuYW1lLCBwKTtcbitcdHN0cnNjcHlfcGFkKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcC1cdTAwM2Vjb21tKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmMgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbmluZGV4IDdlMzEwODQ4OWM4M2NhLi5jNGQ0ZTU5ZmYzNGQxYiAxMDA2NDRcbi0tLSBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuKysrIGIvZnMvYmluZm10X2VsZl9mZHBpYy5jXG5AQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RhdGljIGludCBmaWxsX3BzaW5mbyhzdHJ1Y3QgZWxmX3BycHNpbmZvICpwc2luZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCxcbiBcdFNFVF9VSUQocHNpbmZvLVx1MDAzZXByX3VpZCwgZnJvbV9rdWlkX211bmdlZChjcmVkLVx1MDAzZXVzZXJfbnMsIGNyZWQtXHUwMDNldWlkKSk7XG4gXHRTRVRfR0lEKHBzaW5mby1cdTAwM2Vwcl9naWQsIGZyb21fa2dpZF9tdW5nZWQoY3JlZC1cdTAwM2V1c2VyX25zLCBjcmVkLVx1MDAzZWdpZCkpO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRnZXRfdGFza19jb21tKHBzaW5mby1cdTAwM2Vwcl9mbmFtZSwgcCk7XG4rXHRzdHJzY3B5X3BhZChwc2luZm8tXHUwMDNlcHJfZm5hbWUsIHAtXHUwMDNlY29tbSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvZnMvcHJvYy9hcnJheS5jIGIvZnMvcHJvYy9hcnJheS5jXG5pbmRleCA0NzllYThjYjRlZjQzZC4uMDQ5MGI5ZWYyNzg4NTAgMTAwNjQ0XG4tLS0gYS9mcy9wcm9jL2FycmF5LmNcbisrKyBiL2ZzL3Byb2MvYXJyYXkuY1xuQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIHByb2NfdGFza19uYW1lKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBib29sIGVzY2FwZSlcbiBcdGVsc2UgaWYgKHAtXHUwMDNlZmxhZ3MgXHUwMDI2IFBGX0tUSFJFQUQpXG4gXHRcdGdldF9rdGhyZWFkX2NvbW0odGNvbW0sIHNpemVvZih0Y29tbSksIHApO1xuIFx0ZWxzZVxuLVx0XHRnZXRfdGFza19jb21tKHRjb21tLCBwKTtcbitcdFx0c3Ryc2NweV9wYWQodGNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4gXG4gXHRpZiAoZXNjYXBlKVxuIFx0XHRzZXFfZXNjYXBlX3N0cihtLCB0Y29tbSwgRVNDQVBFX1NQQUNFIHwgRVNDQVBFX1NQRUNJQUwsIFwiXFxuXFxcXFwiKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmggYi9pbmNsdWRlL2xpbnV4L2NvcmVkdW1wLmhcbmluZGV4IDdiMzhlZTJlNzkxM2JlLi5kZWU4MmUzYzM1MGFmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvY29yZWR1bXAuaFxuKysrIGIvaW5jbHVkZS9saW51eC9jb3JlZHVtcC5oXG5AQCAtNTgsNyArNTgsNyBAQCBleHRlcm4gdm9pZCB2ZnNfY29yZWR1bXAoY29uc3Qga2VybmVsX3NpZ2luZm9fdCAqc2lnaW5mbyk7XG4gXHRkbyB7XHRcXFxuIFx0XHRjaGFyIGNvbW1bVEFTS19DT01NX0xFTl07XHRcXFxuIFx0XHQvKiBUaGlzIHdpbGwgYWx3YXlzIGJlIE5VTCB0ZXJtaW5hdGVkLiAqLyBcXFxuLVx0XHRtZW1jcHkoY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBzaXplb2YoY29tbSkpOyBcXFxuK1x0XHRjb3B5X3Rhc2tfY29tbShjb21tLCBjdXJyZW50LCBzaXplb2YoY29tbSkpOyBcXFxuIFx0XHRwcmludGtfcmF0ZWxpbWl0ZWQoTGV2ZWwgXCJjb3JlZHVtcDogJWQoJSpwRSk6IFwiIEZvcm1hdCBcIlxcblwiLFx0XFxcbiBcdFx0XHR0YXNrX3RnaWRfdm5yKGN1cnJlbnQpLCAoaW50KXN0cmxlbihjb21tKSwgY29tbSwgIyNfX1ZBX0FSR1NfXyk7XHRcXFxuIFx0fSB3aGlsZSAoMClcdFxcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oXG5pbmRleCAzNzNiY2MwNTk4ZDEwYi4uMGYxYjQwYTVkYmM2MGIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc2NoZWQuaFxuQEAgLTMyMyw2ICszMjMsNyBAQCBzdHJ1Y3QgdXNlcl9ldmVudF9tbTtcbiAgKi9cbiBlbnVtIHtcbiBcdFRBU0tfQ09NTV9MRU4gPSAxNixcbitcdFRBU0tfQ09NTV9FWFRfTEVOID0gNjQsXG4gfTtcbiBcbiBleHRlcm4gdm9pZCBzY2hlZF90aWNrKHZvaWQpO1xuQEAgLTExNzgsNyArMTE3OSw3IEBAIHN0cnVjdCB0YXNrX3N0cnVjdCB7XG4gXHQgKiAtIHNldCBpdCB3aXRoIHNldF90YXNrX2NvbW0oKSB0byBlbnN1cmUgaXQgaXMgYWx3YXlzXG4gXHQgKiAgIE5VTC10ZXJtaW5hdGVkIGFuZCB6ZXJvLXBhZGRlZFxuIFx0ICovXG4tXHRjaGFyXHRcdFx0XHRjb21tW1RBU0tfQ09NTV9MRU5dO1xuK1x0Y2hhclx0XHRcdFx0Y29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXG4gXHRzdHJ1Y3QgbmFtZWlkYXRhXHRcdCpuYW1laWRhdGE7XG4gXG5AQCAtMjAxNywyOCArMjAxOCwyMCBAQCBleHRlcm4gdm9pZCBraWNrX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0c2spO1xuIFxuIGV4dGVybiB2b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqZnJvbSwgYm9vbCBleGVjKTtcbiAjZGVmaW5lIHNldF90YXNrX2NvbW0odHNrLCBmcm9tKSAoe1x0XHRcdFxcXG4tXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGZyb20pICE9IFRBU0tfQ09NTV9MRU4pO1x0XFxcbitcdEJVSUxEX0JVR19PTihzaXplb2YoZnJvbSkgXHUwMDNjIFRBU0tfQ09NTV9MRU4pO1x0XFxcbiBcdF9fc2V0X3Rhc2tfY29tbSh0c2ssIGZyb20sIGZhbHNlKTtcdFx0XFxcbiB9KVxuIFxuIC8qXG4tICogLSBXaHkgbm90IHVzZSB0YXNrX2xvY2soKT9cbi0gKiAgIFVzZXIgc3BhY2UgY2FuIHJhbmRvbWx5IGNoYW5nZSB0aGVpciBuYW1lcyBhbnl3YXksIHNvIGxvY2tpbmcgZm9yIHJlYWRlcnNcbi0gKiAgIGRvZXNuJ3QgbWFrZSBzZW5zZS4gRm9yIHdyaXRlcnMsIGxvY2tpbmcgaXMgcHJvYmFibHkgbmVjZXNzYXJ5LCBhcyBhIHJhY2Vcbi0gKiAgIGNvbmRpdGlvbiBjb3VsZCBsZWFkIHRvIGxvbmctdGVybSBtaXhlZCByZXN1bHRzLlxuLSAqICAgVGhlIHN0cnNjcHlfcGFkKCkgaW4gX19zZXRfdGFza19jb21tKCkgY2FuIGVuc3VyZSB0aGF0IHRoZSB0YXNrIGNvbW0gaXNcbi0gKiAgIGFsd2F5cyBOVUwtdGVybWluYXRlZCBhbmQgemVyby1wYWRkZWQuIFRoZXJlZm9yZSB0aGUgcmFjZSBjb25kaXRpb24gYmV0d2VlblxuLSAqICAgcmVhZGVyIGFuZCB3cml0ZXIgaXMgbm90IGFuIGlzc3VlLlxuLSAqXG4tICogLSBCVUlMRF9CVUdfT04oKSBjYW4gaGVscCBwcmV2ZW50IHRoZSBidWYgZnJvbSBiZWluZyB0cnVuY2F0ZWQuXG4tICogICBTaW5jZSB0aGUgY2FsbGVycyBkb24ndCBwZXJmb3JtIGFueSByZXR1cm4gdmFsdWUgY2hlY2tzLCB0aGlzIHNhZmVndWFyZCBpc1xuLSAqICAgbmVjZXNzYXJ5LlxuKyAqIENvcHkgdGFzayBuYW1lIHRvIGEgYnVmZmVyLiBGaW5hbCByZXN1bHQgaXMgYWx3YXlzIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nLlxuICAqL1xuLSNkZWZpbmUgZ2V0X3Rhc2tfY29tbShidWYsIHRzaykgKHtcdFx0XHRcXFxuLVx0QlVJTERfQlVHX09OKHNpemVvZihidWYpIFx1MDAzYyBUQVNLX0NPTU1fTEVOKTtcdFxcXG4tXHRzdHJzY3B5X3BhZChidWYsICh0c2spLVx1MDAzZWNvbW0pO1x0XHRcdFxcXG4tXHRidWY7XHRcdFx0XHRcdFx0XFxcbi19KVxuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBjb3B5X3Rhc2tfY29tbShjaGFyICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzaXplX3QgbGVuKVxuK3tcbitcdGNvbnN0IGNoYXIgKl9zcmMgPSB0c2stXHUwMDNlY29tbTtcbitcbitcdG1lbWNweShkc3QsIF9zcmMsIGxlbik7XG4rXHRkc3RbbGVuIC0gMV0gPSAnXFwwJztcbit9XG4gXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIHNjaGVkdWxlcl9pcGkodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmggYi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQuaFxuaW5kZXggZTBkODM4YzljZTkzODIuLjliMDA5NGZhNDRjNjQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC5oXG5AQCAtNjM3LDEwICs2MzcsMTAgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcClcbiAgKlx0KlxuICAqXG4gICpcdFRQX2Zhc3RfYXNzaWduKFxuLSAqXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbisgKlx0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZW5leHRfY29tbSwgbmV4dCwgVEFTS19DT01NX0xFTik7XG4gICpcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3BpZFx0PSBwcmV2LVx1MDAzZXBpZDtcbiAgKlx0XHRfX2VudHJ5LVx1MDAzZXByZXZfcHJpb1x0PSBwcmV2LVx1MDAzZXByaW87XG4tICpcdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuKyAqXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LCBUQVNLX0NPTU1fTEVOKTtcbiAgKlx0XHRfX2VudHJ5LVx1MDAzZW5leHRfcGlkXHQ9IG5leHQtXHUwMDNlcGlkO1xuICAqXHRcdF9fZW50cnktXHUwMDNlbmV4dF9wcmlvXHQ9IG5leHQtXHUwMDNlcHJpbztcbiAgKlx0KSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuaW5kZXggOWM5N2ExNjg1MGI5MjIuLjFlM2E5ZGVkMDNiZDRmIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaFxuQEAgLTIxMyw3ICsyMTMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX3JxLFxuIFxuIFx0XHRibGtfZmlsbF9yd2JzKF9fZW50cnktXHUwMDNlcndicywgcnEtXHUwMDNlY21kX2ZsYWdzKTtcbiBcdFx0X19nZXRfc3RyKGNtZClbMF0gPSAnXFwwJztcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCIlZCwlZCAlcyAldSAoJXMpICVsbHUgKyAldSAlcywldSwldSBbJXNdXCIsXG5AQCAtNDEwLDcgKzQxMCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfYmlvLFxuIFx0XHRfX2VudHJ5LVx1MDAzZXNlY3Rvclx0XHQ9IGJpby1cdTAwM2ViaV9pdGVyLmJpX3NlY3RvcjtcbiBcdFx0X19lbnRyeS1cdTAwM2Vucl9zZWN0b3JcdD0gYmlvX3NlY3RvcnMoYmlvKTtcbiBcdFx0YmxrX2ZpbGxfcndicyhfX2VudHJ5LVx1MDAzZXJ3YnMsIGJpby1cdTAwM2ViaV9vcGYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcIiVkLCVkICVzICVsbHUgKyAldSBbJXNdXCIsXG5AQCAtNDkzLDcgKzQ5Myw3IEBAIFRSQUNFX0VWRU5UKGJsb2NrX3BsdWcsXG4gXHQpLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwiWyVzXVwiLCBfX2VudHJ5LVx1MDAzZWNvbW0pXG5AQCAtNTEyLDcgKzUxMiw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmxvY2tfdW5wbHVnLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlbnJfcnEgPSBkZXB0aDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LCBUQVNLX0NPTU1fTEVOKTtcbiBcdCksXG4gXG4gXHRUUF9wcmludGsoXCJbJXNdICVkXCIsIF9fZW50cnktXHUwMDNlY29tbSwgX19lbnRyeS1cdTAwM2Vucl9ycSlcbkBAIC01NjMsNyArNTYzLDcgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfc3BsaXQsXG4gXHRcdF9fZW50cnktXHUwMDNlc2VjdG9yXHRcdD0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW5ld19zZWN0b3JcdD0gbmV3X3NlY3RvcjtcbiBcdFx0YmxrX2ZpbGxfcndicyhfX2VudHJ5LVx1MDAzZXJ3YnMsIGJpby1cdTAwM2ViaV9vcGYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0KSxcbiBcbiBcdFRQX3ByaW50ayhcIiVkLCVkICVzICVsbHUgLyAlbGx1IFslc11cIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9jb3JlZHVtcC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuaW5kZXggYzdiOWM1M2ZjNDk4NjkuLmZkZDIwYmM0NmJiMDI3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvY29yZWR1bXAuaFxuQEAgLTMyLDcgKzMyLDcgQEAgVFJBQ0VfRVZFTlQoY29yZWR1bXAsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VzaWcgPSBzaWc7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgY3VycmVudCwgVEFTS19DT01NX0xFTik7XG4gXHQpLFxuIFxuIFx0VFBfcHJpbnRrKFwic2lnPSVkIGNvbW09JXNcIixcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmhcbmluZGV4IDI3MGMxYTJjMjRjNDRhLi43ZDIyNjUwYjRjNzg1ZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oXG5AQCAtMjUwNSw3ICsyNTA1LDcgQEAgVFJBQ0VfRVZFTlQoZjJmc19sb2NrX2VsYXBzZWRfdGltZSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuIFx0XHRfX2VudHJ5LVx1MDAzZWRldlx0XHQ9IHNiaS1cdTAwM2VzYi1cdTAwM2VzX2Rldjtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0PSBwLVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmlvXHRcdD0gcC1cdTAwM2VwcmlvO1xuIFx0XHRfX2VudHJ5LVx1MDAzZWlvcHJpb19jbGFzc1x0PSBJT1BSSU9fUFJJT19DTEFTUyhpb3ByaW8pO1xuQEAgLTI1NTgsNyArMjU1OCw3IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoZjJmc19wcmlvcml0eV91cGRhdGUsXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VkZXZcdFx0PSBzYmktXHUwMDNlc2ItXHUwMDNlc19kZXY7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHAtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgcCwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdD0gcC1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlbG9ja19uYW1lXHQ9IGxvY2tfbmFtZTtcbiBcdFx0X19lbnRyeS1cdTAwM2Vpc193cml0ZVx0PSBpc193cml0ZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29vbS5oXG5pbmRleCA5ZjBhNWQxNDgyYzQ0OC4uOGJjZGM0ZmZjOGQzNDQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vb20uaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvb29tLmhcbkBAIC0yMyw3ICsyMyw3IEBAIFRSQUNFX0VWRU5UKG9vbV9zY29yZV9hZGpfdXBkYXRlLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdGFzay1cdTAwM2VwaWQ7XG4tXHRcdG1lbWNweShfX2VudHJ5LVx1MDAzZWNvbW0sIHRhc2stXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlY29tbSwgdGFzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlb29tX3Njb3JlX2FkaiA9IHRhc2stXHUwMDNlc2lnbmFsLVx1MDAzZW9vbV9zY29yZV9hZGo7XG4gXHQpLFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL29zbm9pc2UuaFxuaW5kZXggM2Y0MjczNjIzODAxNGUuLjJjZjA0N2JiOWZiNzFkIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvb3Nub2lzZS5oXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9vc25vaXNlLmhcbkBAIC0xMTYsNyArMTE2LDcgQEAgVFJBQ0VfRVZFTlQodGhyZWFkX25vaXNlLFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCB0LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHQsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZCA9IHQtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXN0YXJ0ID0gc3RhcnQ7XG4gXHRcdF9fZW50cnktXHUwMDNlZHVyYXRpb24gPSBkdXJhdGlvbjtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zY2hlZC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuaW5kZXggNTM1ODYwNTgxZjE1OTQuLmFmYjI0ZTlkYWM5MWUxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2NoZWQuaFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKHNjaGVkX3dha2V1cF90ZW1wbGF0ZSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgcC1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCBwLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdFx0PSBwLVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmlvXHRcdD0gcC1cdTAwM2VwcmlvOyAvKiBYWFggU0NIRURfREVBRExJTkUgKi9cbiBcdFx0X19lbnRyeS1cdTAwM2V0YXJnZXRfY3B1XHQ9IHRhc2tfY3B1KHApO1xuQEAgLTIzNywxMSArMjM3LDExIEBAIFRSQUNFX0VWRU5UKHNjaGVkX3N3aXRjaCxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlcHJldl9jb21tLCBwcmV2LVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZXByZXZfY29tbSwgcHJldiwgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9waWRcdD0gcHJldi1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlcHJldl9wcmlvXHQ9IHByZXYtXHUwMDNlcHJpbztcbiBcdFx0X19lbnRyeS1cdTAwM2VwcmV2X3N0YXRlXHQ9IF9fdHJhY2Vfc2NoZWRfc3dpdGNoX3N0YXRlKHByZWVtcHQsIHByZXZfc3RhdGUsIHByZXYpO1xuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2VuZXh0X2NvbW0sIG5leHQtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGNvcHlfdGFza19jb21tKF9fZW50cnktXHUwMDNlbmV4dF9jb21tLCBuZXh0LCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3BpZFx0PSBuZXh0LVx1MDAzZXBpZDtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZXh0X3ByaW9cdD0gbmV4dC1cdTAwM2VwcmlvO1xuIFx0XHQvKiBYWFggU0NIRURfREVBRExJTkUgKi9cbkBAIC0zNDYsNyArMzQ2LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfcHJvY2Vzc19leGl0LFxuIFx0KSxcbiBcbiBcdFRQX2Zhc3RfYXNzaWduKFxuLVx0XHRtZW1jcHkoX19lbnRyeS1cdTAwM2Vjb21tLCBwLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHAsIFRBU0tfQ09NTV9MRU4pO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXBpZFx0XHQ9IHAtXHUwMDNlcGlkO1xuIFx0XHRfX2VudHJ5LVx1MDAzZXByaW9cdFx0PSBwLVx1MDAzZXByaW87IC8qIFhYWCBTQ0hFRF9ERUFETElORSAqL1xuIFx0XHRfX2VudHJ5LVx1MDAzZWdyb3VwX2RlYWRcdD0gZ3JvdXBfZGVhZDtcbkBAIC03ODcsNyArNzg3LDcgQEAgVFJBQ0VfRVZFTlQoc2NoZWRfc2tpcF9jcHVzZXRfbnVtYSxcbiBcdCksXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdHNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShfX2VudHJ5LVx1MDAzZWNvbW0sIHRzaywgVEFTS19DT01NX0xFTik7XG4gXHRcdF9fZW50cnktXHUwMDNlcGlkXHRcdCA9IHRhc2tfcGlkX25yKHRzayk7XG4gXHRcdF9fZW50cnktXHUwMDNldGdpZFx0XHQgPSB0YXNrX3RnaWRfbnIodHNrKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VuZ2lkXHRcdCA9IHRhc2tfbnVtYV9ncm91cF9pZCh0c2spO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc2lnbmFsLmhcbmluZGV4IDFkYjdlNGIwN2MwMTQ4Li44ZmZmZTZkOWJkY2NmMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3NpZ25hbC5oXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaFxuQEAgLTY3LDcgKzY3LDcgQEAgVFJBQ0VfRVZFTlQoc2lnbmFsX2dlbmVyYXRlLFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlc2lnXHQ9IHNpZztcbiBcdFx0VFBfU1RPUkVfU0lHSU5GTyhfX2VudHJ5LCBpbmZvKTtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWRcdD0gdGFzay1cdTAwM2VwaWQ7XG4gXHRcdF9fZW50cnktXHUwMDNlZ3JvdXBcdD0gZ3JvdXA7XG4gXHRcdF9fZW50cnktXHUwMDNlcmVzdWx0XHQ9IHJlc3VsdDtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy90YXNrLmhcbmluZGV4IGI5YTEyOWViNTRkOWViLi42MmI3ZGY0ZDIyZDA1MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3Rhc2suaFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvdGFzay5oXG5AQCAtMjEsNyArMjEsNyBAQCBUUkFDRV9FVkVOVCh0YXNrX25ld3Rhc2ssXG4gXG4gXHRUUF9mYXN0X2Fzc2lnbihcbiBcdFx0X19lbnRyeS1cdTAwM2VwaWQgPSB0YXNrLVx1MDAzZXBpZDtcbi1cdFx0bWVtY3B5KF9fZW50cnktXHUwMDNlY29tbSwgdGFzay1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0Y29weV90YXNrX2NvbW0oX19lbnRyeS1cdTAwM2Vjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbiBcdFx0X19lbnRyeS1cdTAwM2VjbG9uZV9mbGFncyA9IGNsb25lX2ZsYWdzO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbkBAIC00Niw4ICs0Niw5IEBAIFRSQUNFX0VWRU5UKHRhc2tfcmVuYW1lLFxuIFxuIFx0VFBfZmFzdF9hc3NpZ24oXG4gXHRcdF9fZW50cnktXHUwMDNlcGlkID0gdGFzay1cdTAwM2VwaWQ7XG4tXHRcdG1lbWNweShlbnRyeS1cdTAwM2VvbGRjb21tLCB0YXNrLVx1MDAzZWNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuLVx0XHRzdHJzY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRjb3B5X3Rhc2tfY29tbShlbnRyeS1cdTAwM2VvbGRjb21tLCB0YXNrLCBUQVNLX0NPTU1fTEVOKTtcbitcdFx0bWVtY3B5KGVudHJ5LVx1MDAzZW5ld2NvbW0sIGNvbW0sIFRBU0tfQ09NTV9MRU4pO1xuK1x0XHRlbnRyeS1cdTAwM2VuZXdjb21tW1RBU0tfQ09NTV9MRU4gLSAxXSA9ICdcXDAnO1xuIFx0XHRfX2VudHJ5LVx1MDAzZW9vbV9zY29yZV9hZGogPSB0YXNrLVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqO1xuIFx0KSxcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9wcmN0bC5oXG5pbmRleCBiNmVjNmY2OTM3MTk1Zi4uYTA3ZjhlZGFkZDY1MjMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvcHJjdGwuaFxuKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3ByY3RsLmhcbkBAIC01Niw2ICs1Niw5IEBAXG4gI2RlZmluZSBQUl9TRVRfTkFNRSAgICAxNVx0XHQvKiBTZXQgcHJvY2VzcyBuYW1lICovXG4gI2RlZmluZSBQUl9HRVRfTkFNRSAgICAxNlx0XHQvKiBHZXQgcHJvY2VzcyBuYW1lICovXG4gXG4rI2RlZmluZSBQUl9TRVRfRVhUX05BTUUgICAgMTdcdFx0LyogU2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZSAqL1xuKyNkZWZpbmUgUFJfR0VUX0VYVF9OQU1FICAgIDE4XHRcdC8qIEdldCBleHRlbmRlZCBwcm9jZXNzIG5hbWUgKi9cbitcbiAvKiBHZXQvc2V0IHByb2Nlc3MgZW5kaWFuICovXG4gI2RlZmluZSBQUl9HRVRfRU5ESUFOXHQxOVxuICNkZWZpbmUgUFJfU0VUX0VORElBTlx0MjBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXQuYyBiL2tlcm5lbC9hdWRpdC5jXG5pbmRleCA1NjI0NzY5MzdmYTc5My4uMWYwYjQ0ZDRlNWM3NWEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYXVkaXQuY1xuKysrIGIva2VybmVsL2F1ZGl0LmNcbkBAIC0xNjY3LDcgKzE2NjcsOCBAQCBzdGF0aWMgdm9pZCBhdWRpdF9sb2dfbXVsdGljYXN0KGludCBncm91cCwgY29uc3QgY2hhciAqb3AsIGludCBlcnIpXG4gXHRhdWRpdF9wdXRfdHR5KHR0eSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsgLyogc3Viaj0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIGNvbW09XCIpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7IC8qIGV4ZT0gKi9cbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG5sLW1jZ3JwPSVkIG9wPSVzIHJlcz0lZFwiLCBncm91cCwgb3AsICFlcnIpO1xuIFx0YXVkaXRfbG9nX2VuZChhYik7XG5AQCAtMjQ3Niw3ICsyNDc3LDggQEAgdm9pZCBhdWRpdF9sb2dfdGFza19pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiKVxuIFx0XHRcdCBhdWRpdF9nZXRfc2Vzc2lvbmlkKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X3B1dF90dHkodHR5KTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIGNvbW09XCIpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0c2MuYyBiL2tlcm5lbC9hdWRpdHNjLmNcbmluZGV4IDY2MTBlNjY3YzcyOGFhLi4xZDkzMGYxNjk4NTZkNCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9hdWRpdHNjLmNcbisrKyBiL2tlcm5lbC9hdWRpdHNjLmNcbkBAIC0yODc3LDcgKzI4NzcsOCBAQCB2b2lkIF9fYXVkaXRfbG9nX25mY2ZnKGNvbnN0IGNoYXIgKm5hbWUsIHU4IGFmLCB1bnNpZ25lZCBpbnQgbmVudHJpZXMsXG4gXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcIiBwaWQ9JXVcIiwgdGFza190Z2lkX25yKGN1cnJlbnQpKTtcbiBcdGF1ZGl0X2xvZ190YXNrX2NvbnRleHQoYWIpOyAvKiBzdWJqPSAqL1xuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgY29tbT1cIik7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcdGF1ZGl0X2xvZ19lbmQoYWIpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChfX2F1ZGl0X2xvZ19uZmNmZyk7XG5AQCAtMjkwMCw3ICsyOTAxLDggQEAgc3RhdGljIHZvaWQgYXVkaXRfbG9nX3Rhc2soc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIpXG4gXHRcdFx0IHNlc3Npb25pZCk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIHBpZD0lZCBjb21tPVwiLCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXHRhdWRpdF9sb2dfZF9wYXRoX2V4ZShhYiwgY3VycmVudC1cdTAwM2VtbSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9wcmludGsvbmJjb24uYyBiL2tlcm5lbC9wcmludGsvbmJjb24uY1xuaW5kZXggNGIwM2IwMTljZDVlZTIuLmY0YzVhZThhMzUzMGY3IDEwMDY0NFxuLS0tIGEva2VybmVsL3ByaW50ay9uYmNvbi5jXG4rKysgYi9rZXJuZWwvcHJpbnRrL25iY29uLmNcbkBAIC05NTIsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgd2N0eHRfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBuYmNvbl93cml0ZV9jb250ZXh0ICp3Y3R4dCxcbiB7XG4gXHR3Y3R4dC1cdTAwM2VjcHUgPSBwbXNnLVx1MDAzZWNwdTtcbiBcdHdjdHh0LVx1MDAzZXBpZCA9IHBtc2ctXHUwMDNlcGlkO1xuLVx0bWVtY3B5KHdjdHh0LVx1MDAzZWNvbW0sIHBtc2ctXHUwMDNlY29tbSwgc2l6ZW9mKHdjdHh0LVx1MDAzZWNvbW0pKTtcbitcdGNvcHlfdGFza19jb21tKHdjdHh0LVx1MDAzZWNvbW0sIHBtc2csIHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSk7XG4gXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih3Y3R4dC1cdTAwM2Vjb21tKSA9PSBzaXplb2YocG1zZy1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3ByaW50ay9wcmludGsuYyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbmluZGV4IDJmZTlhOTYzYzgyM2E0Li5lYzBjNjczNGJiZTFjZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbisrKyBiL2tlcm5lbC9wcmludGsvcHJpbnRrLmNcbkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBzdGF0aWMgdTE2IHByaW50a19zcHJpbnQoY2hhciAqdGV4dCwgdTE2IHNpemUsIGludCBmYWNpbGl0eSxcbiBzdGF0aWMgdm9pZCBwcmludGtfc3RvcmVfZXhlY3V0aW9uX2N0eChzdHJ1Y3QgcHJpbnRrX2luZm8gKmluZm8pXG4ge1xuIFx0aW5mby1cdTAwM2VjYWxsZXJfaWQyID0gcHJpbnRrX2NhbGxlcl9pZDIoKTtcbi1cdGdldF90YXNrX2NvbW0oaW5mby1cdTAwM2Vjb21tLCBjdXJyZW50KTtcbitcdHN0cnNjcHlfcGFkKGluZm8tXHUwMDNlY29tbSwgY3VycmVudC1cdTAwM2Vjb21tKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcG1zZ19sb2FkX2V4ZWN1dGlvbl9jdHgoc3RydWN0IHByaW50a19tZXNzYWdlICpwbXNnLFxuQEAgLTIyNTUsNyArMjI1NSw3IEBAIHN0YXRpYyB2b2lkIHBtc2dfbG9hZF9leGVjdXRpb25fY3R4KHN0cnVjdCBwcmludGtfbWVzc2FnZSAqcG1zZyxcbiB7XG4gXHRwbXNnLVx1MDAzZWNwdSA9IHByaW50a19pbmZvX2dldF9jcHUoaW5mbyk7XG4gXHRwbXNnLVx1MDAzZXBpZCA9IHByaW50a19pbmZvX2dldF9waWQoaW5mbyk7XG4tXHRtZW1jcHkocG1zZy1cdTAwM2Vjb21tLCBpbmZvLVx1MDAzZWNvbW0sIHNpemVvZihwbXNnLVx1MDAzZWNvbW0pKTtcbitcdGNvcHlfdGFza19jb21tKHBtc2ctXHUwMDNlY29tbSwgaW5mbywgc2l6ZW9mKHBtc2ctXHUwMDNlY29tbSkpO1xuIFx0c3RhdGljX2Fzc2VydChzaXplb2YocG1zZy1cdTAwM2Vjb21tKSA9PSBzaXplb2YoaW5mby1cdTAwM2Vjb21tKSk7XG4gfVxuICNlbHNlXG5kaWZmIC0tZ2l0IGEva2VybmVsL3N5cy5jIGIva2VybmVsL3N5cy5jXG5pbmRleCBkZjY5YmQ3MWRlMDMyYy4uMjZkNTAyNmY5NTkwNjEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvc3lzLmNcbisrKyBiL2tlcm5lbC9zeXMuY1xuQEAgLTI1MzUsNyArMjUzNSw3IEBAIFNZU0NBTExfREVGSU5FNShwcmN0bCwgaW50LCBvcHRpb24sIHVuc2lnbmVkIGxvbmcsIGFyZzIsIHVuc2lnbmVkIGxvbmcsIGFyZzMsXG4gXHRcdHVuc2lnbmVkIGxvbmcsIGFyZzQsIHVuc2lnbmVkIGxvbmcsIGFyZzUpXG4ge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICptZSA9IGN1cnJlbnQ7XG4tXHR1bnNpZ25lZCBjaGFyIGNvbW1bc2l6ZW9mKG1lLVx1MDAzZWNvbW0pXTtcbitcdHVuc2lnbmVkIGNoYXIgY29tbVtUQVNLX0NPTU1fRVhUX0xFTl07XG4gXHRsb25nIGVycm9yO1xuIFxuIFx0ZXJyb3IgPSBzZWN1cml0eV90YXNrX3ByY3RsKG9wdGlvbiwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7XG5AQCAtMjYwMSwxNiArMjYwMSwyOSBAQCBTWVNDQUxMX0RFRklORTUocHJjdGwsIGludCwgb3B0aW9uLCB1bnNpZ25lZCBsb25nLCBhcmcyLCB1bnNpZ25lZCBsb25nLCBhcmczLFxuIFx0XHRcdGVycm9yID0gLUVJTlZBTDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBSX1NFVF9OQU1FOlxuLVx0XHRjb21tW3NpemVvZihtZS1cdTAwM2Vjb21tKSAtIDFdID0gMDtcbitcdFx0Y29tbVtUQVNLX0NPTU1fTEVOIC0gMV0gPSAwO1xuIFx0XHRpZiAoc3RybmNweV9mcm9tX3VzZXIoY29tbSwgKGNoYXIgX191c2VyICopYXJnMixcbi1cdFx0XHRcdCAgICAgIHNpemVvZihtZS1cdTAwM2Vjb21tKSAtIDEpIFx1MDAzYyAwKVxuK1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0xFTiAtIDEpIFx1MDAzYyAwKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRzZXRfdGFza19jb21tKG1lLCBjb21tKTtcbiBcdFx0cHJvY19jb21tX2Nvbm5lY3RvcihtZSk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBQUl9HRVRfTkFNRTpcbi1cdFx0Z2V0X3Rhc2tfY29tbShjb21tLCBtZSk7XG4tXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgc2l6ZW9mKGNvbW0pKSlcbitcdFx0c3Ryc2NweV9wYWQoY29tbSwgbWUtXHUwMDNlY29tbSwgVEFTS19DT01NX0xFTik7XG4rXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0xFTikpXG4rXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQUl9TRVRfRVhUX05BTUU6XG4rXHRcdGNvbW1bVEFTS19DT01NX0VYVF9MRU4gLSAxXSA9IDA7XG4rXHRcdGlmIChzdHJuY3B5X2Zyb21fdXNlcihjb21tLCAoY2hhciBfX3VzZXIgKilhcmcyLFxuK1x0XHRcdFx0ICAgICAgVEFTS19DT01NX0VYVF9MRU4gLSAxKSBcdTAwM2MgMClcbitcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0c2V0X3Rhc2tfY29tbShtZSwgY29tbSk7XG4rXHRcdHByb2NfY29tbV9jb25uZWN0b3IobWUpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUFJfR0VUX0VYVF9OQU1FOlxuK1x0XHRzdHJzY3B5X3BhZChjb21tLCBtZS1cdTAwM2Vjb21tLCBUQVNLX0NPTU1fRVhUX0xFTik7XG4rXHRcdGlmIChjb3B5X3RvX3VzZXIoKGNoYXIgX191c2VyICopYXJnMiwgY29tbSwgVEFTS19DT01NX0VYVF9MRU4pKVxuIFx0XHRcdHJldHVybiAtRUZBVUxUO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUFJfR0VUX0VORElBTjpcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmMgYi9saWIvdGVzdHMvc3RyaW5nX2t1bml0LmNcbmluZGV4IDA4MTlhY2U1YjAyNzU3Li41ZDI2MDI5ZDJkMDEyZCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9zdHJpbmdfa3VuaXQuY1xuKysrIGIvbGliL3Rlc3RzL3N0cmluZ19rdW5pdC5jXG5AQCAtODgxLDYgKzg4MSw0MyBAQCBzdGF0aWMgdm9pZCBzdHJpbmdfYmVuY2hfc3RycmNocihzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4gXHRTVFJJTkdfQkVOQ0hfQlVGKHRlc3QsIGJ1ZiwgbGVuLCBzdHJyY2hyLCBidWYsICdcXDAnKTtcbiB9XG4gXG4rI2RlZmluZSBUQVNLX05BTUUgXCJ0YXNrX25hbWVcIlxuKyNkZWZpbmUgVEFTS19OQU1FX0xFTiA5XG4rI2RlZmluZSBUQVNLX01BWF9MRU4gVEFTS19DT01NX0VYVF9MRU5cbisjZGVmaW5lIFNNQUxMRVJfTEVOIFRBU0tfTkFNRV9MRU4gLSAzXG4rI2RlZmluZSBCSUdHRVJfTEVOIFRBU0tfTUFYX0xFTiArIDNcbitcbitzdGF0aWMgdm9pZCBzdHJpbmdfY29weV90YXNrX2NvbW0oc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdGNoYXIgc3RyW1RBU0tfTUFYX0xFTl0gPSBUQVNLX05BTUUsIGNvcHlbVEFTS19NQVhfTEVOXSxcbitcdCAgICAgc21hbGxlcl9idWZbU01BTExFUl9MRU5dLCBiaWdnZXJfYnVmW0JJR0dFUl9MRU5dO1xuK1x0c3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNrLCAqdHNrID0gXHUwMDI2dGFzaztcbitcdGludCBsZW4xLCBsZW4yLCBpO1xuK1xuK1x0Lyogc2V0IGFuZCBnZXQgdGFzayBuYW1lICovXG4rXHRzZXRfdGFza19jb21tKHRzaywgc3RyKTtcbitcdGNvcHlfdGFza19jb21tKGNvcHksIHRzaywgVEFTS19DT01NX0xFTik7XG4rXG4rXHRsZW4xID0gc3RybGVuKHN0cik7XG4rXHRsZW4yID0gc3RybGVuKGNvcHkpO1xuK1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjEsIGxlbjIpO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGxlbjIsIFRBU0tfTkFNRV9MRU4pO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIGNvcHlbbGVuMl0sICdcXDAnKTtcbitcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJjbXAoc3RyLCBjb3B5KSk7XG4rXG4rXHQvKiBjb3B5IHRvIGEgc21hbGxlciBkc3QgYnVmZmVyICovXG4rXHRjb3B5X3Rhc2tfY29tbShzbWFsbGVyX2J1ZiwgdHNrLCBzaXplb2Yoc21hbGxlcl9idWYpKTtcbitcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsICFzdHJuY21wKHN0ciwgc21hbGxlcl9idWYsIFNNQUxMRVJfTEVOIC0gMSkpO1xuK1x0S1VOSVRfQVNTRVJUX0VRKHRlc3QsIHNtYWxsZXJfYnVmW1NNQUxMRVJfTEVOIC0gMV0sICdcXDAnKTtcbitcbitcdC8qIGNvcHkgdG8gYSBiaWdnZXIgZHN0IGJ1ZmZlciAqL1xuK1x0Y29weV90YXNrX2NvbW0oYmlnZ2VyX2J1ZiwgdHNrLCBzaXplb2YoYmlnZ2VyX2J1ZikpO1xuK1x0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgIXN0cm5jbXAoc3RyLCBiaWdnZXJfYnVmLCBUQVNLX05BTUVfTEVOKSk7XG4rXHRmb3IgKGkgPSBUQVNLX05BTUVfTEVOOyBpIFx1MDAzYyBCSUdHRVJfTEVOOyBpKyspXG4rXHRcdEtVTklUX0FTU0VSVF9FUSh0ZXN0LCBiaWdnZXJfYnVmW2ldLCAnXFwwJyk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBzdHJpbmdfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShzdHJpbmdfdGVzdF9tZW1zZXQxNiksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ190ZXN0X21lbXNldDMyKSxcbkBAIC05MTAsNiArOTQ3LDcgQEAgc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIHN0cmluZ190ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJubGVuKSxcbiBcdEtVTklUX0NBU0Uoc3RyaW5nX2JlbmNoX3N0cmNociksXG4gXHRLVU5JVF9DQVNFKHN0cmluZ19iZW5jaF9zdHJyY2hyKSxcbitcdEtVTklUX0NBU0Uoc3RyaW5nX2NvcHlfdGFza19jb21tKSxcbiBcdHt9XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmNcbmluZGV4IDA3MGNhMzg4ZjlhY2U4Li40ZTY2Y2IyZDk1NDljNiAxMDA2NDRcbi0tLSBhL25ldC9ibHVldG9vdGgvaGNpX3NvY2suY1xuKysrIGIvbmV0L2JsdWV0b290aC9oY2lfc29jay5jXG5AQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBib29sIGhjaV9zb2NrX2dlbl9jb29raWUoc3RydWN0IHNvY2sgKnNrKVxuIFx0XHRcdGlkID0gMHhmZmZmZmZmZjtcbiBcbiBcdFx0aGNpX3BpKHNrKS1cdTAwM2Vjb29raWUgPSBpZDtcbi1cdFx0Z2V0X3Rhc2tfY29tbShoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQpO1xuK1x0XHRzdHJzY3B5X3BhZChoY2lfcGkoc2spLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbmluZGV4IGE5ZWFmOTQ1NWM3NzgzLi5jNTU1NWVlZDFiNjJkMiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuQEAgLTk3MTgsOSArOTcxOCwxMSBAQCBzdGF0aWMgaW50IG5mX3RhYmxlc19maWxsX2dlbl9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmICghbmxoKVxuIFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbitcdHN0cnNjcHlfcGFkKGJ1ZiwgY3VycmVudC1cdTAwM2Vjb21tKTtcbitcbiBcdGlmIChubGFfcHV0X2JlMzIoc2tiLCBORlRBX0dFTl9JRCwgaHRvbmwobmZ0X2Jhc2Vfc2VxKG5ldCkpKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUzMihza2IsIE5GVEFfR0VOX1BST0NfUElELCBodG9ubCh0YXNrX3BpZF9ucihjdXJyZW50KSkpIHx8XG4tXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGdldF90YXNrX2NvbW0oYnVmLCBjdXJyZW50KSkpXG4rXHQgICAgbmxhX3B1dF9zdHJpbmcoc2tiLCBORlRBX0dFTl9QUk9DX05BTUUsIGJ1ZikpXG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFxuIFx0bmxtc2dfZW5kKHNrYiwgbmxoKTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmMgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW50ZWdyaXR5X2F1ZGl0LmNcbmluZGV4IGQ4ZDllNWZmMWNkMjJiLi45ODA2MDA2MDkyOWRhOSAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2ludGVncml0eS9pbnRlZ3JpdHlfYXVkaXQuY1xuKysrIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ludGVncml0eV9hdWRpdC5jXG5AQCAtNTQsNyArNTQsOCBAQCB2b2lkIGludGVncml0eV9hdWRpdF9tZXNzYWdlKGludCBhdWRpdF9tc2dubywgc3RydWN0IGlub2RlICppbm9kZSxcbiBcdFx0XHQgYXVkaXRfZ2V0X3Nlc3Npb25pZChjdXJyZW50KSk7XG4gXHRhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTtcbiBcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG9wPSVzIGNhdXNlPSVzIGNvbW09XCIsIG9wLCBjYXVzZSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKG5hbWUsIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKG5hbWUsIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBuYW1lKTtcbiBcdGlmIChmbmFtZSkge1xuIFx0XHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcIiBuYW1lPVwiKTtcbiBcdFx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZm5hbWUpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jIGIvc2VjdXJpdHkvaXBlL2F1ZGl0LmNcbmluZGV4IDkzZmI1OWZiZGRkNjBiLi45MGE2YWNmYjdjZGZjZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2lwZS9hdWRpdC5jXG4rKysgYi9zZWN1cml0eS9pcGUvYXVkaXQuY1xuQEAgLTE0NSw3ICsxNDUsOCBAQCB2b2lkIGlwZV9hdWRpdF9tYXRjaChjb25zdCBzdHJ1Y3QgaXBlX2V2YWxfY3R4ICpjb25zdCBjdHgsXG4gXHRhdWRpdF9sb2dfZm9ybWF0KGFiLCBcImlwZV9vcD0lcyBpcGVfaG9vaz0lcyBlbmZvcmNpbmc9JWQgcGlkPSVkIGNvbW09XCIsXG4gXHRcdFx0IG9wLCBhdWRpdF9ob29rX25hbWVzW2N0eC1cdTAwM2Vob29rXSwgUkVBRF9PTkNFKGVuZm9yY2UpLFxuIFx0XHRcdCB0YXNrX3RnaWRfbnIoY3VycmVudCkpO1xuLVx0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgZ2V0X3Rhc2tfY29tbShjb21tLCBjdXJyZW50KSk7XG4rXHRzdHJzY3B5X3BhZChjb21tLCBjdXJyZW50LVx1MDAzZWNvbW0pO1xuK1x0YXVkaXRfbG9nX3VudHJ1c3RlZHN0cmluZyhhYiwgY29tbSk7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWZpbGUpIHtcbiBcdFx0YXVkaXRfbG9nX2RfcGF0aChhYiwgXCIgcGF0aD1cIiwgXHUwMDI2Y3R4LVx1MDAzZWZpbGUtXHUwMDNlZl9wYXRoKTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uYyBiL3NlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5jXG5pbmRleCA5YTgzNTVmY2NkMjZlYi4uYjJmYzdmNzIyZDY5MDggMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9sYW5kbG9jay9kb21haW4uY1xuKysrIGIvc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmNcbkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBsYW5kbG9ja19kZXRhaWxzICpnZXRfY3VycmVudF9kZXRhaWxzKHZvaWQpXG4gXHRtZW1jcHkoZGV0YWlscy1cdTAwM2VleGVfcGF0aCwgcGF0aF9zdHIsIHBhdGhfc2l6ZSk7XG4gXHRkZXRhaWxzLVx1MDAzZXBpZCA9IGdldF9waWQodGFza190Z2lkKGN1cnJlbnQpKTtcbiBcdGRldGFpbHMtXHUwMDNldWlkID0gZnJvbV9rdWlkKFx1MDAyNmluaXRfdXNlcl9ucywgY3VycmVudF91aWQoKSk7XG4tXHRnZXRfdGFza19jb21tKGRldGFpbHMtXHUwMDNlY29tbSwgY3VycmVudCk7XG4rXHRzdHJzY3B5X3BhZChkZXRhaWxzLVx1MDAzZWNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4gXHRyZXR1cm4gZGV0YWlscztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmMgYi9zZWN1cml0eS9sc21fYXVkaXQuY1xuaW5kZXggNzM3ZjVhMjYzYThmNzkuLmE1ODdmZmVjZDk4NTJjIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkvbHNtX2F1ZGl0LmNcbisrKyBiL3NlY3VyaXR5L2xzbV9hdWRpdC5jXG5AQCAtMjc2LDggKzI3Niw4IEBAIHZvaWQgYXVkaXRfbG9nX2xzbV9kYXRhKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLFxuIFx0XHRcdGlmIChwaWQpIHtcbiBcdFx0XHRcdGNoYXIgdHNrY29tbVtzaXplb2YodHNrLVx1MDAzZWNvbW0pXTtcbiBcdFx0XHRcdGF1ZGl0X2xvZ19mb3JtYXQoYWIsIFwiIG9waWQ9JWQgb2NvbW09XCIsIHBpZCk7XG4tXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLFxuLVx0XHRcdFx0ICAgIGdldF90YXNrX2NvbW0odHNrY29tbSwgdHNrKSk7XG4rXHRcdFx0XHRzdHJzY3B5X3BhZCh0c2tjb21tLCB0c2stXHUwMDNlY29tbSk7XG4rXHRcdFx0XHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCB0c2tjb21tKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNDE3LDcgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfY29tbW9uX2F1ZGl0X2RhdGEoc3RydWN0IGF1ZGl0X2J1ZmZlciAqYWIsXG4gXHRjaGFyIGNvbW1bc2l6ZW9mKGN1cnJlbnQtXHUwMDNlY29tbSldO1xuIFxuIFx0YXVkaXRfbG9nX2Zvcm1hdChhYiwgXCIgcGlkPSVkIGNvbW09XCIsIHRhc2tfdGdpZF9ucihjdXJyZW50KSk7XG4tXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBnZXRfdGFza19jb21tKGNvbW0sIGN1cnJlbnQpKTtcbitcdHN0cnNjcHlfcGFkKGNvbW0sIGN1cnJlbnQtXHUwMDNlY29tbSk7XG4rXHRhdWRpdF9sb2dfdW50cnVzdGVkc3RyaW5nKGFiLCBjb21tKTtcbiBcdGF1ZGl0X2xvZ19sc21fZGF0YShhYiwgYSk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ByY3RsL3NldC1wcm9jZXNzLW5hbWUuY1xuaW5kZXggM2Y3YjE0NmQzNmRmZTEuLjBmMjBmN2RlYWM2N2ZkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJjdGwvc2V0LXByb2Nlc3MtbmFtZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9wcmN0bC9zZXQtcHJvY2Vzcy1uYW1lLmNcbkBAIC05LDkgKzksMTcgQEBcbiBcbiAjaW5jbHVkZSBcImtzZWxmdGVzdF9oYXJuZXNzLmhcIlxuIFxuKyNpZm5kZWYgUFJfU0VUX0VYVF9OQU1FXG4rIyBkZWZpbmUgUFJfU0VUX0VYVF9OQU1FIDE3XG4rIyBkZWZpbmUgUFJfR0VUX0VYVF9OQU1FIDE4XG4rI2VuZGlmXG4rXG4gI2RlZmluZSBDSEFOR0VfTkFNRSBcImNoYW5nZW5hbWVcIlxuKyNkZWZpbmUgTE9OR19OQU1FXHRcImNoYW5nZV90b192ZXJ5X2xvbmdfZXh0ZW5kZWRfbmFtZVwiXG4rI2RlZmluZSBMT05HX05BTUVfQ0FQXHRcImNoYW5nZV90b192ZXJ5X1wiXG4gI2RlZmluZSBFTVBUWV9OQU1FIFwiXCJcbiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTZcbisjZGVmaW5lIFRBU0tfQ09NTV9FWFRfTEVOIDY0XG4gI2RlZmluZSBNQVhfUEFUSF9MRU4gNTBcbiBcbiBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbkBAIC0yNSw2ICszMywxNiBAQCBpbnQgc2V0X25hbWUoY2hhciAqbmFtZSlcbiBcdHJldHVybiByZXM7XG4gfVxuIFxuK2ludCBzZXRfZXh0X25hbWUoY2hhciAqbmFtZSlcbit7XG4rXHRpbnQgcmVzO1xuK1xuK1x0cmVzID0gcHJjdGwoUFJfU0VUX0VYVF9OQU1FLCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMKTtcbitcbitcdGlmIChyZXMgXHUwMDNjIDApXG4rXHRcdHJldHVybiAtZXJybm87XG4rfVxuK1xuIGludCBjaGVja19pc19uYW1lX2NvcnJlY3QoY2hhciAqY2hlY2tfbmFtZSlcbiB7XG4gXHRjaGFyIG5hbWVbVEFTS19DT01NX0xFTl07XG5AQCAtMzgsNiArNTYsMTkgQEAgaW50IGNoZWNrX2lzX25hbWVfY29ycmVjdChjaGFyICpjaGVja19uYW1lKVxuIFx0cmV0dXJuICFzdHJjbXAobmFtZSwgY2hlY2tfbmFtZSk7XG4gfVxuIFxuK2ludCBjaGVja19pc19leHRfbmFtZV9jb3JyZWN0KGNoYXIgKmNoZWNrX25hbWUpXG4re1xuK1x0Y2hhciBuYW1lW1RBU0tfQ09NTV9FWFRfTEVOXTtcbitcdGludCByZXM7XG4rXG4rXHRyZXMgPSBwcmN0bChQUl9HRVRfRVhUX05BTUUsIG5hbWUsIE5VTEwsIE5VTEwsIE5VTEwpO1xuK1xuK1x0aWYgKHJlcyBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC1lcnJubztcbitcbitcdHJldHVybiAhc3RyY21wKG5hbWUsIGNoZWNrX25hbWUpO1xuK31cbitcbiBpbnQgY2hlY2tfbnVsbF9wb2ludGVyKGNoYXIgKmNoZWNrX25hbWUpXG4ge1xuIFx0Y2hhciAqbmFtZSA9IE5VTEw7XG5AQCAtODIsNiArMTEzLDExIEBAIFRFU1QocmVuYW1lX3Byb2Nlc3MpIHtcbiBcdEVYUEVDVF9HRShzZXRfbmFtZShDSEFOR0VfTkFNRSksIDApO1xuIFx0RVhQRUNUX1RSVUUoY2hlY2tfaXNfbmFtZV9jb3JyZWN0KENIQU5HRV9OQU1FKSk7XG4gXG4rXHRFWFBFQ1RfR0Uoc2V0X2V4dF9uYW1lKExPTkdfTkFNRSksIDApO1xuK1x0RVhQRUNUX1RSVUUoY2hlY2tfaXNfZXh0X25hbWVfY29ycmVjdChMT05HX05BTUUpKTtcbitcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChMT05HX05BTUVfQ0FQKSk7XG4rXHRFWFBFQ1RfVFJVRShjaGVja19uYW1lKCkpO1xuK1xuIFx0RVhQRUNUX0dFKHNldF9uYW1lKEVNUFRZX05BTUUpLCAwKTtcbiBcdEVYUEVDVF9UUlVFKGNoZWNrX2lzX25hbWVfY29ycmVjdChFTVBUWV9OQU1FKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMDo1MzoyNS4yMzM1NTczNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjgxNDQxNzg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgRXh0ZW5kZWQgVGFzayBDb21tIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgZXhwYW5kaW5nIHRoZSBgdGFza19jb21tYCBsZW5ndGggYW5kIGFkZGluZyBuZXcgYHByY3RsYCBvcHRpb25zLiBMZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgcHJjdGxgLCBhIHN5c2NhbGwgZXhwb3NlZCB0byB1c2Vyc3BhY2UuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCByZXZvbHZlcyBhcm91bmQgdHdvIG1haW4gYXJlYXM6IGV4dGVuZGluZyB0aGUgYGNvbW1gIGJ1ZmZlciBpbiBgc3RydWN0IHRhc2tfc3RydWN0YCBhbmQgYWRkaW5nIGBQUl9TRVRfRVhUX05BTUVgIGFuZCBgUFJfR0VUX0VYVF9OQU1FYCB0byBgcHJjdGxgLiAgVGhlIGNoYW5nZSB0byB0aGUgYGNvbW1gIGxlbmd0aCBmcm9tIGBUQVNLX0NPTU1fTEVOYCAoMTYpIHRvIGBUQVNLX0NPTU1fRVhUX0xFTmAgKDY0KSBpcyBzdWJzdGFudGlhbCwgYWZmZWN0aW5nIGhvdyBwcm9jZXNzIG5hbWVzIGFyZSBoYW5kbGVkIHRocm91Z2hvdXQgdGhlIGtlcm5lbCwgYnV0IHRoZSBuZXcgcHJjdGwgb3B0aW9ucyBhcmUgdGhlIGZvY3VzLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlIGFkZGVkIHRvIGBrZXJuZWwvc3lzLmNgLCB0aGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBgUFJfU0VUX0VYVF9OQU1FYCBjb3BpZXMgYSB1c2VyLXByb3ZpZGVkIHN0cmluZyB0byBgbWUtXHUwMDNlY29tbWAgdmlhIGBzdHJuY3B5X2Zyb21fdXNlcmAgYW5kIGBzZXRfdGFza19jb21tYCBhZnRlciBudWxsLXRlcm1pbmF0aW5nIHRoZSBzdHJpbmcsIHdoaWxlIGBQUl9HRVRfRVhUX05BTUVgIGNvcGllcyB0aGUgZXh0ZW5kZWQgbmFtZSBiYWNrIHRvIHVzZXJzcGFjZSB1c2luZyBgY29weV90b191c2VyYC4gIENyaXRpY2FsbHksIGBwcm9jX2NvbW1fY29ubmVjdG9yYCBpcyBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGUgbmFtZTsgdGhpcyBtaWdodCBiZSBpbnRlcmVzdGluZyBkZXBlbmRpbmcgb24gaG93IGl0J3MgdXNlZC4gV2UgbmVlZCB0byByZW1lbWJlciB0aGF0IGBwcm9jX2NvbW1fY29ubmVjdG9yYCdzIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIGBDT05GSUdfUFJPQ19FVkVOVFNgLCBidXQgdGhpcyBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCBgcHJjdGxgIGl0c2VsZi5cblxuVGhlIGBwcmN0bGAgc3lzY2FsbCBpcyBvdXIgbWFpbiBlbnRyeSBwb2ludCBoZXJlOyBzcGVjaWZpY2FsbHksIGBzeXNfcHJjdGxgIChvciB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHZlcnNpb24gb2YgaXQsIGJ1dCBTeXprYWxsZXIga25vd3MgYWJvdXQgYHByY3RsYCkuICBJIGRvdWJsZS1jaGVja2VkIGBrZXJuZWwvc3lzLmNgIHRvIGNvbmZpcm0gdGhpcy4gV2hpbGUgYHNldF90YXNrX2NvbW1gIGlzbid0IGRpcmVjdGx5IG1vZGlmaWVkLCBpdCBjYWxscyBgX19zZXRfdGFza19jb21tYCwgd2hpY2ggaW4gdHVybiBjYWxscyBgY29weV90YXNrX2NvbW1gLiAgQnV0IHRoZSBuZXcgaW5saW5lIGZ1bmN0aW9uIGBjb3B5X3Rhc2tfY29tbWAgaXMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2gsIGFsb25nIHdpdGggdGhlIG1haW4gbG9naWMgaW4gYHN5c19wcmN0bGAuIFNvIGBzeXNfcHJjdGxgIHdpbGwgYmUgb3VyIHByaW1hcnkgZm9jdXMuXG5cblNpbmNlIHRoaXMgcGF0Y2ggKmFkZHMqIG5ldyBmdW5jdGlvbmFsaXR5IChzZXR0aW5nIGFuZCBnZXR0aW5nIGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMpLCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBwcmlvcml0aXplIGZvciBmdXp6aW5nLiBUaGUgbmV3IGBwcmN0bGAgb3B0aW9ucyBpbnRyb2R1Y2UgYSBuZXcgY29kZSBwYXRoIHRoYXQncyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGlzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldC5cblxuSW4gdGVybXMgb2YgY29uZmlndXJhdGlvbiwgYHByY3RsYCBpdHNlbGYgZG9lc24ndCByZXF1aXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlncywgc28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuRmluYWxseSwgd2UncmUgZGVmaW5pdGVseSBnb2luZyB0byBsYWJlbCB0aGlzIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYHN5c19wcmN0bGAuIGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGFuIGVtcHR5IGFycmF5IGFzIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjb25maWdzIG5lZWRlZC4gVGhlIHJlYXNvbmluZyBpcyBzaW1wbGU6IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGludHJvZHVjZXMgbmV3IGBwcmN0bGAgb3B0aW9ucywgZGlyZWN0bHkgYWZmZWN0aW5nIHVzZXJzcGFjZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Mjg2LCJPdXRwdXRUb2tlbnMiOjgzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIwOjUzOjM4LjA0Nzk3NzQ1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzeXNfcHJjdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG5ldyBwcmN0bCBvcHRpb25zIFBSX1NFVF9FWFRfTkFNRSBhbmQgUFJfR0VUX0VYVF9OQU1FIHRvIHNldCBhbmQgZ2V0IGV4dGVuZGVkIHByb2Nlc3MgbmFtZXMsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN5c19wcmN0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbmV3IHByY3RsIG9wdGlvbnMgUFJfU0VUX0VYVF9OQU1FIGFuZCBQUl9HRVRfRVhUX05BTUUgdG8gc2V0IGFuZCBnZXQgZXh0ZW5kZWQgcHJvY2VzcyBuYW1lcywgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[1] Phase: Succeeded StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-17 20:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-17 20:53:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2] Phase: Succeeded StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-17 20:53:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 20:53:49 +0000 UTC FinishedAt: 2026-07-17 20:53:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-convert-artifact-2954160294/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 20:53:59 +0000 UTC FinishedAt: 2026-07-17 21:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 20:53:59 +0000 UTC FinishedAt: 2026-07-17 21:39:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*faafa0fb-2650-4493-bdb1-81d0917c0efc,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-workflowl4528/series-workflowl4528-convert-artifact-2954160294/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": "14bdb8d4-cc48-4bd4-930e-8b71c1d3f5ab", "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-workflowl4528/series-workflowl4528-build-action-3789228348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 20:53:59 +0000 UTC FinishedAt: 2026-07-17 21:39:29 +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:*faafa0fb-2650-4493-bdb1-81d0917c0efc,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-workflowl4528/series-workflowl4528-convert-artifact-2954160294/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": "14bdb8d4-cc48-4bd4-930e-8b71c1d3f5ab", "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-workflowl4528/series-workflowl4528-build-action-3789228348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 21:39:39 +0000 UTC FinishedAt: 2026-07-17 21:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 21:39:39 +0000 UTC FinishedAt: 2026-07-17 21:39:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 21:39:39 +0000 UTC FinishedAt: 2026-07-17 21:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 21:39:39 +0000 UTC FinishedAt: 2026-07-17 21:39:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-convert-artifact-777510137/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 21:39:49 +0000 UTC FinishedAt: 2026-07-17 21:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 21:39:49 +0000 UTC FinishedAt: 2026-07-17 21:41:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14bdb8d4-cc48-4bd4-930e-8b71c1d3f5ab,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-workflowl4528/series-workflowl4528-build-action-3789228348/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-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 21:42:01 +0000 UTC FinishedAt: 2026-07-17 21:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 21:42:01 +0000 UTC FinishedAt: 2026-07-17 21:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 21:42:01 +0000 UTC FinishedAt: 2026-07-17 22:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 21:42:01 +0000 UTC FinishedAt: 2026-07-17 22:08:07 +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:*faafa0fb-2650-4493-bdb1-81d0917c0efc,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-workflowl4528/series-workflowl4528-convert-artifact-777510137/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": "9fa7fbc5-3d61-4f7f-bc7e-1d30de8cd5b3", "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-workflowl4528/series-workflowl4528-build-action-4055080661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 21:42:01 +0000 UTC FinishedAt: 2026-07-17 22:07:57 +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:*faafa0fb-2650-4493-bdb1-81d0917c0efc,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-workflowl4528/series-workflowl4528-convert-artifact-777510137/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": "9fa7fbc5-3d61-4f7f-bc7e-1d30de8cd5b3", "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-workflowl4528/series-workflowl4528-build-action-4055080661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 22:08:07 +0000 UTC FinishedAt: 2026-07-17 22:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 22:08:07 +0000 UTC FinishedAt: 2026-07-17 22:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 22:08:07 +0000 UTC FinishedAt: 2026-07-17 22:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 22:08:07 +0000 UTC FinishedAt: 2026-07-17 22:10:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9fa7fbc5-3d61-4f7f-bc7e-1d30de8cd5b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-build-action-4055080661/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-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*14bdb8d4-cc48-4bd4-930e-8b71c1d3f5ab,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9fa7fbc5-3d61-4f7f-bc7e-1d30de8cd5b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-build-action-3789228348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-build-action-4055080661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-17 22:10:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-17 22:10:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},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-workflowl4528/series-workflowl4528-convert-artifact-281656430/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-17 22:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-17 22:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 22:10:10 +0000 UTC FinishedAt: 2026-07-17 22:10:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 22:10:20 +0000 UTC FinishedAt: 2026-07-18 01:12:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4528[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sys_prctl"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"481ed5dd3ed7136f627b8ec372ba39f5b2e7d27f","config_name":"upstream-apparmor-kasan.config","series_id":"68c68be0-30d3-4657-8fa3-12913df5b9d7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 22:10:20 +0000 UTC FinishedAt: 2026-07-18 01:12:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*14bdb8d4-cc48-4bd4-930e-8b71c1d3f5ab,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9fa7fbc5-3d61-4f7f-bc7e-1d30de8cd5b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-build-action-3789228348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-build-action-4055080661/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl4528/series-workflowl4528-convert-artifact-281656430/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}