Name: series-workflowm9sl5 Phase: Succeeded StartedAt: 2026-07-08 16:47:00 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[0] Phase: Succeeded StartedAt: 2026-07-08 16:47:00 +0000 UTC FinishedAt: 2026-07-08 17:16:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 16:47:00 +0000 UTC FinishedAt: 2026-07-08 17:16:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "25fc2d91-cd52-49d2-a992-88554de9157d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_bpf_tail_call", "__arch_prepare_bpf_trampoline", "bpf_jit_build_prologue", "__build_epilogue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7X19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkYzQ0YzFiNDFlNjRmMDlkOTMwYTZkMzU3OGJiM2E5MjBlYTFmYzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIwMDc1ZWNlNGE2ZTdmLi4zNjMzN2MzZGFkODUxMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTI1NDQsMTIgJiM0MzsyNTQ0LDYgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9hcmdzKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBiYXJnc19vZmYsIGludCBucmVncylcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGJvb2wgaXNfc3RydWN0X29wc190cmFtcChjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnlfbm9kZXMpXG4te1xuLVx0cmV0dXJuIGZlbnRyeV9ub2Rlcy1cdTAwM2Vucl9ub2RlcyA9PSAxIFx1MDAyNlx1MDAyNlxuLVx0XHRmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbi19XG4tXG4gc3RhdGljIHZvaWQgc3RvcmVfZnVuY19tZXRhKHN0cnVjdCBqaXRfY3R4ICpjdHgsIHU2NCBmdW5jX21ldGEsIGludCBmdW5jX21ldGFfb2ZmKVxuIHtcbiBcdGVtaXRfYTY0X21vdl9pNjQoQTY0X1IoMTApLCBmdW5jX21ldGEsIGN0eCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCBkYTAyNzE3OTAyNDQyMS4uNDE5YjlkNzk1ZjJhN2EgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTgxLDYgJiM0Mzs4MSw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHRpbnQgZXhfam1wX29mZjtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiYjNDM7XHRpbnQgdGNjX29mZnNldDtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGY5ZDUzNDdiYTk2NmI3Li44MjMyNjJjYTQ3ZWJmNyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOCwxMiAmIzQzOzE4LDEyIEBAXG4gI2RlZmluZSBSVl9NQVhfUkVHX0FSR1MgOFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXG4gI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNClcbi0jZGVmaW5lIFJWX0tDRklfTklOU05TIChJU19FTkFCTEVEKENPTkZJR19DRkkpID8gMSA6IDApXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXG4gI2RlZmluZSBSVl9NQVhfQ09VTlRfSU1NIDB4N0ZGRjdGRjdGRjdGRjdGRlxuJiM0MzsvKiBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuJiM0MzsjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KVxuIFxuICNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTZcbi0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi9cbiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi9cbiBcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xuQEAgLTU3LDE0ICYjNDM7NTcsMTIgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcbiB9O1xuIFxuIGVudW0ge1xuLVx0UlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwgPVx0MCxcbiBcdFJWX0NUWF9GX1NFRU5fQ0FMTCA9XHRcdFJWX1JFR19SQSxcbiBcdFJWX0NUWF9GX1NFRU5fUzEgPVx0XHRSVl9SRUdfUzEsXG4gXHRSVl9DVFhfRl9TRUVOX1MyID1cdFx0UlZfUkVHX1MyLFxuIFx0UlZfQ1RYX0ZfU0VFTl9TMyA9XHRcdFJWX1JFR19TMyxcbiBcdFJWX0NUWF9GX1NFRU5fUzQgPVx0XHRSVl9SRUdfUzQsXG4gXHRSVl9DVFhfRl9TRUVOX1M1ID1cdFx0UlZfUkVHX1M1LFxuLVx0UlZfQ1RYX0ZfU0VFTl9TNiA9XHRcdFJWX1JFR19TNixcbiB9O1xuIFxuIHN0YXRpYyB1OCBicGZfdG9fcnZfcmVnKGludCBicGZfcmVnLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbkBAIC03Nyw3ICYjNDM7NzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdF9fc2V0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gcmVnO1xuQEAgLTkyLDcgJiM0Mzs4OSw2IEBAIHN0YXRpYyBib29sIHNlZW5fcmVnKGludCByZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1MzOlxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M0OlxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1OlxuLVx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M2OlxuIFx0XHRyZXR1cm4gdGVzdF9iaXQocmVnLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEwOCwzMiAmIzQzOzEwNCw2IEBAIHN0YXRpYyB2b2lkIG1hcmtfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdF9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuLXN0YXRpYyBib29sIHNlZW5fY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBtYXJrX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tfVxuLVxuLXN0YXRpYyBib29sIHNlZW5fdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLXtcbi1cdHJldHVybiB0ZXN0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi19XG4tXG4tc3RhdGljIHU4IHJ2X3RhaWxfY2FsbF9yZWcoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0bWFya190YWlsX2NhbGwoY3R4KTtcbi1cbi1cdGlmIChzZWVuX2NhbGwoY3R4KSkge1xuLVx0XHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9TNiwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi1cdFx0cmV0dXJuIFJWX1JFR19TNjtcbi1cdH1cbi1cdHJldHVybiBSVl9SRUdfQTY7XG4tfVxuLVxuIHN0YXRpYyBib29sIGlzXzMyYl9pbnQoczY0IHZhbClcbiB7XG4gXHRyZXR1cm4gLSgxTCBcdTAwM2NcdTAwM2MgMzEpIFx1MDAzYz0gdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjICgxTCBcdTAwM2NcdTAwM2MgMzEpO1xuQEAgLTI1OCwyMyAmIzQzOzIyOCwyMCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ZW1pdF9sZChSVl9SRUdfUzUsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbi1cdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcbi1cdFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuLVx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbi1cdH1cbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0ZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbiBcbiYjNDM7XHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbiYjNDM7XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4gXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbi1cdFx0ICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuLVx0XHQgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyAmIzQzOyBSVl9GRU5UUllfTklOU05TICYjNDM7IDEpICogNCA6IDAsXG4tXHRcdCAgY3R4KTtcbiYjNDM7XHRcdCAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXG5AQCAtMzU1LDcgJiM0MzszMjIsNiBAQCBzdGF0aWMgdm9pZCBlbWl0X2JyYW5jaCh1OCBjb25kLCB1OCByZCwgdTggcnMsIGludCBydm9mZixcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0aW50IHRjX25pbnNuLCBvZmYsIHN0YXJ0X2luc24gPSBjdHgtXHUwMDNlbmluc25zO1xuLVx0dTggdGNjID0gcnZfdGFpbF9jYWxsX3JlZyhjdHgpO1xuIFxuIFx0LyogYTA6IFx1MDAyNmN0eFxuIFx0ICogYTE6IFx1MDAyNmFycmF5XG5AQCAtMzc4LDcgJiM0MzszNDQsOCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBpZiAoLS1UQ0MgXHUwMDNjIDApXG4gXHQgKiAgICAgZ290byBvdXQ7XG4gXHQgKi9cbi1cdGVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpO1xuJiM0MztcdGVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcbiYjNDM7XHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7XG4gXHRvZmYgPSBuaW5zbnNfcnZvZmYodGNfbmluc24gLSAoY3R4LVx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcbiBcdGVtaXRfYnJhbmNoKEJQRl9KU0xULCBSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpO1xuIFxuQEAgLTM5NCw3ICYjNDM7MzYxLDEwIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xuIFx0ZW1pdF9icmFuY2goQlBGX0pFUSwgUlZfUkVHX1QyLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpO1xuIFxuLVx0LyogZ290byAqKHByb2ctXHUwMDNlYnBmX2Z1bmMgJiM0MzsgNCk7ICovXG4mIzQzO1x0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqL1xuJiM0MztcdGVtaXRfc2QoUlZfUkVHX1NQLCBjdHgtXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1RDQywgY3R4KTtcbiYjNDM7XG4mIzQzO1x0LyogZ290byAqKHByb2ctXHUwMDNlYnBmX2Z1bmMgJiM0MzsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi9cbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfcHJvZywgYnBmX2Z1bmMpO1xuIFx0aWYgKGlzXzEyYl9jaGVjayhvZmYsIGluc24pKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtMTAyOCwxMiAmIzQzOzk5OCwxMyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0aW50IGksIHJldCwgb2Zmc2V0O1xuIFx0aW50ICpicmFuY2hlc19vZmYgPSBOVUxMO1xuIFx0aW50IHN0YWNrX3NpemUgPSAwLCBucl9hcmdfc2xvdHMgPSAwO1xuLVx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XG4mIzQzO1x0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmY7XG4mIzQzO1x0aW50IHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmYsIHRjY19vZmY7XG4gXHRpbnQgY29va2llX29mZiwgY29va2llX2NudDtcbiBcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVOVFJZXTtcbiBcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gXHUwMDI2dG5vZGVzW0JQRl9UUkFNUF9GRVhJVF07XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfTU9ESUZZX1JFVFVSTl07XG4tXHRib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfSU5ESVJFQ1Q7XG4mIzQzO1x0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpO1xuIFx0dm9pZCAqb3JpZ19jYWxsID0gZnVuY19hZGRyO1xuIFx0Ym9vbCBzYXZlX3JldDtcbiBcdHU2NCBmdW5jX21ldGE7XG5AQCAtMTA3OSw2ICYjNDM7MTA1MCw4IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHQgKlxuIFx0ICogRlAgLSBzcmVnX29mZiAgICBbIGNhbGxlZSBzYXZlZCByZWdcdF1cbiBcdCAqXG4mIzQzO1x0ICogRlAgLSB0Y2Nfb2ZmICAgICBbIHRhaWwgY2FsbCBjb3VudFx0XSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYXG4mIzQzO1x0ICpcbiBcdCAqXHRcdCAgICBbIHBhZHMgICAgICAgICAgICAgIF0gcGFkcyBmb3IgMTYgYnl0ZXMgYWxpZ25tZW50XG4gXHQgKlxuIFx0ICpcdFx0ICAgIFsgc3RhY2tfYXJnTiAgICAgICAgXVxuQEAgLTExMjYsNiAmIzQzOzEwOTksMTEgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdHN0YWNrX3NpemUgJiM0Mzs9IDg7XG4gXHRzcmVnX29mZiA9IHN0YWNrX3NpemU7XG4gXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG4mIzQzO1x0XHRzdGFja19zaXplICYjNDM7PSA4O1xuJiM0MztcdFx0dGNjX29mZiA9IHN0YWNrX3NpemU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICgoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX0NBTExfT1JJRykgXHUwMDI2XHUwMDI2IChucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MgXHUwMDNlIDApKVxuIFx0XHRzdGFja19zaXplICYjNDM7PSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7XG4gXG5AQCAtMTE2MCw2ICYjNDM7MTEzOCwxMCBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0XHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX3NpemUsIGN0eCk7XG4gXHR9XG4gXG4mIzQzO1x0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuJiM0MztcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcbiBcdC8qIGNhbGxlZSBzYXZlZCByZWdpc3RlciBTMSB0byBwYXNzIHN0YXJ0IHRpbWUgKi9cbiBcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtc3JlZ19vZmYsIFJWX1JFR19TMSwgY3R4KTtcbiBcbkBAIC0xMTk1LDcgJiM0MzsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdH1cbiBcbiBcdGlmIChmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcykge1xuLVx0XHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4mIzQzO1x0XHRicmFuY2hlc19vZmYgPSBrdnphbGxvY19vYmpzKGludCwgZm1vZF9yZXQtXHUwMDNlbnJfbm9kZXMpO1xuIFx0XHRpZiAoIWJyYW5jaGVzX29mZilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0xMjE4LDkgJiM0MzsxMjAwLDE1IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHRcdG9yaWdfY2FsbCAmIzQzOz0gUlZfRkVOVFJZX05JTlNOUyAqIDQ7XG4gXHRcdHJlc3RvcmVfYXJncyhtaW5fdChpbnQsIG5yX2FyZ19zbG90cywgUlZfTUFYX1JFR19BUkdTKSwgYXJnc19vZmYsIGN0eCk7XG4gXHRcdHJlc3RvcmVfc3RhY2tfYXJncyhucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MsIGFyZ3Nfb2ZmLCBzdGtfYXJnX29mZiwgY3R4KTtcbiYjNDM7XHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbiYjNDM7XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbiYjNDM7XHRcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbiYjNDM7XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbiYjNDM7XHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuIFx0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiBcdFx0aW0tXHUwMDNlaXBfYWZ0ZXJfY2FsbCA9IGN0eC1cdTAwM2Vyb19pbnNucyAmIzQzOyBjdHgtXHUwMDNlbmluc25zO1xuQEAgLTEyNzMsNiAmIzQzOzEyNjEsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcbiBcdGVtaXRfbGQoUlZfUkVHX1MxLCAtc3JlZ19vZmYsIFJWX1JFR19GUCwgY3R4KTtcbiBcbiYjNDM7XHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbiYjNDM7XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4mIzQzO1x0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4mIzQzO1xuIFx0aWYgKCFpc19zdHJ1Y3Rfb3BzKSB7XG4gXHRcdC8qIHRyYW1wb2xpbmUgY2FsbGVkIGZyb20gZnVuY3Rpb24gZW50cnkgKi9cbiBcdFx0ZW1pdF9sZChSVl9SRUdfVDAsIHN0YWNrX3NpemUgLSA4LCBSVl9SRUdfU1AsIGN0eCk7XG5AQCAtMTMwMCw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXG4gXHRyZXQgPSBjdHgtXHUwMDNlbmluc25zO1xuIG91dDpcbi1cdGtmcmVlKGJyYW5jaGVzX29mZik7XG4mIzQzO1x0a3ZmcmVlKGJyYW5jaGVzX29mZik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0xODM3LDEwICYjNDM7MTgyOSwxOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbiYjNDM7XHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuJiM0MztcdFx0aWYgKGF1eC1cdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxuJiM0MztcdFx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoYWRkciwgZml4ZWRfYWRkciwgY3R4KTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayBhZnRlciBicGYyYnBmIGNhbGwgKi9cbiYjNDM7XHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbiYjNDM7XHRcdFx0ZW1pdF9zZChSVl9SRUdfU1AsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4gXHRcdFx0ZW1pdF9tdihicGZfdG9fcnZfcmVnKEJQRl9SRUdfMCwgY3R4KSwgUlZfUkVHX0EwLCBjdHgpO1xuIFx0XHRicmVhaztcbkBAIC0yMDIwLDEwICYjNDM7MjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4gXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M1LCBjdHgpKVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4tXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M2LCBjdHgpKVxuLVx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4mIzQzO1x0c3RhY2tfYWRqdXN0ICYjNDM7PSA4OyAvKiBSVl9SRUdfVENDICovXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbkBAIC0yMDMzLDE1ICYjNDM7MjAzMiwxNiBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcdC8qIGVtaXQga2NmaSB0eXBlIHByZWFtYmxlIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgIGZpcnN0IGluc24gKi9cbiBcdGVtaXRfa2NmaShpc19zdWJwcm9nID8gY2ZpX2JwZl9zdWJwcm9nX2hhc2ggOiBjZmlfYnBmX2hhc2gsIGN0eCk7XG4gXG4mIzQzO1x0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVx1MDAzZWJwZl9mdW5jIHNldHVwICovXG4mIzQzO1xuIFx0Lyogbm9wcyByZXNlcnZlZCBmb3IgYXVpcGMmIzQzO2phbHIgcGFpciAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlZfRkVOVFJZX05JTlNOUzsgaSYjNDM7JiM0MzspXG4gXHRcdGVtaXQocnZfbm9wKCksIGN0eCk7XG4gXG4tXHQvKiBGaXJzdCBpbnN0cnVjdGlvbiBpcyBhbHdheXMgc2V0dGluZyB0aGUgdGFpbC1jYWxsLWNvdW50ZXJcbi1cdCAqIChUQ0MpIHJlZ2lzdGVyLiBUaGlzIGluc3RydWN0aW9uIGlzIHNraXBwZWQgZm9yIHRhaWwgY2FsbHMuXG4tXHQgKiBGb3JjZSB1c2luZyBhIDQtYnl0ZSAobm9uLWNvbXByZXNzZWQpIGluc3RydWN0aW9uLlxuLVx0ICovXG4tXHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbiYjNDM7XHRpZiAoIWlzX3N1YnByb2cpXG4mIzQzO1x0XHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbiYjNDM7XG4mIzQzO1x0LyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqL1xuIFxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuQEAgLTIwNzEsMjYgJiM0MzsyMDcxLDIwIEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzUsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkge1xuLVx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7XG4tXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuLVx0fVxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuIFxuJiM0MztcdC8qIHN0b3JlIFRDQyBmcm9tIFJWX1JFR19UQ0MgdG8gc3RhY2sgKi9cbiYjNDM7XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcdGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0ID0gc3RvcmVfb2Zmc2V0O1xuJiM0MztcbiBcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4gXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbi1cdC8qIFByb2dyYW0gY29udGFpbnMgY2FsbHMgYW5kIHRhaWwgY2FsbHMsIHNvIFJWX1JFR19UQ0MgbmVlZFxuLVx0ICogdG8gYmUgc2F2ZWQgYWNyb3NzIGNhbGxzLlxuLVx0ICovXG4tXHRpZiAoc2Vlbl90YWlsX2NhbGwoY3R4KSBcdTAwMjZcdTAwMjYgc2Vlbl9jYWxsKGN0eCkpXG4tXHRcdGVtaXRfbXYoUlZfUkVHX1RDQ19TQVZFRCwgUlZfUkVHX1RDQywgY3R4KTtcbi1cbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbkBAIC0yMTU3LDMgJiM0MzsyMTUxLDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuJiM0MztcbiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuLVx0Y3R4LVx1MDAzZW9mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiYjNDM7XHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuIFxuQEAgLTE3MCw3ICYjNDM7MTcwLDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRjdHgtXHUwMDNlb2Zmc2V0W2ldID0gbmluc25zX3J2b2ZmKGN0eC1cdTAwM2VvZmZzZXRbaV0pO1xuIFx0XHRicGZfcHJvZ19maWxsX2ppdGVkX2xpbmZvKHByb2csIGN0eC1cdTAwM2VvZmZzZXQpO1xuIG91dF9vZmZzZXQ6XG4tXHRcdGtmcmVlKGN0eC1cdTAwM2VvZmZzZXQpO1xuJiM0MztcdFx0a3ZmcmVlKGN0eC1cdTAwM2VvZmZzZXQpO1xuIFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdHByb2ctXHUwMDNlYXV4LVx1MDAzZWppdF9kYXRhID0gTlVMTDtcbiBcdH1cbkBAIC0yMzQsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuJiM0MztcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4gXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHR9XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5pbmRleCBhZGY1M2Y3ZWRmMjg3My4uNzBhYWQ4ZDdkODRmYjIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5AQCAtMjE5Niw2ICYjNDM7MjE5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuIFx0ICAgICAgIHR5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX3N0cnVjdF9vcHNfdHJhbXAoY29uc3Qgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZmVudHJ5X25vZGVzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZlbnRyeV9ub2Rlcy1cdTAwM2Vucl9ub2RlcyA9PSAxIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbiYjNDM7fVxuJiM0MztcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxuIC8qIFRoaXMgbWFjcm8gaGVscHMgZGV2ZWxvcGVyIHRvIHJlZ2lzdGVyIGEgc3RydWN0X29wcyB0eXBlIGFuZCBnZW5lcmF0ZVxuICAqIHR5cGUgaW5mb3JtYXRpb24gY29ycmVjdGx5LiBEZXZlbG9wZXJzIHNob3VsZCB1c2UgdGhpcyBtYWNybyB0byByZWdpc3RlclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcbmluZGV4IDRmYzRkZmRkZTI5Mzc1Li5jYTFiZWFlN2ZlOGYxMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxuQEAgLTEsMyAmIzQzOzEsMiBAQFxuICMgcmlzY3Y2NCBkZW55IGxpc3QgZm9yIEJQRiBDSSBhbmQgbG9jYWwgdm10ZXN0XG4gZXhjZXB0aW9uc1x0XHRcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IGV4Y2VwdGlvbnNcbi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZipcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDssCiAgICAmIzM0O19fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkYzQ0YzFiNDFlNjRmMDlkOTMwYTZkMzU3OGJiM2E5MjBlYTFmYzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYwppbmRleCBiMDA3NWVjZTRhNmU3Zi4uMzYzMzdjM2RhZDg1MTMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0yNTQ0LDEyICYjNDM7MjU0NCw2IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVfYXJncyhzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgYmFyZ3Nfb2ZmLCBpbnQgbnJlZ3MpCiAJfQogfQogCi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcykKLXsKLQlyZXR1cm4gZmVudHJ5X25vZGVzLSZndDtucl9ub2RlcyA9PSAxICZhbXA7JmFtcDsKLQkJZmVudHJ5X25vZGVzLSZndDtub2Rlc1swXS0mZ3Q7bGluay0mZ3Q7dHlwZSA9PSBCUEZfTElOS19UWVBFX1NUUlVDVF9PUFM7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0b3JlX2Z1bmNfbWV0YShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1NjQgZnVuY19tZXRhLCBpbnQgZnVuY19tZXRhX29mZikKIHsKIAllbWl0X2E2NF9tb3ZfaTY0KEE2NF9SKDEwKSwgZnVuY19tZXRhLCBjdHgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCmluZGV4IGRhMDI3MTc5MDI0NDIxLi40MTliOWQ3OTVmMmE3YSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODEsNiAmIzQzOzgxLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAlpbnQgZXhfam1wX29mZjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwomIzQzOwlpbnQgdGNjX29mZnNldDsKIAl1NjQgYXJlbmFfdm1fc3RhcnQ7CiAJdTY0IHVzZXJfdm1fc3RhcnQ7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggZjlkNTM0N2JhOTY2YjcuLjgyMzI2MmNhNDdlYmY3IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE4LDEyICYjNDM7MTgsMTIgQEAKICNkZWZpbmUgUlZfTUFYX1JFR19BUkdTIDgKICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyCiAjZGVmaW5lIFJWX0ZFTlRSWV9OQllURVMgKFJWX0ZFTlRSWV9OSU5TTlMgKiA0KQotI2RlZmluZSBSVl9LQ0ZJX05JTlNOUyAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJKSA/IDEgOiAwKQogLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovCiAjZGVmaW5lIFJWX01BWF9DT1VOVF9JTU0gMHg3RkZGN0ZGN0ZGN0ZGN0ZGCiYjNDM7LyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi8KJiM0MzsjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KQogCiAjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX0E2Ci0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi8KICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqLwogCiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0gewpAQCAtNTcsMTQgJiM0Mzs1NywxMiBAQCBzdGF0aWMgY29uc3QgaW50IHB0X3JlZ21hcFtdID0gewogfTsKIAogZW51bSB7Ci0JUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwgPQkwLAogCVJWX0NUWF9GX1NFRU5fQ0FMTCA9CQlSVl9SRUdfUkEsCiAJUlZfQ1RYX0ZfU0VFTl9TMSA9CQlSVl9SRUdfUzEsCiAJUlZfQ1RYX0ZfU0VFTl9TMiA9CQlSVl9SRUdfUzIsCiAJUlZfQ1RYX0ZfU0VFTl9TMyA9CQlSVl9SRUdfUzMsCiAJUlZfQ1RYX0ZfU0VFTl9TNCA9CQlSVl9SRUdfUzQsCiAJUlZfQ1RYX0ZfU0VFTl9TNSA9CQlSVl9SRUdfUzUsCi0JUlZfQ1RYX0ZfU0VFTl9TNiA9CQlSVl9SRUdfUzYsCiB9OwogCiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCkBAIC03Nyw3ICYjNDM7NzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBSVl9DVFhfRl9TRUVOX1MzOgogCWNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDoKIAljYXNlIFJWX0NUWF9GX1NFRU5fUzU6Ci0JY2FzZSBSVl9DVFhfRl9TRUVOX1M2OgogCQlfX3NldF9iaXQocmVnLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwogCX0KIAlyZXR1cm4gcmVnOwpAQCAtOTIsNyAmIzQzOzg5LDYgQEAgc3RhdGljIGJvb2wgc2Vlbl9yZWcoaW50IHJlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBSVl9DVFhfRl9TRUVOX1MzOgogCWNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDoKIAljYXNlIFJWX0NUWF9GX1NFRU5fUzU6Ci0JY2FzZSBSVl9DVFhfRl9TRUVOX1M2OgogCQlyZXR1cm4gdGVzdF9iaXQocmVnLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwogCX0KIAlyZXR1cm4gZmFsc2U7CkBAIC0xMDgsMzIgJiM0MzsxMDQsNiBAQCBzdGF0aWMgdm9pZCBtYXJrX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJX19zZXRfYml0KFJWX0NUWF9GX1NFRU5fQ0FMTCwgJmFtcDtjdHgtJmd0O2ZsYWdzKTsKIH0KIAotc3RhdGljIGJvb2wgc2Vlbl9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQotewotCXJldHVybiB0ZXN0X2JpdChSVl9DVFhfRl9TRUVOX0NBTEwsICZhbXA7Y3R4LSZndDtmbGFncyk7Ci19Ci0KLXN0YXRpYyB2b2lkIG1hcmtfdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQotewotCV9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgJmFtcDtjdHgtJmd0O2ZsYWdzKTsKLX0KLQotc3RhdGljIGJvb2wgc2Vlbl90YWlsX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCi17Ci0JcmV0dXJuIHRlc3RfYml0KFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwotfQotCi1zdGF0aWMgdTggcnZfdGFpbF9jYWxsX3JlZyhzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKLXsKLQltYXJrX3RhaWxfY2FsbChjdHgpOwotCi0JaWYgKHNlZW5fY2FsbChjdHgpKSB7Ci0JCV9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1M2LCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwotCQlyZXR1cm4gUlZfUkVHX1M2OwotCX0KLQlyZXR1cm4gUlZfUkVHX0E2OwotfQotCiBzdGF0aWMgYm9vbCBpc18zMmJfaW50KHM2NCB2YWwpCiB7CiAJcmV0dXJuIC0oMUwgJmx0OyZsdDsgMzEpICZsdDs9IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7ICgxTCAmbHQ7Jmx0OyAzMSk7CkBAIC0yNTgsMjMgJiM0MzsyMjgsMjAgQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShib29sIGlzX3RhaWxfY2FsbCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJCWVtaXRfbGQoUlZfUkVHX1M1LCBzdG9yZV9vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTsKIAkJc3RvcmVfb2Zmc2V0IC09IDg7CiAJfQotCWlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHsKLQkJZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwotCQlzdG9yZV9vZmZzZXQgLT0gODsKLQl9CiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpIHsKIAkJZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwogCQlzdG9yZV9vZmZzZXQgLT0gODsKIAl9CiAKJiM0MzsJLyogcmVzdG9yZSBUQ0MgZnJvbSBzdGFjayB0byBSVl9SRUdfVENDICovCiYjNDM7CWVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LSZndDt0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAJLyogU2V0IHJldHVybiB2YWx1ZS4gKi8KIAlpZiAoIWlzX3RhaWxfY2FsbCkKIAkJZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTsKIAllbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSwKLQkJICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqLwotCQkgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyAmIzQzOyBSVl9GRU5UUllfTklOU05TICYjNDM7IDEpICogNCA6IDAsCi0JCSAgY3R4KTsKJiM0MzsJCSAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsCkBAIC0zNTUsNyAmIzQzOzMyMiw2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYnJhbmNoKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLAogc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogewogCWludCB0Y19uaW5zbiwgb2ZmLCBzdGFydF9pbnNuID0gY3R4LSZndDtuaW5zbnM7Ci0JdTggdGNjID0gcnZfdGFpbF9jYWxsX3JlZyhjdHgpOwogCiAJLyogYTA6ICZhbXA7Y3R4CiAJICogYTE6ICZhbXA7YXJyYXkKQEAgLTM3OCw3ICYjNDM7MzQ0LDggQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogCS8qIGlmICgtLVRDQyAmbHQ7IDApCiAJICogICAgIGdvdG8gb3V0OwogCSAqLwotCWVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpOwomIzQzOwllbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC0mZ3Q7dGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwllbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7CiAJb2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC0mZ3Q7bmluc25zIC0gc3RhcnRfaW5zbikpOwogCWVtaXRfYnJhbmNoKEJQRl9KU0xULCBSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpOwogCkBAIC0zOTQsNyAmIzQzOzM2MSwxMCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJb2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC0mZ3Q7bmluc25zIC0gc3RhcnRfaW5zbikpOwogCWVtaXRfYnJhbmNoKEJQRl9KRVEsIFJWX1JFR19UMiwgUlZfUkVHX1pFUk8sIG9mZiwgY3R4KTsKIAotCS8qIGdvdG8gKihwcm9nLSZndDticGZfZnVuYyAmIzQzOyA0KTsgKi8KJiM0MzsJLyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqLwomIzQzOwllbWl0X3NkKFJWX1JFR19TUCwgY3R4LSZndDt0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpOwomIzQzOwomIzQzOwkvKiBnb3RvICoocHJvZy0mZ3Q7YnBmX2Z1bmMgJiM0MzsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi8KIAlvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Byb2csIGJwZl9mdW5jKTsKIAlpZiAoaXNfMTJiX2NoZWNrKG9mZiwgaW5zbikpCiAJCXJldHVybiAtMTsKQEAgLTEwMjgsMTIgJiM0Mzs5OTgsMTMgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAlpbnQgaSwgcmV0LCBvZmZzZXQ7CiAJaW50ICpicmFuY2hlc19vZmYgPSBOVUxMOwogCWludCBzdGFja19zaXplID0gMCwgbnJfYXJnX3Nsb3RzID0gMDsKLQlpbnQgcmV0dmFsX29mZiwgYXJnc19vZmYsIGZ1bmNfbWV0YV9vZmYsIGlwX29mZiwgcnVuX2N0eF9vZmYsIHNyZWdfb2ZmLCBzdGtfYXJnX29mZjsKJiM0MzsJaW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmY7CiYjNDM7CWludCBydW5fY3R4X29mZiwgc3JlZ19vZmYsIHN0a19hcmdfb2ZmLCB0Y2Nfb2ZmOwogCWludCBjb29raWVfb2ZmLCBjb29raWVfY250OwogCXN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9ICZhbXA7dG5vZGVzW0JQRl9UUkFNUF9GRU5UUlldOwogCXN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gJmFtcDt0bm9kZXNbQlBGX1RSQU1QX0ZFWElUXTsKIAlzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9ICZhbXA7dG5vZGVzW0JQRl9UUkFNUF9NT0RJRllfUkVUVVJOXTsKLQlib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyAmYW1wOyBCUEZfVFJBTVBfRl9JTkRJUkVDVDsKJiM0MzsJYm9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpOwogCXZvaWQgKm9yaWdfY2FsbCA9IGZ1bmNfYWRkcjsKIAlib29sIHNhdmVfcmV0OwogCXU2NCBmdW5jX21ldGE7CkBAIC0xMDc5LDYgJiM0MzsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkgKgogCSAqIEZQIC0gc3JlZ19vZmYgICAgWyBjYWxsZWUgc2F2ZWQgcmVnCV0KIAkgKgomIzQzOwkgKiBGUCAtIHRjY19vZmYgICAgIFsgdGFpbCBjYWxsIGNvdW50CV0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWAomIzQzOwkgKgogCSAqCQkgICAgWyBwYWRzICAgICAgICAgICAgICBdIHBhZHMgZm9yIDE2IGJ5dGVzIGFsaWdubWVudAogCSAqCiAJICoJCSAgICBbIHN0YWNrX2FyZ04gICAgICAgIF0KQEAgLTExMjYsNiAmIzQzOzEwOTksMTEgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAlzdGFja19zaXplICYjNDM7PSA4OwogCXNyZWdfb2ZmID0gc3RhY2tfc2l6ZTsKIAomIzQzOwlpZiAoZmxhZ3MgJmFtcDsgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkgewomIzQzOwkJc3RhY2tfc2l6ZSAmIzQzOz0gODsKJiM0MzsJCXRjY19vZmYgPSBzdGFja19zaXplOwomIzQzOwl9CiYjNDM7CiAJaWYgKChmbGFncyAmYW1wOyBCUEZfVFJBTVBfRl9DQUxMX09SSUcpICZhbXA7JmFtcDsgKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUyAmZ3Q7IDApKQogCQlzdGFja19zaXplICYjNDM7PSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7CiAKQEAgLTExNjAsNiAmIzQzOzExMzgsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19zaXplLCBjdHgpOwogCX0KIAomIzQzOwkvKiBzdG9yZSB0YWlsIGNhbGwgY291bnQgKi8KJiM0MzsJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQllbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CiAJLyogY2FsbGVlIHNhdmVkIHJlZ2lzdGVyIFMxIHRvIHBhc3Mgc3RhcnQgdGltZSAqLwogCWVtaXRfc2QoUlZfUkVHX0ZQLCAtc3JlZ19vZmYsIFJWX1JFR19TMSwgY3R4KTsKIApAQCAtMTE5NSw3ICYjNDM7MTE3Nyw3IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sCiAJfQogCiAJaWYgKGZtb2RfcmV0LSZndDtucl9ub2RlcykgewotCQlicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC0mZ3Q7bnJfbm9kZXMpOwomIzQzOwkJYnJhbmNoZXNfb2ZmID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIGZtb2RfcmV0LSZndDtucl9ub2Rlcyk7CiAJCWlmICghYnJhbmNoZXNfb2ZmKQogCQkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTEyMTgsOSAmIzQzOzEyMDAsMTUgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkJb3JpZ19jYWxsICYjNDM7PSBSVl9GRU5UUllfTklOU05TICogNDsKIAkJcmVzdG9yZV9hcmdzKG1pbl90KGludCwgbnJfYXJnX3Nsb3RzLCBSVl9NQVhfUkVHX0FSR1MpLCBhcmdzX29mZiwgY3R4KTsKIAkJcmVzdG9yZV9zdGFja19hcmdzKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUywgYXJnc19vZmYsIHN0a19hcmdfb2ZmLCBjdHgpOwomIzQzOwkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqLwomIzQzOwkJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQkJZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpOwogCQlyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKJiM0MzsJCS8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqLwomIzQzOwkJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQkJZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpOwogCQllbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTsKIAkJZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTsKIAkJaW0tJmd0O2lwX2FmdGVyX2NhbGwgPSBjdHgtJmd0O3JvX2luc25zICYjNDM7IGN0eC0mZ3Q7bmluc25zOwpAQCAtMTI3Myw2ICYjNDM7MTI2MSwxMCBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJZW1pdF9sZChSVl9SRUdfUzEsIC1zcmVnX29mZiwgUlZfUkVHX0ZQLCBjdHgpOwogCiYjNDM7CS8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqLwomIzQzOwlpZiAoZmxhZ3MgJmFtcDsgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkKJiM0MzsJCWVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTsKJiM0MzsKIAlpZiAoIWlzX3N0cnVjdF9vcHMpIHsKIAkJLyogdHJhbXBvbGluZSBjYWxsZWQgZnJvbSBmdW5jdGlvbiBlbnRyeSAqLwogCQllbWl0X2xkKFJWX1JFR19UMCwgc3RhY2tfc2l6ZSAtIDgsIFJWX1JFR19TUCwgY3R4KTsKQEAgLTEzMDAsNyAmIzQzOzEyOTIsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJcmV0ID0gY3R4LSZndDtuaW5zbnM7CiBvdXQ6Ci0Ja2ZyZWUoYnJhbmNoZXNfb2ZmKTsKJiM0MzsJa3ZmcmVlKGJyYW5jaGVzX29mZik7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTgzNywxMCAmIzQzOzE4MjksMTggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQl9CiAJCX0KIAomIzQzOwkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovCiYjNDM7CQlpZiAoYXV4LSZndDt0YWlsX2NhbGxfcmVhY2hhYmxlICZhbXA7JmFtcDsgaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUFNFVURPX0NBTEwpCiYjNDM7CQkJZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtJmd0O3RjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsKIAkJcmV0ID0gZW1pdF9jYWxsKGFkZHIsIGZpeGVkX2FkZHIsIGN0eCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCiYjNDM7CQkvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGJwZjJicGYgY2FsbCAqLwomIzQzOwkJaWYgKGF1eC0mZ3Q7dGFpbF9jYWxsX3JlYWNoYWJsZSAmYW1wOyZhbXA7IGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKQomIzQzOwkJCWVtaXRfc2QoUlZfUkVHX1NQLCBjdHgtJmd0O3RjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CiAJCWlmIChpbnNuLSZndDtzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCkKIAkJCWVtaXRfbXYoYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzAsIGN0eCksIFJWX1JFR19BMCwgY3R4KTsKIAkJYnJlYWs7CkBAIC0yMDIwLDEwICYjNDM7MjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCQlzdGFja19hZGp1c3QgJiM0Mzs9IDg7CiAJaWYgKHNlZW5fcmVnKFJWX1JFR19TNSwgY3R4KSkKIAkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwotCWlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpCi0JCXN0YWNrX2FkanVzdCAmIzQzOz0gODsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkKIAkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IDg7IC8qIFJWX1JFR19UQ0MgKi8KIAogCXN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pOwogCXN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDsKQEAgLTIwMzMsMTUgJiM0MzsyMDMyLDE2IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCS8qIGVtaXQga2NmaSB0eXBlIHByZWFtYmxlIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgIGZpcnN0IGluc24gKi8KIAllbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpOwogCiYjNDM7CS8qIGJwZiBwcm9nIHN0YXJ0cyBoZXJlIGFzIGtjZmkgc2tpcHBlZCBkdXJpbmcgcHJvZy0mZ3Q7YnBmX2Z1bmMgc2V0dXAgKi8KJiM0MzsKIAkvKiBub3BzIHJlc2VydmVkIGZvciBhdWlwYyYjNDM7amFsciBwYWlyICovCiAJZm9yIChpID0gMDsgaSAmbHQ7IFJWX0ZFTlRSWV9OSU5TTlM7IGkmIzQzOyYjNDM7KQogCQllbWl0KHJ2X25vcCgpLCBjdHgpOwogCi0JLyogRmlyc3QgaW5zdHJ1Y3Rpb24gaXMgYWx3YXlzIHNldHRpbmcgdGhlIHRhaWwtY2FsbC1jb3VudGVyCi0JICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy4KLQkgKiBGb3JjZSB1c2luZyBhIDQtYnl0ZSAobm9uLWNvbXByZXNzZWQpIGluc3RydWN0aW9uLgotCSAqLwotCWVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpOwomIzQzOwlpZiAoIWlzX3N1YnByb2cpCiYjNDM7CQllbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTsKJiM0MzsKJiM0MzsJLyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqLwogCiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpOwogCkBAIC0yMDcxLDI2ICYjNDM7MjA3MSwyMCBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAkJZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1M1LCBjdHgpOwogCQlzdG9yZV9vZmZzZXQgLT0gODsKIAl9Ci0JaWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkgewotCQllbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7Ci0JCXN0b3JlX29mZnNldCAtPSA4OwotCX0KIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQllbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7CiAJCXN0b3JlX29mZnNldCAtPSA4OwogCX0KIAomIzQzOwkvKiBzdG9yZSBUQ0MgZnJvbSBSVl9SRUdfVENDIHRvIHN0YWNrICovCiYjNDM7CWVtaXRfc2QoUlZfUkVHX1NQLCBzdG9yZV9vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CWN0eC0mZ3Q7dGNjX29mZnNldCA9IHN0b3JlX29mZnNldDsKJiM0MzsKIAllbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQogCQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKLQkvKiBQcm9ncmFtIGNvbnRhaW5zIGNhbGxzIGFuZCB0YWlsIGNhbGxzLCBzbyBSVl9SRUdfVENDIG5lZWQKLQkgKiB0byBiZSBzYXZlZCBhY3Jvc3MgY2FsbHMuCi0JICovCi0JaWYgKHNlZW5fdGFpbF9jYWxsKGN0eCkgJmFtcDsmYW1wOyBzZWVuX2NhbGwoY3R4KSkKLQkJZW1pdF9tdihSVl9SRUdfVENDX1NBVkVELCBSVl9SRUdfVENDLCBjdHgpOwotCiAJY3R4LSZndDtzdGFja19zaXplID0gc3RhY2tfYWRqdXN0OwogCiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpCkBAIC0yMTU3LDMgJiM0MzsyMTUxLDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKLQljdHgtJmd0O29mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiYjNDM7CWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKIAkJZ290byBvdXRfb2Zmc2V0OwogCkBAIC0xNzAsNyAmIzQzOzE3MCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQljdHgtJmd0O29mZnNldFtpXSA9IG5pbnNuc19ydm9mZihjdHgtJmd0O29mZnNldFtpXSk7CiAJCWJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LSZndDtvZmZzZXQpOwogb3V0X29mZnNldDoKLQkJa2ZyZWUoY3R4LSZndDtvZmZzZXQpOwomIzQzOwkJa3ZmcmVlKGN0eC0mZ3Q7b2Zmc2V0KTsKIAkJa2ZyZWUoaml0X2RhdGEpOwogCQlwcm9nLSZndDthdXgtJmd0O2ppdF9kYXRhID0gTlVMTDsKIAl9CkBAIC0yMzQsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmgKaW5kZXggYWRmNTNmN2VkZjI4NzMuLjcwYWFkOGQ3ZDg0ZmIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmLmgKQEAgLTIxOTYsNiAmIzQzOzIxOTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSkKIAkgICAgICAgdHlwZSA9PSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaXNfc3RydWN0X29wc190cmFtcChjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnlfbm9kZXMpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmVudHJ5X25vZGVzLSZndDtucl9ub2RlcyA9PSAxICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIGZlbnRyeV9ub2Rlcy0mZ3Q7bm9kZXNbMF0tJmd0O2xpbmstJmd0O3R5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTOwomIzQzO30KJiM0MzsKICNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSAmYW1wOyZhbXA7IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKQogLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlCiAgKiB0eXBlIGluZm9ybWF0aW9uIGNvcnJlY3RseS4gRGV2ZWxvcGVycyBzaG91bGQgdXNlIHRoaXMgbWFjcm8gdG8gcmVnaXN0ZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjQKaW5kZXggNGZjNGRmZGRlMjkzNzUuLmNhMWJlYWU3ZmU4ZjEwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NApAQCAtMSwzICYjNDM7MSwyIEBACiAjIHJpc2N2NjQgZGVueSBsaXN0IGZvciBCUEYgQ0kgYW5kIGxvY2FsIHZtdGVzdAogZXhjZXB0aW9ucwkJCQkJIyBKSVQgZG9lcyBub3Qgc3VwcG9ydCBleGNlcHRpb25zCi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZioJCQkjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHRvIGVuYWJsZSBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzIG9uIFJJU0MtVi4gSXQgdG91Y2hlcyBhIGNvdXBsZSBvZiBmaWxlczogYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBwbHVzIGl0IG1vdmVzIGBpc19zdHJ1Y3Rfb3BzX3RyYW1wYCB0byBgaW5jbHVkZS9saW51eC9icGYuaGAuIFRoZSBjb3JlIG9mIHRoaXMgaXMgZW5hYmxpbmcgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIG9uIFJJU0MtVi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OwoKVGhlIHBhdGNoICpkZWZpbml0ZWx5KiBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIsIHdoaWNoIGlzIGEga2V5IGFyZWEuIE5vdywgc3l6a2FsbGVyIGlzIHRoZSBnby10byBmdXp6ZXIsIGFuZCBJIGtub3cgaXQmIzM5O3MgcHJpbWFyaWx5IHg4Nl82NCBmb2N1c2VkLCBidXQgaXQgKmNhbiogZnV6eiBhcm02NCBhbmQgUklTQy1WIGlmIHByb3Blcmx5IGNvbmZpZ3VyZWQuIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgdGhlIEJQRiBKSVQgaXMsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCk5vdywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IHJpc2N2NjQ/IEEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBpdCBkb2VzLCB3aGljaCByZW1vdmVzIGEgbWFqb3IgaHVyZGxlLiAKClRoZSBwcm9tcHQgd2FudHMgbWUgdG8gdmVyaWZ5IHRoZSBjb2RlIGlzICpleGVjdXRhYmxlKiB1c2luZyBjb2RlIHNlYXJjaCB0b29scywgc28gbGV0JiMzOTtzIGNoZWNrIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaW4gdGhvc2UgZmlsZXMsIHRvIHNlZSBpZiB0aGV5IGFyZSBwYXJ0IG9mIGEgZnV6emVyIHRhcmdldDoKCkluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYDogSSBzZWUgYF9fYnVpbGRfZXBpbG9ndWVgLCBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfZW1pdF9pbnNuYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgLgoKQW5kIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2A6IEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLCBqdXN0IHRvIGJlIHN1cmUgd2UgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLiBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBiaWcgb25lLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGZvciBhbnkgUklTQy1WIHNwZWNpZmljIGNvbmZpZyBrbm9icy4gVGhpcyBhbGwgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgQlBGX0pJVGAgY29uZmlnIGVuYWJsZWQuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgY29tcGlsYXRpb24gZmxvdyBhbmQgaWRlbnRpZnlpbmcga2V5IGFyZWFzIG9mIGludGVyZXN0LiBMZXQmIzM5O3Mgc2VlLCB3aGF0IGZ1bmN0aW9ucyBzdGFuZCBvdXQgYXMgYmVpbmcgY3JpdGljYWwgdG8gdGhlIHByb2Nlc3MuLi4gV2VsbCwgZmlyc3QsIEkgbmVlZCB0byBsb29rIGF0OiBgX19idWlsZF9lcGlsb2d1ZWAsIGBlbWl0X2JwZl90YWlsX2NhbGxgLCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9lbWl0X2luc25gLCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLgoKSG1tLCBgYnBmX2ppdF9lbWl0X2luc25gLi4uIHdoaWxlIGl0ICppcyogZ2VuZXJpYyBpbiBuYW1lLCBpdCYjMzk7cyBjbGVhcmx5IHNwZWNpZmljIHRvIHRoZSBSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTm93LCBgZW1pdF9icGZfdGFpbF9jYWxsYCBsb29rcyBwcm9taXNpbmcsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGNvcmUgZnVuY3Rpb25hbGl0eSB0aGF0IG5lZWRzIHRvIGJlIHVuZGVyc3Rvb2QuIEFsc28sIEkgbmVlZCB0byBjaGVjayBvdXQgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYC4gQW5kIG9mIGNvdXJzZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgc2VlbXMgaW1wb3J0YW50LCB0b28uIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGBicGZfaW50X2ppdF9jb21waWxlYOKAlHRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnQgb2YgdGhlIHdob2xlIGNvbXBpbGF0aW9uIHByb2Nlc3MuCgpOb3csIGxldCBtZSBzZWUuLi4gSSB3b25kZXIgaWYgdGhlIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkIGFueXdoZXJlIGluIHRoaXMgcHJvY2Vzcy4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIzMjc9dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIzMzItLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMzMzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMzNC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzg5PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5NC0vKiBJbmRpY2F0ZSB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5NTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5Ni17XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01MTA9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2V4Y2VwdGlvbnModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTUxNC1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NTE1OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTYte1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MjE1MD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTQtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIxNTU6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTYte1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9Mjk4MT1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICppbWFnZSxcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTAtXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjMwMTE6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTIte1xuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz00MDUzPXZvaWQgKmJwZl9hcmNoX3RleHRfY29weSh2b2lkICpkc3QsIHZvaWQgKnNyYywgc2l6ZV90IGxlbilcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2MC0vKiBJbmRpY2F0ZSB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDYxOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjIte1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE4MT1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE4Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExODMtYm9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMyNzY9Ym9vbCBfX3dlYWsgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzI4MS0vKiBSZXR1cm4gVFJVRSBpZiB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmtlcm5lbC9icGYvY29yZS5jOjMyODI6Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzI4My17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0OTE9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0OTMtXHRyZXR1cm4gZW52LVx1MDAzZXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NDk0Olx0ICAgICAgIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHMoKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDk1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2MgoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUklTQy1WIFRhaWwgQ2FsbHMgaW4gU3VicHJvZ3JhbXMgLSBBIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGVuYWJsaW5nIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYCBmb3IgUklTQy1WLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHN0ZXAuIEJhc2ljYWxseSwgd2UmIzM5O3JlIG5vdyBhbGxvd2luZyB0YWlsIGNhbGxzIHdpdGhpbiBzdWJwcm9ncmFtcyBvbiBSSVNDLVYuIFRoYXQmIzM5O3MgZ29vZCBwcm9ncmVzcy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjaGFuZ2VzIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhcmUgZnVuY3Rpb25hbGx5IHNvdW5kOyBJIHNob3VsZCByZWFsbHkgZ2V0IHRoYXQgZnV6emVkLiBUaGF0JiMzOTtzIGEgbXVzdC4KCk5vdywgbGV0IG1lIHpvb20gaW4gb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZSwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYF9fYnVpbGRfZXBpbG9ndWVgIC0gdGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBlYWNoIHBpZWNlIGZpdHMgdG9nZXRoZXIuCgpBbHJpZ2h0LCB3aGF0IGFib3V0IGNvbmZpZ3M/IExldCYjMzk7cyBzZWUsIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgcmVsZXZhbnQuIEJ1dCBpcyBgQlBGX0pJVGAgdGhlIG9ubHkgcmVhbCBkZXBlbmRlbmN5PyBBIHF1aWNrIGNoZWNrLi4uIFllcCwgaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBtYWluIG9uZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gR29vZC4KClJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7LAogICAgJiMzNDtfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O19fYnVpbGRfZXBpbG9ndWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBtaXhpbmcgYnBmMmJwZiBjYWxscyBhbmQgdGFpbGNhbGxzIGluIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgcHJvbG9ndWUvZXBpbG9ndWUgZ2VuZXJhdGlvbiwgdGFpbCBjYWxsIGVtaXNzaW9uLCBhbmQgdHJhbXBvbGluZSBwcmVwYXJhdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBvZiB0aGUgSklUIGNvbXBpbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDssCiAgICAmIzM0O19fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo0My45MjM5OTU3MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTI0NzQ3MjE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYnBmX3RhaWxfY2FsbFwiLFxuICAgIFwiX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVcIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcIl9fYnVpbGRfZXBpbG9ndWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE1OjQzLjkyNDAwNDkxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3MzgwOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmRjNDRjMWI0MWU2NGYwOWQ5MzBhNmQzNTc4YmIzYTkyMGVhMWZjMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG5pbmRleCBiMDA3NWVjZTRhNmU3Zi4uMzYzMzdjM2RhZDg1MTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0yNTQ0LDEyICsyNTQ0LDYgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9hcmdzKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBiYXJnc19vZmYsIGludCBucmVncylcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcylcXG4te1xcbi1cXHRyZXR1cm4gZmVudHJ5X25vZGVzLVxcdTAwM2Vucl9ub2RlcyA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdGZlbnRyeV9ub2Rlcy1cXHUwMDNlbm9kZXNbMF0tXFx1MDAzZWxpbmstXFx1MDAzZXR5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXFxuIHtcXG4gXFx0ZW1pdF9hNjRfbW92X2k2NChBNjRfUigxMCksIGZ1bmNfbWV0YSwgY3R4KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuaW5kZXggZGEwMjcxNzkwMjQ0MjEuLjQxOWI5ZDc5NWYyYTdhIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbkBAIC04MSw2ICs4MSw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XFxuIFxcdGludCBleF9qbXBfb2ZmO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgc3RhY2tfc2l6ZTtcXG4rXFx0aW50IHRjY19vZmZzZXQ7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZjlkNTM0N2JhOTY2YjcuLjgyMzI2MmNhNDdlYmY3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE4LDEyICsxOCwxMiBAQFxcbiAjZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXFxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXFxuLSNkZWZpbmUgUlZfS0NGSV9OSU5TTlMgKElTX0VOQUJMRUQoQ09ORklHX0NGSSkgPyAxIDogMClcXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXFxuICNkZWZpbmUgUlZfTUFYX0NPVU5UX0lNTSAweDdGRkY3RkY3RkY3RkY3RkZcXG4rLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4rI2RlZmluZSBSVl9UQUlMQ0FMTF9PRkZTRVQgKChSVl9GRU5UUllfTklOU05TICsgMSkgKiA0KVxcbiBcXG4gI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxcbi0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi9cXG4gI2RlZmluZSBSVl9SRUdfQVJFTkEgUlZfUkVHX1M3IC8qIEZvciBzdG9yaW5nIGFyZW5hX3ZtX3N0YXJ0ICovXFxuIFxcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xcbkBAIC01NywxNCArNTcsMTIgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcXG4gfTtcXG4gXFxuIGVudW0ge1xcbi1cXHRSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCA9XFx0MCxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9DQUxMID1cXHRcXHRSVl9SRUdfUkEsXFxuIFxcdFJWX0NUWF9GX1NFRU5fUzEgPVxcdFxcdFJWX1JFR19TMSxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9TMiA9XFx0XFx0UlZfUkVHX1MyLFxcbiBcXHRSVl9DVFhfRl9TRUVOX1MzID1cXHRcXHRSVl9SRUdfUzMsXFxuIFxcdFJWX0NUWF9GX1NFRU5fUzQgPVxcdFxcdFJWX1JFR19TNCxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9TNSA9XFx0XFx0UlZfUkVHX1M1LFxcbi1cXHRSVl9DVFhfRl9TRUVOX1M2ID1cXHRcXHRSVl9SRUdfUzYsXFxuIH07XFxuIFxcbiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuQEAgLTc3LDcgKzc1LDYgQEAgc3RhdGljIHU4IGJwZl90b19ydl9yZWcoaW50IGJwZl9yZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XFxuIFxcdGNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDpcXG4gXFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1Olxcbi1cXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XFxuIFxcdFxcdF9fc2V0X2JpdChyZWcsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmVnO1xcbkBAIC05Miw3ICs4OSw2IEBAIHN0YXRpYyBib29sIHNlZW5fcmVnKGludCByZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XFxuIFxcdGNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDpcXG4gXFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1Olxcbi1cXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XFxuIFxcdFxcdHJldHVybiB0ZXN0X2JpdChyZWcsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTEwOCwzMiArMTA0LDYgQEAgc3RhdGljIHZvaWQgbWFya19jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcXHUwMDI2Y3R4LVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHNlZW5fY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4te1xcbi1cXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcXHUwMDI2Y3R4LVxcdTAwM2VmbGFncyk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIG1hcmtfdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbi17XFxuLVxcdF9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgXFx1MDAyNmN0eC1cXHUwMDNlZmxhZ3MpO1xcbi19XFxuLVxcbi1zdGF0aWMgYm9vbCBzZWVuX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4te1xcbi1cXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4tfVxcbi1cXG4tc3RhdGljIHU4IHJ2X3RhaWxfY2FsbF9yZWcoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuLXtcXG4tXFx0bWFya190YWlsX2NhbGwoY3R4KTtcXG4tXFxuLVxcdGlmIChzZWVuX2NhbGwoY3R4KSkge1xcbi1cXHRcXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9TNiwgXFx1MDAyNmN0eC1cXHUwMDNlZmxhZ3MpO1xcbi1cXHRcXHRyZXR1cm4gUlZfUkVHX1M2O1xcbi1cXHR9XFxuLVxcdHJldHVybiBSVl9SRUdfQTY7XFxuLX1cXG4tXFxuIHN0YXRpYyBib29sIGlzXzMyYl9pbnQoczY0IHZhbClcXG4ge1xcbiBcXHRyZXR1cm4gLSgxTCBcXHUwMDNjXFx1MDAzYyAzMSkgXFx1MDAzYz0gdmFsIFxcdTAwMjZcXHUwMDI2IHZhbCBcXHUwMDNjICgxTCBcXHUwMDNjXFx1MDAzYyAzMSk7XFxuQEAgLTI1OCwyMyArMjI4LDIwIEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19TNSwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSA4O1xcbiBcXHR9XFxuLVxcdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcXG4tXFx0XFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbi1cXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4tXFx0fVxcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCkge1xcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19BUkVOQSwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSA4O1xcbiBcXHR9XFxuIFxcbitcXHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cXG4rXFx0ZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtXFx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcXG4rXFxuIFxcdGVtaXRfYWRkaShSVl9SRUdfU1AsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xcbiBcXHRpZiAoIWlzX3RhaWxfY2FsbClcXG4gXFx0XFx0ZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTtcXG4gXFx0ZW1pdF9qYWxyKFJWX1JFR19aRVJPLCBpc190YWlsX2NhbGwgPyBSVl9SRUdfVDMgOiBSVl9SRUdfUkEsXFxuLVxcdFxcdCAgLyoga2NmaSwgZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4tXFx0XFx0ICBpc190YWlsX2NhbGwgPyAoUlZfS0NGSV9OSU5TTlMgKyBSVl9GRU5UUllfTklOU05TICsgMSkgKiA0IDogMCxcXG4tXFx0XFx0ICBjdHgpO1xcbitcXHRcXHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVtaXRfYmNjKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLFxcbkBAIC0zNTUsNyArMzIyLDYgQEAgc3RhdGljIHZvaWQgZW1pdF9icmFuY2godTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4ge1xcbiBcXHRpbnQgdGNfbmluc24sIG9mZiwgc3RhcnRfaW5zbiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbi1cXHR1OCB0Y2MgPSBydl90YWlsX2NhbGxfcmVnKGN0eCk7XFxuIFxcbiBcXHQvKiBhMDogXFx1MDAyNmN0eFxcbiBcXHQgKiBhMTogXFx1MDAyNmFycmF5XFxuQEAgLTM3OCw3ICszNDQsOCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGlmICgtLVRDQyBcXHUwMDNjIDApXFxuIFxcdCAqICAgICBnb3RvIG91dDtcXG4gXFx0ICovXFxuLVxcdGVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpO1xcbitcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7XFxuIFxcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXFx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcXG4gXFx0ZW1pdF9icmFuY2goQlBGX0pTTFQsIFJWX1JFR19UQ0MsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XFxuIFxcbkBAIC0zOTQsNyArMzYxLDEwIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4gXFx0b2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC1cXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xcbiBcXHRlbWl0X2JyYW5jaChCUEZfSkVRLCBSVl9SRUdfVDIsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XFxuIFxcbi1cXHQvKiBnb3RvICoocHJvZy1cXHUwMDNlYnBmX2Z1bmMgKyA0KTsgKi9cXG4rXFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqL1xcbitcXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVxcdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXG4rXFx0LyogZ290byAqKHByb2ctXFx1MDAzZWJwZl9mdW5jICsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi9cXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9wcm9nLCBicGZfZnVuYyk7XFxuIFxcdGlmIChpc18xMmJfY2hlY2sob2ZmLCBpbnNuKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC0xMDI4LDEyICs5OTgsMTMgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0aW50IGksIHJldCwgb2Zmc2V0O1xcbiBcXHRpbnQgKmJyYW5jaGVzX29mZiA9IE5VTEw7XFxuIFxcdGludCBzdGFja19zaXplID0gMCwgbnJfYXJnX3Nsb3RzID0gMDtcXG4tXFx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XFxuK1xcdGludCByZXR2YWxfb2ZmLCBhcmdzX29mZiwgZnVuY19tZXRhX29mZiwgaXBfb2ZmO1xcbitcXHRpbnQgcnVuX2N0eF9vZmYsIHNyZWdfb2ZmLCBzdGtfYXJnX29mZiwgdGNjX29mZjtcXG4gXFx0aW50IGNvb2tpZV9vZmYsIGNvb2tpZV9jbnQ7XFxuIFxcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9IFxcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX0ZFTlRSWV07XFxuIFxcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gXFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVYSVRdO1xcbiBcXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9IFxcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dO1xcbi1cXHRib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX0lORElSRUNUO1xcbitcXHRib29sIGlzX3N0cnVjdF9vcHMgPSBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGZlbnRyeSk7XFxuIFxcdHZvaWQgKm9yaWdfY2FsbCA9IGZ1bmNfYWRkcjtcXG4gXFx0Ym9vbCBzYXZlX3JldDtcXG4gXFx0dTY0IGZ1bmNfbWV0YTtcXG5AQCAtMTA3OSw2ICsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0ICpcXG4gXFx0ICogRlAgLSBzcmVnX29mZiAgICBbIGNhbGxlZSBzYXZlZCByZWdcXHRdXFxuIFxcdCAqXFxuK1xcdCAqIEZQIC0gdGNjX29mZiAgICAgWyB0YWlsIGNhbGwgY291bnRcXHRdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcXG4rXFx0ICpcXG4gXFx0ICpcXHRcXHQgICAgWyBwYWRzICAgICAgICAgICAgICBdIHBhZHMgZm9yIDE2IGJ5dGVzIGFsaWdubWVudFxcbiBcXHQgKlxcbiBcXHQgKlxcdFxcdCAgICBbIHN0YWNrX2FyZ04gICAgICAgIF1cXG5AQCAtMTEyNiw2ICsxMDk5LDExIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdHN0YWNrX3NpemUgKz0gODtcXG4gXFx0c3JlZ19vZmYgPSBzdGFja19zaXplO1xcbiBcXG4rXFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkge1xcbitcXHRcXHRzdGFja19zaXplICs9IDg7XFxuK1xcdFxcdHRjY19vZmYgPSBzdGFja19zaXplO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSBcXHUwMDI2XFx1MDAyNiAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTIFxcdTAwM2UgMCkpXFxuIFxcdFxcdHN0YWNrX3NpemUgKz0gKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUykgKiA4O1xcbiBcXG5AQCAtMTE2MCw2ICsxMTM4LDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdFxcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfc2l6ZSwgY3R4KTtcXG4gXFx0fVxcbiBcXG4rXFx0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcXG4rXFxuIFxcdC8qIGNhbGxlZSBzYXZlZCByZWdpc3RlciBTMSB0byBwYXNzIHN0YXJ0IHRpbWUgKi9cXG4gXFx0ZW1pdF9zZChSVl9SRUdfRlAsIC1zcmVnX29mZiwgUlZfUkVHX1MxLCBjdHgpO1xcbiBcXG5AQCAtMTE5NSw3ICsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGZtb2RfcmV0LVxcdTAwM2Vucl9ub2Rlcykge1xcbi1cXHRcXHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cXHUwMDNlbnJfbm9kZXMpO1xcbitcXHRcXHRicmFuY2hlc19vZmYgPSBrdnphbGxvY19vYmpzKGludCwgZm1vZF9yZXQtXFx1MDAzZW5yX25vZGVzKTtcXG4gXFx0XFx0aWYgKCFicmFuY2hlc19vZmYpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5AQCAtMTIxOCw5ICsxMjAwLDE1IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdFxcdG9yaWdfY2FsbCArPSBSVl9GRU5UUllfTklOU05TICogNDtcXG4gXFx0XFx0cmVzdG9yZV9hcmdzKG1pbl90KGludCwgbnJfYXJnX3Nsb3RzLCBSVl9NQVhfUkVHX0FSR1MpLCBhcmdzX29mZiwgY3R4KTtcXG4gXFx0XFx0cmVzdG9yZV9zdGFja19hcmdzKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUywgYXJnc19vZmYsIHN0a19hcmdfb2ZmLCBjdHgpO1xcbitcXHRcXHQvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBjYWxsaW5nIHRoZSBvcmlnIGJwZiBmdW5jICovXFxuK1xcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4gXFx0XFx0cmV0ID0gZW1pdF9jYWxsKChjb25zdCB1NjQpb3JpZ19jYWxsLCB0cnVlLCBjdHgpO1xcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayBhZnRlciBjYWxsaW5nIHRoZSBvcmlnIGJwZiBmdW5jICovXFxuK1xcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfRlAsIC1yZXR2YWxfb2ZmLCBSVl9SRUdfQTAsIGN0eCk7XFxuIFxcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtKHJldHZhbF9vZmYgLSA4KSwgcmVnbWFwW0JQRl9SRUdfMF0sIGN0eCk7XFxuIFxcdFxcdGltLVxcdTAwM2VpcF9hZnRlcl9jYWxsID0gY3R4LVxcdTAwM2Vyb19pbnNucyArIGN0eC1cXHUwMDNlbmluc25zO1xcbkBAIC0xMjczLDYgKzEyNjEsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFxuIFxcdGVtaXRfbGQoUlZfUkVHX1MxLCAtc3JlZ19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4gXFxuK1xcdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbitcXHRcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XFxuK1xcbiBcXHRpZiAoIWlzX3N0cnVjdF9vcHMpIHtcXG4gXFx0XFx0LyogdHJhbXBvbGluZSBjYWxsZWQgZnJvbSBmdW5jdGlvbiBlbnRyeSAqL1xcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19UMCwgc3RhY2tfc2l6ZSAtIDgsIFJWX1JFR19TUCwgY3R4KTtcXG5AQCAtMTMwMCw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFxuIFxcdHJldCA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiBvdXQ6XFxuLVxcdGtmcmVlKGJyYW5jaGVzX29mZik7XFxuK1xcdGt2ZnJlZShicmFuY2hlc19vZmYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0xODM3LDEwICsxODI5LDE4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xcbitcXHRcXHRpZiAoYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFxcdTAwMjZcXHUwMDI2IGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxcbitcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXG4gXFx0XFx0cmV0ID0gZW1pdF9jYWxsKGFkZHIsIGZpeGVkX2FkZHIsIGN0eCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRcXHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGJwZjJicGYgY2FsbCAqL1xcbitcXHRcXHRpZiAoYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFxcdTAwMjZcXHUwMDI2IGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxcbitcXHRcXHRcXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVxcdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXG4gXFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMKVxcbiBcXHRcXHRcXHRlbWl0X212KGJwZl90b19ydl9yZWcoQlBGX1JFR18wLCBjdHgpLCBSVl9SRUdfQTAsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC0yMDIwLDEwICsyMDIwLDkgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcdFxcdHN0YWNrX2FkanVzdCArPSA4O1xcbiBcXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M1LCBjdHgpKVxcbiBcXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4tXFx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSlcXG4tXFx0XFx0c3RhY2tfYWRqdXN0ICs9IDg7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbiBcXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4rXFx0c3RhY2tfYWRqdXN0ICs9IDg7IC8qIFJWX1JFR19UQ0MgKi9cXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG5AQCAtMjAzMywxNSArMjAzMiwxNiBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFx0LyogZW1pdCBrY2ZpIHR5cGUgcHJlYW1ibGUgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSAgZmlyc3QgaW5zbiAqL1xcbiBcXHRlbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpO1xcbiBcXG4rXFx0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVxcdTAwM2VicGZfZnVuYyBzZXR1cCAqL1xcbitcXG4gXFx0Lyogbm9wcyByZXNlcnZlZCBmb3IgYXVpcGMramFsciBwYWlyICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVl9GRU5UUllfTklOU05TOyBpKyspXFxuIFxcdFxcdGVtaXQocnZfbm9wKCksIGN0eCk7XFxuIFxcbi1cXHQvKiBGaXJzdCBpbnN0cnVjdGlvbiBpcyBhbHdheXMgc2V0dGluZyB0aGUgdGFpbC1jYWxsLWNvdW50ZXJcXG4tXFx0ICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy5cXG4tXFx0ICogRm9yY2UgdXNpbmcgYSA0LWJ5dGUgKG5vbi1jb21wcmVzc2VkKSBpbnN0cnVjdGlvbi5cXG4tXFx0ICovXFxuLVxcdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xcbitcXHRpZiAoIWlzX3N1YnByb2cpXFxuK1xcdFxcdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xcbitcXG4rXFx0LyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqL1xcbiBcXG4gXFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXG5AQCAtMjA3MSwyNiArMjA3MSwyMCBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1M1LCBjdHgpO1xcbiBcXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4gXFx0fVxcbi1cXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M2LCBjdHgpKSB7XFxuLVxcdFxcdGVtaXRfc2QoUlZfUkVHX1NQLCBzdG9yZV9vZmZzZXQsIFJWX1JFR19TNiwgY3R4KTtcXG4tXFx0XFx0c3RvcmVfb2Zmc2V0IC09IDg7XFxuLVxcdH1cXG4gXFx0aWYgKGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX0FSRU5BLCBjdHgpO1xcbiBcXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4gXFx0fVxcbiBcXG4rXFx0Lyogc3RvcmUgVENDIGZyb20gUlZfUkVHX1RDQyB0byBzdGFjayAqL1xcbitcXHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXHRjdHgtXFx1MDAzZXRjY19vZmZzZXQgPSBzdG9yZV9vZmZzZXQ7XFxuK1xcbiBcXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbiBcXHRcXHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcbi1cXHQvKiBQcm9ncmFtIGNvbnRhaW5zIGNhbGxzIGFuZCB0YWlsIGNhbGxzLCBzbyBSVl9SRUdfVENDIG5lZWRcXG4tXFx0ICogdG8gYmUgc2F2ZWQgYWNyb3NzIGNhbGxzLlxcbi1cXHQgKi9cXG4tXFx0aWYgKHNlZW5fdGFpbF9jYWxsKGN0eCkgXFx1MDAyNlxcdTAwMjYgc2Vlbl9jYWxsKGN0eCkpXFxuLVxcdFxcdGVtaXRfbXYoUlZfUkVHX1RDQ19TQVZFRCwgUlZfUkVHX1RDQywgY3R4KTtcXG4tXFxuIFxcdGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcXG4gXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbkBAIC0yMTU3LDMgKzIxNTEsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTcyLDcgKzcyLDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0Y3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXByb2cgPSBwcm9nO1xcbi1cXHRjdHgtXFx1MDAzZW9mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuK1xcdGN0eC1cXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuIFxcdGlmICghY3R4LVxcdTAwM2VvZmZzZXQpXFxuIFxcdFxcdGdvdG8gb3V0X29mZnNldDtcXG4gXFxuQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHRjdHgtXFx1MDAzZW9mZnNldFtpXSA9IG5pbnNuc19ydm9mZihjdHgtXFx1MDAzZW9mZnNldFtpXSk7XFxuIFxcdFxcdGJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LVxcdTAwM2VvZmZzZXQpO1xcbiBvdXRfb2Zmc2V0Olxcbi1cXHRcXHRrZnJlZShjdHgtXFx1MDAzZW9mZnNldCk7XFxuK1xcdFxcdGt2ZnJlZShjdHgtXFx1MDAzZW9mZnNldCk7XFxuIFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0cHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VqaXRfZGF0YSA9IE5VTEw7XFxuIFxcdH1cXG5AQCAtMjM0LDYgKzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChqaXRfZGF0YSkge1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbitcXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWN0eC5vZmZzZXQpO1xcbiBcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuaW5kZXggYWRmNTNmN2VkZjI4NzMuLjcwYWFkOGQ3ZDg0ZmIyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuQEAgLTIxOTYsNiArMjE5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbiBcXHQgICAgICAgdHlwZSA9PSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcylcXG4re1xcbitcXHRyZXR1cm4gZmVudHJ5X25vZGVzLVxcdTAwM2Vucl9ub2RlcyA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBmZW50cnlfbm9kZXMtXFx1MDAzZW5vZGVzWzBdLVxcdTAwM2VsaW5rLVxcdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcXG4rfVxcbitcXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbiAvKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcXG4gICogdHlwZSBpbmZvcm1hdGlvbiBjb3JyZWN0bHkuIERldmVsb3BlcnMgc2hvdWxkIHVzZSB0aGlzIG1hY3JvIHRvIHJlZ2lzdGVyXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcXG5pbmRleCA0ZmM0ZGZkZGUyOTM3NS4uY2ExYmVhZTdmZThmMTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxcbkBAIC0xLDMgKzEsMiBAQFxcbiAjIHJpc2N2NjQgZGVueSBsaXN0IGZvciBCUEYgQ0kgYW5kIGxvY2FsIHZtdGVzdFxcbiBleGNlcHRpb25zXFx0XFx0XFx0XFx0XFx0IyBKSVQgZG9lcyBub3Qgc3VwcG9ydCBleGNlcHRpb25zXFxuLXRhaWxjYWxscy90YWlsY2FsbF9icGYyYnBmKlxcdFxcdFxcdCMgSklUIGRvZXMgbm90IHN1cHBvcnQgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxsc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo0NC44MDI1NzM4NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY4ODY3MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZVwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZGM0NGMxYjQxZTY0ZjA5ZDkzMGE2ZDM1NzhiYjNhOTIwZWExZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxNzoxNTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIwMDc1ZWNlNGE2ZTdmLi4zNjMzN2MzZGFkODUxMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTI1NDQsMTIgKzI1NDQsNiBAQCBzdGF0aWMgdm9pZCByZXN0b3JlX2FyZ3Moc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGJhcmdzX29mZiwgaW50IG5yZWdzKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2Rlcylcbi17XG4tXHRyZXR1cm4gZmVudHJ5X25vZGVzLVx1MDAzZW5yX25vZGVzID09IDEgXHUwMDI2XHUwMDI2XG4tXHRcdGZlbnRyeV9ub2Rlcy1cdTAwM2Vub2Rlc1swXS1cdTAwM2VsaW5rLVx1MDAzZXR5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXG4ge1xuIFx0ZW1pdF9hNjRfbW92X2k2NChBNjRfUigxMCksIGZ1bmNfbWV0YSwgY3R4KTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IGRhMDI3MTc5MDI0NDIxLi40MTliOWQ3OTVmMmE3YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODEsNiArODEsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0aW50IGV4X2ptcF9vZmY7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4rXHRpbnQgdGNjX29mZnNldDtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGY5ZDUzNDdiYTk2NmI3Li44MjMyNjJjYTQ3ZWJmNyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOCwxMiArMTgsMTIgQEBcbiAjZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XG4gI2RlZmluZSBSVl9GRU5UUllfTklOU05TIDJcbiAjZGVmaW5lIFJWX0ZFTlRSWV9OQllURVMgKFJWX0ZFTlRSWV9OSU5TTlMgKiA0KVxuLSNkZWZpbmUgUlZfS0NGSV9OSU5TTlMgKElTX0VOQUJMRUQoQ09ORklHX0NGSSkgPyAxIDogMClcbiAvKiBpbW0gdGhhdCBhbGxvd3MgZW1pdF9pbW0gdG8gZW1pdCBtYXggY291bnQgaW5zbnMgKi9cbiAjZGVmaW5lIFJWX01BWF9DT1VOVF9JTU0gMHg3RkZGN0ZGN0ZGN0ZGN0ZGXG4rLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbisjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQpXG4gXG4gI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxuLSNkZWZpbmUgUlZfUkVHX1RDQ19TQVZFRCBSVl9SRUdfUzYgLyogU3RvcmUgQTYgaW4gUzYgaWYgcHJvZ3JhbSBkbyBjYWxscyAqL1xuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xuIFxuIHN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG5AQCAtNTcsMTQgKzU3LDEyIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7XG4gfTtcbiBcbiBlbnVtIHtcbi1cdFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMID1cdDAsXG4gXHRSVl9DVFhfRl9TRUVOX0NBTEwgPVx0XHRSVl9SRUdfUkEsXG4gXHRSVl9DVFhfRl9TRUVOX1MxID1cdFx0UlZfUkVHX1MxLFxuIFx0UlZfQ1RYX0ZfU0VFTl9TMiA9XHRcdFJWX1JFR19TMixcbiBcdFJWX0NUWF9GX1NFRU5fUzMgPVx0XHRSVl9SRUdfUzMsXG4gXHRSVl9DVFhfRl9TRUVOX1M0ID1cdFx0UlZfUkVHX1M0LFxuIFx0UlZfQ1RYX0ZfU0VFTl9TNSA9XHRcdFJWX1JFR19TNSxcbi1cdFJWX0NUWF9GX1NFRU5fUzYgPVx0XHRSVl9SRUdfUzYsXG4gfTtcbiBcbiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG5AQCAtNzcsNyArNzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdF9fc2V0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gcmVnO1xuQEAgLTkyLDcgKzg5LDYgQEAgc3RhdGljIGJvb2wgc2Vlbl9yZWcoaW50IHJlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdHJldHVybiB0ZXN0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMTA4LDMyICsxMDQsNiBAQCBzdGF0aWMgdm9pZCBtYXJrX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBzZWVuX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0cmV0dXJuIHRlc3RfYml0KFJWX0NUWF9GX1NFRU5fQ0FMTCwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgbWFya190YWlsX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0X19zZXRfYml0KFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuLX1cbi1cbi1zdGF0aWMgYm9vbCBzZWVuX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tfVxuLVxuLXN0YXRpYyB1OCBydl90YWlsX2NhbGxfcmVnKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLXtcbi1cdG1hcmtfdGFpbF9jYWxsKGN0eCk7XG4tXG4tXHRpZiAoc2Vlbl9jYWxsKGN0eCkpIHtcbi1cdFx0X19zZXRfYml0KFJWX0NUWF9GX1NFRU5fUzYsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tXHRcdHJldHVybiBSVl9SRUdfUzY7XG4tXHR9XG4tXHRyZXR1cm4gUlZfUkVHX0E2O1xuLX1cbi1cbiBzdGF0aWMgYm9vbCBpc18zMmJfaW50KHM2NCB2YWwpXG4ge1xuIFx0cmV0dXJuIC0oMUwgXHUwMDNjXHUwMDNjIDMxKSBcdTAwM2M9IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyAoMUwgXHUwMDNjXHUwMDNjIDMxKTtcbkBAIC0yNTgsMjMgKzIyOCwyMCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ZW1pdF9sZChSVl9SRUdfUzUsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbi1cdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcbi1cdFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuLVx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbi1cdH1cbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0ZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbiBcbitcdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xuK1x0ZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuK1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4gXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbi1cdFx0ICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuLVx0XHQgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyArIFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQgOiAwLFxuLVx0XHQgIGN0eCk7XG4rXHRcdCAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXG5AQCAtMzU1LDcgKzMyMiw2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYnJhbmNoKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpbnQgdGNfbmluc24sIG9mZiwgc3RhcnRfaW5zbiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4tXHR1OCB0Y2MgPSBydl90YWlsX2NhbGxfcmVnKGN0eCk7XG4gXG4gXHQvKiBhMDogXHUwMDI2Y3R4XG4gXHQgKiBhMTogXHUwMDI2YXJyYXlcbkBAIC0zNzgsNyArMzQ0LDggQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0LyogaWYgKC0tVENDIFx1MDAzYyAwKVxuIFx0ICogICAgIGdvdG8gb3V0O1xuIFx0ICovXG4tXHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgdGNjLCAtMSwgY3R4KTtcbitcdGVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcbitcdGVtaXRfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfVENDLCAtMSwgY3R4KTtcbiBcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xuIFx0ZW1pdF9icmFuY2goQlBGX0pTTFQsIFJWX1JFR19UQ0MsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XG4gXG5AQCAtMzk0LDcgKzM2MSwxMCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRvZmYgPSBuaW5zbnNfcnZvZmYodGNfbmluc24gLSAoY3R4LVx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcbiBcdGVtaXRfYnJhbmNoKEJQRl9KRVEsIFJWX1JFR19UMiwgUlZfUkVHX1pFUk8sIG9mZiwgY3R4KTtcbiBcbi1cdC8qIGdvdG8gKihwcm9nLVx1MDAzZWJwZl9mdW5jICsgNCk7ICovXG4rXHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrICovXG4rXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4rXHQvKiBnb3RvICoocHJvZy1cdTAwM2VicGZfZnVuYyArIFJWX1RBSUxDQUxMX09GRlNFVCk7ICovXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Byb2csIGJwZl9mdW5jKTtcbiBcdGlmIChpc18xMmJfY2hlY2sob2ZmLCBpbnNuKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTEwMjgsMTIgKzk5OCwxMyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0aW50IGksIHJldCwgb2Zmc2V0O1xuIFx0aW50ICpicmFuY2hlc19vZmYgPSBOVUxMO1xuIFx0aW50IHN0YWNrX3NpemUgPSAwLCBucl9hcmdfc2xvdHMgPSAwO1xuLVx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XG4rXHRpbnQgcmV0dmFsX29mZiwgYXJnc19vZmYsIGZ1bmNfbWV0YV9vZmYsIGlwX29mZjtcbitcdGludCBydW5fY3R4X29mZiwgc3JlZ19vZmYsIHN0a19hcmdfb2ZmLCB0Y2Nfb2ZmO1xuIFx0aW50IGNvb2tpZV9vZmYsIGNvb2tpZV9jbnQ7XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnkgPSBcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX0ZFTlRSWV07XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZXhpdCA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVYSVRdO1xuIFx0c3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZm1vZF9yZXQgPSBcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dO1xuLVx0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX0lORElSRUNUO1xuK1x0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpO1xuIFx0dm9pZCAqb3JpZ19jYWxsID0gZnVuY19hZGRyO1xuIFx0Ym9vbCBzYXZlX3JldDtcbiBcdHU2NCBmdW5jX21ldGE7XG5AQCAtMTA3OSw2ICsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdCAqXG4gXHQgKiBGUCAtIHNyZWdfb2ZmICAgIFsgY2FsbGVlIHNhdmVkIHJlZ1x0XVxuIFx0ICpcbitcdCAqIEZQIC0gdGNjX29mZiAgICAgWyB0YWlsIGNhbGwgY291bnRcdF0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxuK1x0ICpcbiBcdCAqXHRcdCAgICBbIHBhZHMgICAgICAgICAgICAgIF0gcGFkcyBmb3IgMTYgYnl0ZXMgYWxpZ25tZW50XG4gXHQgKlxuIFx0ICpcdFx0ICAgIFsgc3RhY2tfYXJnTiAgICAgICAgXVxuQEAgLTExMjYsNiArMTA5OSwxMSBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0c3RhY2tfc2l6ZSArPSA4O1xuIFx0c3JlZ19vZmYgPSBzdGFja19zaXplO1xuIFxuK1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG4rXHRcdHN0YWNrX3NpemUgKz0gODtcbitcdFx0dGNjX29mZiA9IHN0YWNrX3NpemU7XG4rXHR9XG4rXG4gXHRpZiAoKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIFx1MDAyNlx1MDAyNiAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTIFx1MDAzZSAwKSlcbiBcdFx0c3RhY2tfc2l6ZSArPSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7XG4gXG5AQCAtMTE2MCw2ICsxMTM4LDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHRcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfc2l6ZSwgY3R4KTtcbiBcdH1cbiBcbitcdC8qIHN0b3JlIHRhaWwgY2FsbCBjb3VudCAqL1xuK1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuK1x0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4gXHQvKiBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIgUzEgdG8gcGFzcyBzdGFydCB0aW1lICovXG4gXHRlbWl0X3NkKFJWX1JFR19GUCwgLXNyZWdfb2ZmLCBSVl9SRUdfUzEsIGN0eCk7XG4gXG5AQCAtMTE5NSw3ICsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdH1cbiBcbiBcdGlmIChmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcykge1xuLVx0XHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4rXHRcdGJyYW5jaGVzX29mZiA9IGt2emFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4gXHRcdGlmICghYnJhbmNoZXNfb2ZmKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTEyMTgsOSArMTIwMCwxNSBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0XHRvcmlnX2NhbGwgKz0gUlZfRkVOVFJZX05JTlNOUyAqIDQ7XG4gXHRcdHJlc3RvcmVfYXJncyhtaW5fdChpbnQsIG5yX2FyZ19zbG90cywgUlZfTUFYX1JFR19BUkdTKSwgYXJnc19vZmYsIGN0eCk7XG4gXHRcdHJlc3RvcmVfc3RhY2tfYXJncyhucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MsIGFyZ3Nfb2ZmLCBzdGtfYXJnX29mZiwgY3R4KTtcbitcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuK1x0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4rXHRcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXQ7XG4rXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuK1x0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4rXHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuIFx0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiBcdFx0aW0tXHUwMDNlaXBfYWZ0ZXJfY2FsbCA9IGN0eC1cdTAwM2Vyb19pbnNucyArIGN0eC1cdTAwM2VuaW5zbnM7XG5AQCAtMTI3Myw2ICsxMjYxLDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXG4gXHRlbWl0X2xkKFJWX1JFR19TMSwgLXNyZWdfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4gXG4rXHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbitcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbitcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuK1xuIFx0aWYgKCFpc19zdHJ1Y3Rfb3BzKSB7XG4gXHRcdC8qIHRyYW1wb2xpbmUgY2FsbGVkIGZyb20gZnVuY3Rpb24gZW50cnkgKi9cbiBcdFx0ZW1pdF9sZChSVl9SRUdfVDAsIHN0YWNrX3NpemUgLSA4LCBSVl9SRUdfU1AsIGN0eCk7XG5AQCAtMTMwMCw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcbiBcdHJldCA9IGN0eC1cdTAwM2VuaW5zbnM7XG4gb3V0OlxuLVx0a2ZyZWUoYnJhbmNoZXNfb2ZmKTtcbitcdGt2ZnJlZShicmFuY2hlc19vZmYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMTgzNywxMCArMTgyOSwxOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbitcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG4rXHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbitcdFx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4rXG4gXHRcdHJldCA9IGVtaXRfY2FsbChhZGRyLCBmaXhlZF9hZGRyLCBjdHgpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG4rXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgYnBmMmJwZiBjYWxsICovXG4rXHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbitcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMKVxuIFx0XHRcdGVtaXRfbXYoYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzAsIGN0eCksIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5AQCAtMjAyMCwxMCArMjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRzdGFja19hZGp1c3QgKz0gODtcbiBcdGlmIChzZWVuX3JlZyhSVl9SRUdfUzUsIGN0eCkpXG4gXHRcdHN0YWNrX2FkanVzdCArPSA4O1xuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSlcbi1cdFx0c3RhY2tfYWRqdXN0ICs9IDg7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuIFx0XHRzdGFja19hZGp1c3QgKz0gODtcbitcdHN0YWNrX2FkanVzdCArPSA4OyAvKiBSVl9SRUdfVENDICovXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTIwMzMsMTUgKzIwMzIsMTYgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHQvKiBlbWl0IGtjZmkgdHlwZSBwcmVhbWJsZSBpbW1lZGlhdGVseSBiZWZvcmUgdGhlICBmaXJzdCBpbnNuICovXG4gXHRlbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpO1xuIFxuK1x0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVx1MDAzZWJwZl9mdW5jIHNldHVwICovXG4rXG4gXHQvKiBub3BzIHJlc2VydmVkIGZvciBhdWlwYytqYWxyIHBhaXIgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJWX0ZFTlRSWV9OSU5TTlM7IGkrKylcbiBcdFx0ZW1pdChydl9ub3AoKSwgY3R4KTtcbiBcbi1cdC8qIEZpcnN0IGluc3RydWN0aW9uIGlzIGFsd2F5cyBzZXR0aW5nIHRoZSB0YWlsLWNhbGwtY291bnRlclxuLVx0ICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy5cbi1cdCAqIEZvcmNlIHVzaW5nIGEgNC1ieXRlIChub24tY29tcHJlc3NlZCkgaW5zdHJ1Y3Rpb24uXG4tXHQgKi9cbi1cdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xuK1x0aWYgKCFpc19zdWJwcm9nKVxuK1x0XHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbitcbitcdC8qIHRhaWxjYWxsIHN0YXJ0cyBoZXJlLCBlbWl0IGluc24gYmVmb3JlIGl0IG11c3QgYmUgZml4ZWQgKi9cbiBcbiBcdGVtaXRfYWRkaShSVl9SRUdfU1AsIFJWX1JFR19TUCwgLXN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbkBAIC0yMDcxLDI2ICsyMDcxLDIwIEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzUsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkge1xuLVx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7XG4tXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuLVx0fVxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuIFxuK1x0Lyogc3RvcmUgVENDIGZyb20gUlZfUkVHX1RDQyB0byBzdGFjayAqL1xuK1x0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1RDQywgY3R4KTtcbitcdGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0ID0gc3RvcmVfb2Zmc2V0O1xuK1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbiBcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuLVx0LyogUHJvZ3JhbSBjb250YWlucyBjYWxscyBhbmQgdGFpbCBjYWxscywgc28gUlZfUkVHX1RDQyBuZWVkXG4tXHQgKiB0byBiZSBzYXZlZCBhY3Jvc3MgY2FsbHMuXG4tXHQgKi9cbi1cdGlmIChzZWVuX3RhaWxfY2FsbChjdHgpIFx1MDAyNlx1MDAyNiBzZWVuX2NhbGwoY3R4KSlcbi1cdFx0ZW1pdF9tdihSVl9SRUdfVENDX1NBVkVELCBSVl9SRUdfVENDLCBjdHgpO1xuLVxuIFx0Y3R4LVx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuQEAgLTIxNTcsMyArMjE1MSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2UzYmQzNzYyZTA4Y2MuLmNiZmNkMjg3ZWExNjY4IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Y3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbi1cdGN0eC1cdTAwM2VvZmZzZXQgPSBremFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4rXHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuIFxuQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGN0eC1cdTAwM2VvZmZzZXRbaV0gPSBuaW5zbnNfcnZvZmYoY3R4LVx1MDAzZW9mZnNldFtpXSk7XG4gXHRcdGJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LVx1MDAzZW9mZnNldCk7XG4gb3V0X29mZnNldDpcbi1cdFx0a2ZyZWUoY3R4LVx1MDAzZW9mZnNldCk7XG4rXHRcdGt2ZnJlZShjdHgtXHUwMDNlb2Zmc2V0KTtcbiBcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHRwcm9nLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YSA9IE5VTEw7XG4gXHR9XG5AQCAtMjM0LDYgKzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmhcbmluZGV4IGFkZjUzZjdlZGYyODczLi43MGFhZDhkN2Q4NGZiMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnBmLmhcbkBAIC0yMTk2LDYgKzIxOTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbiBcdCAgICAgICB0eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTl9NVUxUSTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX3N0cnVjdF9vcHNfdHJhbXAoY29uc3Qgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZmVudHJ5X25vZGVzKVxuK3tcbitcdHJldHVybiBmZW50cnlfbm9kZXMtXHUwMDNlbnJfbm9kZXMgPT0gMSBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbit9XG4rXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbiAvKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcbiAgKiB0eXBlIGluZm9ybWF0aW9uIGNvcnJlY3RseS4gRGV2ZWxvcGVycyBzaG91bGQgdXNlIHRoaXMgbWFjcm8gdG8gcmVnaXN0ZXJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0XG5pbmRleCA0ZmM0ZGZkZGUyOTM3NS4uY2ExYmVhZTdmZThmMTAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcbkBAIC0xLDMgKzEsMiBAQFxuICMgcmlzY3Y2NCBkZW55IGxpc3QgZm9yIEJQRiBDSSBhbmQgbG9jYWwgdm10ZXN0XG4gZXhjZXB0aW9uc1x0XHRcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IGV4Y2VwdGlvbnNcbi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZipcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE1OjQ0LjgwMjU3NjM1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxODQ1ODMxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiB0aGUgUklTQy1WIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdG8gZW5hYmxlIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMgb24gUklTQy1WLiBJdCB0b3VjaGVzIGEgY291cGxlIG9mIGZpbGVzOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2AsIHBsdXMgaXQgbW92ZXMgYGlzX3N0cnVjdF9vcHNfdHJhbXBgIHRvIGBpbmNsdWRlL2xpbnV4L2JwZi5oYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxsc2Agb24gUklTQy1WLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiXG5cblRoZSBwYXRjaCAqZGVmaW5pdGVseSogbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLCB3aGljaCBpcyBhIGtleSBhcmVhLiBOb3csIHN5emthbGxlciBpcyB0aGUgZ28tdG8gZnV6emVyLCBhbmQgSSBrbm93IGl0J3MgcHJpbWFyaWx5IHg4Nl82NCBmb2N1c2VkLCBidXQgaXQgKmNhbiogZnV6eiBhcm02NCBhbmQgUklTQy1WIGlmIHByb3Blcmx5IGNvbmZpZ3VyZWQuIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgdGhlIEJQRiBKSVQgaXMsIHNvIHRoYXQncyBnb29kLlxuXG5Ob3csIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZnV6eiByaXNjdjY0PyBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgaXQgZG9lcywgd2hpY2ggcmVtb3ZlcyBhIG1ham9yIGh1cmRsZS4gXG5cblRoZSBwcm9tcHQgd2FudHMgbWUgdG8gdmVyaWZ5IHRoZSBjb2RlIGlzICpleGVjdXRhYmxlKiB1c2luZyBjb2RlIHNlYXJjaCB0b29scywgc28gbGV0J3MgY2hlY2sgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aG9zZSBmaWxlcywgdG8gc2VlIGlmIHRoZXkgYXJlIHBhcnQgb2YgYSBmdXp6ZXIgdGFyZ2V0OlxuXG5JbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2A6IEkgc2VlIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYGVtaXRfYnBmX3RhaWxfY2FsbGAsIGBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZWAsIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYC5cblxuQW5kIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2A6IEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucywganVzdCB0byBiZSBzdXJlIHdlIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS4gYENPTkZJR19CUEZfSklUYCBpcyB0aGUgYmlnIG9uZSwgYnV0IEknbGwgZG91YmxlLWNoZWNrIGZvciBhbnkgUklTQy1WIHNwZWNpZmljIGNvbmZpZyBrbm9icy4gVGhpcyBhbGwgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mzc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTU6NTIuOTg3MTYzNTU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTY3MjQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOD1zdGF0aWMgaW5saW5lIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKSB7IHJldHVybiBmYWxzZTsgfVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDAtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0FSQ0hfUlY2NEkpXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtMi1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTQtXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjY6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo1My4xOTg4NDczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5ODQzMDUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYEJQRl9KSVRgIGNvbmZpZyBlbmFibGVkLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGNvbXBpbGF0aW9uIGZsb3cgYW5kIGlkZW50aWZ5aW5nIGtleSBhcmVhcyBvZiBpbnRlcmVzdC4gTGV0J3Mgc2VlLCB3aGF0IGZ1bmN0aW9ucyBzdGFuZCBvdXQgYXMgYmVpbmcgY3JpdGljYWwgdG8gdGhlIHByb2Nlc3MuLi4gV2VsbCwgZmlyc3QsIEkgbmVlZCB0byBsb29rIGF0OiBgX19idWlsZF9lcGlsb2d1ZWAsIGBlbWl0X2JwZl90YWlsX2NhbGxgLCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9lbWl0X2luc25gLCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLlxuXG5IbW0sIGBicGZfaml0X2VtaXRfaW5zbmAuLi4gd2hpbGUgaXQgKmlzKiBnZW5lcmljIGluIG5hbWUsIGl0J3MgY2xlYXJseSBzcGVjaWZpYyB0byB0aGUgUklTQy1WIEJQRiBKSVQgaW1wbGVtZW50YXRpb24uIFRoYXQncyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTm93LCBgZW1pdF9icGZfdGFpbF9jYWxsYCBsb29rcyBwcm9taXNpbmcsIHRoYXQncyBkZWZpbml0ZWx5IGEgY29yZSBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gYmUgdW5kZXJzdG9vZC4gQWxzbywgSSBuZWVkIHRvIGNoZWNrIG91dCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLiBBbmQgb2YgY291cnNlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBzZWVtcyBpbXBvcnRhbnQsIHRvby4gQW5kIHRoZW4gdGhlcmUncyBgYnBmX2ludF9qaXRfY29tcGlsZWDigJR0aGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnQgb2YgdGhlIHdob2xlIGNvbXBpbGF0aW9uIHByb2Nlc3MuXG5cbk5vdywgbGV0IG1lIHNlZS4uLiBJIHdvbmRlciBpZiB0aGUgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHVzZWQgYW55d2hlcmUgaW4gdGhpcyBwcm9jZXNzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTY6MDAuNzk3MjgzNTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTEzNTEyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyNz11NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMzMyLS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMzM6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMzNC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIzODk9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzOTQtLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzk1OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5Ni17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTUxMD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTQtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1MTU6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTYte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0yMTUwPWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMTU0LVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjE1NTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTYte1xcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yOTgxPWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmltYWdlLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMDEwLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MzAxMTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTIte1xcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQwNTM9dm9pZCAqYnBmX2FyY2hfdGV4dF9jb3B5KHZvaWQgKmRzdCwgdm9pZCAqc3JjLCBzaXplX3QgbGVuKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjAtLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjQwNjE6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjIte1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMTgxPWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE4Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTgzLWJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMyNzY9Ym9vbCBfX3dlYWsgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjgxLS8qIFJldHVybiBUUlVFIGlmIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjMyODI6Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMyODMte1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0OTE9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ5My1cXHRyZXR1cm4gZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VqaXRfcmVxdWVzdGVkIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0OTQ6XFx0ICAgICAgIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHMoKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ5NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE2OjA2LjA0ODY0NDI3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MDI0NDMzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUklTQy1WIFRhaWwgQ2FsbHMgaW4gU3VicHJvZ3JhbXMgLSBBIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZW5hYmxpbmcgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIGZvciBSSVNDLVYsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgc3RlcC4gQmFzaWNhbGx5LCB3ZSdyZSBub3cgYWxsb3dpbmcgdGFpbCBjYWxscyB3aXRoaW4gc3VicHJvZ3JhbXMgb24gUklTQy1WLiBUaGF0J3MgZ29vZCBwcm9ncmVzcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNoYW5nZXMgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFyZSBmdW5jdGlvbmFsbHkgc291bmQ7IEkgc2hvdWxkIHJlYWxseSBnZXQgdGhhdCBmdXp6ZWQuIFRoYXQncyBhIG11c3QuXG5cbk5vdywgbGV0IG1lIHpvb20gaW4gb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZSwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYF9fYnVpbGRfZXBpbG9ndWVgIC0gdGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBlYWNoIHBpZWNlIGZpdHMgdG9nZXRoZXIuXG5cbkFscmlnaHQsIHdoYXQgYWJvdXQgY29uZmlncz8gTGV0J3Mgc2VlLCBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgYXJlIHJlbGV2YW50LiBCdXQgaXMgYEJQRl9KSVRgIHRoZSBvbmx5IHJlYWwgZGVwZW5kZW5jeT8gQSBxdWljayBjaGVjay4uLiBZZXAsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgbWFpbiBvbmUuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuIEdvb2QuXG5cblJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ2MiwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTY6MTQuODUxMDkxNDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjAzMzkxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZVwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYnBmX3RhaWxfY2FsbFwiLFxuICAgIFwiX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVcIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcIl9fYnVpbGRfZXBpbG9ndWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm9sl5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 16:47:00 +0000 UTC FinishedAt: 2026-07-08 17:16:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "25fc2d91-cd52-49d2-a992-88554de9157d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_bpf_tail_call", "__arch_prepare_bpf_trampoline", "bpf_jit_build_prologue", "__build_epilogue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2JwZl90YWlsX2NhbGwmIzM0OywKICAgICYjMzQ7X19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9idWlsZF9wcm9sb2d1ZSYjMzQ7LAogICAgJiMzNDtfX2J1aWxkX2VwaWxvZ3VlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZkYzQ0YzFiNDFlNjRmMDlkOTMwYTZkMzU3OGJiM2E5MjBlYTFmYzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIwMDc1ZWNlNGE2ZTdmLi4zNjMzN2MzZGFkODUxMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTI1NDQsMTIgJiM0MzsyNTQ0LDYgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9hcmdzKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBiYXJnc19vZmYsIGludCBucmVncylcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGJvb2wgaXNfc3RydWN0X29wc190cmFtcChjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnlfbm9kZXMpXG4te1xuLVx0cmV0dXJuIGZlbnRyeV9ub2Rlcy1cdTAwM2Vucl9ub2RlcyA9PSAxIFx1MDAyNlx1MDAyNlxuLVx0XHRmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbi19XG4tXG4gc3RhdGljIHZvaWQgc3RvcmVfZnVuY19tZXRhKHN0cnVjdCBqaXRfY3R4ICpjdHgsIHU2NCBmdW5jX21ldGEsIGludCBmdW5jX21ldGFfb2ZmKVxuIHtcbiBcdGVtaXRfYTY0X21vdl9pNjQoQTY0X1IoMTApLCBmdW5jX21ldGEsIGN0eCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5pbmRleCBkYTAyNzE3OTAyNDQyMS4uNDE5YjlkNzk1ZjJhN2EgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuQEAgLTgxLDYgJiM0Mzs4MSw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XG4gXHRpbnQgZXhfam1wX29mZjtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgc3RhY2tfc2l6ZTtcbiYjNDM7XHRpbnQgdGNjX29mZnNldDtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGY5ZDUzNDdiYTk2NmI3Li44MjMyNjJjYTQ3ZWJmNyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOCwxMiAmIzQzOzE4LDEyIEBAXG4gI2RlZmluZSBSVl9NQVhfUkVHX0FSR1MgOFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXG4gI2RlZmluZSBSVl9GRU5UUllfTkJZVEVTIChSVl9GRU5UUllfTklOU05TICogNClcbi0jZGVmaW5lIFJWX0tDRklfTklOU05TIChJU19FTkFCTEVEKENPTkZJR19DRkkpID8gMSA6IDApXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXG4gI2RlZmluZSBSVl9NQVhfQ09VTlRfSU1NIDB4N0ZGRjdGRjdGRjdGRjdGRlxuJiM0MzsvKiBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuJiM0MzsjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KVxuIFxuICNkZWZpbmUgUlZfUkVHX1RDQyBSVl9SRUdfQTZcbi0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi9cbiAjZGVmaW5lIFJWX1JFR19BUkVOQSBSVl9SRUdfUzcgLyogRm9yIHN0b3JpbmcgYXJlbmFfdm1fc3RhcnQgKi9cbiBcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xuQEAgLTU3LDE0ICYjNDM7NTcsMTIgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcbiB9O1xuIFxuIGVudW0ge1xuLVx0UlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwgPVx0MCxcbiBcdFJWX0NUWF9GX1NFRU5fQ0FMTCA9XHRcdFJWX1JFR19SQSxcbiBcdFJWX0NUWF9GX1NFRU5fUzEgPVx0XHRSVl9SRUdfUzEsXG4gXHRSVl9DVFhfRl9TRUVOX1MyID1cdFx0UlZfUkVHX1MyLFxuIFx0UlZfQ1RYX0ZfU0VFTl9TMyA9XHRcdFJWX1JFR19TMyxcbiBcdFJWX0NUWF9GX1NFRU5fUzQgPVx0XHRSVl9SRUdfUzQsXG4gXHRSVl9DVFhfRl9TRUVOX1M1ID1cdFx0UlZfUkVHX1M1LFxuLVx0UlZfQ1RYX0ZfU0VFTl9TNiA9XHRcdFJWX1JFR19TNixcbiB9O1xuIFxuIHN0YXRpYyB1OCBicGZfdG9fcnZfcmVnKGludCBicGZfcmVnLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbkBAIC03Nyw3ICYjNDM7NzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdF9fc2V0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gcmVnO1xuQEAgLTkyLDcgJiM0Mzs4OSw2IEBAIHN0YXRpYyBib29sIHNlZW5fcmVnKGludCByZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1MzOlxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M0OlxuIFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1OlxuLVx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M2OlxuIFx0XHRyZXR1cm4gdGVzdF9iaXQocmVnLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuIFx0fVxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEwOCwzMiAmIzQzOzEwNCw2IEBAIHN0YXRpYyB2b2lkIG1hcmtfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdF9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gfVxuIFxuLXN0YXRpYyBib29sIHNlZW5fY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBtYXJrX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tfVxuLVxuLXN0YXRpYyBib29sIHNlZW5fdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLXtcbi1cdHJldHVybiB0ZXN0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi19XG4tXG4tc3RhdGljIHU4IHJ2X3RhaWxfY2FsbF9yZWcoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0bWFya190YWlsX2NhbGwoY3R4KTtcbi1cbi1cdGlmIChzZWVuX2NhbGwoY3R4KSkge1xuLVx0XHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9TNiwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi1cdFx0cmV0dXJuIFJWX1JFR19TNjtcbi1cdH1cbi1cdHJldHVybiBSVl9SRUdfQTY7XG4tfVxuLVxuIHN0YXRpYyBib29sIGlzXzMyYl9pbnQoczY0IHZhbClcbiB7XG4gXHRyZXR1cm4gLSgxTCBcdTAwM2NcdTAwM2MgMzEpIFx1MDAzYz0gdmFsIFx1MDAyNlx1MDAyNiB2YWwgXHUwMDNjICgxTCBcdTAwM2NcdTAwM2MgMzEpO1xuQEAgLTI1OCwyMyAmIzQzOzIyOCwyMCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ZW1pdF9sZChSVl9SRUdfUzUsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbi1cdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcbi1cdFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuLVx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbi1cdH1cbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0ZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbiBcbiYjNDM7XHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbiYjNDM7XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4gXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbi1cdFx0ICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuLVx0XHQgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyAmIzQzOyBSVl9GRU5UUllfTklOU05TICYjNDM7IDEpICogNCA6IDAsXG4tXHRcdCAgY3R4KTtcbiYjNDM7XHRcdCAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXG5AQCAtMzU1LDcgJiM0MzszMjIsNiBAQCBzdGF0aWMgdm9pZCBlbWl0X2JyYW5jaCh1OCBjb25kLCB1OCByZCwgdTggcnMsIGludCBydm9mZixcbiBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4ge1xuIFx0aW50IHRjX25pbnNuLCBvZmYsIHN0YXJ0X2luc24gPSBjdHgtXHUwMDNlbmluc25zO1xuLVx0dTggdGNjID0gcnZfdGFpbF9jYWxsX3JlZyhjdHgpO1xuIFxuIFx0LyogYTA6IFx1MDAyNmN0eFxuIFx0ICogYTE6IFx1MDAyNmFycmF5XG5AQCAtMzc4LDcgJiM0MzszNDQsOCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHQvKiBpZiAoLS1UQ0MgXHUwMDNjIDApXG4gXHQgKiAgICAgZ290byBvdXQ7XG4gXHQgKi9cbi1cdGVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpO1xuJiM0MztcdGVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcbiYjNDM7XHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7XG4gXHRvZmYgPSBuaW5zbnNfcnZvZmYodGNfbmluc24gLSAoY3R4LVx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcbiBcdGVtaXRfYnJhbmNoKEJQRl9KU0xULCBSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpO1xuIFxuQEAgLTM5NCw3ICYjNDM7MzYxLDEwIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xuIFx0ZW1pdF9icmFuY2goQlBGX0pFUSwgUlZfUkVHX1QyLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpO1xuIFxuLVx0LyogZ290byAqKHByb2ctXHUwMDNlYnBmX2Z1bmMgJiM0MzsgNCk7ICovXG4mIzQzO1x0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqL1xuJiM0MztcdGVtaXRfc2QoUlZfUkVHX1NQLCBjdHgtXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1RDQywgY3R4KTtcbiYjNDM7XG4mIzQzO1x0LyogZ290byAqKHByb2ctXHUwMDNlYnBmX2Z1bmMgJiM0MzsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi9cbiBcdG9mZiA9IG9mZnNldG9mKHN0cnVjdCBicGZfcHJvZywgYnBmX2Z1bmMpO1xuIFx0aWYgKGlzXzEyYl9jaGVjayhvZmYsIGluc24pKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtMTAyOCwxMiAmIzQzOzk5OCwxMyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0aW50IGksIHJldCwgb2Zmc2V0O1xuIFx0aW50ICpicmFuY2hlc19vZmYgPSBOVUxMO1xuIFx0aW50IHN0YWNrX3NpemUgPSAwLCBucl9hcmdfc2xvdHMgPSAwO1xuLVx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XG4mIzQzO1x0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmY7XG4mIzQzO1x0aW50IHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmYsIHRjY19vZmY7XG4gXHRpbnQgY29va2llX29mZiwgY29va2llX2NudDtcbiBcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVOVFJZXTtcbiBcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gXHUwMDI2dG5vZGVzW0JQRl9UUkFNUF9GRVhJVF07XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfTU9ESUZZX1JFVFVSTl07XG4tXHRib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfSU5ESVJFQ1Q7XG4mIzQzO1x0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpO1xuIFx0dm9pZCAqb3JpZ19jYWxsID0gZnVuY19hZGRyO1xuIFx0Ym9vbCBzYXZlX3JldDtcbiBcdHU2NCBmdW5jX21ldGE7XG5AQCAtMTA3OSw2ICYjNDM7MTA1MCw4IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHQgKlxuIFx0ICogRlAgLSBzcmVnX29mZiAgICBbIGNhbGxlZSBzYXZlZCByZWdcdF1cbiBcdCAqXG4mIzQzO1x0ICogRlAgLSB0Y2Nfb2ZmICAgICBbIHRhaWwgY2FsbCBjb3VudFx0XSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYXG4mIzQzO1x0ICpcbiBcdCAqXHRcdCAgICBbIHBhZHMgICAgICAgICAgICAgIF0gcGFkcyBmb3IgMTYgYnl0ZXMgYWxpZ25tZW50XG4gXHQgKlxuIFx0ICpcdFx0ICAgIFsgc3RhY2tfYXJnTiAgICAgICAgXVxuQEAgLTExMjYsNiAmIzQzOzEwOTksMTEgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdHN0YWNrX3NpemUgJiM0Mzs9IDg7XG4gXHRzcmVnX29mZiA9IHN0YWNrX3NpemU7XG4gXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG4mIzQzO1x0XHRzdGFja19zaXplICYjNDM7PSA4O1xuJiM0MztcdFx0dGNjX29mZiA9IHN0YWNrX3NpemU7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmICgoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX0NBTExfT1JJRykgXHUwMDI2XHUwMDI2IChucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MgXHUwMDNlIDApKVxuIFx0XHRzdGFja19zaXplICYjNDM7PSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7XG4gXG5AQCAtMTE2MCw2ICYjNDM7MTEzOCwxMCBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0XHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX3NpemUsIGN0eCk7XG4gXHR9XG4gXG4mIzQzO1x0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuJiM0MztcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcbiBcdC8qIGNhbGxlZSBzYXZlZCByZWdpc3RlciBTMSB0byBwYXNzIHN0YXJ0IHRpbWUgKi9cbiBcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtc3JlZ19vZmYsIFJWX1JFR19TMSwgY3R4KTtcbiBcbkBAIC0xMTk1LDcgJiM0MzsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdH1cbiBcbiBcdGlmIChmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcykge1xuLVx0XHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4mIzQzO1x0XHRicmFuY2hlc19vZmYgPSBrdnphbGxvY19vYmpzKGludCwgZm1vZF9yZXQtXHUwMDNlbnJfbm9kZXMpO1xuIFx0XHRpZiAoIWJyYW5jaGVzX29mZilcbiBcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0xMjE4LDkgJiM0MzsxMjAwLDE1IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHRcdG9yaWdfY2FsbCAmIzQzOz0gUlZfRkVOVFJZX05JTlNOUyAqIDQ7XG4gXHRcdHJlc3RvcmVfYXJncyhtaW5fdChpbnQsIG5yX2FyZ19zbG90cywgUlZfTUFYX1JFR19BUkdTKSwgYXJnc19vZmYsIGN0eCk7XG4gXHRcdHJlc3RvcmVfc3RhY2tfYXJncyhucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MsIGFyZ3Nfb2ZmLCBzdGtfYXJnX29mZiwgY3R4KTtcbiYjNDM7XHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbiYjNDM7XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbiYjNDM7XHRcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbiYjNDM7XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbiYjNDM7XHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuIFx0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiBcdFx0aW0tXHUwMDNlaXBfYWZ0ZXJfY2FsbCA9IGN0eC1cdTAwM2Vyb19pbnNucyAmIzQzOyBjdHgtXHUwMDNlbmluc25zO1xuQEAgLTEyNzMsNiAmIzQzOzEyNjEsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcbiBcdGVtaXRfbGQoUlZfUkVHX1MxLCAtc3JlZ19vZmYsIFJWX1JFR19GUCwgY3R4KTtcbiBcbiYjNDM7XHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbiYjNDM7XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4mIzQzO1x0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4mIzQzO1xuIFx0aWYgKCFpc19zdHJ1Y3Rfb3BzKSB7XG4gXHRcdC8qIHRyYW1wb2xpbmUgY2FsbGVkIGZyb20gZnVuY3Rpb24gZW50cnkgKi9cbiBcdFx0ZW1pdF9sZChSVl9SRUdfVDAsIHN0YWNrX3NpemUgLSA4LCBSVl9SRUdfU1AsIGN0eCk7XG5AQCAtMTMwMCw3ICYjNDM7MTI5Miw3IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXG4gXHRyZXQgPSBjdHgtXHUwMDNlbmluc25zO1xuIG91dDpcbi1cdGtmcmVlKGJyYW5jaGVzX29mZik7XG4mIzQzO1x0a3ZmcmVlKGJyYW5jaGVzX29mZik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0xODM3LDEwICYjNDM7MTgyOSwxOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbiYjNDM7XHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xuJiM0MztcdFx0aWYgKGF1eC1cdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxuJiM0MztcdFx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4mIzQzO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoYWRkciwgZml4ZWRfYWRkciwgY3R4KTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFxuJiM0MztcdFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayBhZnRlciBicGYyYnBmIGNhbGwgKi9cbiYjNDM7XHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbiYjNDM7XHRcdFx0ZW1pdF9zZChSVl9SRUdfU1AsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcbiBcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4gXHRcdFx0ZW1pdF9tdihicGZfdG9fcnZfcmVnKEJQRl9SRUdfMCwgY3R4KSwgUlZfUkVHX0EwLCBjdHgpO1xuIFx0XHRicmVhaztcbkBAIC0yMDIwLDEwICYjNDM7MjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4gXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M1LCBjdHgpKVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4tXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M2LCBjdHgpKVxuLVx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuIFx0XHRzdGFja19hZGp1c3QgJiM0Mzs9IDg7XG4mIzQzO1x0c3RhY2tfYWRqdXN0ICYjNDM7PSA4OyAvKiBSVl9SRUdfVENDICovXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDtcbkBAIC0yMDMzLDE1ICYjNDM7MjAzMiwxNiBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcbiBcdC8qIGVtaXQga2NmaSB0eXBlIHByZWFtYmxlIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgIGZpcnN0IGluc24gKi9cbiBcdGVtaXRfa2NmaShpc19zdWJwcm9nID8gY2ZpX2JwZl9zdWJwcm9nX2hhc2ggOiBjZmlfYnBmX2hhc2gsIGN0eCk7XG4gXG4mIzQzO1x0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVx1MDAzZWJwZl9mdW5jIHNldHVwICovXG4mIzQzO1xuIFx0Lyogbm9wcyByZXNlcnZlZCBmb3IgYXVpcGMmIzQzO2phbHIgcGFpciAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlZfRkVOVFJZX05JTlNOUzsgaSYjNDM7JiM0MzspXG4gXHRcdGVtaXQocnZfbm9wKCksIGN0eCk7XG4gXG4tXHQvKiBGaXJzdCBpbnN0cnVjdGlvbiBpcyBhbHdheXMgc2V0dGluZyB0aGUgdGFpbC1jYWxsLWNvdW50ZXJcbi1cdCAqIChUQ0MpIHJlZ2lzdGVyLiBUaGlzIGluc3RydWN0aW9uIGlzIHNraXBwZWQgZm9yIHRhaWwgY2FsbHMuXG4tXHQgKiBGb3JjZSB1c2luZyBhIDQtYnl0ZSAobm9uLWNvbXByZXNzZWQpIGluc3RydWN0aW9uLlxuLVx0ICovXG4tXHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbiYjNDM7XHRpZiAoIWlzX3N1YnByb2cpXG4mIzQzO1x0XHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbiYjNDM7XG4mIzQzO1x0LyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqL1xuIFxuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuQEAgLTIwNzEsMjYgJiM0MzsyMDcxLDIwIEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzUsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkge1xuLVx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7XG4tXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuLVx0fVxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuIFxuJiM0MztcdC8qIHN0b3JlIFRDQyBmcm9tIFJWX1JFR19UQ0MgdG8gc3RhY2sgKi9cbiYjNDM7XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xuJiM0MztcdGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0ID0gc3RvcmVfb2Zmc2V0O1xuJiM0MztcbiBcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuIFx0aWYgKGJwZl9zdGFja19hZGp1c3QpXG4gXHRcdGVtaXRfYWRkaShSVl9SRUdfUzUsIFJWX1JFR19TUCwgYnBmX3N0YWNrX2FkanVzdCwgY3R4KTtcbiBcbi1cdC8qIFByb2dyYW0gY29udGFpbnMgY2FsbHMgYW5kIHRhaWwgY2FsbHMsIHNvIFJWX1JFR19UQ0MgbmVlZFxuLVx0ICogdG8gYmUgc2F2ZWQgYWNyb3NzIGNhbGxzLlxuLVx0ICovXG4tXHRpZiAoc2Vlbl90YWlsX2NhbGwoY3R4KSBcdTAwMjZcdTAwMjYgc2Vlbl9jYWxsKGN0eCkpXG4tXHRcdGVtaXRfbXYoUlZfUkVHX1RDQ19TQVZFRCwgUlZfUkVHX1RDQywgY3R4KTtcbi1cbiBcdGN0eC1cdTAwM2VzdGFja19zaXplID0gc3RhY2tfYWRqdXN0O1xuIFxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydClcbkBAIC0yMTU3LDMgJiM0MzsyMTUxLDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4ge1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuJiM0MztcbiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXVzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy1cdTAwM2VhdXgtXHUwMDNlYXJlbmEpO1xuIFx0Y3R4LVx1MDAzZXByb2cgPSBwcm9nO1xuLVx0Y3R4LVx1MDAzZW9mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiYjNDM7XHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuIFxuQEAgLTE3MCw3ICYjNDM7MTcwLDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHRjdHgtXHUwMDNlb2Zmc2V0W2ldID0gbmluc25zX3J2b2ZmKGN0eC1cdTAwM2VvZmZzZXRbaV0pO1xuIFx0XHRicGZfcHJvZ19maWxsX2ppdGVkX2xpbmZvKHByb2csIGN0eC1cdTAwM2VvZmZzZXQpO1xuIG91dF9vZmZzZXQ6XG4tXHRcdGtmcmVlKGN0eC1cdTAwM2VvZmZzZXQpO1xuJiM0MztcdFx0a3ZmcmVlKGN0eC1cdTAwM2VvZmZzZXQpO1xuIFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdHByb2ctXHUwMDNlYXV4LVx1MDAzZWppdF9kYXRhID0gTlVMTDtcbiBcdH1cbkBAIC0yMzQsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuJiM0MztcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4gXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHR9XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5pbmRleCBhZGY1M2Y3ZWRmMjg3My4uNzBhYWQ4ZDdkODRmYjIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXG5AQCAtMjE5Niw2ICYjNDM7MjE5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuIFx0ICAgICAgIHR5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX3N0cnVjdF9vcHNfdHJhbXAoY29uc3Qgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZmVudHJ5X25vZGVzKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZlbnRyeV9ub2Rlcy1cdTAwM2Vucl9ub2RlcyA9PSAxIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAgICBmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbiYjNDM7fVxuJiM0MztcbiAjaWYgZGVmaW5lZChDT05GSUdfQlBGX0pJVCkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxuIC8qIFRoaXMgbWFjcm8gaGVscHMgZGV2ZWxvcGVyIHRvIHJlZ2lzdGVyIGEgc3RydWN0X29wcyB0eXBlIGFuZCBnZW5lcmF0ZVxuICAqIHR5cGUgaW5mb3JtYXRpb24gY29ycmVjdGx5LiBEZXZlbG9wZXJzIHNob3VsZCB1c2UgdGhpcyBtYWNybyB0byByZWdpc3RlclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcbmluZGV4IDRmYzRkZmRkZTI5Mzc1Li5jYTFiZWFlN2ZlOGYxMCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxuQEAgLTEsMyAmIzQzOzEsMiBAQFxuICMgcmlzY3Y2NCBkZW55IGxpc3QgZm9yIEJQRiBDSSBhbmQgbG9jYWwgdm10ZXN0XG4gZXhjZXB0aW9uc1x0XHRcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IGV4Y2VwdGlvbnNcbi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZipcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDssCiAgICAmIzM0O19fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkYzQ0YzFiNDFlNjRmMDlkOTMwYTZkMzU3OGJiM2E5MjBlYTFmYzIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYwppbmRleCBiMDA3NWVjZTRhNmU3Zi4uMzYzMzdjM2RhZDg1MTMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0yNTQ0LDEyICYjNDM7MjU0NCw2IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVfYXJncyhzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgYmFyZ3Nfb2ZmLCBpbnQgbnJlZ3MpCiAJfQogfQogCi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcykKLXsKLQlyZXR1cm4gZmVudHJ5X25vZGVzLSZndDtucl9ub2RlcyA9PSAxICZhbXA7JmFtcDsKLQkJZmVudHJ5X25vZGVzLSZndDtub2Rlc1swXS0mZ3Q7bGluay0mZ3Q7dHlwZSA9PSBCUEZfTElOS19UWVBFX1NUUlVDVF9PUFM7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0b3JlX2Z1bmNfbWV0YShzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1NjQgZnVuY19tZXRhLCBpbnQgZnVuY19tZXRhX29mZikKIHsKIAllbWl0X2E2NF9tb3ZfaTY0KEE2NF9SKDEwKSwgZnVuY19tZXRhLCBjdHgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCmluZGV4IGRhMDI3MTc5MDI0NDIxLi40MTliOWQ3OTVmMmE3YSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaApAQCAtODEsNiAmIzQzOzgxLDcgQEAgc3RydWN0IHJ2X2ppdF9jb250ZXh0IHsKIAlpbnQgZXhfam1wX29mZjsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBzdGFja19zaXplOwomIzQzOwlpbnQgdGNjX29mZnNldDsKIAl1NjQgYXJlbmFfdm1fc3RhcnQ7CiAJdTY0IHVzZXJfdm1fc3RhcnQ7CiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKaW5kZXggZjlkNTM0N2JhOTY2YjcuLjgyMzI2MmNhNDdlYmY3IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMKQEAgLTE4LDEyICYjNDM7MTgsMTIgQEAKICNkZWZpbmUgUlZfTUFYX1JFR19BUkdTIDgKICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyCiAjZGVmaW5lIFJWX0ZFTlRSWV9OQllURVMgKFJWX0ZFTlRSWV9OSU5TTlMgKiA0KQotI2RlZmluZSBSVl9LQ0ZJX05JTlNOUyAoSVNfRU5BQkxFRChDT05GSUdfQ0ZJKSA/IDEgOiAwKQogLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovCiAjZGVmaW5lIFJWX01BWF9DT1VOVF9JTU0gMHg3RkZGN0ZGN0ZGN0ZGN0ZGCiYjNDM7LyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi8KJiM0MzsjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgJiM0MzsgMSkgKiA0KQogCiAjZGVmaW5lIFJWX1JFR19UQ0MgUlZfUkVHX0E2Ci0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi8KICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqLwogCiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0gewpAQCAtNTcsMTQgJiM0Mzs1NywxMiBAQCBzdGF0aWMgY29uc3QgaW50IHB0X3JlZ21hcFtdID0gewogfTsKIAogZW51bSB7Ci0JUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwgPQkwLAogCVJWX0NUWF9GX1NFRU5fQ0FMTCA9CQlSVl9SRUdfUkEsCiAJUlZfQ1RYX0ZfU0VFTl9TMSA9CQlSVl9SRUdfUzEsCiAJUlZfQ1RYX0ZfU0VFTl9TMiA9CQlSVl9SRUdfUzIsCiAJUlZfQ1RYX0ZfU0VFTl9TMyA9CQlSVl9SRUdfUzMsCiAJUlZfQ1RYX0ZfU0VFTl9TNCA9CQlSVl9SRUdfUzQsCiAJUlZfQ1RYX0ZfU0VFTl9TNSA9CQlSVl9SRUdfUzUsCi0JUlZfQ1RYX0ZfU0VFTl9TNiA9CQlSVl9SRUdfUzYsCiB9OwogCiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCkBAIC03Nyw3ICYjNDM7NzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBSVl9DVFhfRl9TRUVOX1MzOgogCWNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDoKIAljYXNlIFJWX0NUWF9GX1NFRU5fUzU6Ci0JY2FzZSBSVl9DVFhfRl9TRUVOX1M2OgogCQlfX3NldF9iaXQocmVnLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwogCX0KIAlyZXR1cm4gcmVnOwpAQCAtOTIsNyAmIzQzOzg5LDYgQEAgc3RhdGljIGJvb2wgc2Vlbl9yZWcoaW50IHJlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJY2FzZSBSVl9DVFhfRl9TRUVOX1MzOgogCWNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDoKIAljYXNlIFJWX0NUWF9GX1NFRU5fUzU6Ci0JY2FzZSBSVl9DVFhfRl9TRUVOX1M2OgogCQlyZXR1cm4gdGVzdF9iaXQocmVnLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwogCX0KIAlyZXR1cm4gZmFsc2U7CkBAIC0xMDgsMzIgJiM0MzsxMDQsNiBAQCBzdGF0aWMgdm9pZCBtYXJrX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJX19zZXRfYml0KFJWX0NUWF9GX1NFRU5fQ0FMTCwgJmFtcDtjdHgtJmd0O2ZsYWdzKTsKIH0KIAotc3RhdGljIGJvb2wgc2Vlbl9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQotewotCXJldHVybiB0ZXN0X2JpdChSVl9DVFhfRl9TRUVOX0NBTEwsICZhbXA7Y3R4LSZndDtmbGFncyk7Ci19Ci0KLXN0YXRpYyB2b2lkIG1hcmtfdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQotewotCV9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgJmFtcDtjdHgtJmd0O2ZsYWdzKTsKLX0KLQotc3RhdGljIGJvb2wgc2Vlbl90YWlsX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCi17Ci0JcmV0dXJuIHRlc3RfYml0KFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMLCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwotfQotCi1zdGF0aWMgdTggcnZfdGFpbF9jYWxsX3JlZyhzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCkKLXsKLQltYXJrX3RhaWxfY2FsbChjdHgpOwotCi0JaWYgKHNlZW5fY2FsbChjdHgpKSB7Ci0JCV9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1M2LCAmYW1wO2N0eC0mZ3Q7ZmxhZ3MpOwotCQlyZXR1cm4gUlZfUkVHX1M2OwotCX0KLQlyZXR1cm4gUlZfUkVHX0E2OwotfQotCiBzdGF0aWMgYm9vbCBpc18zMmJfaW50KHM2NCB2YWwpCiB7CiAJcmV0dXJuIC0oMUwgJmx0OyZsdDsgMzEpICZsdDs9IHZhbCAmYW1wOyZhbXA7IHZhbCAmbHQ7ICgxTCAmbHQ7Jmx0OyAzMSk7CkBAIC0yNTgsMjMgJiM0MzsyMjgsMjAgQEAgc3RhdGljIHZvaWQgX19idWlsZF9lcGlsb2d1ZShib29sIGlzX3RhaWxfY2FsbCwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJCWVtaXRfbGQoUlZfUkVHX1M1LCBzdG9yZV9vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTsKIAkJc3RvcmVfb2Zmc2V0IC09IDg7CiAJfQotCWlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHsKLQkJZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwotCQlzdG9yZV9vZmZzZXQgLT0gODsKLQl9CiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpIHsKIAkJZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwogCQlzdG9yZV9vZmZzZXQgLT0gODsKIAl9CiAKJiM0MzsJLyogcmVzdG9yZSBUQ0MgZnJvbSBzdGFjayB0byBSVl9SRUdfVENDICovCiYjNDM7CWVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LSZndDt0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7CiYjNDM7CiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7CiAJLyogU2V0IHJldHVybiB2YWx1ZS4gKi8KIAlpZiAoIWlzX3RhaWxfY2FsbCkKIAkJZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTsKIAllbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSwKLQkJICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqLwotCQkgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyAmIzQzOyBSVl9GRU5UUllfTklOU05TICYjNDM7IDEpICogNCA6IDAsCi0JCSAgY3R4KTsKJiM0MzsJCSAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsCkBAIC0zNTUsNyAmIzQzOzMyMiw2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYnJhbmNoKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLAogc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogewogCWludCB0Y19uaW5zbiwgb2ZmLCBzdGFydF9pbnNuID0gY3R4LSZndDtuaW5zbnM7Ci0JdTggdGNjID0gcnZfdGFpbF9jYWxsX3JlZyhjdHgpOwogCiAJLyogYTA6ICZhbXA7Y3R4CiAJICogYTE6ICZhbXA7YXJyYXkKQEAgLTM3OCw3ICYjNDM7MzQ0LDggQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KQogCS8qIGlmICgtLVRDQyAmbHQ7IDApCiAJICogICAgIGdvdG8gb3V0OwogCSAqLwotCWVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpOwomIzQzOwllbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC0mZ3Q7dGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpOwomIzQzOwllbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7CiAJb2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC0mZ3Q7bmluc25zIC0gc3RhcnRfaW5zbikpOwogCWVtaXRfYnJhbmNoKEJQRl9KU0xULCBSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgb2ZmLCBjdHgpOwogCkBAIC0zOTQsNyAmIzQzOzM2MSwxMCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpCiAJb2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC0mZ3Q7bmluc25zIC0gc3RhcnRfaW5zbikpOwogCWVtaXRfYnJhbmNoKEJQRl9KRVEsIFJWX1JFR19UMiwgUlZfUkVHX1pFUk8sIG9mZiwgY3R4KTsKIAotCS8qIGdvdG8gKihwcm9nLSZndDticGZfZnVuYyAmIzQzOyA0KTsgKi8KJiM0MzsJLyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqLwomIzQzOwllbWl0X3NkKFJWX1JFR19TUCwgY3R4LSZndDt0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpOwomIzQzOwomIzQzOwkvKiBnb3RvICoocHJvZy0mZ3Q7YnBmX2Z1bmMgJiM0MzsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi8KIAlvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Byb2csIGJwZl9mdW5jKTsKIAlpZiAoaXNfMTJiX2NoZWNrKG9mZiwgaW5zbikpCiAJCXJldHVybiAtMTsKQEAgLTEwMjgsMTIgJiM0Mzs5OTgsMTMgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAlpbnQgaSwgcmV0LCBvZmZzZXQ7CiAJaW50ICpicmFuY2hlc19vZmYgPSBOVUxMOwogCWludCBzdGFja19zaXplID0gMCwgbnJfYXJnX3Nsb3RzID0gMDsKLQlpbnQgcmV0dmFsX29mZiwgYXJnc19vZmYsIGZ1bmNfbWV0YV9vZmYsIGlwX29mZiwgcnVuX2N0eF9vZmYsIHNyZWdfb2ZmLCBzdGtfYXJnX29mZjsKJiM0MzsJaW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmY7CiYjNDM7CWludCBydW5fY3R4X29mZiwgc3JlZ19vZmYsIHN0a19hcmdfb2ZmLCB0Y2Nfb2ZmOwogCWludCBjb29raWVfb2ZmLCBjb29raWVfY250OwogCXN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9ICZhbXA7dG5vZGVzW0JQRl9UUkFNUF9GRU5UUlldOwogCXN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gJmFtcDt0bm9kZXNbQlBGX1RSQU1QX0ZFWElUXTsKIAlzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9ICZhbXA7dG5vZGVzW0JQRl9UUkFNUF9NT0RJRllfUkVUVVJOXTsKLQlib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyAmYW1wOyBCUEZfVFJBTVBfRl9JTkRJUkVDVDsKJiM0MzsJYm9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpOwogCXZvaWQgKm9yaWdfY2FsbCA9IGZ1bmNfYWRkcjsKIAlib29sIHNhdmVfcmV0OwogCXU2NCBmdW5jX21ldGE7CkBAIC0xMDc5LDYgJiM0MzsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkgKgogCSAqIEZQIC0gc3JlZ19vZmYgICAgWyBjYWxsZWUgc2F2ZWQgcmVnCV0KIAkgKgomIzQzOwkgKiBGUCAtIHRjY19vZmYgICAgIFsgdGFpbCBjYWxsIGNvdW50CV0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWAomIzQzOwkgKgogCSAqCQkgICAgWyBwYWRzICAgICAgICAgICAgICBdIHBhZHMgZm9yIDE2IGJ5dGVzIGFsaWdubWVudAogCSAqCiAJICoJCSAgICBbIHN0YWNrX2FyZ04gICAgICAgIF0KQEAgLTExMjYsNiAmIzQzOzEwOTksMTEgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAlzdGFja19zaXplICYjNDM7PSA4OwogCXNyZWdfb2ZmID0gc3RhY2tfc2l6ZTsKIAomIzQzOwlpZiAoZmxhZ3MgJmFtcDsgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkgewomIzQzOwkJc3RhY2tfc2l6ZSAmIzQzOz0gODsKJiM0MzsJCXRjY19vZmYgPSBzdGFja19zaXplOwomIzQzOwl9CiYjNDM7CiAJaWYgKChmbGFncyAmYW1wOyBCUEZfVFJBTVBfRl9DQUxMX09SSUcpICZhbXA7JmFtcDsgKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUyAmZ3Q7IDApKQogCQlzdGFja19zaXplICYjNDM7PSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7CiAKQEAgLTExNjAsNiAmIzQzOzExMzgsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkJZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19zaXplLCBjdHgpOwogCX0KIAomIzQzOwkvKiBzdG9yZSB0YWlsIGNhbGwgY291bnQgKi8KJiM0MzsJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQllbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CiAJLyogY2FsbGVlIHNhdmVkIHJlZ2lzdGVyIFMxIHRvIHBhc3Mgc3RhcnQgdGltZSAqLwogCWVtaXRfc2QoUlZfUkVHX0ZQLCAtc3JlZ19vZmYsIFJWX1JFR19TMSwgY3R4KTsKIApAQCAtMTE5NSw3ICYjNDM7MTE3Nyw3IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sCiAJfQogCiAJaWYgKGZtb2RfcmV0LSZndDtucl9ub2RlcykgewotCQlicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC0mZ3Q7bnJfbm9kZXMpOwomIzQzOwkJYnJhbmNoZXNfb2ZmID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIGZtb2RfcmV0LSZndDtucl9ub2Rlcyk7CiAJCWlmICghYnJhbmNoZXNfb2ZmKQogCQkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTEyMTgsOSAmIzQzOzEyMDAsMTUgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwKIAkJb3JpZ19jYWxsICYjNDM7PSBSVl9GRU5UUllfTklOU05TICogNDsKIAkJcmVzdG9yZV9hcmdzKG1pbl90KGludCwgbnJfYXJnX3Nsb3RzLCBSVl9NQVhfUkVHX0FSR1MpLCBhcmdzX29mZiwgY3R4KTsKIAkJcmVzdG9yZV9zdGFja19hcmdzKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUywgYXJnc19vZmYsIHN0a19hcmdfb2ZmLCBjdHgpOwomIzQzOwkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqLwomIzQzOwkJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQkJZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpOwogCQlyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIG91dDsKJiM0MzsJCS8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqLwomIzQzOwkJaWYgKGZsYWdzICZhbXA7IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpCiYjNDM7CQkJZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpOwogCQllbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTsKIAkJZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTsKIAkJaW0tJmd0O2lwX2FmdGVyX2NhbGwgPSBjdHgtJmd0O3JvX2luc25zICYjNDM7IGN0eC0mZ3Q7bmluc25zOwpAQCAtMTI3Myw2ICYjNDM7MTI2MSwxMCBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJZW1pdF9sZChSVl9SRUdfUzEsIC1zcmVnX29mZiwgUlZfUkVHX0ZQLCBjdHgpOwogCiYjNDM7CS8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqLwomIzQzOwlpZiAoZmxhZ3MgJmFtcDsgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkKJiM0MzsJCWVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTsKJiM0MzsKIAlpZiAoIWlzX3N0cnVjdF9vcHMpIHsKIAkJLyogdHJhbXBvbGluZSBjYWxsZWQgZnJvbSBmdW5jdGlvbiBlbnRyeSAqLwogCQllbWl0X2xkKFJWX1JFR19UMCwgc3RhY2tfc2l6ZSAtIDgsIFJWX1JFR19TUCwgY3R4KTsKQEAgLTEzMDAsNyAmIzQzOzEyOTIsNyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLAogCiAJcmV0ID0gY3R4LSZndDtuaW5zbnM7CiBvdXQ6Ci0Ja2ZyZWUoYnJhbmNoZXNfb2ZmKTsKJiM0MzsJa3ZmcmVlKGJyYW5jaGVzX29mZik7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTgzNywxMCAmIzQzOzE4MjksMTggQEAgaW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsCiAJCQl9CiAJCX0KIAomIzQzOwkJLyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovCiYjNDM7CQlpZiAoYXV4LSZndDt0YWlsX2NhbGxfcmVhY2hhYmxlICZhbXA7JmFtcDsgaW5zbi0mZ3Q7c3JjX3JlZyA9PSBCUEZfUFNFVURPX0NBTEwpCiYjNDM7CQkJZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtJmd0O3RjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTsKJiM0MzsKIAkJcmV0ID0gZW1pdF9jYWxsKGFkZHIsIGZpeGVkX2FkZHIsIGN0eCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCiYjNDM7CQkvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGJwZjJicGYgY2FsbCAqLwomIzQzOwkJaWYgKGF1eC0mZ3Q7dGFpbF9jYWxsX3JlYWNoYWJsZSAmYW1wOyZhbXA7IGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKQomIzQzOwkJCWVtaXRfc2QoUlZfUkVHX1NQLCBjdHgtJmd0O3RjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CiAJCWlmIChpbnNuLSZndDtzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCkKIAkJCWVtaXRfbXYoYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzAsIGN0eCksIFJWX1JFR19BMCwgY3R4KTsKIAkJYnJlYWs7CkBAIC0yMDIwLDEwICYjNDM7MjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCQlzdGFja19hZGp1c3QgJiM0Mzs9IDg7CiAJaWYgKHNlZW5fcmVnKFJWX1JFR19TNSwgY3R4KSkKIAkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwotCWlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpCi0JCXN0YWNrX2FkanVzdCAmIzQzOz0gODsKIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkKIAkJc3RhY2tfYWRqdXN0ICYjNDM7PSA4OwomIzQzOwlzdGFja19hZGp1c3QgJiM0Mzs9IDg7IC8qIFJWX1JFR19UQ0MgKi8KIAogCXN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pOwogCXN0YWNrX2FkanVzdCAmIzQzOz0gYnBmX3N0YWNrX2FkanVzdDsKQEAgLTIwMzMsMTUgJiM0MzsyMDMyLDE2IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKQogCS8qIGVtaXQga2NmaSB0eXBlIHByZWFtYmxlIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgIGZpcnN0IGluc24gKi8KIAllbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpOwogCiYjNDM7CS8qIGJwZiBwcm9nIHN0YXJ0cyBoZXJlIGFzIGtjZmkgc2tpcHBlZCBkdXJpbmcgcHJvZy0mZ3Q7YnBmX2Z1bmMgc2V0dXAgKi8KJiM0MzsKIAkvKiBub3BzIHJlc2VydmVkIGZvciBhdWlwYyYjNDM7amFsciBwYWlyICovCiAJZm9yIChpID0gMDsgaSAmbHQ7IFJWX0ZFTlRSWV9OSU5TTlM7IGkmIzQzOyYjNDM7KQogCQllbWl0KHJ2X25vcCgpLCBjdHgpOwogCi0JLyogRmlyc3QgaW5zdHJ1Y3Rpb24gaXMgYWx3YXlzIHNldHRpbmcgdGhlIHRhaWwtY2FsbC1jb3VudGVyCi0JICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy4KLQkgKiBGb3JjZSB1c2luZyBhIDQtYnl0ZSAobm9uLWNvbXByZXNzZWQpIGluc3RydWN0aW9uLgotCSAqLwotCWVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpOwomIzQzOwlpZiAoIWlzX3N1YnByb2cpCiYjNDM7CQllbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTsKJiM0MzsKJiM0MzsJLyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqLwogCiAJZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpOwogCkBAIC0yMDcxLDI2ICYjNDM7MjA3MSwyMCBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZykKIAkJZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1M1LCBjdHgpOwogCQlzdG9yZV9vZmZzZXQgLT0gODsKIAl9Ci0JaWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkgewotCQllbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7Ci0JCXN0b3JlX29mZnNldCAtPSA4OwotCX0KIAlpZiAoY3R4LSZndDthcmVuYV92bV9zdGFydCkgewogCQllbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7CiAJCXN0b3JlX29mZnNldCAtPSA4OwogCX0KIAomIzQzOwkvKiBzdG9yZSBUQ0MgZnJvbSBSVl9SRUdfVENDIHRvIHN0YWNrICovCiYjNDM7CWVtaXRfc2QoUlZfUkVHX1NQLCBzdG9yZV9vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7CiYjNDM7CWN0eC0mZ3Q7dGNjX29mZnNldCA9IHN0b3JlX29mZnNldDsKJiM0MzsKIAllbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTsKIAogCWlmIChicGZfc3RhY2tfYWRqdXN0KQogCQllbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7CiAKLQkvKiBQcm9ncmFtIGNvbnRhaW5zIGNhbGxzIGFuZCB0YWlsIGNhbGxzLCBzbyBSVl9SRUdfVENDIG5lZWQKLQkgKiB0byBiZSBzYXZlZCBhY3Jvc3MgY2FsbHMuCi0JICovCi0JaWYgKHNlZW5fdGFpbF9jYWxsKGN0eCkgJmFtcDsmYW1wOyBzZWVuX2NhbGwoY3R4KSkKLQkJZW1pdF9tdihSVl9SRUdfVENDX1NBVkVELCBSVl9SRUdfVENDLCBjdHgpOwotCiAJY3R4LSZndDtzdGFja19zaXplID0gc3RhY2tfYWRqdXN0OwogCiAJaWYgKGN0eC0mZ3Q7YXJlbmFfdm1fc3RhcnQpCkBAIC0yMTU3LDMgJiM0MzsyMTUxLDggQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpCiB7CiAJcmV0dXJuIHRydWU7CiB9CiYjNDM7CiYjNDM7Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpCiYjNDM7ewomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMKQEAgLTcyLDcgJiM0Mzs3Miw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJY3R4LSZndDthcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLSZndDthdXgtJmd0O2FyZW5hKTsKIAljdHgtJmd0O3VzZXJfdm1fc3RhcnQgPSBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQocHJvZy0mZ3Q7YXV4LSZndDthcmVuYSk7CiAJY3R4LSZndDtwcm9nID0gcHJvZzsKLQljdHgtJmd0O29mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiYjNDM7CWN0eC0mZ3Q7b2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctJmd0O2xlbik7CiAJaWYgKCFjdHgtJmd0O29mZnNldCkKIAkJZ290byBvdXRfb2Zmc2V0OwogCkBAIC0xNzAsNyAmIzQzOzE3MCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQljdHgtJmd0O29mZnNldFtpXSA9IG5pbnNuc19ydm9mZihjdHgtJmd0O29mZnNldFtpXSk7CiAJCWJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LSZndDtvZmZzZXQpOwogb3V0X29mZnNldDoKLQkJa2ZyZWUoY3R4LSZndDtvZmZzZXQpOwomIzQzOwkJa3ZmcmVlKGN0eC0mZ3Q7b2Zmc2V0KTsKIAkJa2ZyZWUoaml0X2RhdGEpOwogCQlwcm9nLSZndDthdXgtJmd0O2ppdF9kYXRhID0gTlVMTDsKIAl9CkBAIC0yMzQsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmgKaW5kZXggYWRmNTNmN2VkZjI4NzMuLjcwYWFkOGQ3ZDg0ZmIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnBmLmgKQEAgLTIxOTYsNiAmIzQzOzIxOTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSkKIAkgICAgICAgdHlwZSA9PSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaXNfc3RydWN0X29wc190cmFtcChjb25zdCBzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnlfbm9kZXMpCiYjNDM7ewomIzQzOwlyZXR1cm4gZmVudHJ5X25vZGVzLSZndDtucl9ub2RlcyA9PSAxICZhbXA7JmFtcDsKJiM0MzsJICAgICAgIGZlbnRyeV9ub2Rlcy0mZ3Q7bm9kZXNbMF0tJmd0O2xpbmstJmd0O3R5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTOwomIzQzO30KJiM0MzsKICNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSAmYW1wOyZhbXA7IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKQogLyogVGhpcyBtYWNybyBoZWxwcyBkZXZlbG9wZXIgdG8gcmVnaXN0ZXIgYSBzdHJ1Y3Rfb3BzIHR5cGUgYW5kIGdlbmVyYXRlCiAgKiB0eXBlIGluZm9ybWF0aW9uIGNvcnJlY3RseS4gRGV2ZWxvcGVycyBzaG91bGQgdXNlIHRoaXMgbWFjcm8gdG8gcmVnaXN0ZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjQKaW5kZXggNGZjNGRmZGRlMjkzNzUuLmNhMWJlYWU3ZmU4ZjEwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NApAQCAtMSwzICYjNDM7MSwyIEBACiAjIHJpc2N2NjQgZGVueSBsaXN0IGZvciBCUEYgQ0kgYW5kIGxvY2FsIHZtdGVzdAogZXhjZXB0aW9ucwkJCQkJIyBKSVQgZG9lcyBub3Qgc3VwcG9ydCBleGNlcHRpb25zCi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZioJCQkjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBSSVNDLVYgQlBGIEpJVCBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHRvIGVuYWJsZSBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzIG9uIFJJU0MtVi4gSXQgdG91Y2hlcyBhIGNvdXBsZSBvZiBmaWxlczogYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFuZCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNgLCBwbHVzIGl0IG1vdmVzIGBpc19zdHJ1Y3Rfb3BzX3RyYW1wYCB0byBgaW5jbHVkZS9saW51eC9icGYuaGAuIFRoZSBjb3JlIG9mIHRoaXMgaXMgZW5hYmxpbmcgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIG9uIFJJU0MtVi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V29ydGggZnV6emluZz8mIzM0OwoKVGhlIHBhdGNoICpkZWZpbml0ZWx5KiBtb2RpZmllcyB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIsIHdoaWNoIGlzIGEga2V5IGFyZWEuIE5vdywgc3l6a2FsbGVyIGlzIHRoZSBnby10byBmdXp6ZXIsIGFuZCBJIGtub3cgaXQmIzM5O3MgcHJpbWFyaWx5IHg4Nl82NCBmb2N1c2VkLCBidXQgaXQgKmNhbiogZnV6eiBhcm02NCBhbmQgUklTQy1WIGlmIHByb3Blcmx5IGNvbmZpZ3VyZWQuIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgdGhlIEJQRiBKSVQgaXMsIHNvIHRoYXQmIzM5O3MgZ29vZC4KCk5vdywgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IHJpc2N2NjQ/IEEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBpdCBkb2VzLCB3aGljaCByZW1vdmVzIGEgbWFqb3IgaHVyZGxlLiAKClRoZSBwcm9tcHQgd2FudHMgbWUgdG8gdmVyaWZ5IHRoZSBjb2RlIGlzICpleGVjdXRhYmxlKiB1c2luZyBjb2RlIHNlYXJjaCB0b29scywgc28gbGV0JiMzOTtzIGNoZWNrIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgaW4gdGhvc2UgZmlsZXMsIHRvIHNlZSBpZiB0aGV5IGFyZSBwYXJ0IG9mIGEgZnV6emVyIHRhcmdldDoKCkluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYDogSSBzZWUgYF9fYnVpbGRfZXBpbG9ndWVgLCBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfZW1pdF9pbnNuYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgLgoKQW5kIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2A6IEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLCBqdXN0IHRvIGJlIHN1cmUgd2UgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLiBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBiaWcgb25lLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIGZvciBhbnkgUklTQy1WIHNwZWNpZmljIGNvbmZpZyBrbm9icy4gVGhpcyBhbGwgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg9Mzg9c3RhdGljIGlubGluZSBib29sIGZpeHVwX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaC00MC1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oOjQxOiNpZiBkZWZpbmVkKENPTkZJR19CUEZfSklUKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfQVJDSF9SVjY0SSlcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vZXh0YWJsZS5oLTQyLWJvb2wgZXhfaGFuZGxlcl9icGYoY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZXgsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS0yLVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXRfY29yZS5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS00LVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU6NjpcdG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wNjQub1xuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtNy1lbHNlXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4Olx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0X2NvbXAzMi5vXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS05LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczNwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgQlBGX0pJVGAgY29uZmlnIGVuYWJsZWQuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvcmUgY29tcGlsYXRpb24gZmxvdyBhbmQgaWRlbnRpZnlpbmcga2V5IGFyZWFzIG9mIGludGVyZXN0LiBMZXQmIzM5O3Mgc2VlLCB3aGF0IGZ1bmN0aW9ucyBzdGFuZCBvdXQgYXMgYmVpbmcgY3JpdGljYWwgdG8gdGhlIHByb2Nlc3MuLi4gV2VsbCwgZmlyc3QsIEkgbmVlZCB0byBsb29rIGF0OiBgX19idWlsZF9lcGlsb2d1ZWAsIGBlbWl0X2JwZl90YWlsX2NhbGxgLCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9lbWl0X2luc25gLCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLgoKSG1tLCBgYnBmX2ppdF9lbWl0X2luc25gLi4uIHdoaWxlIGl0ICppcyogZ2VuZXJpYyBpbiBuYW1lLCBpdCYjMzk7cyBjbGVhcmx5IHNwZWNpZmljIHRvIHRoZSBSSVNDLVYgQlBGIEpJVCBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTm93LCBgZW1pdF9icGZfdGFpbF9jYWxsYCBsb29rcyBwcm9taXNpbmcsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGNvcmUgZnVuY3Rpb25hbGl0eSB0aGF0IG5lZWRzIHRvIGJlIHVuZGVyc3Rvb2QuIEFsc28sIEkgbmVlZCB0byBjaGVjayBvdXQgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYC4gQW5kIG9mIGNvdXJzZSBgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZWAgc2VlbXMgaW1wb3J0YW50LCB0b28uIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGBicGZfaW50X2ppdF9jb21waWxlYOKAlHRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnQgb2YgdGhlIHdob2xlIGNvbXBpbGF0aW9uIHByb2Nlc3MuCgpOb3csIGxldCBtZSBzZWUuLi4gSSB3b25kZXIgaWYgdGhlIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYCBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkIGFueXdoZXJlIGluIHRoaXMgcHJvY2Vzcy4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIzMjc9dTY0IGJwZl9qaXRfYWxsb2NfZXhlY19saW1pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIzMzItLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoyMzMzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMzNC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzg5PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5NC0vKiBJbmRpY2F0ZSB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5NTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5Ni17XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz01MTA9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2V4Y2VwdGlvbnModm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTUxNC1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NTE1OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTYte1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MjE1MD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTQtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjIxNTU6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTYte1xuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9Mjk4MT1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICppbWFnZSxcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTAtXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjMwMTE6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTIte1xuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz00MDUzPXZvaWQgKmJwZl9hcmNoX3RleHRfY29weSh2b2lkICpkc3QsIHZvaWQgKnNyYywgc2l6ZV90IGxlbilcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2MC0vKiBJbmRpY2F0ZSB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDYxOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjIte1xuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE4MT1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE4Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExODMtYm9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMyNzY9Ym9vbCBfX3dlYWsgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzI4MS0vKiBSZXR1cm4gVFJVRSBpZiB0aGUgSklUIGJhY2tlbmQgc3VwcG9ydHMgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxscy4gKi9cbmtlcm5lbC9icGYvY29yZS5jOjMyODI6Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzI4My17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0OTE9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0OTMtXHRyZXR1cm4gZW52LVx1MDAzZXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NDk0Olx0ICAgICAgIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHMoKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDk1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ2MgoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUklTQy1WIFRhaWwgQ2FsbHMgaW4gU3VicHJvZ3JhbXMgLSBBIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGVuYWJsaW5nIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYCBmb3IgUklTQy1WLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IHN0ZXAuIEJhc2ljYWxseSwgd2UmIzM5O3JlIG5vdyBhbGxvd2luZyB0YWlsIGNhbGxzIHdpdGhpbiBzdWJwcm9ncmFtcyBvbiBSSVNDLVYuIFRoYXQmIzM5O3MgZ29vZCBwcm9ncmVzcy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjaGFuZ2VzIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCBhcmUgZnVuY3Rpb25hbGx5IHNvdW5kOyBJIHNob3VsZCByZWFsbHkgZ2V0IHRoYXQgZnV6emVkLiBUaGF0JiMzOTtzIGEgbXVzdC4KCk5vdywgbGV0IG1lIHpvb20gaW4gb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZSwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYF9fYnVpbGRfZXBpbG9ndWVgIC0gdGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBlYWNoIHBpZWNlIGZpdHMgdG9nZXRoZXIuCgpBbHJpZ2h0LCB3aGF0IGFib3V0IGNvbmZpZ3M/IExldCYjMzk7cyBzZWUsIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBhcmUgcmVsZXZhbnQuIEJ1dCBpcyBgQlBGX0pJVGAgdGhlIG9ubHkgcmVhbCBkZXBlbmRlbmN5PyBBIHF1aWNrIGNoZWNrLi4uIFllcCwgaXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9KSVRgIGlzIHRoZSBtYWluIG9uZS4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gR29vZC4KClJpZ2h0LCBJJiMzOTttIHNhdGlzZmllZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2VtaXRfYnBmX3RhaWxfY2FsbCYjMzQ7LAogICAgJiMzNDtfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2J1aWxkX3Byb2xvZ3VlJiMzNDssCiAgICAmIzM0O19fYnVpbGRfZXBpbG9ndWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBtaXhpbmcgYnBmMmJwZiBjYWxscyBhbmQgdGFpbGNhbGxzIGluIHRoZSBSSVNDLVYgQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgY29yZSBKSVQgZnVuY3Rpb25zIGxpa2UgcHJvbG9ndWUvZXBpbG9ndWUgZ2VuZXJhdGlvbiwgdGFpbCBjYWxsIGVtaXNzaW9uLCBhbmQgdHJhbXBvbGluZSBwcmVwYXJhdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcyBvZiB0aGUgSklUIGNvbXBpbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9icGZfdGFpbF9jYWxsJiMzNDssCiAgICAmIzM0O19fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYnVpbGRfcHJvbG9ndWUmIzM0OywKICAgICYjMzQ7X19idWlsZF9lcGlsb2d1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo0My45MjM5OTU3MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTI0NzQ3MjE2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYnBmX3RhaWxfY2FsbFwiLFxuICAgIFwiX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVcIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcIl9fYnVpbGRfZXBpbG9ndWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE1OjQzLjkyNDAwNDkxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc3MzgwOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmRjNDRjMWI0MWU2NGYwOWQ5MzBhNmQzNTc4YmIzYTkyMGVhMWZjMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE3OjE1OjQxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG5pbmRleCBiMDA3NWVjZTRhNmU3Zi4uMzYzMzdjM2RhZDg1MTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0yNTQ0LDEyICsyNTQ0LDYgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9hcmdzKHN0cnVjdCBqaXRfY3R4ICpjdHgsIGludCBiYXJnc19vZmYsIGludCBucmVncylcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcylcXG4te1xcbi1cXHRyZXR1cm4gZmVudHJ5X25vZGVzLVxcdTAwM2Vucl9ub2RlcyA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdGZlbnRyeV9ub2Rlcy1cXHUwMDNlbm9kZXNbMF0tXFx1MDAzZWxpbmstXFx1MDAzZXR5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTO1xcbi19XFxuLVxcbiBzdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXFxuIHtcXG4gXFx0ZW1pdF9hNjRfbW92X2k2NChBNjRfUigxMCksIGZ1bmNfbWV0YSwgY3R4KTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXFxuaW5kZXggZGEwMjcxNzkwMjQ0MjEuLjQxOWI5ZDc5NWYyYTdhIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxcbkBAIC04MSw2ICs4MSw3IEBAIHN0cnVjdCBydl9qaXRfY29udGV4dCB7XFxuIFxcdGludCBleF9qbXBfb2ZmO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgc3RhY2tfc2l6ZTtcXG4rXFx0aW50IHRjY19vZmZzZXQ7XFxuIFxcdHU2NCBhcmVuYV92bV9zdGFydDtcXG4gXFx0dTY0IHVzZXJfdm1fc3RhcnQ7XFxuIH07XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggZjlkNTM0N2JhOTY2YjcuLjgyMzI2MmNhNDdlYmY3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTE4LDEyICsxOCwxMiBAQFxcbiAjZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XFxuICNkZWZpbmUgUlZfRkVOVFJZX05JTlNOUyAyXFxuICNkZWZpbmUgUlZfRkVOVFJZX05CWVRFUyAoUlZfRkVOVFJZX05JTlNOUyAqIDQpXFxuLSNkZWZpbmUgUlZfS0NGSV9OSU5TTlMgKElTX0VOQUJMRUQoQ09ORklHX0NGSSkgPyAxIDogMClcXG4gLyogaW1tIHRoYXQgYWxsb3dzIGVtaXRfaW1tIHRvIGVtaXQgbWF4IGNvdW50IGluc25zICovXFxuICNkZWZpbmUgUlZfTUFYX0NPVU5UX0lNTSAweDdGRkY3RkY3RkY3RkY3RkZcXG4rLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4rI2RlZmluZSBSVl9UQUlMQ0FMTF9PRkZTRVQgKChSVl9GRU5UUllfTklOU05TICsgMSkgKiA0KVxcbiBcXG4gI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxcbi0jZGVmaW5lIFJWX1JFR19UQ0NfU0FWRUQgUlZfUkVHX1M2IC8qIFN0b3JlIEE2IGluIFM2IGlmIHByb2dyYW0gZG8gY2FsbHMgKi9cXG4gI2RlZmluZSBSVl9SRUdfQVJFTkEgUlZfUkVHX1M3IC8qIEZvciBzdG9yaW5nIGFyZW5hX3ZtX3N0YXJ0ICovXFxuIFxcbiBzdGF0aWMgY29uc3QgaW50IHJlZ21hcFtdID0ge1xcbkBAIC01NywxNCArNTcsMTIgQEAgc3RhdGljIGNvbnN0IGludCBwdF9yZWdtYXBbXSA9IHtcXG4gfTtcXG4gXFxuIGVudW0ge1xcbi1cXHRSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCA9XFx0MCxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9DQUxMID1cXHRcXHRSVl9SRUdfUkEsXFxuIFxcdFJWX0NUWF9GX1NFRU5fUzEgPVxcdFxcdFJWX1JFR19TMSxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9TMiA9XFx0XFx0UlZfUkVHX1MyLFxcbiBcXHRSVl9DVFhfRl9TRUVOX1MzID1cXHRcXHRSVl9SRUdfUzMsXFxuIFxcdFJWX0NUWF9GX1NFRU5fUzQgPVxcdFxcdFJWX1JFR19TNCxcXG4gXFx0UlZfQ1RYX0ZfU0VFTl9TNSA9XFx0XFx0UlZfUkVHX1M1LFxcbi1cXHRSVl9DVFhfRl9TRUVOX1M2ID1cXHRcXHRSVl9SRUdfUzYsXFxuIH07XFxuIFxcbiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuQEAgLTc3LDcgKzc1LDYgQEAgc3RhdGljIHU4IGJwZl90b19ydl9yZWcoaW50IGJwZl9yZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XFxuIFxcdGNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDpcXG4gXFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1Olxcbi1cXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XFxuIFxcdFxcdF9fc2V0X2JpdChyZWcsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gcmVnO1xcbkBAIC05Miw3ICs4OSw2IEBAIHN0YXRpYyBib29sIHNlZW5fcmVnKGludCByZWcsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XFxuIFxcdGNhc2UgUlZfQ1RYX0ZfU0VFTl9TNDpcXG4gXFx0Y2FzZSBSVl9DVFhfRl9TRUVOX1M1Olxcbi1cXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XFxuIFxcdFxcdHJldHVybiB0ZXN0X2JpdChyZWcsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTEwOCwzMiArMTA0LDYgQEAgc3RhdGljIHZvaWQgbWFya19jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcXHUwMDI2Y3R4LVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHNlZW5fY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4te1xcbi1cXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcXHUwMDI2Y3R4LVxcdTAwM2VmbGFncyk7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIG1hcmtfdGFpbF9jYWxsKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbi17XFxuLVxcdF9fc2V0X2JpdChSVl9DVFhfRl9TRUVOX1RBSUxfQ0FMTCwgXFx1MDAyNmN0eC1cXHUwMDNlZmxhZ3MpO1xcbi19XFxuLVxcbi1zdGF0aWMgYm9vbCBzZWVuX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4te1xcbi1cXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFxcdTAwMjZjdHgtXFx1MDAzZWZsYWdzKTtcXG4tfVxcbi1cXG4tc3RhdGljIHU4IHJ2X3RhaWxfY2FsbF9yZWcoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuLXtcXG4tXFx0bWFya190YWlsX2NhbGwoY3R4KTtcXG4tXFxuLVxcdGlmIChzZWVuX2NhbGwoY3R4KSkge1xcbi1cXHRcXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9TNiwgXFx1MDAyNmN0eC1cXHUwMDNlZmxhZ3MpO1xcbi1cXHRcXHRyZXR1cm4gUlZfUkVHX1M2O1xcbi1cXHR9XFxuLVxcdHJldHVybiBSVl9SRUdfQTY7XFxuLX1cXG4tXFxuIHN0YXRpYyBib29sIGlzXzMyYl9pbnQoczY0IHZhbClcXG4ge1xcbiBcXHRyZXR1cm4gLSgxTCBcXHUwMDNjXFx1MDAzYyAzMSkgXFx1MDAzYz0gdmFsIFxcdTAwMjZcXHUwMDI2IHZhbCBcXHUwMDNjICgxTCBcXHUwMDNjXFx1MDAzYyAzMSk7XFxuQEAgLTI1OCwyMyArMjI4LDIwIEBAIHN0YXRpYyB2b2lkIF9fYnVpbGRfZXBpbG9ndWUoYm9vbCBpc190YWlsX2NhbGwsIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19TNSwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSA4O1xcbiBcXHR9XFxuLVxcdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcXG4tXFx0XFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbi1cXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4tXFx0fVxcbiBcXHRpZiAoY3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCkge1xcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19BUkVOQSwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XFxuIFxcdFxcdHN0b3JlX29mZnNldCAtPSA4O1xcbiBcXHR9XFxuIFxcbitcXHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cXG4rXFx0ZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtXFx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcXG4rXFxuIFxcdGVtaXRfYWRkaShSVl9SRUdfU1AsIFJWX1JFR19TUCwgc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xcbiBcXHRpZiAoIWlzX3RhaWxfY2FsbClcXG4gXFx0XFx0ZW1pdF9hZGRpdyhSVl9SRUdfQTAsIFJWX1JFR19BNSwgMCwgY3R4KTtcXG4gXFx0ZW1pdF9qYWxyKFJWX1JFR19aRVJPLCBpc190YWlsX2NhbGwgPyBSVl9SRUdfVDMgOiBSVl9SRUdfUkEsXFxuLVxcdFxcdCAgLyoga2NmaSwgZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cXG4tXFx0XFx0ICBpc190YWlsX2NhbGwgPyAoUlZfS0NGSV9OSU5TTlMgKyBSVl9GRU5UUllfTklOU05TICsgMSkgKiA0IDogMCxcXG4tXFx0XFx0ICBjdHgpO1xcbitcXHRcXHQgIGlzX3RhaWxfY2FsbCA/IFJWX1RBSUxDQUxMX09GRlNFVCA6IDAsIGN0eCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGVtaXRfYmNjKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLFxcbkBAIC0zNTUsNyArMzIyLDYgQEAgc3RhdGljIHZvaWQgZW1pdF9icmFuY2godTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4ge1xcbiBcXHRpbnQgdGNfbmluc24sIG9mZiwgc3RhcnRfaW5zbiA9IGN0eC1cXHUwMDNlbmluc25zO1xcbi1cXHR1OCB0Y2MgPSBydl90YWlsX2NhbGxfcmVnKGN0eCk7XFxuIFxcbiBcXHQvKiBhMDogXFx1MDAyNmN0eFxcbiBcXHQgKiBhMTogXFx1MDAyNmFycmF5XFxuQEAgLTM3OCw3ICszNDQsOCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXFxuIFxcdC8qIGlmICgtLVRDQyBcXHUwMDNjIDApXFxuIFxcdCAqICAgICBnb3RvIG91dDtcXG4gXFx0ICovXFxuLVxcdGVtaXRfYWRkaShSVl9SRUdfVENDLCB0Y2MsIC0xLCBjdHgpO1xcbitcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1RDQywgLTEsIGN0eCk7XFxuIFxcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXFx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcXG4gXFx0ZW1pdF9icmFuY2goQlBGX0pTTFQsIFJWX1JFR19UQ0MsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XFxuIFxcbkBAIC0zOTQsNyArMzYxLDEwIEBAIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcXG4gXFx0b2ZmID0gbmluc25zX3J2b2ZmKHRjX25pbnNuIC0gKGN0eC1cXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xcbiBcXHRlbWl0X2JyYW5jaChCUEZfSkVRLCBSVl9SRUdfVDIsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XFxuIFxcbi1cXHQvKiBnb3RvICoocHJvZy1cXHUwMDNlYnBmX2Z1bmMgKyA0KTsgKi9cXG4rXFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayAqL1xcbitcXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVxcdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXG4rXFx0LyogZ290byAqKHByb2ctXFx1MDAzZWJwZl9mdW5jICsgUlZfVEFJTENBTExfT0ZGU0VUKTsgKi9cXG4gXFx0b2ZmID0gb2Zmc2V0b2Yoc3RydWN0IGJwZl9wcm9nLCBicGZfZnVuYyk7XFxuIFxcdGlmIChpc18xMmJfY2hlY2sob2ZmLCBpbnNuKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC0xMDI4LDEyICs5OTgsMTMgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0aW50IGksIHJldCwgb2Zmc2V0O1xcbiBcXHRpbnQgKmJyYW5jaGVzX29mZiA9IE5VTEw7XFxuIFxcdGludCBzdGFja19zaXplID0gMCwgbnJfYXJnX3Nsb3RzID0gMDtcXG4tXFx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XFxuK1xcdGludCByZXR2YWxfb2ZmLCBhcmdzX29mZiwgZnVuY19tZXRhX29mZiwgaXBfb2ZmO1xcbitcXHRpbnQgcnVuX2N0eF9vZmYsIHNyZWdfb2ZmLCBzdGtfYXJnX29mZiwgdGNjX29mZjtcXG4gXFx0aW50IGNvb2tpZV9vZmYsIGNvb2tpZV9jbnQ7XFxuIFxcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeSA9IFxcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX0ZFTlRSWV07XFxuIFxcdHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZleGl0ID0gXFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVYSVRdO1xcbiBcXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmbW9kX3JldCA9IFxcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dO1xcbi1cXHRib29sIGlzX3N0cnVjdF9vcHMgPSBmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX0lORElSRUNUO1xcbitcXHRib29sIGlzX3N0cnVjdF9vcHMgPSBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGZlbnRyeSk7XFxuIFxcdHZvaWQgKm9yaWdfY2FsbCA9IGZ1bmNfYWRkcjtcXG4gXFx0Ym9vbCBzYXZlX3JldDtcXG4gXFx0dTY0IGZ1bmNfbWV0YTtcXG5AQCAtMTA3OSw2ICsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0ICpcXG4gXFx0ICogRlAgLSBzcmVnX29mZiAgICBbIGNhbGxlZSBzYXZlZCByZWdcXHRdXFxuIFxcdCAqXFxuK1xcdCAqIEZQIC0gdGNjX29mZiAgICAgWyB0YWlsIGNhbGwgY291bnRcXHRdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcXG4rXFx0ICpcXG4gXFx0ICpcXHRcXHQgICAgWyBwYWRzICAgICAgICAgICAgICBdIHBhZHMgZm9yIDE2IGJ5dGVzIGFsaWdubWVudFxcbiBcXHQgKlxcbiBcXHQgKlxcdFxcdCAgICBbIHN0YWNrX2FyZ04gICAgICAgIF1cXG5AQCAtMTEyNiw2ICsxMDk5LDExIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdHN0YWNrX3NpemUgKz0gODtcXG4gXFx0c3JlZ19vZmYgPSBzdGFja19zaXplO1xcbiBcXG4rXFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkge1xcbitcXHRcXHRzdGFja19zaXplICs9IDg7XFxuK1xcdFxcdHRjY19vZmYgPSBzdGFja19zaXplO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSBcXHUwMDI2XFx1MDAyNiAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTIFxcdTAwM2UgMCkpXFxuIFxcdFxcdHN0YWNrX3NpemUgKz0gKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUykgKiA4O1xcbiBcXG5AQCAtMTE2MCw2ICsxMTM4LDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdFxcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfc2l6ZSwgY3R4KTtcXG4gXFx0fVxcbiBcXG4rXFx0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXFxuK1xcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcXG4rXFxuIFxcdC8qIGNhbGxlZSBzYXZlZCByZWdpc3RlciBTMSB0byBwYXNzIHN0YXJ0IHRpbWUgKi9cXG4gXFx0ZW1pdF9zZChSVl9SRUdfRlAsIC1zcmVnX29mZiwgUlZfUkVHX1MxLCBjdHgpO1xcbiBcXG5AQCAtMTE5NSw3ICsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGZtb2RfcmV0LVxcdTAwM2Vucl9ub2Rlcykge1xcbi1cXHRcXHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cXHUwMDNlbnJfbm9kZXMpO1xcbitcXHRcXHRicmFuY2hlc19vZmYgPSBrdnphbGxvY19vYmpzKGludCwgZm1vZF9yZXQtXFx1MDAzZW5yX25vZGVzKTtcXG4gXFx0XFx0aWYgKCFicmFuY2hlc19vZmYpXFxuIFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5AQCAtMTIxOCw5ICsxMjAwLDE1IEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuIFxcdFxcdG9yaWdfY2FsbCArPSBSVl9GRU5UUllfTklOU05TICogNDtcXG4gXFx0XFx0cmVzdG9yZV9hcmdzKG1pbl90KGludCwgbnJfYXJnX3Nsb3RzLCBSVl9NQVhfUkVHX0FSR1MpLCBhcmdzX29mZiwgY3R4KTtcXG4gXFx0XFx0cmVzdG9yZV9zdGFja19hcmdzKG5yX2FyZ19zbG90cyAtIFJWX01BWF9SRUdfQVJHUywgYXJnc19vZmYsIHN0a19hcmdfb2ZmLCBjdHgpO1xcbitcXHRcXHQvKiByZXN0b3JlIFRDQyB0byBSVl9SRUdfVENDIGJlZm9yZSBjYWxsaW5nIHRoZSBvcmlnIGJwZiBmdW5jICovXFxuK1xcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4gXFx0XFx0cmV0ID0gZW1pdF9jYWxsKChjb25zdCB1NjQpb3JpZ19jYWxsLCB0cnVlLCBjdHgpO1xcbiBcXHRcXHRpZiAocmV0KVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0Lyogc3RvcmUgdXBkYXRlZCBUQ0MgYmFjayB0byBzdGFjayBhZnRlciBjYWxsaW5nIHRoZSBvcmlnIGJwZiBmdW5jICovXFxuK1xcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuK1xcdFxcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfRlAsIC1yZXR2YWxfb2ZmLCBSVl9SRUdfQTAsIGN0eCk7XFxuIFxcdFxcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtKHJldHZhbF9vZmYgLSA4KSwgcmVnbWFwW0JQRl9SRUdfMF0sIGN0eCk7XFxuIFxcdFxcdGltLVxcdTAwM2VpcF9hZnRlcl9jYWxsID0gY3R4LVxcdTAwM2Vyb19pbnNucyArIGN0eC1cXHUwMDNlbmluc25zO1xcbkBAIC0xMjczLDYgKzEyNjEsMTAgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFxuIFxcdGVtaXRfbGQoUlZfUkVHX1MxLCAtc3JlZ19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4gXFxuK1xcdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbitcXHRcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XFxuK1xcbiBcXHRpZiAoIWlzX3N0cnVjdF9vcHMpIHtcXG4gXFx0XFx0LyogdHJhbXBvbGluZSBjYWxsZWQgZnJvbSBmdW5jdGlvbiBlbnRyeSAqL1xcbiBcXHRcXHRlbWl0X2xkKFJWX1JFR19UMCwgc3RhY2tfc2l6ZSAtIDgsIFJWX1JFR19TUCwgY3R4KTtcXG5AQCAtMTMwMCw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcXG4gXFxuIFxcdHJldCA9IGN0eC1cXHUwMDNlbmluc25zO1xcbiBvdXQ6XFxuLVxcdGtmcmVlKGJyYW5jaGVzX29mZik7XFxuK1xcdGt2ZnJlZShicmFuY2hlc19vZmYpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0xODM3LDEwICsxODI5LDE4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGJwZjJicGYgY2FsbCAqL1xcbitcXHRcXHRpZiAoYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFxcdTAwMjZcXHUwMDI2IGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxcbitcXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xcbitcXG4gXFx0XFx0cmV0ID0gZW1pdF9jYWxsKGFkZHIsIGZpeGVkX2FkZHIsIGN0eCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRcXHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrIGFmdGVyIGJwZjJicGYgY2FsbCAqL1xcbitcXHRcXHRpZiAoYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlIFxcdTAwMjZcXHUwMDI2IGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19DQUxMKVxcbitcXHRcXHRcXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVxcdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXG4gXFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMKVxcbiBcXHRcXHRcXHRlbWl0X212KGJwZl90b19ydl9yZWcoQlBGX1JFR18wLCBjdHgpLCBSVl9SRUdfQTAsIGN0eCk7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC0yMDIwLDEwICsyMDIwLDkgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXFxuIFxcdFxcdHN0YWNrX2FkanVzdCArPSA4O1xcbiBcXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M1LCBjdHgpKVxcbiBcXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4tXFx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSlcXG4tXFx0XFx0c3RhY2tfYWRqdXN0ICs9IDg7XFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbiBcXHRcXHRzdGFja19hZGp1c3QgKz0gODtcXG4rXFx0c3RhY2tfYWRqdXN0ICs9IDg7IC8qIFJWX1JFR19UQ0MgKi9cXG4gXFxuIFxcdHN0YWNrX2FkanVzdCA9IHJvdW5kX3VwKHN0YWNrX2FkanVzdCwgU1RBQ0tfQUxJR04pO1xcbiBcXHRzdGFja19hZGp1c3QgKz0gYnBmX3N0YWNrX2FkanVzdDtcXG5AQCAtMjAzMywxNSArMjAzMiwxNiBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFx0LyogZW1pdCBrY2ZpIHR5cGUgcHJlYW1ibGUgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSAgZmlyc3QgaW5zbiAqL1xcbiBcXHRlbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpO1xcbiBcXG4rXFx0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVxcdTAwM2VicGZfZnVuYyBzZXR1cCAqL1xcbitcXG4gXFx0Lyogbm9wcyByZXNlcnZlZCBmb3IgYXVpcGMramFsciBwYWlyICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVl9GRU5UUllfTklOU05TOyBpKyspXFxuIFxcdFxcdGVtaXQocnZfbm9wKCksIGN0eCk7XFxuIFxcbi1cXHQvKiBGaXJzdCBpbnN0cnVjdGlvbiBpcyBhbHdheXMgc2V0dGluZyB0aGUgdGFpbC1jYWxsLWNvdW50ZXJcXG4tXFx0ICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy5cXG4tXFx0ICogRm9yY2UgdXNpbmcgYSA0LWJ5dGUgKG5vbi1jb21wcmVzc2VkKSBpbnN0cnVjdGlvbi5cXG4tXFx0ICovXFxuLVxcdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xcbitcXHRpZiAoIWlzX3N1YnByb2cpXFxuK1xcdFxcdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xcbitcXG4rXFx0LyogdGFpbGNhbGwgc3RhcnRzIGhlcmUsIGVtaXQgaW5zbiBiZWZvcmUgaXQgbXVzdCBiZSBmaXhlZCAqL1xcbiBcXG4gXFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCAtc3RhY2tfYWRqdXN0LCBjdHgpO1xcbiBcXG5AQCAtMjA3MSwyNiArMjA3MSwyMCBAQCB2b2lkIGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsIGJvb2wgaXNfc3VicHJvZylcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1M1LCBjdHgpO1xcbiBcXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4gXFx0fVxcbi1cXHRpZiAoc2Vlbl9yZWcoUlZfUkVHX1M2LCBjdHgpKSB7XFxuLVxcdFxcdGVtaXRfc2QoUlZfUkVHX1NQLCBzdG9yZV9vZmZzZXQsIFJWX1JFR19TNiwgY3R4KTtcXG4tXFx0XFx0c3RvcmVfb2Zmc2V0IC09IDg7XFxuLVxcdH1cXG4gXFx0aWYgKGN0eC1cXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcXG4gXFx0XFx0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX0FSRU5BLCBjdHgpO1xcbiBcXHRcXHRzdG9yZV9vZmZzZXQgLT0gODtcXG4gXFx0fVxcbiBcXG4rXFx0Lyogc3RvcmUgVENDIGZyb20gUlZfUkVHX1RDQyB0byBzdGFjayAqL1xcbitcXHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfVENDLCBjdHgpO1xcbitcXHRjdHgtXFx1MDAzZXRjY19vZmZzZXQgPSBzdG9yZV9vZmZzZXQ7XFxuK1xcbiBcXHRlbWl0X2FkZGkoUlZfUkVHX0ZQLCBSVl9SRUdfU1AsIHN0YWNrX2FkanVzdCwgY3R4KTtcXG4gXFxuIFxcdGlmIChicGZfc3RhY2tfYWRqdXN0KVxcbiBcXHRcXHRlbWl0X2FkZGkoUlZfUkVHX1M1LCBSVl9SRUdfU1AsIGJwZl9zdGFja19hZGp1c3QsIGN0eCk7XFxuIFxcbi1cXHQvKiBQcm9ncmFtIGNvbnRhaW5zIGNhbGxzIGFuZCB0YWlsIGNhbGxzLCBzbyBSVl9SRUdfVENDIG5lZWRcXG4tXFx0ICogdG8gYmUgc2F2ZWQgYWNyb3NzIGNhbGxzLlxcbi1cXHQgKi9cXG4tXFx0aWYgKHNlZW5fdGFpbF9jYWxsKGN0eCkgXFx1MDAyNlxcdTAwMjYgc2Vlbl9jYWxsKGN0eCkpXFxuLVxcdFxcdGVtaXRfbXYoUlZfUkVHX1RDQ19TQVZFRCwgUlZfUkVHX1RDQywgY3R4KTtcXG4tXFxuIFxcdGN0eC1cXHUwMDNlc3RhY2tfc2l6ZSA9IHN0YWNrX2FkanVzdDtcXG4gXFxuIFxcdGlmIChjdHgtXFx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxcbkBAIC0yMTU3LDMgKzIxNTEsOCBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4ge1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbitcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNlM2JkMzc2MmUwOGNjLi5jYmZjZDI4N2VhMTY2OCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTcyLDcgKzcyLDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0Y3R4LVxcdTAwM2VhcmVuYV92bV9zdGFydCA9IGJwZl9hcmVuYV9nZXRfa2Vybl92bV9zdGFydChwcm9nLVxcdTAwM2VhdXgtXFx1MDAzZWFyZW5hKTtcXG4gXFx0Y3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlYXJlbmEpO1xcbiBcXHRjdHgtXFx1MDAzZXByb2cgPSBwcm9nO1xcbi1cXHRjdHgtXFx1MDAzZW9mZnNldCA9IGt6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuK1xcdGN0eC1cXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXFx1MDAzZWxlbik7XFxuIFxcdGlmICghY3R4LVxcdTAwM2VvZmZzZXQpXFxuIFxcdFxcdGdvdG8gb3V0X29mZnNldDtcXG4gXFxuQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRcXHRjdHgtXFx1MDAzZW9mZnNldFtpXSA9IG5pbnNuc19ydm9mZihjdHgtXFx1MDAzZW9mZnNldFtpXSk7XFxuIFxcdFxcdGJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LVxcdTAwM2VvZmZzZXQpO1xcbiBvdXRfb2Zmc2V0Olxcbi1cXHRcXHRrZnJlZShjdHgtXFx1MDAzZW9mZnNldCk7XFxuK1xcdFxcdGt2ZnJlZShjdHgtXFx1MDAzZW9mZnNldCk7XFxuIFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0cHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VqaXRfZGF0YSA9IE5VTEw7XFxuIFxcdH1cXG5AQCAtMjM0LDYgKzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmIChqaXRfZGF0YSkge1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVxcdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpO1xcbitcXHRcXHRcXHRrdmZyZWUoaml0X2RhdGEtXFx1MDAzZWN0eC5vZmZzZXQpO1xcbiBcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuaW5kZXggYWRmNTNmN2VkZjI4NzMuLjcwYWFkOGQ3ZDg0ZmIyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuQEAgLTIxOTYsNiArMjE5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbiBcXHQgICAgICAgdHlwZSA9PSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2RlcylcXG4re1xcbitcXHRyZXR1cm4gZmVudHJ5X25vZGVzLVxcdTAwM2Vucl9ub2RlcyA9PSAxIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBmZW50cnlfbm9kZXMtXFx1MDAzZW5vZGVzWzBdLVxcdTAwM2VsaW5rLVxcdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcXG4rfVxcbitcXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKVxcbiAvKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcXG4gICogdHlwZSBpbmZvcm1hdGlvbiBjb3JyZWN0bHkuIERldmVsb3BlcnMgc2hvdWxkIHVzZSB0aGlzIG1hY3JvIHRvIHJlZ2lzdGVyXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcXG5pbmRleCA0ZmM0ZGZkZGUyOTM3NS4uY2ExYmVhZTdmZThmMTAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxcbkBAIC0xLDMgKzEsMiBAQFxcbiAjIHJpc2N2NjQgZGVueSBsaXN0IGZvciBCUEYgQ0kgYW5kIGxvY2FsIHZtdGVzdFxcbiBleGNlcHRpb25zXFx0XFx0XFx0XFx0XFx0IyBKSVQgZG9lcyBub3Qgc3VwcG9ydCBleGNlcHRpb25zXFxuLXRhaWxjYWxscy90YWlsY2FsbF9icGYyYnBmKlxcdFxcdFxcdCMgSklUIGRvZXMgbm90IHN1cHBvcnQgbWl4aW5nIGJwZjJicGYgYW5kIHRhaWxjYWxsc1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo0NC44MDI1NzM4NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY4ODY3MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZVwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmZGM0NGMxYjQxZTY0ZjA5ZDkzMGE2ZDM1NzhiYjNhOTIwZWExZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxNzoxNTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIwMDc1ZWNlNGE2ZTdmLi4zNjMzN2MzZGFkODUxMyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTI1NDQsMTIgKzI1NDQsNiBAQCBzdGF0aWMgdm9pZCByZXN0b3JlX2FyZ3Moc3RydWN0IGppdF9jdHggKmN0eCwgaW50IGJhcmdzX29mZiwgaW50IG5yZWdzKVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgYm9vbCBpc19zdHJ1Y3Rfb3BzX3RyYW1wKGNvbnN0IHN0cnVjdCBicGZfdHJhbXBfbm9kZXMgKmZlbnRyeV9ub2Rlcylcbi17XG4tXHRyZXR1cm4gZmVudHJ5X25vZGVzLVx1MDAzZW5yX25vZGVzID09IDEgXHUwMDI2XHUwMDI2XG4tXHRcdGZlbnRyeV9ub2Rlcy1cdTAwM2Vub2Rlc1swXS1cdTAwM2VsaW5rLVx1MDAzZXR5cGUgPT0gQlBGX0xJTktfVFlQRV9TVFJVQ1RfT1BTO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBzdG9yZV9mdW5jX21ldGEoc3RydWN0IGppdF9jdHggKmN0eCwgdTY0IGZ1bmNfbWV0YSwgaW50IGZ1bmNfbWV0YV9vZmYpXG4ge1xuIFx0ZW1pdF9hNjRfbW92X2k2NChBNjRfUigxMCksIGZ1bmNfbWV0YSwgY3R4KTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmggYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0LmhcbmluZGV4IGRhMDI3MTc5MDI0NDIxLi40MTliOWQ3OTVmMmE3YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXQuaFxuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdC5oXG5AQCAtODEsNiArODEsNyBAQCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQge1xuIFx0aW50IGV4X2ptcF9vZmY7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0aW50IHN0YWNrX3NpemU7XG4rXHRpbnQgdGNjX29mZnNldDtcbiBcdHU2NCBhcmVuYV92bV9zdGFydDtcbiBcdHU2NCB1c2VyX3ZtX3N0YXJ0O1xuIH07XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbmluZGV4IGY5ZDUzNDdiYTk2NmI3Li44MjMyNjJjYTQ3ZWJmNyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcbkBAIC0xOCwxMiArMTgsMTIgQEBcbiAjZGVmaW5lIFJWX01BWF9SRUdfQVJHUyA4XG4gI2RlZmluZSBSVl9GRU5UUllfTklOU05TIDJcbiAjZGVmaW5lIFJWX0ZFTlRSWV9OQllURVMgKFJWX0ZFTlRSWV9OSU5TTlMgKiA0KVxuLSNkZWZpbmUgUlZfS0NGSV9OSU5TTlMgKElTX0VOQUJMRUQoQ09ORklHX0NGSSkgPyAxIDogMClcbiAvKiBpbW0gdGhhdCBhbGxvd3MgZW1pdF9pbW0gdG8gZW1pdCBtYXggY291bnQgaW5zbnMgKi9cbiAjZGVmaW5lIFJWX01BWF9DT1VOVF9JTU0gMHg3RkZGN0ZGN0ZGN0ZGN0ZGXG4rLyogZmVudHJ5IGFuZCBUQ0MgaW5pdCBpbnNucyB3aWxsIGJlIHNraXBwZWQgb24gdGFpbGNhbGwgKi9cbisjZGVmaW5lIFJWX1RBSUxDQUxMX09GRlNFVCAoKFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQpXG4gXG4gI2RlZmluZSBSVl9SRUdfVENDIFJWX1JFR19BNlxuLSNkZWZpbmUgUlZfUkVHX1RDQ19TQVZFRCBSVl9SRUdfUzYgLyogU3RvcmUgQTYgaW4gUzYgaWYgcHJvZ3JhbSBkbyBjYWxscyAqL1xuICNkZWZpbmUgUlZfUkVHX0FSRU5BIFJWX1JFR19TNyAvKiBGb3Igc3RvcmluZyBhcmVuYV92bV9zdGFydCAqL1xuIFxuIHN0YXRpYyBjb25zdCBpbnQgcmVnbWFwW10gPSB7XG5AQCAtNTcsMTQgKzU3LDEyIEBAIHN0YXRpYyBjb25zdCBpbnQgcHRfcmVnbWFwW10gPSB7XG4gfTtcbiBcbiBlbnVtIHtcbi1cdFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMID1cdDAsXG4gXHRSVl9DVFhfRl9TRUVOX0NBTEwgPVx0XHRSVl9SRUdfUkEsXG4gXHRSVl9DVFhfRl9TRUVOX1MxID1cdFx0UlZfUkVHX1MxLFxuIFx0UlZfQ1RYX0ZfU0VFTl9TMiA9XHRcdFJWX1JFR19TMixcbiBcdFJWX0NUWF9GX1NFRU5fUzMgPVx0XHRSVl9SRUdfUzMsXG4gXHRSVl9DVFhfRl9TRUVOX1M0ID1cdFx0UlZfUkVHX1M0LFxuIFx0UlZfQ1RYX0ZfU0VFTl9TNSA9XHRcdFJWX1JFR19TNSxcbi1cdFJWX0NUWF9GX1NFRU5fUzYgPVx0XHRSVl9SRUdfUzYsXG4gfTtcbiBcbiBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG5AQCAtNzcsNyArNzUsNiBAQCBzdGF0aWMgdTggYnBmX3RvX3J2X3JlZyhpbnQgYnBmX3JlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdF9fc2V0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gcmVnO1xuQEAgLTkyLDcgKzg5LDYgQEAgc3RhdGljIGJvb2wgc2Vlbl9yZWcoaW50IHJlZywgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzM6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzQ6XG4gXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzU6XG4tXHRjYXNlIFJWX0NUWF9GX1NFRU5fUzY6XG4gXHRcdHJldHVybiB0ZXN0X2JpdChyZWcsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4gXHR9XG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMTA4LDMyICsxMDQsNiBAQCBzdGF0aWMgdm9pZCBtYXJrX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRfX3NldF9iaXQoUlZfQ1RYX0ZfU0VFTl9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBzZWVuX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0cmV0dXJuIHRlc3RfYml0KFJWX0NUWF9GX1NFRU5fQ0FMTCwgXHUwMDI2Y3R4LVx1MDAzZWZsYWdzKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgbWFya190YWlsX2NhbGwoc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4te1xuLVx0X19zZXRfYml0KFJWX0NUWF9GX1NFRU5fVEFJTF9DQUxMLCBcdTAwMjZjdHgtXHUwMDNlZmxhZ3MpO1xuLX1cbi1cbi1zdGF0aWMgYm9vbCBzZWVuX3RhaWxfY2FsbChzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbi17XG4tXHRyZXR1cm4gdGVzdF9iaXQoUlZfQ1RYX0ZfU0VFTl9UQUlMX0NBTEwsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tfVxuLVxuLXN0YXRpYyB1OCBydl90YWlsX2NhbGxfcmVnKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuLXtcbi1cdG1hcmtfdGFpbF9jYWxsKGN0eCk7XG4tXG4tXHRpZiAoc2Vlbl9jYWxsKGN0eCkpIHtcbi1cdFx0X19zZXRfYml0KFJWX0NUWF9GX1NFRU5fUzYsIFx1MDAyNmN0eC1cdTAwM2VmbGFncyk7XG4tXHRcdHJldHVybiBSVl9SRUdfUzY7XG4tXHR9XG4tXHRyZXR1cm4gUlZfUkVHX0E2O1xuLX1cbi1cbiBzdGF0aWMgYm9vbCBpc18zMmJfaW50KHM2NCB2YWwpXG4ge1xuIFx0cmV0dXJuIC0oMUwgXHUwMDNjXHUwMDNjIDMxKSBcdTAwM2M9IHZhbCBcdTAwMjZcdTAwMjYgdmFsIFx1MDAzYyAoMUwgXHUwMDNjXHUwMDNjIDMxKTtcbkBAIC0yNTgsMjMgKzIyOCwyMCBAQCBzdGF0aWMgdm9pZCBfX2J1aWxkX2VwaWxvZ3VlKGJvb2wgaXNfdGFpbF9jYWxsLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiBcdFx0ZW1pdF9sZChSVl9SRUdfUzUsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbi1cdGlmIChzZWVuX3JlZyhSVl9SRUdfUzYsIGN0eCkpIHtcbi1cdFx0ZW1pdF9sZChSVl9SRUdfUzYsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuLVx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbi1cdH1cbiBcdGlmIChjdHgtXHUwMDNlYXJlbmFfdm1fc3RhcnQpIHtcbiBcdFx0ZW1pdF9sZChSVl9SRUdfQVJFTkEsIHN0b3JlX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuIFx0XHRzdG9yZV9vZmZzZXQgLT0gODtcbiBcdH1cbiBcbitcdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xuK1x0ZW1pdF9sZChSVl9SRUdfVENDLCBjdHgtXHUwMDNldGNjX29mZnNldCwgUlZfUkVHX1NQLCBjdHgpO1xuK1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19TUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXHQvKiBTZXQgcmV0dXJuIHZhbHVlLiAqL1xuIFx0aWYgKCFpc190YWlsX2NhbGwpXG4gXHRcdGVtaXRfYWRkaXcoUlZfUkVHX0EwLCBSVl9SRUdfQTUsIDAsIGN0eCk7XG4gXHRlbWl0X2phbHIoUlZfUkVHX1pFUk8sIGlzX3RhaWxfY2FsbCA/IFJWX1JFR19UMyA6IFJWX1JFR19SQSxcbi1cdFx0ICAvKiBrY2ZpLCBmZW50cnkgYW5kIFRDQyBpbml0IGluc25zIHdpbGwgYmUgc2tpcHBlZCBvbiB0YWlsY2FsbCAqL1xuLVx0XHQgIGlzX3RhaWxfY2FsbCA/IChSVl9LQ0ZJX05JTlNOUyArIFJWX0ZFTlRSWV9OSU5TTlMgKyAxKSAqIDQgOiAwLFxuLVx0XHQgIGN0eCk7XG4rXHRcdCAgaXNfdGFpbF9jYWxsID8gUlZfVEFJTENBTExfT0ZGU0VUIDogMCwgY3R4KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZW1pdF9iY2ModTggY29uZCwgdTggcmQsIHU4IHJzLCBpbnQgcnZvZmYsXG5AQCAtMzU1LDcgKzMyMiw2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYnJhbmNoKHU4IGNvbmQsIHU4IHJkLCB1OCBycywgaW50IHJ2b2ZmLFxuIHN0YXRpYyBpbnQgZW1pdF9icGZfdGFpbF9jYWxsKGludCBpbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eClcbiB7XG4gXHRpbnQgdGNfbmluc24sIG9mZiwgc3RhcnRfaW5zbiA9IGN0eC1cdTAwM2VuaW5zbnM7XG4tXHR1OCB0Y2MgPSBydl90YWlsX2NhbGxfcmVnKGN0eCk7XG4gXG4gXHQvKiBhMDogXHUwMDI2Y3R4XG4gXHQgKiBhMTogXHUwMDI2YXJyYXlcbkBAIC0zNzgsNyArMzQ0LDggQEAgc3RhdGljIGludCBlbWl0X2JwZl90YWlsX2NhbGwoaW50IGluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4KVxuIFx0LyogaWYgKC0tVENDIFx1MDAzYyAwKVxuIFx0ICogICAgIGdvdG8gb3V0O1xuIFx0ICovXG4tXHRlbWl0X2FkZGkoUlZfUkVHX1RDQywgdGNjLCAtMSwgY3R4KTtcbitcdGVtaXRfbGQoUlZfUkVHX1RDQywgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19TUCwgY3R4KTtcbitcdGVtaXRfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfVENDLCAtMSwgY3R4KTtcbiBcdG9mZiA9IG5pbnNuc19ydm9mZih0Y19uaW5zbiAtIChjdHgtXHUwMDNlbmluc25zIC0gc3RhcnRfaW5zbikpO1xuIFx0ZW1pdF9icmFuY2goQlBGX0pTTFQsIFJWX1JFR19UQ0MsIFJWX1JFR19aRVJPLCBvZmYsIGN0eCk7XG4gXG5AQCAtMzk0LDcgKzM2MSwxMCBAQCBzdGF0aWMgaW50IGVtaXRfYnBmX3RhaWxfY2FsbChpbnQgaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgpXG4gXHRvZmYgPSBuaW5zbnNfcnZvZmYodGNfbmluc24gLSAoY3R4LVx1MDAzZW5pbnNucyAtIHN0YXJ0X2luc24pKTtcbiBcdGVtaXRfYnJhbmNoKEJQRl9KRVEsIFJWX1JFR19UMiwgUlZfUkVHX1pFUk8sIG9mZiwgY3R4KTtcbiBcbi1cdC8qIGdvdG8gKihwcm9nLVx1MDAzZWJwZl9mdW5jICsgNCk7ICovXG4rXHQvKiBzdG9yZSB1cGRhdGVkIFRDQyBiYWNrIHRvIHN0YWNrICovXG4rXHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4rXHQvKiBnb3RvICoocHJvZy1cdTAwM2VicGZfZnVuYyArIFJWX1RBSUxDQUxMX09GRlNFVCk7ICovXG4gXHRvZmYgPSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Byb2csIGJwZl9mdW5jKTtcbiBcdGlmIChpc18xMmJfY2hlY2sob2ZmLCBpbnNuKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTEwMjgsMTIgKzk5OCwxMyBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0aW50IGksIHJldCwgb2Zmc2V0O1xuIFx0aW50ICpicmFuY2hlc19vZmYgPSBOVUxMO1xuIFx0aW50IHN0YWNrX3NpemUgPSAwLCBucl9hcmdfc2xvdHMgPSAwO1xuLVx0aW50IHJldHZhbF9vZmYsIGFyZ3Nfb2ZmLCBmdW5jX21ldGFfb2ZmLCBpcF9vZmYsIHJ1bl9jdHhfb2ZmLCBzcmVnX29mZiwgc3RrX2FyZ19vZmY7XG4rXHRpbnQgcmV0dmFsX29mZiwgYXJnc19vZmYsIGZ1bmNfbWV0YV9vZmYsIGlwX29mZjtcbitcdGludCBydW5fY3R4X29mZiwgc3JlZ19vZmYsIHN0a19hcmdfb2ZmLCB0Y2Nfb2ZmO1xuIFx0aW50IGNvb2tpZV9vZmYsIGNvb2tpZV9jbnQ7XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZW50cnkgPSBcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX0ZFTlRSWV07XG4gXHRzdHJ1Y3QgYnBmX3RyYW1wX25vZGVzICpmZXhpdCA9IFx1MDAyNnRub2Rlc1tCUEZfVFJBTVBfRkVYSVRdO1xuIFx0c3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZm1vZF9yZXQgPSBcdTAwMjZ0bm9kZXNbQlBGX1RSQU1QX01PRElGWV9SRVRVUk5dO1xuLVx0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX0lORElSRUNUO1xuK1x0Ym9vbCBpc19zdHJ1Y3Rfb3BzID0gaXNfc3RydWN0X29wc190cmFtcChmZW50cnkpO1xuIFx0dm9pZCAqb3JpZ19jYWxsID0gZnVuY19hZGRyO1xuIFx0Ym9vbCBzYXZlX3JldDtcbiBcdHU2NCBmdW5jX21ldGE7XG5AQCAtMTA3OSw2ICsxMDUwLDggQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdCAqXG4gXHQgKiBGUCAtIHNyZWdfb2ZmICAgIFsgY2FsbGVlIHNhdmVkIHJlZ1x0XVxuIFx0ICpcbitcdCAqIEZQIC0gdGNjX29mZiAgICAgWyB0YWlsIGNhbGwgY291bnRcdF0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxuK1x0ICpcbiBcdCAqXHRcdCAgICBbIHBhZHMgICAgICAgICAgICAgIF0gcGFkcyBmb3IgMTYgYnl0ZXMgYWxpZ25tZW50XG4gXHQgKlxuIFx0ICpcdFx0ICAgIFsgc3RhY2tfYXJnTiAgICAgICAgXVxuQEAgLTExMjYsNiArMTA5OSwxMSBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0c3RhY2tfc2l6ZSArPSA4O1xuIFx0c3JlZ19vZmYgPSBzdGFja19zaXplO1xuIFxuK1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG4rXHRcdHN0YWNrX3NpemUgKz0gODtcbitcdFx0dGNjX29mZiA9IHN0YWNrX3NpemU7XG4rXHR9XG4rXG4gXHRpZiAoKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIFx1MDAyNlx1MDAyNiAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTIFx1MDAzZSAwKSlcbiBcdFx0c3RhY2tfc2l6ZSArPSAobnJfYXJnX3Nsb3RzIC0gUlZfTUFYX1JFR19BUkdTKSAqIDg7XG4gXG5AQCAtMTE2MCw2ICsxMTM4LDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXHRcdGVtaXRfYWRkaShSVl9SRUdfRlAsIFJWX1JFR19TUCwgc3RhY2tfc2l6ZSwgY3R4KTtcbiBcdH1cbiBcbitcdC8qIHN0b3JlIHRhaWwgY2FsbCBjb3VudCAqL1xuK1x0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuK1x0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4gXHQvKiBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIgUzEgdG8gcGFzcyBzdGFydCB0aW1lICovXG4gXHRlbWl0X3NkKFJWX1JFR19GUCwgLXNyZWdfb2ZmLCBSVl9SRUdfUzEsIGN0eCk7XG4gXG5AQCAtMTE5NSw3ICsxMTc3LDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcdH1cbiBcbiBcdGlmIChmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcykge1xuLVx0XHRicmFuY2hlc19vZmYgPSBremFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4rXHRcdGJyYW5jaGVzX29mZiA9IGt2emFsbG9jX29ianMoaW50LCBmbW9kX3JldC1cdTAwM2Vucl9ub2Rlcyk7XG4gXHRcdGlmICghYnJhbmNoZXNfb2ZmKVxuIFx0XHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTEyMTgsOSArMTIwMCwxNSBAQCBzdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuIFx0XHRvcmlnX2NhbGwgKz0gUlZfRkVOVFJZX05JTlNOUyAqIDQ7XG4gXHRcdHJlc3RvcmVfYXJncyhtaW5fdChpbnQsIG5yX2FyZ19zbG90cywgUlZfTUFYX1JFR19BUkdTKSwgYXJnc19vZmYsIGN0eCk7XG4gXHRcdHJlc3RvcmVfc3RhY2tfYXJncyhucl9hcmdfc2xvdHMgLSBSVl9NQVhfUkVHX0FSR1MsIGFyZ3Nfb2ZmLCBzdGtfYXJnX29mZiwgY3R4KTtcbitcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuK1x0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4rXHRcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuIFx0XHRyZXQgPSBlbWl0X2NhbGwoKGNvbnN0IHU2NClvcmlnX2NhbGwsIHRydWUsIGN0eCk7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0Z290byBvdXQ7XG4rXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuK1x0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG4rXHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuIFx0XHRlbWl0X3NkKFJWX1JFR19GUCwgLXJldHZhbF9vZmYsIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC0ocmV0dmFsX29mZiAtIDgpLCByZWdtYXBbQlBGX1JFR18wXSwgY3R4KTtcbiBcdFx0aW0tXHUwMDNlaXBfYWZ0ZXJfY2FsbCA9IGN0eC1cdTAwM2Vyb19pbnNucyArIGN0eC1cdTAwM2VuaW5zbnM7XG5AQCAtMTI3Myw2ICsxMjYxLDEwIEBAIHN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4gXG4gXHRlbWl0X2xkKFJWX1JFR19TMSwgLXNyZWdfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4gXG4rXHQvKiByZXN0b3JlIFRDQyBmcm9tIHN0YWNrIHRvIFJWX1JFR19UQ0MgKi9cbitcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbitcdFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xuK1xuIFx0aWYgKCFpc19zdHJ1Y3Rfb3BzKSB7XG4gXHRcdC8qIHRyYW1wb2xpbmUgY2FsbGVkIGZyb20gZnVuY3Rpb24gZW50cnkgKi9cbiBcdFx0ZW1pdF9sZChSVl9SRUdfVDAsIHN0YWNrX3NpemUgLSA4LCBSVl9SRUdfU1AsIGN0eCk7XG5AQCAtMTMwMCw3ICsxMjkyLDcgQEAgc3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSxcbiBcbiBcdHJldCA9IGN0eC1cdTAwM2VuaW5zbnM7XG4gb3V0OlxuLVx0a2ZyZWUoYnJhbmNoZXNfb2ZmKTtcbitcdGt2ZnJlZShicmFuY2hlc19vZmYpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMTgzNywxMCArMTgyOSwxOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbitcdFx0LyogcmVzdG9yZSBUQ0MgdG8gUlZfUkVHX1RDQyBiZWZvcmUgYnBmMmJwZiBjYWxsICovXG4rXHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbitcdFx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0LCBSVl9SRUdfU1AsIGN0eCk7XG4rXG4gXHRcdHJldCA9IGVtaXRfY2FsbChhZGRyLCBmaXhlZF9hZGRyLCBjdHgpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXG4rXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgYnBmMmJwZiBjYWxsICovXG4rXHRcdGlmIChhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VzcmNfcmVnID09IEJQRl9QU0VVRE9fQ0FMTClcbitcdFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgY3R4LVx1MDAzZXRjY19vZmZzZXQsIFJWX1JFR19UQ0MsIGN0eCk7XG4rXG4gXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMKVxuIFx0XHRcdGVtaXRfbXYoYnBmX3RvX3J2X3JlZyhCUEZfUkVHXzAsIGN0eCksIFJWX1JFR19BMCwgY3R4KTtcbiBcdFx0YnJlYWs7XG5AQCAtMjAyMCwxMCArMjAyMCw5IEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRzdGFja19hZGp1c3QgKz0gODtcbiBcdGlmIChzZWVuX3JlZyhSVl9SRUdfUzUsIGN0eCkpXG4gXHRcdHN0YWNrX2FkanVzdCArPSA4O1xuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSlcbi1cdFx0c3RhY2tfYWRqdXN0ICs9IDg7XG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuIFx0XHRzdGFja19hZGp1c3QgKz0gODtcbitcdHN0YWNrX2FkanVzdCArPSA4OyAvKiBSVl9SRUdfVENDICovXG4gXG4gXHRzdGFja19hZGp1c3QgPSByb3VuZF91cChzdGFja19hZGp1c3QsIFNUQUNLX0FMSUdOKTtcbiBcdHN0YWNrX2FkanVzdCArPSBicGZfc3RhY2tfYWRqdXN0O1xuQEAgLTIwMzMsMTUgKzIwMzIsMTYgQEAgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xvZ3VlKHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LCBib29sIGlzX3N1YnByb2cpXG4gXHQvKiBlbWl0IGtjZmkgdHlwZSBwcmVhbWJsZSBpbW1lZGlhdGVseSBiZWZvcmUgdGhlICBmaXJzdCBpbnNuICovXG4gXHRlbWl0X2tjZmkoaXNfc3VicHJvZyA/IGNmaV9icGZfc3VicHJvZ19oYXNoIDogY2ZpX2JwZl9oYXNoLCBjdHgpO1xuIFxuK1x0LyogYnBmIHByb2cgc3RhcnRzIGhlcmUgYXMga2NmaSBza2lwcGVkIGR1cmluZyBwcm9nLVx1MDAzZWJwZl9mdW5jIHNldHVwICovXG4rXG4gXHQvKiBub3BzIHJlc2VydmVkIGZvciBhdWlwYytqYWxyIHBhaXIgKi9cbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJWX0ZFTlRSWV9OSU5TTlM7IGkrKylcbiBcdFx0ZW1pdChydl9ub3AoKSwgY3R4KTtcbiBcbi1cdC8qIEZpcnN0IGluc3RydWN0aW9uIGlzIGFsd2F5cyBzZXR0aW5nIHRoZSB0YWlsLWNhbGwtY291bnRlclxuLVx0ICogKFRDQykgcmVnaXN0ZXIuIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgc2tpcHBlZCBmb3IgdGFpbCBjYWxscy5cbi1cdCAqIEZvcmNlIHVzaW5nIGEgNC1ieXRlIChub24tY29tcHJlc3NlZCkgaW5zdHJ1Y3Rpb24uXG4tXHQgKi9cbi1cdGVtaXQocnZfYWRkaShSVl9SRUdfVENDLCBSVl9SRUdfWkVSTywgTUFYX1RBSUxfQ0FMTF9DTlQpLCBjdHgpO1xuK1x0aWYgKCFpc19zdWJwcm9nKVxuK1x0XHRlbWl0KHJ2X2FkZGkoUlZfUkVHX1RDQywgUlZfUkVHX1pFUk8sIE1BWF9UQUlMX0NBTExfQ05UKSwgY3R4KTtcbitcbitcdC8qIHRhaWxjYWxsIHN0YXJ0cyBoZXJlLCBlbWl0IGluc24gYmVmb3JlIGl0IG11c3QgYmUgZml4ZWQgKi9cbiBcbiBcdGVtaXRfYWRkaShSVl9SRUdfU1AsIFJWX1JFR19TUCwgLXN0YWNrX2FkanVzdCwgY3R4KTtcbiBcbkBAIC0yMDcxLDI2ICsyMDcxLDIwIEBAIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCwgYm9vbCBpc19zdWJwcm9nKVxuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzUsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuLVx0aWYgKHNlZW5fcmVnKFJWX1JFR19TNiwgY3R4KSkge1xuLVx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfUzYsIGN0eCk7XG4tXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuLVx0fVxuIFx0aWYgKGN0eC1cdTAwM2VhcmVuYV92bV9zdGFydCkge1xuIFx0XHRlbWl0X3NkKFJWX1JFR19TUCwgc3RvcmVfb2Zmc2V0LCBSVl9SRUdfQVJFTkEsIGN0eCk7XG4gXHRcdHN0b3JlX29mZnNldCAtPSA4O1xuIFx0fVxuIFxuK1x0Lyogc3RvcmUgVENDIGZyb20gUlZfUkVHX1RDQyB0byBzdGFjayAqL1xuK1x0ZW1pdF9zZChSVl9SRUdfU1AsIHN0b3JlX29mZnNldCwgUlZfUkVHX1RDQywgY3R4KTtcbitcdGN0eC1cdTAwM2V0Y2Nfb2Zmc2V0ID0gc3RvcmVfb2Zmc2V0O1xuK1xuIFx0ZW1pdF9hZGRpKFJWX1JFR19GUCwgUlZfUkVHX1NQLCBzdGFja19hZGp1c3QsIGN0eCk7XG4gXG4gXHRpZiAoYnBmX3N0YWNrX2FkanVzdClcbiBcdFx0ZW1pdF9hZGRpKFJWX1JFR19TNSwgUlZfUkVHX1NQLCBicGZfc3RhY2tfYWRqdXN0LCBjdHgpO1xuIFxuLVx0LyogUHJvZ3JhbSBjb250YWlucyBjYWxscyBhbmQgdGFpbCBjYWxscywgc28gUlZfUkVHX1RDQyBuZWVkXG4tXHQgKiB0byBiZSBzYXZlZCBhY3Jvc3MgY2FsbHMuXG4tXHQgKi9cbi1cdGlmIChzZWVuX3RhaWxfY2FsbChjdHgpIFx1MDAyNlx1MDAyNiBzZWVuX2NhbGwoY3R4KSlcbi1cdFx0ZW1pdF9tdihSVl9SRUdfVENDX1NBVkVELCBSVl9SRUdfVENDLCBjdHgpO1xuLVxuIFx0Y3R4LVx1MDAzZXN0YWNrX3NpemUgPSBzdGFja19hZGp1c3Q7XG4gXG4gXHRpZiAoY3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0KVxuQEAgLTIxNTcsMyArMjE1MSw4IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuIHtcbiBcdHJldHVybiB0cnVlO1xuIH1cbitcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggY2UzYmQzNzYyZTA4Y2MuLmNiZmNkMjg3ZWExNjY4IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtNzIsNyArNzIsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Y3R4LVx1MDAzZWFyZW5hX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2V1c2VyX3ZtX3N0YXJ0ID0gYnBmX2FyZW5hX2dldF91c2VyX3ZtX3N0YXJ0KHByb2ctXHUwMDNlYXV4LVx1MDAzZWFyZW5hKTtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbi1cdGN0eC1cdTAwM2VvZmZzZXQgPSBremFsbG9jX29ianMoaW50LCBwcm9nLVx1MDAzZWxlbik7XG4rXHRjdHgtXHUwMDNlb2Zmc2V0ID0ga3Z6YWxsb2Nfb2JqcyhpbnQsIHByb2ctXHUwMDNlbGVuKTtcbiBcdGlmICghY3R4LVx1MDAzZW9mZnNldClcbiBcdFx0Z290byBvdXRfb2Zmc2V0O1xuIFxuQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGN0eC1cdTAwM2VvZmZzZXRbaV0gPSBuaW5zbnNfcnZvZmYoY3R4LVx1MDAzZW9mZnNldFtpXSk7XG4gXHRcdGJwZl9wcm9nX2ZpbGxfaml0ZWRfbGluZm8ocHJvZywgY3R4LVx1MDAzZW9mZnNldCk7XG4gb3V0X29mZnNldDpcbi1cdFx0a2ZyZWUoY3R4LVx1MDAzZW9mZnNldCk7XG4rXHRcdGt2ZnJlZShjdHgtXHUwMDNlb2Zmc2V0KTtcbiBcdFx0a2ZyZWUoaml0X2RhdGEpO1xuIFx0XHRwcm9nLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YSA9IE5VTEw7XG4gXHR9XG5AQCAtMjM0LDYgKzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0aGRyID0gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIocHJvZyk7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGYuaCBiL2luY2x1ZGUvbGludXgvYnBmLmhcbmluZGV4IGFkZjUzZjdlZGYyODczLi43MGFhZDhkN2Q4NGZiMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnBmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnBmLmhcbkBAIC0yMTk2LDYgKzIxOTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3RyYWNpbmdfbXVsdGkoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbiBcdCAgICAgICB0eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTl9NVUxUSTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX3N0cnVjdF9vcHNfdHJhbXAoY29uc3Qgc3RydWN0IGJwZl90cmFtcF9ub2RlcyAqZmVudHJ5X25vZGVzKVxuK3tcbitcdHJldHVybiBmZW50cnlfbm9kZXMtXHUwMDNlbnJfbm9kZXMgPT0gMSBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBmZW50cnlfbm9kZXMtXHUwMDNlbm9kZXNbMF0tXHUwMDNlbGluay1cdTAwM2V0eXBlID09IEJQRl9MSU5LX1RZUEVfU1RSVUNUX09QUztcbit9XG4rXG4gI2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTClcbiAvKiBUaGlzIG1hY3JvIGhlbHBzIGRldmVsb3BlciB0byByZWdpc3RlciBhIHN0cnVjdF9vcHMgdHlwZSBhbmQgZ2VuZXJhdGVcbiAgKiB0eXBlIGluZm9ybWF0aW9uIGNvcnJlY3RseS4gRGV2ZWxvcGVycyBzaG91bGQgdXNlIHRoaXMgbWFjcm8gdG8gcmVnaXN0ZXJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9ERU5ZTElTVC5yaXNjdjY0XG5pbmRleCA0ZmM0ZGZkZGUyOTM3NS4uY2ExYmVhZTdmZThmMTAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvREVOWUxJU1QucmlzY3Y2NFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL0RFTllMSVNULnJpc2N2NjRcbkBAIC0xLDMgKzEsMiBAQFxuICMgcmlzY3Y2NCBkZW55IGxpc3QgZm9yIEJQRiBDSSBhbmQgbG9jYWwgdm10ZXN0XG4gZXhjZXB0aW9uc1x0XHRcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IGV4Y2VwdGlvbnNcbi10YWlsY2FsbHMvdGFpbGNhbGxfYnBmMmJwZipcdFx0XHQjIEpJVCBkb2VzIG5vdCBzdXBwb3J0IG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE1OjQ0LjgwMjU3NjM1N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxODQ1ODMxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiB0aGUgUklTQy1WIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIGEgcGF0Y2ggdG8gZW5hYmxlIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMgb24gUklTQy1WLiBJdCB0b3VjaGVzIGEgY291cGxlIG9mIGZpbGVzOiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgYW5kIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2AsIHBsdXMgaXQgbW92ZXMgYGlzX3N0cnVjdF9vcHNfdHJhbXBgIHRvIGBpbmNsdWRlL2xpbnV4L2JwZi5oYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxsc2Agb24gUklTQy1WLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXb3J0aCBmdXp6aW5nP1wiXG5cblRoZSBwYXRjaCAqZGVmaW5pdGVseSogbW9kaWZpZXMgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLCB3aGljaCBpcyBhIGtleSBhcmVhLiBOb3csIHN5emthbGxlciBpcyB0aGUgZ28tdG8gZnV6emVyLCBhbmQgSSBrbm93IGl0J3MgcHJpbWFyaWx5IHg4Nl82NCBmb2N1c2VkLCBidXQgaXQgKmNhbiogZnV6eiBhcm02NCBhbmQgUklTQy1WIGlmIHByb3Blcmx5IGNvbmZpZ3VyZWQuIFRoZSBiaWcgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFllcywgdGhlIEJQRiBKSVQgaXMsIHNvIHRoYXQncyBnb29kLlxuXG5Ob3csIGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogZnV6eiByaXNjdjY0PyBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgaXQgZG9lcywgd2hpY2ggcmVtb3ZlcyBhIG1ham9yIGh1cmRsZS4gXG5cblRoZSBwcm9tcHQgd2FudHMgbWUgdG8gdmVyaWZ5IHRoZSBjb2RlIGlzICpleGVjdXRhYmxlKiB1c2luZyBjb2RlIHNlYXJjaCB0b29scywgc28gbGV0J3MgY2hlY2sgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aG9zZSBmaWxlcywgdG8gc2VlIGlmIHRoZXkgYXJlIHBhcnQgb2YgYSBmdXp6ZXIgdGFyZ2V0OlxuXG5JbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2A6IEkgc2VlIGBfX2J1aWxkX2VwaWxvZ3VlYCwgYGVtaXRfYnBmX3RhaWxfY2FsbGAsIGBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZWAsIGBicGZfaml0X2VtaXRfaW5zbmAsIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzYC5cblxuQW5kIGluIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY2A6IEkgc2VlIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucywganVzdCB0byBiZSBzdXJlIHdlIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS4gYENPTkZJR19CUEZfSklUYCBpcyB0aGUgYmlnIG9uZSwgYnV0IEknbGwgZG91YmxlLWNoZWNrIGZvciBhbnkgUklTQy1WIHNwZWNpZmljIGNvbmZpZyBrbm9icy4gVGhpcyBhbGwgbG9va3MgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mzc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTU6NTIuOTg3MTYzNTU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTY3MjQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX0pJVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2V4dGFibGUuaD0zOD1zdGF0aWMgaW5saW5lIGJvb2wgZml4dXBfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKSB7IHJldHVybiBmYWxzZTsgfVxcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDAtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmg6NDE6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9KSVQpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0FSQ0hfUlY2NEkpXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9leHRhYmxlLmgtNDItYm9vbCBleF9oYW5kbGVyX2JwZihjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtMi1cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvcmUub1xcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlLTQtXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGU9NT1pZmVxICgkKENPTkZJR19BUkNIX1JWNjRJKSx5KVxcbmFyY2gvcmlzY3YvbmV0L01ha2VmaWxlOjY6XFx0b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcDY0Lm9cXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZS03LWVsc2VcXG5hcmNoL3Jpc2N2L25ldC9NYWtlZmlsZTo4OlxcdG9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0X2NvbXAzMi5vXFxuYXJjaC9yaXNjdi9uZXQvTWFrZWZpbGUtOS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNzoxNTo1My4xOTg4NDczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5ODQzMDUyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgd2l0aCB0aGUgYEJQRl9KSVRgIGNvbmZpZyBlbmFibGVkLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBjb3JlIGNvbXBpbGF0aW9uIGZsb3cgYW5kIGlkZW50aWZ5aW5nIGtleSBhcmVhcyBvZiBpbnRlcmVzdC4gTGV0J3Mgc2VlLCB3aGF0IGZ1bmN0aW9ucyBzdGFuZCBvdXQgYXMgYmVpbmcgY3JpdGljYWwgdG8gdGhlIHByb2Nlc3MuLi4gV2VsbCwgZmlyc3QsIEkgbmVlZCB0byBsb29rIGF0OiBgX19idWlsZF9lcGlsb2d1ZWAsIGBlbWl0X2JwZl90YWlsX2NhbGxgLCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLCBgYnBmX2ppdF9lbWl0X2luc25gLCBhbmQgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLlxuXG5IbW0sIGBicGZfaml0X2VtaXRfaW5zbmAuLi4gd2hpbGUgaXQgKmlzKiBnZW5lcmljIGluIG5hbWUsIGl0J3MgY2xlYXJseSBzcGVjaWZpYyB0byB0aGUgUklTQy1WIEJQRiBKSVQgaW1wbGVtZW50YXRpb24uIFRoYXQncyBnb29kIHRvIGtlZXAgaW4gbWluZC4gTm93LCBgZW1pdF9icGZfdGFpbF9jYWxsYCBsb29rcyBwcm9taXNpbmcsIHRoYXQncyBkZWZpbml0ZWx5IGEgY29yZSBmdW5jdGlvbmFsaXR5IHRoYXQgbmVlZHMgdG8gYmUgdW5kZXJzdG9vZC4gQWxzbywgSSBuZWVkIHRvIGNoZWNrIG91dCBgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVgLiBBbmQgb2YgY291cnNlIGBicGZfaml0X2J1aWxkX3Byb2xvZ3VlYCBzZWVtcyBpbXBvcnRhbnQsIHRvby4gQW5kIHRoZW4gdGhlcmUncyBgYnBmX2ludF9qaXRfY29tcGlsZWDigJR0aGF0J3MgdGhlIGVudHJ5IHBvaW50LCB0aGUgc3RhcnQgb2YgdGhlIHdob2xlIGNvbXBpbGF0aW9uIHByb2Nlc3MuXG5cbk5vdywgbGV0IG1lIHNlZS4uLiBJIHdvbmRlciBpZiB0aGUgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHVzZWQgYW55d2hlcmUgaW4gdGhpcyBwcm9jZXNzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3MzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTY6MDAuNzk3MjgzNTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTEzNTEyNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxsc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjMyNz11NjQgYnBmX2ppdF9hbGxvY19leGVjX2xpbWl0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0yMzMyLS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIzMzM6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjMzNC17XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIzODk9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzOTQtLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzk1OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5Ni17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTUxMD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTQtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo1MTU6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01MTYte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0yMTUwPWJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0yMTU0LVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjE1NTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNTYte1xcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0yOTgxPWludCBhcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKmltYWdlLFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMDEwLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MzAxMTpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMwMTIte1xcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQwNTM9dm9pZCAqYnBmX2FyY2hfdGV4dF9jb3B5KHZvaWQgKmRzdCwgdm9pZCAqc3JjLCBzaXplX3QgbGVuKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjAtLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjQwNjE6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjIte1xcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMTgxPWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE4Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTgzLWJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMyNzY9Ym9vbCBfX3dlYWsgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjgxLS8qIFJldHVybiBUUlVFIGlmIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmtlcm5lbC9icGYvY29yZS5jOjMyODI6Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMyODMte1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTg0OTE9Ym9vbCBicGZfYWxsb3dfdGFpbF9jYWxsX2luX3N1YnByb2dzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ5My1cXHRyZXR1cm4gZW52LVxcdTAwM2Vwcm9nLVxcdTAwM2VqaXRfcmVxdWVzdGVkIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjg0OTQ6XFx0ICAgICAgIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHMoKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQ5NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE3OjE2OjA2LjA0ODY0NDI3NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4MDI0NDMzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUklTQy1WIFRhaWwgQ2FsbHMgaW4gU3VicHJvZ3JhbXMgLSBBIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZW5hYmxpbmcgYGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHNgIGZvciBSSVNDLVYsIHdoaWNoIGlzIGEgc2lnbmlmaWNhbnQgc3RlcC4gQmFzaWNhbGx5LCB3ZSdyZSBub3cgYWxsb3dpbmcgdGFpbCBjYWxscyB3aXRoaW4gc3VicHJvZ3JhbXMgb24gUklTQy1WLiBUaGF0J3MgZ29vZCBwcm9ncmVzcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNoYW5nZXMgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGFyZSBmdW5jdGlvbmFsbHkgc291bmQ7IEkgc2hvdWxkIHJlYWxseSBnZXQgdGhhdCBmdXp6ZWQuIFRoYXQncyBhIG11c3QuXG5cbk5vdywgbGV0IG1lIHpvb20gaW4gb24gdGhlIGNyaXRpY2FsIHN5bWJvbHMgaGVyZSwgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIHBheSBwYXJ0aWN1bGFyIGF0dGVudGlvbiB0byBgZW1pdF9icGZfdGFpbF9jYWxsYCwgYF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lYCwgYGJwZl9qaXRfYnVpbGRfcHJvbG9ndWVgLCBhbmQgYF9fYnVpbGRfZXBpbG9ndWVgIC0gdGhlc2UgYXJlIHRoZSBidWlsZGluZyBibG9ja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBlYWNoIHBpZWNlIGZpdHMgdG9nZXRoZXIuXG5cbkFscmlnaHQsIHdoYXQgYWJvdXQgY29uZmlncz8gTGV0J3Mgc2VlLCBgQlBGX0pJVGAgYW5kIGBCUEZfU1lTQ0FMTGAgYXJlIHJlbGV2YW50LiBCdXQgaXMgYEJQRl9KSVRgIHRoZSBvbmx5IHJlYWwgZGVwZW5kZW5jeT8gQSBxdWljayBjaGVjay4uLiBZZXAsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfSklUYCBpcyB0aGUgbWFpbiBvbmUuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuIEdvb2QuXG5cblJpZ2h0LCBJJ20gc2F0aXNmaWVkLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ2MiwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTc6MTY6MTQuODUxMDkxNDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjAzMzkxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9icGZfdGFpbF9jYWxsXCIsXG4gICAgXCJfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZVwiLFxuICAgIFwiYnBmX2ppdF9idWlsZF9wcm9sb2d1ZVwiLFxuICAgIFwiX19idWlsZF9lcGlsb2d1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgbWl4aW5nIGJwZjJicGYgY2FsbHMgYW5kIHRhaWxjYWxscyBpbiB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIGNvcmUgSklUIGZ1bmN0aW9ucyBsaWtlIHByb2xvZ3VlL2VwaWxvZ3VlIGdlbmVyYXRpb24sIHRhaWwgY2FsbCBlbWlzc2lvbiwgYW5kIHRyYW1wb2xpbmUgcHJlcGFyYXRpb24uIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3Mgb2YgdGhlIEpJVCBjb21waWxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYnBmX3RhaWxfY2FsbFwiLFxuICAgIFwiX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmVcIixcbiAgICBcImJwZl9qaXRfYnVpbGRfcHJvbG9ndWVcIixcbiAgICBcIl9fYnVpbGRfZXBpbG9ndWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIG1peGluZyBicGYyYnBmIGNhbGxzIGFuZCB0YWlsY2FsbHMgaW4gdGhlIFJJU0MtViBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyBjb3JlIEpJVCBmdW5jdGlvbnMgbGlrZSBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9uLCB0YWlsIGNhbGwgZW1pc3Npb24sIGFuZCB0cmFtcG9saW5lIHByZXBhcmF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIG9mIHRoZSBKSVQgY29tcGlsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowm9sl5[1] Phase: Succeeded StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 17:16:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 17:16:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2] Phase: Succeeded StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 17:16:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 17:16:28 +0000 UTC FinishedAt: 2026-07-08 17:16:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowm9sl5/series-workflowm9sl5-convert-artifact-3894747133/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 17:16:51 +0000 UTC FinishedAt: 2026-07-08 17:46:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 17:16:51 +0000 UTC FinishedAt: 2026-07-08 17:46:06 +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:*efa89c4e-7bfb-4f45-9dd5-2f734c16b2c4,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-workflowm9sl5/series-workflowm9sl5-convert-artifact-3894747133/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": "134f1978-17e4-4769-812c-f9ffc11b913e", "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-workflowm9sl5/series-workflowm9sl5-build-action-321521971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:16:51 +0000 UTC FinishedAt: 2026-07-08 17:43:26 +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:*efa89c4e-7bfb-4f45-9dd5-2f734c16b2c4,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-workflowm9sl5/series-workflowm9sl5-convert-artifact-3894747133/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": "134f1978-17e4-4769-812c-f9ffc11b913e", "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-workflowm9sl5/series-workflowm9sl5-build-action-321521971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 17:46:06 +0000 UTC FinishedAt: 2026-07-08 17:46:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 17:46:06 +0000 UTC FinishedAt: 2026-07-08 17:46:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 17:46:06 +0000 UTC FinishedAt: 2026-07-08 17:46:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 17:46:06 +0000 UTC FinishedAt: 2026-07-08 17:46:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowm9sl5/series-workflowm9sl5-convert-artifact-314955352/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 17:46:16 +0000 UTC FinishedAt: 2026-07-08 17:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 17:46:16 +0000 UTC FinishedAt: 2026-07-08 17:48:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*134f1978-17e4-4769-812c-f9ffc11b913e,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-workflowm9sl5/series-workflowm9sl5-build-action-321521971/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-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 17:48:26 +0000 UTC FinishedAt: 2026-07-08 17:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:48:26 +0000 UTC FinishedAt: 2026-07-08 17:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 17:48:26 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 17:48:26 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +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:*efa89c4e-7bfb-4f45-9dd5-2f734c16b2c4,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-workflowm9sl5/series-workflowm9sl5-convert-artifact-314955352/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": "a01aa10a-0134-4ac6-bd0e-8c501d9408ee", "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-workflowm9sl5/series-workflowm9sl5-build-action-2071035844/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:48:26 +0000 UTC FinishedAt: 2026-07-08 18:20:22 +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:*efa89c4e-7bfb-4f45-9dd5-2f734c16b2c4,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-workflowm9sl5/series-workflowm9sl5-convert-artifact-314955352/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": "a01aa10a-0134-4ac6-bd0e-8c501d9408ee", "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-workflowm9sl5/series-workflowm9sl5-build-action-2071035844/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:42 +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:*a01aa10a-0134-4ac6-bd0e-8c501d9408ee,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-workflowm9sl5/series-workflowm9sl5-build-action-2071035844/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-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*134f1978-17e4-4769-812c-f9ffc11b913e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a01aa10a-0134-4ac6-bd0e-8c501d9408ee,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-workflowm9sl5/series-workflowm9sl5-build-action-321521971/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-workflowm9sl5/series-workflowm9sl5-build-action-2071035844/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 18:23:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 18:22:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowm9sl5/series-workflowm9sl5-convert-artifact-2431341617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 18:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 18:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 18:22:51 +0000 UTC FinishedAt: 2026-07-08 18:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 18:23:01 +0000 UTC FinishedAt: 2026-07-08 21:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm9sl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_bpf_tail_call","__arch_prepare_bpf_trampoline","bpf_jit_build_prologue","__build_epilogue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0bdbed9133fd10a7dfec6d3e4b5b2a208f86f22a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"25fc2d91-cd52-49d2-a992-88554de9157d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 18:23:01 +0000 UTC FinishedAt: 2026-07-08 21:27:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*134f1978-17e4-4769-812c-f9ffc11b913e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a01aa10a-0134-4ac6-bd0e-8c501d9408ee,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-workflowm9sl5/series-workflowm9sl5-build-action-321521971/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-workflowm9sl5/series-workflowm9sl5-build-action-2071035844/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-workflowm9sl5/series-workflowm9sl5-convert-artifact-2431341617/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,}