Name: series-workflowrpspj Phase: Succeeded StartedAt: 2026-07-30 21:32:12 +0000 UTC FinishedAt: 2026-07-31 01:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[0] Phase: Succeeded StartedAt: 2026-07-30 21:32:12 +0000 UTC FinishedAt: 2026-07-30 21:44:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 21:32:12 +0000 UTC FinishedAt: 2026-07-30 21:44:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "81b986e2-ad9f-4e59-b1ff-a15bca62f17a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_setsockopt", "xsk_release", "xsk_destruct", "xskq_create", "xskq_destroy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IGY5MDZkNTFiNjY5OTAuLjdkNmRmOGI2YjQzZDYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jXG5AQCAtMTQ0NiwxNSAmIzQzOzE0NDYsMTUgQEAgc3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuIFx0cmV0dXJuIG1hc2s7XG4gfVxuIFxuLXN0YXRpYyBpbnQgeHNrX2luaXRfcXVldWUodTMyIGVudHJpZXMsIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSxcbi1cdFx0XHQgIGJvb2wgdW1lbV9xdWV1ZSlcbiYjNDM7c3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLFxuJiM0MztcdFx0XHQgIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSwgYm9vbCB1bWVtX3F1ZXVlKVxuIHtcbiBcdHN0cnVjdCB4c2tfcXVldWUgKnE7XG4gXG4gXHRpZiAoZW50cmllcyA9PSAwIHx8ICpxdWV1ZSB8fCAhaXNfcG93ZXJfb2ZfMihlbnRyaWVzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRxID0geHNrcV9jcmVhdGUoZW50cmllcywgdW1lbV9xdWV1ZSk7XG4mIzQzO1x0cSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcbiBcdGlmICghcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMTQ5OCw2ICYjNDM7MTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcbiBcdHJldHVybiBtYXA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oc3RydWN0IHhkcF9zb2NrICp4cylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtXHUwMDNlcG9vbDtcbiYjNDM7XHRzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0gPSB4cy1cdTAwM2V1bWVtO1xuJiM0MztcbiYjNDM7XHR4cy1cdTAwM2Vwb29sID0gTlVMTDtcbiYjNDM7XHR4cy1cdTAwM2V1bWVtID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cF9wdXRfcG9vbChwb29sKSlcbiYjNDM7XHRcdHhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cylcbiB7XG4gXHQvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGVcbkBAIC0xNTUzLDYgJiM0MzsxNTY1LDcgQEAgc3RhdGljIGludCB4c2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZXR4KTtcbiBcdHhza3FfZGVzdHJveSh4cy1cdTAwM2VmcV90bXApO1xuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZWNxX3RtcCk7XG4mIzQzO1x0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcbiBcbiBcdHNvY2tfb3JwaGFuKHNrKTtcbiBcdHNvY2stXHUwMDNlc2sgPSBOVUxMO1xuQEAgLTE4MTAsNyAmIzQzOzE4MjMsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdFx0fVxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXHUwMDI2eHMtXHUwMDNldHggOiBcdTAwMjZ4cy1cdTAwM2VyeDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xuJiM0MztcdFx0ZXJyID0geHNrX2luaXRfcXVldWUoc29jay1cdTAwM2VzaywgZW50cmllcywgcSwgZmFsc2UpO1xuIFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgb3B0bmFtZSA9PSBYRFBfVFhfUklORylcbiBcdFx0XHQvKiBUeCBuZWVkcyB0byBiZSBleHBsaWNpdGx5IHdva2VuIHVwIHRoZSBmaXJzdCB0aW1lICovXG4gXHRcdFx0eHMtXHUwMDNldHgtXHUwMDNlcmluZy1cdTAwM2VmbGFncyB8PSBYRFBfUklOR19ORUVEX1dBS0VVUDtcbkBAIC0xODc5LDcgJiM0MzsxODkyLDcgQEAgc3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1VNRU1fRklMTF9SSU5HKSA/IFx1MDAyNnhzLVx1MDAzZWZxX3RtcCA6XG4gXHRcdFx0XHUwMDI2eHMtXHUwMDNlY3FfdG1wO1xuLVx0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTtcbiYjNDM7XHRcdGVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stXHUwMDNlc2ssIGVudHJpZXMsIHEsIHRydWUpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuQEAgLTIxNTYsOCAmIzQzOzIxNjksNyBAQCBzdGF0aWMgdm9pZCB4c2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuIFx0aWYgKCFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGlmICgheHBfcHV0X3Bvb2woeHMtXHUwMDNlcG9vbCkpXG4tXHRcdHhkcF9wdXRfdW1lbSh4cy1cdTAwM2V1bWVtLCAheHMtXHUwMDNlcG9vbCk7XG4mIzQzO1x0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcbiB9XG4gXG4gc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi5lZGMyYmE5N2NjMGZmIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3hza19xdWV1ZS5oXCYjMzQ7XG5AQCAtMjEsNyAmIzQzOzIyLDI1IEBAIHN0YXRpYyBzaXplX3QgeHNrcV9nZXRfcmluZ19zaXplKHN0cnVjdCB4c2tfcXVldWUgKnEsIGJvb2wgdW1lbV9xdWV1ZSlcbiBcdHJldHVybiBzdHJ1Y3Rfc2l6ZShyeHR4X3JpbmcsIGRlc2MsIHEtXHUwMDNlbmVudHJpZXMpO1xuIH1cbiBcbi1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiYjNDM7c3RhdGljIGJvb2wgeHNrcV9jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzaXplX3Qgc2l6ZSlcbiYjNDM7e1xuJiM0MztcdGludCBvcHRtZW1fbWF4ID0gUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2Vjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTtcbiYjNDM7XHRpbnQgb2xkLCBuZXc7XG4mIzQzO1xuJiM0MztcdGlmIChvcHRtZW1fbWF4IFx1MDAzYz0gMCB8fCBzaXplIFx1MDAzZSBvcHRtZW1fbWF4KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRkbyB7XG4mIzQzO1x0XHRvbGQgPSBhdG9taWNfcmVhZChcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiYjNDM7XHRcdGlmIChvbGQgXHUwMDNjIDAgfHwgb2xkIFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRuZXcgPSBvbGQgJiM0MzsgKGludClzaXplO1xuJiM0MztcdH0gd2hpbGUgKGF0b21pY19jbXB4Y2hnKFx1MDAyNnNrLVx1MDAzZXNrX29tZW1fYWxsb2MsIG9sZCwgbmV3KSAhPSBvbGQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgeHNrX3F1ZXVlICpxO1xuIFx0c2l6ZV90IHNpemU7XG5AQCAtNDUsOSAmIzQzOzY0LDE4IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuIFx0fVxuIFxuIFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4mIzQzO1x0aWYgKCF4c2txX2NoYXJnZShzaywgc2l6ZSkpIHtcbiYjNDM7XHRcdGtmcmVlKHEpO1xuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzb2NrX2hvbGQoc2spO1xuJiM0MztcdHEtXHUwMDNlc2sgPSBzaztcbiBcbiBcdHEtXHUwMDNlcmluZyA9IHZtYWxsb2NfdXNlcihzaXplKTtcbiBcdGlmICghcS1cdTAwM2VyaW5nKSB7XG4mIzQzO1x0XHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4mIzQzO1x0XHRzb2NrX3B1dChzayk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02MSw2ICYjNDM7ODksMTEgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcbiBcdGlmICghcSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdGlmIChxLVx1MDAzZXNrKSB7XG4mIzQzO1x0XHRhdG9taWNfc3ViKChpbnQpcS1cdTAwM2VyaW5nX3ZtYWxsb2Nfc2l6ZSwgXHUwMDI2cS1cdTAwM2Vzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiYjNDM7XHRcdHNvY2tfcHV0KHEtXHUwMDNlc2spO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR2ZnJlZShxLVx1MDAzZXJpbmcpO1xuIFx0a2ZyZWUocSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXG5pbmRleCAxYmM0MmM4OTAyZjRiLi42MTc0NGU0YzFjYTJmIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaFxuQEAgLTM3LDYgJiM0MzszNyw4IEBAIHN0cnVjdCB4ZHBfdW1lbV9yaW5nIHtcbiBcdHU2NCBkZXNjW10gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3Qgc29jaztcbiYjNDM7XG4gc3RydWN0IHhza19xdWV1ZSB7XG4gXHR1MzIgcmluZ19tYXNrO1xuIFx0dTMyIG5lbnRyaWVzO1xuQEAgLTQ2LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xuIFx0dTY0IGludmFsaWRfZGVzY3M7XG4gXHR1NjQgcXVldWVfZW1wdHlfZGVzY3M7XG4gXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzEsNyAmIzQzOzUzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSlcbiBcdHJldHVybiBxID8gcS1cdTAwM2VxdWV1ZV9lbXB0eV9kZXNjcyA6IDA7XG4gfVxuIFxuLXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTtcbi12b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxX29wcyk7XG4mIzQzO3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuJiM0Mzt2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suYwppbmRleCBmOTA2ZDUxYjY2OTkwLi43ZDZkZjhiNmI0M2Q2IDEwMDY0NAotLS0gYS9uZXQveGRwL3hzay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrLmMKQEAgLTE0NDYsMTUgJiM0MzsxNDQ2LDE1IEBAIHN0YXRpYyBfX3BvbGxfdCB4c2tfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywKIAlyZXR1cm4gbWFzazsKIH0KIAotc3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZSh1MzIgZW50cmllcywgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLAotCQkJICBib29sIHVtZW1fcXVldWUpCiYjNDM7c3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLAomIzQzOwkJCSAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpCiB7CiAJc3RydWN0IHhza19xdWV1ZSAqcTsKIAogCWlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTsKJiM0MzsJcSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTsKIAlpZiAoIXEpCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC0xNDk4LDYgJiM0MzsxNDk4LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeHNrX21hcCAqeHNrX2dldF9tYXBfbGlzdF9lbnRyeShzdHJ1Y3QgeGRwX3NvY2sgKnhzLAogCXJldHVybiBtYXA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oc3RydWN0IHhkcF9zb2NrICp4cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtJmd0O3Bvb2w7CiYjNDM7CXN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IHhzLSZndDt1bWVtOwomIzQzOwomIzQzOwl4cy0mZ3Q7cG9vbCA9IE5VTEw7CiYjNDM7CXhzLSZndDt1bWVtID0gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKCF4cF9wdXRfcG9vbChwb29sKSkKJiM0MzsJCXhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cykKIHsKIAkvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGUKQEAgLTE1NTMsNiAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJeHNrcV9kZXN0cm95KHhzLSZndDt0eCk7CiAJeHNrcV9kZXN0cm95KHhzLSZndDtmcV90bXApOwogCXhza3FfZGVzdHJveSh4cy0mZ3Q7Y3FfdG1wKTsKJiM0MzsJeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTsKIAogCXNvY2tfb3JwaGFuKHNrKTsKIAlzb2NrLSZndDtzayA9IE5VTEw7CkBAIC0xODEwLDcgJiM0MzsxODIzLDcgQEAgc3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQkJcmV0dXJuIC1FQlVTWTsKIAkJfQogCQlxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gJmFtcDt4cy0mZ3Q7dHggOiAmYW1wO3hzLSZndDtyeDsKLQkJZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpOwomIzQzOwkJZXJyID0geHNrX2luaXRfcXVldWUoc29jay0mZ3Q7c2ssIGVudHJpZXMsIHEsIGZhbHNlKTsKIAkJaWYgKCFlcnIgJmFtcDsmYW1wOyBvcHRuYW1lID09IFhEUF9UWF9SSU5HKQogCQkJLyogVHggbmVlZHMgdG8gYmUgZXhwbGljaXRseSB3b2tlbiB1cCB0aGUgZmlyc3QgdGltZSAqLwogCQkJeHMtJmd0O3R4LSZndDtyaW5nLSZndDtmbGFncyB8PSBYRFBfUklOR19ORUVEX1dBS0VVUDsKQEAgLTE4NzksNyAmIzQzOzE4OTIsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAKIAkJcSA9IChvcHRuYW1lID09IFhEUF9VTUVNX0ZJTExfUklORykgPyAmYW1wO3hzLSZndDtmcV90bXAgOgogCQkJJmFtcDt4cy0mZ3Q7Y3FfdG1wOwotCQllcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTsKJiM0MzsJCWVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stJmd0O3NrLCBlbnRyaWVzLCBxLCB0cnVlKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7eHMtJmd0O211dGV4KTsKIAkJcmV0dXJuIGVycjsKIAl9CkBAIC0yMTU2LDggJiM0MzsyMTY5LDcgQEAgc3RhdGljIHZvaWQgeHNrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAlpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkKIAkJcmV0dXJuOwogCi0JaWYgKCF4cF9wdXRfcG9vbCh4cy0mZ3Q7cG9vbCkpCi0JCXhkcF9wdXRfdW1lbSh4cy0mZ3Q7dW1lbSwgIXhzLSZndDtwb29sKTsKJiM0MzsJeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTsKIH0KIAogc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLApkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuYyBiL25ldC94ZHAveHNrX3F1ZXVlLmMKaW5kZXggNGRkMDFiN2Q4NThlYi4uZWRjMmJhOTdjYzBmZiAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19xdWV1ZS5jCkBAIC03LDYgJiM0Mzs3LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb3ZlcmZsb3cuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC92bWFsbG9jLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9zb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hkcF9zb2NrX2Rydi5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3hza19xdWV1ZS5oJiMzNDsKQEAgLTIxLDcgJiM0MzsyMiwyNSBAQCBzdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpCiAJcmV0dXJuIHN0cnVjdF9zaXplKHJ4dHhfcmluZywgZGVzYywgcS0mZ3Q7bmVudHJpZXMpOwogfQogCi1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSkKJiM0MztzdGF0aWMgYm9vbCB4c2txX2NoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHNpemVfdCBzaXplKQomIzQzO3sKJiM0MzsJaW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLSZndDtjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTsKJiM0MzsJaW50IG9sZCwgbmV3OwomIzQzOwomIzQzOwlpZiAob3B0bWVtX21heCAmbHQ7PSAwIHx8IHNpemUgJmd0OyBvcHRtZW1fbWF4KQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlkbyB7CiYjNDM7CQlvbGQgPSBhdG9taWNfcmVhZCgmYW1wO3NrLSZndDtza19vbWVtX2FsbG9jKTsKJiM0MzsJCWlmIChvbGQgJmx0OyAwIHx8IG9sZCAmZ3Q7IG9wdG1lbV9tYXggLSAoaW50KXNpemUpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJbmV3ID0gb2xkICYjNDM7IChpbnQpc2l6ZTsKJiM0MzsJfSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoJmFtcDtzay0mZ3Q7c2tfb21lbV9hbGxvYywgb2xkLCBuZXcpICE9IG9sZCk7CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKQogewogCXN0cnVjdCB4c2tfcXVldWUgKnE7CiAJc2l6ZV90IHNpemU7CkBAIC00NSw5ICYjNDM7NjQsMTggQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpCiAJfQogCiAJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CiYjNDM7CWlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7CiYjNDM7CQlrZnJlZShxKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNvY2tfaG9sZChzayk7CiYjNDM7CXEtJmd0O3NrID0gc2s7CiAKIAlxLSZndDtyaW5nID0gdm1hbGxvY191c2VyKHNpemUpOwogCWlmICghcS0mZ3Q7cmluZykgewomIzQzOwkJYXRvbWljX3N1YigoaW50KXNpemUsICZhbXA7c2stJmd0O3NrX29tZW1fYWxsb2MpOwomIzQzOwkJc29ja19wdXQoc2spOwogCQlrZnJlZShxKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNjEsNiAmIzQzOzg5LDExIEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpCiAJaWYgKCFxKQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKHEtJmd0O3NrKSB7CiYjNDM7CQlhdG9taWNfc3ViKChpbnQpcS0mZ3Q7cmluZ192bWFsbG9jX3NpemUsICZhbXA7cS0mZ3Q7c2stJmd0O3NrX29tZW1fYWxsb2MpOwomIzQzOwkJc29ja19wdXQocS0mZ3Q7c2spOwomIzQzOwl9CiYjNDM7CiAJdmZyZWUocS0mZ3Q7cmluZyk7CiAJa2ZyZWUocSk7CiB9CmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaAppbmRleCAxYmM0MmM4OTAyZjRiLi42MTc0NGU0YzFjYTJmIDEwMDY0NAotLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrX3F1ZXVlLmgKQEAgLTM3LDYgJiM0MzszNyw4IEBAIHN0cnVjdCB4ZHBfdW1lbV9yaW5nIHsKIAl1NjQgZGVzY1tdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiB9OwogCiYjNDM7c3RydWN0IHNvY2s7CiYjNDM7CiBzdHJ1Y3QgeHNrX3F1ZXVlIHsKIAl1MzIgcmluZ19tYXNrOwogCXUzMiBuZW50cmllczsKQEAgLTQ2LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCB4c2tfcXVldWUgewogCXU2NCBpbnZhbGlkX2Rlc2NzOwogCXU2NCBxdWV1ZV9lbXB0eV9kZXNjczsKIAlzaXplX3QgcmluZ192bWFsbG9jX3NpemU7CiYjNDM7CXN0cnVjdCBzb2NrICpzazsKIAkvKiBNdXR1YWwgZXhjbHVzaW9uIG9mIHRoZSBjb21wbGV0aW9uIHJpbmcgaW4gdGhlIFNLQiBtb2RlLgogCSAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldgogCSAqIGFuZCBxdWV1ZSBpZCBpcyBzaGFyZWQuCkBAIC01MzEsNyAmIzQzOzUzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSkKIAlyZXR1cm4gcSA/IHEtJmd0O3F1ZXVlX2VtcHR5X2Rlc2NzIDogMDsKIH0KIAotc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpOwotdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcV9vcHMpOwomIzQzO3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpOwomIzQzO3ZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpOwogCiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9YRFAgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQveGRwL3hzay5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBtZW1vcnkgbWFuYWdlbWVudC4gSXQmIzM5O3MgYWRkaW5nIGBza19vbWVtX2FsbG9jYCBjYWxscyB0byBjaGFyZ2UgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGB4c2txX2NyZWF0ZWAgZm9yIHRoZSByaW5ncywgd2hpY2ggaXMgYSBzZW5zaWJsZSBhZGRpdGlvbiBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByZXNvdXJjZSBleGhhdXN0aW9uIGluIHRoaXMgYXJlYS4gQWRkaXRpb25hbGx5LCB0aGV5JiMzOTt2ZSBzaGlmdGVkIHRoZSBgeHNrX3B1dF9wb29sX2FuZF91bWVtYCBjYWxsIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhpcyBsb29rcyBsaWtlIGl0JiMzOTtzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgb2YgdGhlc2UgcmVzb3VyY2VzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGltcGxlbWVudHMgYHhza3FfY2hhcmdlYCwgd2hpY2ggY2hlY2tzIGFnYWluc3QgYHN5c2N0bF9vcHRtZW1fbWF4YCBhbmQgYWRqdXN0cyBgc2stJmd0O3NrX29tZW1fYWxsb2NgLiBXZSYjMzk7cmUgYWxzbyBzZWVpbmcgYHNvY2tfaG9sZChzaylgIGFuZCBgc29ja19wdXQoc2spYCBjYWxscyBhZGRlZCB3aXRoaW4gYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgcmVzcGVjdGl2ZWx5LCBzdWdnZXN0aW5nIHRoYXQgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZCBhIHJlZmVyZW5jZSBjb3VudCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiBBbmQgdGhlIGB4cF9wdXRfcG9vbGAgYW5kIGB4ZHBfcHV0X3VtZW1gIG9wZXJhdGlvbnMgYXJlIGJlaW5nIG1vdmVkIHRvIGB4c2tfcmVsZWFzZWAgdGhyb3VnaCBgeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKWAuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgQUZfWERQIHNvY2tldCBsb2dpYywgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmb2N1c2VkIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgc2hvdWxkIGJlIHRoZSBwcmltYXJ5IHRhcmdldHMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGluY2x1ZGUgYHhza19pbml0X3F1ZXVlYCwgYHhza19wdXRfcG9vbF9hbmRfdW1lbWAsIGB4c2tfZGVsZXRlX2Zyb21fbWFwc2AsIGB4c2tfcmVsZWFzZWAsIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jaGFyZ2VgLCBgeHNrcV9jcmVhdGVgLCBhbmQgYHhza3FfZGVzdHJveWAuIFRoZSBvbmVzIHRoYXQgcmVhbGx5IHN0YW5kIG91dCBhcyBjcml0aWNhbCBmb3IgZnV6emluZyBhcmUgbGlrZWx5IGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jcmVhdGVgLCBhbmQgYHhza3FfZGVzdHJveWAsIGFzIHRoZXNlIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMgdG8gdGhlIG5ldyBsb2dpYy4KCk5vdyBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBBRl9YRFAsIGFuZCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIGxvY2F0ZSB3aGVyZSBgeHNrLmNgIGlzIGNvbXBpbGVkIHRvIGdldCB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgJiM0Mzs9IHhzay5vIHhkcF91bWVtLm8geHNrX3F1ZXVlLm8geHNrbWFwLm9cbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2tfYnVmZl9wb29sLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqWERQIFNvY2tldHMgYW5kIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldHMgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhYnNvbHV0ZSByZXF1aXJlbWVudCBvZiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLiBOb3csIHNpbmNlIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIHBpZWNlcywgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgb3RoZXIga25vYnMgYW5kIGxldmVycyBhcmUgZGlyZWN0bHkgdGllZCB0byBgQ09ORklHX1hEUF9TT0NLRVRTYD8gVW5kZXJzdGFuZGluZyB0aG9zZSB1cHN0cmVhbSByZXF1aXJlbWVudHMgaXMga2V5IHRvIGVuc3VyaW5nIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCB0aGF0IGNvdWxkIHN0b3AgdGhpbmdzIHdvcmtpbmcgbGF0ZXIuIFRpbWUgdG8gdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRFBfU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXG5uZXQveGRwL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7WERQIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQveGRwL0tjb25maWctOS1cbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xubmV0L3hkcC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipYRFAgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFhEUC4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIGFzIGFsd2F5cywgaXMgdGhlIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQveGRwL0tjb25maWdgIHRvIGlkZW50aWZ5IGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHBvc3NpYmxlLCB3aGF0JiMzOTtzIHJlcXVpcmVkLCBhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbWlnaHQgaW5mbHVlbmNlIG9yIGJlIGluZmx1ZW5jZWQgYnkgWERQIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZGV0YWlsIGV2ZXJ5dGhpbmcsIGZyb20gdGhlIGJhc2ljIFhEUCBzdXBwb3J0IHRvIGFueSBmZWF0dXJlIGZsYWdzIGFuZCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBYRFAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFhEUF9TT0NLRVRTXG4gICAzOlx0XHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4gICA1Olx0XHRkZWZhdWx0IG5cbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcbiAgIDg6XHRcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXG4gIDEzOlx0XHRkZWZhdWx0IG5cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cbiAgMTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDY2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlhEUCBTb2NrZXRzIGFuZCBTeXN0ZW0gQ2FsbHM6IEEgUXVpY2sgTWVudGFsIENoZWNrKioKClJpZ2h0LCBzbyBgWERQX1NPQ0tFVFNgIGlzIGluaGVyZW50bHkgYnVpbHQgb24gdGhlIGZvdW5kYXRpb25zIG9mIGBCUEZfU1lTQ0FMTGAsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jeSBpcyBvYnZpb3VzIGdpdmVuIHRoZSBjb3JlIG1lY2hhbmljcy4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBMZXQgbWUgcXVpY2tseSBydW4gYSBtZW50YWwgc2NhbiBvdmVyIHRoZSBgeHNrX3NldHNvY2tvcHRgIGZ1bmN0aW9uLiBJcyBpdCBkZWNsYXJlZCBhcyBgc3RhdGljYD8gSSYjMzk7bSB0cnlpbmcgdG8gcmVjYWxsIGlmIGl0JiMzOTtzIHZpc2libGUgZ2xvYmFsbHkgYWNyb3NzIHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUsIG9yIGlmIGl0cyBzY29wZSBpcyBtb3JlIGNvbnN0cmFpbmVkLiBUaGF0IHdpbGwgaW1wYWN0IGhvdyB3ZSBjYW4gcmV1c2UgYW5kIGV4dGVuZCB0aGF0IGNvbXBvbmVudC4gVW5kZXJzdGFuZGluZyBzY29wZSwgYW5kIGl0cyB2aXNpYmlsaXR5LCBpcyBrZXkgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNzkxPXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xuLS1cbm5ldC94ZHAveHNrLmMtMTc5Ny1cbm5ldC94ZHAveHNrLmM6MTc5ODpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQveGRwL3hzay5jLTE3OTktXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC94ZHAveHNrLmM9MjE0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xuLS1cbm5ldC94ZHAveHNrLmMtMjE1Ny1cdC5zaHV0ZG93blx0PSBzb2NrX25vX3NodXRkb3duLFxubmV0L3hkcC94c2suYzoyMTU4Olx0LnNldHNvY2tvcHRcdD0geHNrX3NldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jLTIxNTktXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFhEUCBTb2NrZXQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIFhEUCBzb2NrZXRzIGFyZSBwdXQgdG9nZXRoZXIsIGFuZCBpdCYjMzk7cyBzdGFydGluZyB0byBjbGljay4gSSBzZWUgdGhhdCBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGBwcm90b19vcHNgLiBTbywgdGhhdCBtZWFucyB0aGV5JiMzOTtyZSBhYnNvbHV0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBgc2V0c29ja29wdGAgc3lzdGVtIGNhbGwsIHdoZW4gZGVhbGluZyB3aXRoIGFuIEFGX1hEUCBzb2NrZXQuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEFuZCBgeHNrX2Rlc3RydWN0YCwgdGhhdCYjMzk7cyBhbHNvIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgYXNzaWduZWQgdG8gYHNrLSZndDtza19kZXN0cnVjdGAuCgpUaGVuIEkgc2VlIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHNvIHRob3NlIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzLiBTaW5jZSB0aGV5IGFyZSBrZXkgdG8gdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiB0aGUgcXVldWUgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gYG5ldC94ZHAveHNrX3F1ZXVlLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hza19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrX3F1ZXVlLmM9MjU9c3RhdGljIGJvb2wgeHNrcV9jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzaXplX3Qgc2l6ZSlcbi0tXG5uZXQveGRwL3hza19xdWV1ZS5jLTQyLVxubmV0L3hkcC94c2tfcXVldWUuYzo0MzpzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxubmV0L3hkcC94c2tfcXVldWUuYy00NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjkKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFGX1hEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgYW5kIExpZmVjeWNsZSBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBBRl9YRFAgc29ja2V0IHF1ZXVlcy4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudC4gSSBzZWUgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlIGBBRl9YRFBgIHNvY2tldHMsIHNwZWNpZmljYWxseSB0eWluZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gdG8gYHNrLSZndDtza19vbWVtX2FsbG9jYCBhbmQgZW5mb3JjaW5nIHRoZSBsaW1pdCBpbXBvc2VkIGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBtZW1vcnkgZm9yIHRoZXNlIHNvY2tldHMuIEFsc28gb2YgaW50ZXJlc3QgaXMgdGhhdCB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gYXJlIG5vdyByZWxlYXNlZCBpbiBgeHNrX3JlbGVhc2VgIGluc3RlYWQgb2YgYHhza19kZXN0cnVjdGAuCgpHaXZlbiB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCwgaXQmIzM5O3MgY2xlYXIgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIGluIHRoZXNlIGFyZWFzLiBTaW5jZSBBRl9YRFAgc29ja2V0cyBhcmUgdXNlci1zcGFjZSBhY2Nlc3NpYmxlLCB0aGV54oCZcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgcm9idXN0bmVzcy4gVGhlIGtleSBpcyB0byBjaGVjayBhbGwgdGhlIHBvc3NpYmxlIGNvbmZpZ3MgYXMgaXQgaXMgcmVhbGx5IGltcG9ydGFudCB0byBrbm93IGFsbCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29ycmVjdC4gVGhlIHByZXNlbmNlIG9mIGBYRFBfU09DS0VUU2AgaXMgYSBtdXN0IGZvciBgQUZfWERQYCB0byB3b3JrIGFuZCBJIHNob3VsZCBub3RlIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyByZWxldmFudCBoZXJlIGFzIHdlbGwuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGVzdGVkIHRocm91Z2guCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgcmVjb3JkIHRoZXNlIG9ic2VydmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0Mzo1OC4wNDE3MDU3NTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU0NzMzODkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2V0c29ja29wdFwiLFxuICAgIFwieHNrX3JlbGVhc2VcIixcbiAgICBcInhza19kZXN0cnVjdFwiLFxuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFGX1hEUCBzb2NrZXQgcXVldWUgY3JlYXRpb24gdG8gY2hhcmdlIG1lbW9yeSBhZ2FpbnN0IGBzay1cXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQzOjU4LjA0MTcxMzAwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMDE2NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGI5YzA1ZDJiM2E0M2JiNTk4MThhYmExZjFmMDFhOGZhMmJlNzExMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAyMTo0Mzo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xcbmluZGV4IGY5MDZkNTFiNjY5OTAuLjdkNmRmOGI2YjQzZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2suY1xcbisrKyBiL25ldC94ZHAveHNrLmNcXG5AQCAtMTQ0NiwxNSArMTQ0NiwxNSBAQCBzdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuIFxcdHJldHVybiBtYXNrO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXFxuLVxcdFxcdFxcdCAgYm9vbCB1bWVtX3F1ZXVlKVxcbitzdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHN0cnVjdCBzb2NrICpzaywgdTMyIGVudHJpZXMsXFxuK1xcdFxcdFxcdCAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IHhza19xdWV1ZSAqcTtcXG4gXFxuIFxcdGlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG4rXFx0cSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG4gXFx0aWYgKCFxKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTE0OTgsNiArMTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcXG4gXFx0cmV0dXJuIG1hcDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgeHNrX3B1dF9wb29sX2FuZF91bWVtKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuK3tcXG4rXFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4cy1cXHUwMDNlcG9vbDtcXG4rXFx0c3RydWN0IHhkcF91bWVtICp1bWVtID0geHMtXFx1MDAzZXVtZW07XFxuK1xcbitcXHR4cy1cXHUwMDNlcG9vbCA9IE5VTEw7XFxuK1xcdHhzLVxcdTAwM2V1bWVtID0gTlVMTDtcXG4rXFxuK1xcdGlmICgheHBfcHV0X3Bvb2wocG9vbCkpXFxuK1xcdFxcdHhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuIHtcXG4gXFx0LyogVGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjdXJyZW50IFhEUCBzb2NrZXQgZnJvbSBhbGwgdGhlXFxuQEAgLTE1NTMsNiArMTU2NSw3IEBAIHN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4gXFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2V0eCk7XFxuIFxcdHhza3FfZGVzdHJveSh4cy1cXHUwMDNlZnFfdG1wKTtcXG4gXFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2VjcV90bXApO1xcbitcXHR4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oeHMpO1xcbiBcXG4gXFx0c29ja19vcnBoYW4oc2spO1xcbiBcXHRzb2NrLVxcdTAwM2VzayA9IE5VTEw7XFxuQEAgLTE4MTAsNyArMTgyMyw3IEBAIHN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXFx1MDAyNnhzLVxcdTAwM2V0eCA6IFxcdTAwMjZ4cy1cXHUwMDNlcng7XFxuLVxcdFxcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIGZhbHNlKTtcXG4rXFx0XFx0ZXJyID0geHNrX2luaXRfcXVldWUoc29jay1cXHUwMDNlc2ssIGVudHJpZXMsIHEsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgb3B0bmFtZSA9PSBYRFBfVFhfUklORylcXG4gXFx0XFx0XFx0LyogVHggbmVlZHMgdG8gYmUgZXhwbGljaXRseSB3b2tlbiB1cCB0aGUgZmlyc3QgdGltZSAqL1xcbiBcXHRcXHRcXHR4cy1cXHUwMDNldHgtXFx1MDAzZXJpbmctXFx1MDAzZWZsYWdzIHw9IFhEUF9SSU5HX05FRURfV0FLRVVQO1xcbkBAIC0xODc5LDcgKzE4OTIsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcbiBcXHRcXHRxID0gKG9wdG5hbWUgPT0gWERQX1VNRU1fRklMTF9SSU5HKSA/IFxcdTAwMjZ4cy1cXHUwMDNlZnFfdG1wIDpcXG4gXFx0XFx0XFx0XFx1MDAyNnhzLVxcdTAwM2VjcV90bXA7XFxuLVxcdFxcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIHRydWUpO1xcbitcXHRcXHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShzb2NrLVxcdTAwM2VzaywgZW50cmllcywgcSwgdHJ1ZSk7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2eHMtXFx1MDAzZW11dGV4KTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbkBAIC0yMTU2LDggKzIxNjksNyBAQCBzdGF0aWMgdm9pZCB4c2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbiBcXHRpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0aWYgKCF4cF9wdXRfcG9vbCh4cy1cXHUwMDNlcG9vbCkpXFxuLVxcdFxcdHhkcF9wdXRfdW1lbSh4cy1cXHUwMDNldW1lbSwgIXhzLVxcdTAwM2Vwb29sKTtcXG4rXFx0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5jIGIvbmV0L3hkcC94c2tfcXVldWUuY1xcbmluZGV4IDRkZDAxYjdkODU4ZWIuLmVkYzJiYTk3Y2MwZmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcXG5AQCAtNyw2ICs3LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInhza19xdWV1ZS5oXFxcIlxcbkBAIC0yMSw3ICsyMiwyNSBAQCBzdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpXFxuIFxcdHJldHVybiBzdHJ1Y3Rfc2l6ZShyeHR4X3JpbmcsIGRlc2MsIHEtXFx1MDAzZW5lbnRyaWVzKTtcXG4gfVxcbiBcXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxuK3N0YXRpYyBib29sIHhza3FfY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHNpemUpXFxuK3tcXG4rXFx0aW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVxcdTAwM2Vjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTtcXG4rXFx0aW50IG9sZCwgbmV3O1xcbitcXG4rXFx0aWYgKG9wdG1lbV9tYXggXFx1MDAzYz0gMCB8fCBzaXplIFxcdTAwM2Ugb3B0bWVtX21heClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0ZG8ge1xcbitcXHRcXHRvbGQgPSBhdG9taWNfcmVhZChcXHUwMDI2c2stXFx1MDAzZXNrX29tZW1fYWxsb2MpO1xcbitcXHRcXHRpZiAob2xkIFxcdTAwM2MgMCB8fCBvbGQgXFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdG5ldyA9IG9sZCArIChpbnQpc2l6ZTtcXG4rXFx0fSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jLCBvbGQsIG5ldykgIT0gb2xkKTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbitzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbiB7XFxuIFxcdHN0cnVjdCB4c2tfcXVldWUgKnE7XFxuIFxcdHNpemVfdCBzaXplO1xcbkBAIC00NSw5ICs2NCwxOCBAQCBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcXG4gXFx0fVxcbiBcXG4gXFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XFxuK1xcdGlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7XFxuK1xcdFxcdGtmcmVlKHEpO1xcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbitcXG4rXFx0c29ja19ob2xkKHNrKTtcXG4rXFx0cS1cXHUwMDNlc2sgPSBzaztcXG4gXFxuIFxcdHEtXFx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XFxuIFxcdGlmICghcS1cXHUwMDNlcmluZykge1xcbitcXHRcXHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jKTtcXG4rXFx0XFx0c29ja19wdXQoc2spO1xcbiBcXHRcXHRrZnJlZShxKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG5AQCAtNjEsNiArODksMTEgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcXG4gXFx0aWYgKCFxKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAocS1cXHUwMDNlc2spIHtcXG4rXFx0XFx0YXRvbWljX3N1YigoaW50KXEtXFx1MDAzZXJpbmdfdm1hbGxvY19zaXplLCBcXHUwMDI2cS1cXHUwMDNlc2stXFx1MDAzZXNrX29tZW1fYWxsb2MpO1xcbitcXHRcXHRzb2NrX3B1dChxLVxcdTAwM2Vzayk7XFxuK1xcdH1cXG4rXFxuIFxcdHZmcmVlKHEtXFx1MDAzZXJpbmcpO1xcbiBcXHRrZnJlZShxKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaFxcbmluZGV4IDFiYzQyYzg5MDJmNGIuLjYxNzQ0ZTRjMWNhMmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmhcXG5AQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgeGRwX3VtZW1fcmluZyB7XFxuIFxcdHU2NCBkZXNjW10gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4gfTtcXG4gXFxuK3N0cnVjdCBzb2NrO1xcbitcXG4gc3RydWN0IHhza19xdWV1ZSB7XFxuIFxcdHUzMiByaW5nX21hc2s7XFxuIFxcdHUzMiBuZW50cmllcztcXG5AQCAtNDYsNiArNDgsNyBAQCBzdHJ1Y3QgeHNrX3F1ZXVlIHtcXG4gXFx0dTY0IGludmFsaWRfZGVzY3M7XFxuIFxcdHU2NCBxdWV1ZV9lbXB0eV9kZXNjcztcXG4gXFx0c2l6ZV90IHJpbmdfdm1hbGxvY19zaXplO1xcbitcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdC8qIE11dHVhbCBleGNsdXNpb24gb2YgdGhlIGNvbXBsZXRpb24gcmluZyBpbiB0aGUgU0tCIG1vZGUuXFxuIFxcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxcbiBcXHQgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLlxcbkBAIC01MzEsNyArNTM0LDcgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxcbiBcXHRyZXR1cm4gcSA/IHEtXFx1MDAzZXF1ZXVlX2VtcHR5X2Rlc2NzIDogMDtcXG4gfVxcbiBcXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xcbi12b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxX29wcyk7XFxuK3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xcbit2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcXG4gXFxuICNlbmRpZiAvKiBfTElOVVhfWFNLX1FVRVVFX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDM6NTguMzIzMzg0OTMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzAyNjU2NTIxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCIsXG4gICAgXCJ4c2tfZGVzdHJ1Y3RcIixcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXFx1MDAzZXNrX29tZW1fYWxsb2NgIGFuZCBsaW1pdHMgaXQgYnkgYHN5c2N0bF9vcHRtZW1fbWF4YC4gSXQgYWxzbyBtb3ZlcyB0aGUgcmVsZWFzZSBvZiB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gZnJvbSBgeHNrX2Rlc3RydWN0YCB0byBgeHNrX3JlbGVhc2VgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgYWNjb3VudGluZyBhbmQgbGlmZWN5Y2xlIG9mIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xuaW5kZXggZjkwNmQ1MWI2Njk5MC4uN2Q2ZGY4YjZiNDNkNiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbisrKyBiL25ldC94ZHAveHNrLmNcbkBAIC0xNDQ2LDE1ICsxNDQ2LDE1IEBAIHN0YXRpYyBfX3BvbGxfdCB4c2tfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jayxcbiBcdHJldHVybiBtYXNrO1xuIH1cbiBcbi1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG4tXHRcdFx0ICBib29sIHVtZW1fcXVldWUpXG4rc3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLFxuK1x0XHRcdCAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpXG4ge1xuIFx0c3RydWN0IHhza19xdWV1ZSAqcTtcbiBcbiBcdGlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcbitcdHEgPSB4c2txX2NyZWF0ZShzaywgZW50cmllcywgdW1lbV9xdWV1ZSk7XG4gXHRpZiAoIXEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTE0OTgsNiArMTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcbiBcdHJldHVybiBtYXA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHhza19wdXRfcG9vbF9hbmRfdW1lbShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxuK3tcbitcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtXHUwMDNlcG9vbDtcbitcdHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IHhzLVx1MDAzZXVtZW07XG4rXG4rXHR4cy1cdTAwM2Vwb29sID0gTlVMTDtcbitcdHhzLVx1MDAzZXVtZW0gPSBOVUxMO1xuK1xuK1x0aWYgKCF4cF9wdXRfcG9vbChwb29sKSlcbitcdFx0eGRwX3B1dF91bWVtKHVtZW0sICFwb29sKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cylcbiB7XG4gXHQvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGVcbkBAIC0xNTUzLDYgKzE1NjUsNyBAQCBzdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNldHgpO1xuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZWZxX3RtcCk7XG4gXHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNlY3FfdG1wKTtcbitcdHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cyk7XG4gXG4gXHRzb2NrX29ycGhhbihzayk7XG4gXHRzb2NrLVx1MDAzZXNrID0gTlVMTDtcbkBAIC0xODEwLDcgKzE4MjMsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdFx0fVxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXHUwMDI2eHMtXHUwMDNldHggOiBcdTAwMjZ4cy1cdTAwM2VyeDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xuK1x0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShzb2NrLVx1MDAzZXNrLCBlbnRyaWVzLCBxLCBmYWxzZSk7XG4gXHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxuIFx0XHRcdC8qIFR4IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgd29rZW4gdXAgdGhlIGZpcnN0IHRpbWUgKi9cbiBcdFx0XHR4cy1cdTAwM2V0eC1cdTAwM2VyaW5nLVx1MDAzZWZsYWdzIHw9IFhEUF9SSU5HX05FRURfV0FLRVVQO1xuQEAgLTE4NzksNyArMTg5Miw3IEBAIHN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcbiBcdFx0cSA9IChvcHRuYW1lID09IFhEUF9VTUVNX0ZJTExfUklORykgPyBcdTAwMjZ4cy1cdTAwM2VmcV90bXAgOlxuIFx0XHRcdFx1MDAyNnhzLVx1MDAzZWNxX3RtcDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgdHJ1ZSk7XG4rXHRcdGVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stXHUwMDNlc2ssIGVudHJpZXMsIHEsIHRydWUpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuQEAgLTIxNTYsOCArMjE2OSw3IEBAIHN0YXRpYyB2b2lkIHhza19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0aWYgKCF4cF9wdXRfcG9vbCh4cy1cdTAwM2Vwb29sKSlcbi1cdFx0eGRwX3B1dF91bWVtKHhzLVx1MDAzZXVtZW0sICF4cy1cdTAwM2Vwb29sKTtcbitcdHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgeHNrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5jIGIvbmV0L3hkcC94c2tfcXVldWUuY1xuaW5kZXggNGRkMDFiN2Q4NThlYi4uZWRjMmJhOTdjYzBmZiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmNcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJ4c2tfcXVldWUuaFwiXG5AQCAtMjEsNyArMjIsMjUgQEAgc3RhdGljIHNpemVfdCB4c2txX2dldF9yaW5nX3NpemUoc3RydWN0IHhza19xdWV1ZSAqcSwgYm9vbCB1bWVtX3F1ZXVlKVxuIFx0cmV0dXJuIHN0cnVjdF9zaXplKHJ4dHhfcmluZywgZGVzYywgcS1cdTAwM2VuZW50cmllcyk7XG4gfVxuIFxuLXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuK3N0YXRpYyBib29sIHhza3FfY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHNpemUpXG4re1xuK1x0aW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWNvcmUuc3lzY3RsX29wdG1lbV9tYXgpO1xuK1x0aW50IG9sZCwgbmV3O1xuK1xuK1x0aWYgKG9wdG1lbV9tYXggXHUwMDNjPSAwIHx8IHNpemUgXHUwMDNlIG9wdG1lbV9tYXgpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGRvIHtcbitcdFx0b2xkID0gYXRvbWljX3JlYWQoXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4rXHRcdGlmIChvbGQgXHUwMDNjIDAgfHwgb2xkIFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0bmV3ID0gb2xkICsgKGludClzaXplO1xuK1x0fSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYywgb2xkLCBuZXcpICE9IG9sZCk7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgeHNrX3F1ZXVlICpxO1xuIFx0c2l6ZV90IHNpemU7XG5AQCAtNDUsOSArNjQsMTggQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbitcdGlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7XG4rXHRcdGtmcmVlKHEpO1xuK1x0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcbitcdHNvY2tfaG9sZChzayk7XG4rXHRxLVx1MDAzZXNrID0gc2s7XG4gXG4gXHRxLVx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XG4gXHRpZiAoIXEtXHUwMDNlcmluZykge1xuK1x0XHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdFx0a2ZyZWUocSk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuQEAgLTYxLDYgKzg5LDExIEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXG4gXHRpZiAoIXEpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmIChxLVx1MDAzZXNrKSB7XG4rXHRcdGF0b21pY19zdWIoKGludClxLVx1MDAzZXJpbmdfdm1hbGxvY19zaXplLCBcdTAwMjZxLVx1MDAzZXNrLVx1MDAzZXNrX29tZW1fYWxsb2MpO1xuK1x0XHRzb2NrX3B1dChxLVx1MDAzZXNrKTtcbitcdH1cbitcbiBcdHZmcmVlKHEtXHUwMDNlcmluZyk7XG4gXHRrZnJlZShxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuaCBiL25ldC94ZHAveHNrX3F1ZXVlLmhcbmluZGV4IDFiYzQyYzg5MDJmNGIuLjYxNzQ0ZTRjMWNhMmYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oXG4rKysgYi9uZXQveGRwL3hza19xdWV1ZS5oXG5AQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgeGRwX3VtZW1fcmluZyB7XG4gXHR1NjQgZGVzY1tdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gfTtcbiBcbitzdHJ1Y3Qgc29jaztcbitcbiBzdHJ1Y3QgeHNrX3F1ZXVlIHtcbiBcdHUzMiByaW5nX21hc2s7XG4gXHR1MzIgbmVudHJpZXM7XG5AQCAtNDYsNiArNDgsNyBAQCBzdHJ1Y3QgeHNrX3F1ZXVlIHtcbiBcdHU2NCBpbnZhbGlkX2Rlc2NzO1xuIFx0dTY0IHF1ZXVlX2VtcHR5X2Rlc2NzO1xuIFx0c2l6ZV90IHJpbmdfdm1hbGxvY19zaXplO1xuK1x0c3RydWN0IHNvY2sgKnNrO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzEsNyArNTM0LDcgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIFx0cmV0dXJuIHEgPyBxLVx1MDAzZXF1ZXVlX2VtcHR5X2Rlc2NzIDogMDtcbiB9XG4gXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcbitzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTtcbit2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0Mzo1OC4zMjMzODYxMDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAwMDExMDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUZfWERQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEFGX1hEUCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC94ZHAveHNrLmNgIGFuZCBgbmV0L3hkcC94c2tfcXVldWUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIGFkZGluZyBgc2tfb21lbV9hbGxvY2AgY2FsbHMgdG8gY2hhcmdlIGZvciB0aGUgbWVtb3J5IGFsbG9jYXRlZCBieSBgeHNrcV9jcmVhdGVgIGZvciB0aGUgcmluZ3MsIHdoaWNoIGlzIGEgc2Vuc2libGUgYWRkaXRpb24gZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmVzb3VyY2UgZXhoYXVzdGlvbiBpbiB0aGlzIGFyZWEuIEFkZGl0aW9uYWxseSwgdGhleSd2ZSBzaGlmdGVkIHRoZSBgeHNrX3B1dF9wb29sX2FuZF91bWVtYCBjYWxsIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhpcyBsb29rcyBsaWtlIGl0J3MgYWltZWQgYXQgaW1wcm92aW5nIHRoZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBvZiB0aGVzZSByZXNvdXJjZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBkZXRhaWxzLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbXBsZW1lbnRzIGB4c2txX2NoYXJnZWAsIHdoaWNoIGNoZWNrcyBhZ2FpbnN0IGBzeXNjdGxfb3B0bWVtX21heGAgYW5kIGFkanVzdHMgYHNrLVx1MDAzZXNrX29tZW1fYWxsb2NgLiBXZSdyZSBhbHNvIHNlZWluZyBgc29ja19ob2xkKHNrKWAgYW5kIGBzb2NrX3B1dChzaylgIGNhbGxzIGFkZGVkIHdpdGhpbiBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCByZXNwZWN0aXZlbHksIHN1Z2dlc3RpbmcgdGhhdCB0aGV5J3JlIHRyeWluZyB0byBhZGQgYSByZWZlcmVuY2UgY291bnQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gQW5kIHRoZSBgeHBfcHV0X3Bvb2xgIGFuZCBgeGRwX3B1dF91bWVtYCBvcGVyYXRpb25zIGFyZSBiZWluZyBtb3ZlZCB0byBgeHNrX3JlbGVhc2VgIHRocm91Z2ggYHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cylgLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgQUZfWERQIHNvY2tldCBsb2dpYywgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmb2N1c2VkIGZ1enppbmcuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBzaG91bGQgYmUgdGhlIHByaW1hcnkgdGFyZ2V0cy5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4c2tfaW5pdF9xdWV1ZWAsIGB4c2tfcHV0X3Bvb2xfYW5kX3VtZW1gLCBgeHNrX2RlbGV0ZV9mcm9tX21hcHNgLCBgeHNrX3JlbGVhc2VgLCBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX2Rlc3RydWN0YCwgYHhza3FfY2hhcmdlYCwgYHhza3FfY3JlYXRlYCwgYW5kIGB4c2txX2Rlc3Ryb3lgLiBUaGUgb25lcyB0aGF0IHJlYWxseSBzdGFuZCBvdXQgYXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYXJlIGxpa2VseSBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX3JlbGVhc2VgLCBgeHNrX2Rlc3RydWN0YCwgYHhza3FfY3JlYXRlYCwgYW5kIGB4c2txX2Rlc3Ryb3lgLCBhcyB0aGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuXG5cbk5vdyBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBBRl9YRFAsIGFuZCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHdoZXJlIGB4c2suY2AgaXMgY29tcGlsZWQgdG8gZ2V0IHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MDUuNDIzNDAwNjg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTU4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgKz0geHNrLm8geGRwX3VtZW0ubyB4c2tfcXVldWUubyB4c2ttYXAub1xcbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhza19idWZmX3Bvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDowNS40NzA5NjM4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI4MDA3NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipYRFAgU29ja2V0cyBhbmQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldHMgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhYnNvbHV0ZSByZXF1aXJlbWVudCBvZiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uIE5vdywgc2luY2UgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gYWxsIHRoZSBwaWVjZXMsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGtub2JzIGFuZCBsZXZlcnMgYXJlIGRpcmVjdGx5IHRpZWQgdG8gYENPTkZJR19YRFBfU09DS0VUU2A/IFVuZGVyc3RhbmRpbmcgdGhvc2UgdXBzdHJlYW0gcmVxdWlyZW1lbnRzIGlzIGtleSB0byBlbnN1cmluZyBJJ3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3Mgc29tZXRoaW5nIGZ1bmRhbWVudGFsIHRoYXQgY291bGQgc3RvcCB0aGluZ3Mgd29ya2luZyBsYXRlci4gVGltZSB0byB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDowOC4xOTg5ODEyNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxMjE3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhEUF9TT0NLRVRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjA4LjI0MzEwOTI1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDQyNzQ0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipYRFAgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgWERQLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBkaWcgaW50byBgbmV0L3hkcC9LY29uZmlnYCB0byBpZGVudGlmeSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gSXQncyB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0J3MgcG9zc2libGUsIHdoYXQncyByZXF1aXJlZCwgYW5kIHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG1pZ2h0IGluZmx1ZW5jZSBvciBiZSBpbmZsdWVuY2VkIGJ5IFhEUCBjb25maWd1cmF0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZGV0YWlsIGV2ZXJ5dGhpbmcsIGZyb20gdGhlIGJhc2ljIFhEUCBzdXBwb3J0IHRvIGFueSBmZWF0dXJlIGZsYWdzIGFuZCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBYRFAgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoxMS4zNDczODYxMzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQveGRwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBYRFBfU09DS0VUU1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiWERQIHNvY2tldHNcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuICAgNTpcXHRcXHRkZWZhdWx0IG5cXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcXG4gICA4OlxcdFxcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXFxuICAxMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cXG4gIDE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MTEuMzQ3NDQ2NTQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwOTM2NTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlhEUCBTb2NrZXRzIGFuZCBTeXN0ZW0gQ2FsbHM6IEEgUXVpY2sgTWVudGFsIENoZWNrKipcblxuUmlnaHQsIHNvIGBYRFBfU09DS0VUU2AgaXMgaW5oZXJlbnRseSBidWlsdCBvbiB0aGUgZm91bmRhdGlvbnMgb2YgYEJQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmN5IGlzIG9idmlvdXMgZ2l2ZW4gdGhlIGNvcmUgbWVjaGFuaWNzLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0IG1lIHF1aWNrbHkgcnVuIGEgbWVudGFsIHNjYW4gb3ZlciB0aGUgYHhza19zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gSXMgaXQgZGVjbGFyZWQgYXMgYHN0YXRpY2A/IEknbSB0cnlpbmcgdG8gcmVjYWxsIGlmIGl0J3MgdmlzaWJsZSBnbG9iYWxseSBhY3Jvc3MgdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSwgb3IgaWYgaXRzIHNjb3BlIGlzIG1vcmUgY29uc3RyYWluZWQuIFRoYXQgd2lsbCBpbXBhY3QgaG93IHdlIGNhbiByZXVzZSBhbmQgZXh0ZW5kIHRoYXQgY29tcG9uZW50LiBVbmRlcnN0YW5kaW5nIHNjb3BlLCBhbmQgaXRzIHZpc2liaWxpdHksIGlzIGtleSB0byBjb21wcmVoZW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjE0Ljc1NjgxNTU5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2MzM0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTE3OTE9c3RydWN0IHhkcF91bWVtX3JlZ192MSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTE3OTctXFxubmV0L3hkcC94c2suYzoxNzk4OnN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQveGRwL3hzay5jLTE3OTktXFx0XFx0XFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L3hkcC94c2suYz0yMTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTIxNTctXFx0LnNodXRkb3duXFx0PSBzb2NrX25vX3NodXRkb3duLFxcbm5ldC94ZHAveHNrLmM6MjE1ODpcXHQuc2V0c29ja29wdFxcdD0geHNrX3NldHNvY2tvcHQsXFxubmV0L3hkcC94c2suYy0yMTU5LVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSB4c2tfZ2V0c29ja29wdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MTQuODAwNDU2MTA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MDQ2MTQ1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFhEUCBTb2NrZXQgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBYRFAgc29ja2V0cyBhcmUgcHV0IHRvZ2V0aGVyLCBhbmQgaXQncyBzdGFydGluZyB0byBjbGljay4gSSBzZWUgdGhhdCBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGBwcm90b19vcHNgLiBTbywgdGhhdCBtZWFucyB0aGV5J3JlIGFic29sdXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHN0YW5kYXJkIGBzZXRzb2Nrb3B0YCBzeXN0ZW0gY2FsbCwgd2hlbiBkZWFsaW5nIHdpdGggYW4gQUZfWERQIHNvY2tldC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIGB4c2tfZGVzdHJ1Y3RgLCB0aGF0J3MgYWxzbyBkZWNsYXJlZCBgc3RhdGljYCwgYnV0IGFzc2lnbmVkIHRvIGBzay1cdTAwM2Vza19kZXN0cnVjdGAuXG5cblRoZW4gSSBzZWUgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgYXJlICpub3QqIHN0YXRpYywgc28gdGhvc2UgYXJlIGxpa2VseSBlbnRyeSBwb2ludHMuIFNpbmNlIHRoZXkgYXJlIGtleSB0byB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIHRoZSBxdWV1ZSBpdHNlbGYsIEkgc2hvdWxkIGRpdmUgaW50byBgbmV0L3hkcC94c2tfcXVldWUuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5J3JlIHVzZWQuIExldCdzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoyMi43MDUwNzM5OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzYxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2tfcXVldWUuYz0yNT1zdGF0aWMgYm9vbCB4c2txX2NoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYy00Mi1cXG5uZXQveGRwL3hza19xdWV1ZS5jOjQzOnN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxubmV0L3hkcC94c2tfcXVldWUuYy00NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjIyLjc1MjgzOTc1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzU2NjQwODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFGX1hEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgYW5kIExpZmVjeWNsZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIEFGX1hEUCBzb2NrZXQgcXVldWVzLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBtYW5hZ2VtZW50LiBJIHNlZSBpdCdzIG1vZGlmeWluZyB0aGUgbWVtb3J5IGFjY291bnRpbmcgZm9yIHRoZSBgQUZfWERQYCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgdHlpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHRvIGBzay1cdTAwM2Vza19vbWVtX2FsbG9jYCBhbmQgZW5mb3JjaW5nIHRoZSBsaW1pdCBpbXBvc2VkIGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBtZW1vcnkgZm9yIHRoZXNlIHNvY2tldHMuIEFsc28gb2YgaW50ZXJlc3QgaXMgdGhhdCB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gYXJlIG5vdyByZWxlYXNlZCBpbiBgeHNrX3JlbGVhc2VgIGluc3RlYWQgb2YgYHhza19kZXN0cnVjdGAuXG5cbkdpdmVuIHRoZXNlIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgYHhza19zZXRzb2Nrb3B0YCwgYHhza19yZWxlYXNlYCwgYHhza19kZXN0cnVjdGAsIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgLCBpdCdzIGNsZWFyIHdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBpbiB0aGVzZSBhcmVhcy4gU2luY2UgQUZfWERQIHNvY2tldHMgYXJlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSwgdGhleeKAmXJlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBrZXkgaXMgdG8gY2hlY2sgYWxsIHRoZSBwb3NzaWJsZSBjb25maWdzIGFzIGl0IGlzIHJlYWxseSBpbXBvcnRhbnQgdG8ga25vdyBhbGwgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGNvcnJlY3QuIFRoZSBwcmVzZW5jZSBvZiBgWERQX1NPQ0tFVFNgIGlzIGEgbXVzdCBmb3IgYEFGX1hEUGAgdG8gd29yayBhbmQgSSBzaG91bGQgbm90ZSB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgcmVsZXZhbnQgaGVyZSBhcyB3ZWxsLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGVzdGVkIHRocm91Z2guXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCByZWNvcmQgdGhlc2Ugb2JzZXJ2YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDY5LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoyOC41MDk0ODI5NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTU1MTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCIsXG4gICAgXCJ4c2tfZGVzdHJ1Y3RcIixcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXFx1MDAzZXNrX29tZW1fYWxsb2NgIGFuZCBsaW1pdHMgaXQgYnkgYHN5c2N0bF9vcHRtZW1fbWF4YC4gSXQgYWxzbyBtb3ZlcyB0aGUgcmVsZWFzZSBvZiB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gZnJvbSBgeHNrX2Rlc3RydWN0YCB0byBgeHNrX3JlbGVhc2VgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgYWNjb3VudGluZyBhbmQgbGlmZWN5Y2xlIG9mIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19zZXRzb2Nrb3B0XCIsXG4gICAgXCJ4c2tfcmVsZWFzZVwiLFxuICAgIFwieHNrX2Rlc3RydWN0XCIsXG4gICAgXCJ4c2txX2NyZWF0ZVwiLFxuICAgIFwieHNrcV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUZfWERQIHNvY2tldCBxdWV1ZSBjcmVhdGlvbiB0byBjaGFyZ2UgbWVtb3J5IGFnYWluc3QgYHNrLVxcdTAwM2Vza19vbWVtX2FsbG9jYCBhbmQgbGltaXRzIGl0IGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIEl0IGFsc28gbW92ZXMgdGhlIHJlbGVhc2Ugb2YgdGhlIGJ1ZmZlciBwb29sIGFuZCB1bWVtIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IGFjY291bnRpbmcgYW5kIGxpZmVjeWNsZSBvZiBBRl9YRFAgc29ja2V0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowrpspj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 21:32:12 +0000 UTC FinishedAt: 2026-07-30 21:44:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "81b986e2-ad9f-4e59-b1ff-a15bca62f17a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_setsockopt", "xsk_release", "xsk_destruct", "xskq_create", "xskq_destroy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IGY5MDZkNTFiNjY5OTAuLjdkNmRmOGI2YjQzZDYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jXG5AQCAtMTQ0NiwxNSAmIzQzOzE0NDYsMTUgQEAgc3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuIFx0cmV0dXJuIG1hc2s7XG4gfVxuIFxuLXN0YXRpYyBpbnQgeHNrX2luaXRfcXVldWUodTMyIGVudHJpZXMsIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSxcbi1cdFx0XHQgIGJvb2wgdW1lbV9xdWV1ZSlcbiYjNDM7c3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLFxuJiM0MztcdFx0XHQgIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSwgYm9vbCB1bWVtX3F1ZXVlKVxuIHtcbiBcdHN0cnVjdCB4c2tfcXVldWUgKnE7XG4gXG4gXHRpZiAoZW50cmllcyA9PSAwIHx8ICpxdWV1ZSB8fCAhaXNfcG93ZXJfb2ZfMihlbnRyaWVzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRxID0geHNrcV9jcmVhdGUoZW50cmllcywgdW1lbV9xdWV1ZSk7XG4mIzQzO1x0cSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcbiBcdGlmICghcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMTQ5OCw2ICYjNDM7MTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcbiBcdHJldHVybiBtYXA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oc3RydWN0IHhkcF9zb2NrICp4cylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtXHUwMDNlcG9vbDtcbiYjNDM7XHRzdHJ1Y3QgeGRwX3VtZW0gKnVtZW0gPSB4cy1cdTAwM2V1bWVtO1xuJiM0MztcbiYjNDM7XHR4cy1cdTAwM2Vwb29sID0gTlVMTDtcbiYjNDM7XHR4cy1cdTAwM2V1bWVtID0gTlVMTDtcbiYjNDM7XG4mIzQzO1x0aWYgKCF4cF9wdXRfcG9vbChwb29sKSlcbiYjNDM7XHRcdHhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cylcbiB7XG4gXHQvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGVcbkBAIC0xNTUzLDYgJiM0MzsxNTY1LDcgQEAgc3RhdGljIGludCB4c2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZXR4KTtcbiBcdHhza3FfZGVzdHJveSh4cy1cdTAwM2VmcV90bXApO1xuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZWNxX3RtcCk7XG4mIzQzO1x0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcbiBcbiBcdHNvY2tfb3JwaGFuKHNrKTtcbiBcdHNvY2stXHUwMDNlc2sgPSBOVUxMO1xuQEAgLTE4MTAsNyAmIzQzOzE4MjMsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdFx0fVxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXHUwMDI2eHMtXHUwMDNldHggOiBcdTAwMjZ4cy1cdTAwM2VyeDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xuJiM0MztcdFx0ZXJyID0geHNrX2luaXRfcXVldWUoc29jay1cdTAwM2VzaywgZW50cmllcywgcSwgZmFsc2UpO1xuIFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgb3B0bmFtZSA9PSBYRFBfVFhfUklORylcbiBcdFx0XHQvKiBUeCBuZWVkcyB0byBiZSBleHBsaWNpdGx5IHdva2VuIHVwIHRoZSBmaXJzdCB0aW1lICovXG4gXHRcdFx0eHMtXHUwMDNldHgtXHUwMDNlcmluZy1cdTAwM2VmbGFncyB8PSBYRFBfUklOR19ORUVEX1dBS0VVUDtcbkBAIC0xODc5LDcgJiM0MzsxODkyLDcgQEAgc3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxuIFxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1VNRU1fRklMTF9SSU5HKSA/IFx1MDAyNnhzLVx1MDAzZWZxX3RtcCA6XG4gXHRcdFx0XHUwMDI2eHMtXHUwMDNlY3FfdG1wO1xuLVx0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTtcbiYjNDM7XHRcdGVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stXHUwMDNlc2ssIGVudHJpZXMsIHEsIHRydWUpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuQEAgLTIxNTYsOCAmIzQzOzIxNjksNyBAQCBzdGF0aWMgdm9pZCB4c2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuIFx0aWYgKCFzb2NrX2ZsYWcoc2ssIFNPQ0tfREVBRCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdGlmICgheHBfcHV0X3Bvb2woeHMtXHUwMDNlcG9vbCkpXG4tXHRcdHhkcF9wdXRfdW1lbSh4cy1cdTAwM2V1bWVtLCAheHMtXHUwMDNlcG9vbCk7XG4mIzQzO1x0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcbiB9XG4gXG4gc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi5lZGMyYmE5N2NjMGZmIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3hza19xdWV1ZS5oXCYjMzQ7XG5AQCAtMjEsNyAmIzQzOzIyLDI1IEBAIHN0YXRpYyBzaXplX3QgeHNrcV9nZXRfcmluZ19zaXplKHN0cnVjdCB4c2tfcXVldWUgKnEsIGJvb2wgdW1lbV9xdWV1ZSlcbiBcdHJldHVybiBzdHJ1Y3Rfc2l6ZShyeHR4X3JpbmcsIGRlc2MsIHEtXHUwMDNlbmVudHJpZXMpO1xuIH1cbiBcbi1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiYjNDM7c3RhdGljIGJvb2wgeHNrcV9jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzaXplX3Qgc2l6ZSlcbiYjNDM7e1xuJiM0MztcdGludCBvcHRtZW1fbWF4ID0gUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2Vjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTtcbiYjNDM7XHRpbnQgb2xkLCBuZXc7XG4mIzQzO1xuJiM0MztcdGlmIChvcHRtZW1fbWF4IFx1MDAzYz0gMCB8fCBzaXplIFx1MDAzZSBvcHRtZW1fbWF4KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRkbyB7XG4mIzQzO1x0XHRvbGQgPSBhdG9taWNfcmVhZChcdTAwMjZzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiYjNDM7XHRcdGlmIChvbGQgXHUwMDNjIDAgfHwgb2xkIFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRuZXcgPSBvbGQgJiM0MzsgKGludClzaXplO1xuJiM0MztcdH0gd2hpbGUgKGF0b21pY19jbXB4Y2hnKFx1MDAyNnNrLVx1MDAzZXNrX29tZW1fYWxsb2MsIG9sZCwgbmV3KSAhPSBvbGQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgeHNrX3F1ZXVlICpxO1xuIFx0c2l6ZV90IHNpemU7XG5AQCAtNDUsOSAmIzQzOzY0LDE4IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuIFx0fVxuIFxuIFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4mIzQzO1x0aWYgKCF4c2txX2NoYXJnZShzaywgc2l6ZSkpIHtcbiYjNDM7XHRcdGtmcmVlKHEpO1xuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRzb2NrX2hvbGQoc2spO1xuJiM0MztcdHEtXHUwMDNlc2sgPSBzaztcbiBcbiBcdHEtXHUwMDNlcmluZyA9IHZtYWxsb2NfdXNlcihzaXplKTtcbiBcdGlmICghcS1cdTAwM2VyaW5nKSB7XG4mIzQzO1x0XHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4mIzQzO1x0XHRzb2NrX3B1dChzayk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02MSw2ICYjNDM7ODksMTEgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcbiBcdGlmICghcSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdGlmIChxLVx1MDAzZXNrKSB7XG4mIzQzO1x0XHRhdG9taWNfc3ViKChpbnQpcS1cdTAwM2VyaW5nX3ZtYWxsb2Nfc2l6ZSwgXHUwMDI2cS1cdTAwM2Vzay1cdTAwM2Vza19vbWVtX2FsbG9jKTtcbiYjNDM7XHRcdHNvY2tfcHV0KHEtXHUwMDNlc2spO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR2ZnJlZShxLVx1MDAzZXJpbmcpO1xuIFx0a2ZyZWUocSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXG5pbmRleCAxYmM0MmM4OTAyZjRiLi42MTc0NGU0YzFjYTJmIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaFxuQEAgLTM3LDYgJiM0MzszNyw4IEBAIHN0cnVjdCB4ZHBfdW1lbV9yaW5nIHtcbiBcdHU2NCBkZXNjW10gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3Qgc29jaztcbiYjNDM7XG4gc3RydWN0IHhza19xdWV1ZSB7XG4gXHR1MzIgcmluZ19tYXNrO1xuIFx0dTMyIG5lbnRyaWVzO1xuQEAgLTQ2LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xuIFx0dTY0IGludmFsaWRfZGVzY3M7XG4gXHR1NjQgcXVldWVfZW1wdHlfZGVzY3M7XG4gXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzEsNyAmIzQzOzUzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSlcbiBcdHJldHVybiBxID8gcS1cdTAwM2VxdWV1ZV9lbXB0eV9kZXNjcyA6IDA7XG4gfVxuIFxuLXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTtcbi12b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxX29wcyk7XG4mIzQzO3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuJiM0Mzt2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suYwppbmRleCBmOTA2ZDUxYjY2OTkwLi43ZDZkZjhiNmI0M2Q2IDEwMDY0NAotLS0gYS9uZXQveGRwL3hzay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrLmMKQEAgLTE0NDYsMTUgJiM0MzsxNDQ2LDE1IEBAIHN0YXRpYyBfX3BvbGxfdCB4c2tfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywKIAlyZXR1cm4gbWFzazsKIH0KIAotc3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZSh1MzIgZW50cmllcywgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLAotCQkJICBib29sIHVtZW1fcXVldWUpCiYjNDM7c3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLAomIzQzOwkJCSAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpCiB7CiAJc3RydWN0IHhza19xdWV1ZSAqcTsKIAogCWlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTsKJiM0MzsJcSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTsKIAlpZiAoIXEpCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC0xNDk4LDYgJiM0MzsxNDk4LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgeHNrX21hcCAqeHNrX2dldF9tYXBfbGlzdF9lbnRyeShzdHJ1Y3QgeGRwX3NvY2sgKnhzLAogCXJldHVybiBtYXA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oc3RydWN0IHhkcF9zb2NrICp4cykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtJmd0O3Bvb2w7CiYjNDM7CXN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IHhzLSZndDt1bWVtOwomIzQzOwomIzQzOwl4cy0mZ3Q7cG9vbCA9IE5VTEw7CiYjNDM7CXhzLSZndDt1bWVtID0gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKCF4cF9wdXRfcG9vbChwb29sKSkKJiM0MzsJCXhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cykKIHsKIAkvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGUKQEAgLTE1NTMsNiAmIzQzOzE1NjUsNyBAQCBzdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJeHNrcV9kZXN0cm95KHhzLSZndDt0eCk7CiAJeHNrcV9kZXN0cm95KHhzLSZndDtmcV90bXApOwogCXhza3FfZGVzdHJveSh4cy0mZ3Q7Y3FfdG1wKTsKJiM0MzsJeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTsKIAogCXNvY2tfb3JwaGFuKHNrKTsKIAlzb2NrLSZndDtzayA9IE5VTEw7CkBAIC0xODEwLDcgJiM0MzsxODIzLDcgQEAgc3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogCQkJcmV0dXJuIC1FQlVTWTsKIAkJfQogCQlxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gJmFtcDt4cy0mZ3Q7dHggOiAmYW1wO3hzLSZndDtyeDsKLQkJZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpOwomIzQzOwkJZXJyID0geHNrX2luaXRfcXVldWUoc29jay0mZ3Q7c2ssIGVudHJpZXMsIHEsIGZhbHNlKTsKIAkJaWYgKCFlcnIgJmFtcDsmYW1wOyBvcHRuYW1lID09IFhEUF9UWF9SSU5HKQogCQkJLyogVHggbmVlZHMgdG8gYmUgZXhwbGljaXRseSB3b2tlbiB1cCB0aGUgZmlyc3QgdGltZSAqLwogCQkJeHMtJmd0O3R4LSZndDtyaW5nLSZndDtmbGFncyB8PSBYRFBfUklOR19ORUVEX1dBS0VVUDsKQEAgLTE4NzksNyAmIzQzOzE4OTIsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAKIAkJcSA9IChvcHRuYW1lID09IFhEUF9VTUVNX0ZJTExfUklORykgPyAmYW1wO3hzLSZndDtmcV90bXAgOgogCQkJJmFtcDt4cy0mZ3Q7Y3FfdG1wOwotCQllcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTsKJiM0MzsJCWVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stJmd0O3NrLCBlbnRyaWVzLCBxLCB0cnVlKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7eHMtJmd0O211dGV4KTsKIAkJcmV0dXJuIGVycjsKIAl9CkBAIC0yMTU2LDggJiM0MzsyMTY5LDcgQEAgc3RhdGljIHZvaWQgeHNrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAlpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSkKIAkJcmV0dXJuOwogCi0JaWYgKCF4cF9wdXRfcG9vbCh4cy0mZ3Q7cG9vbCkpCi0JCXhkcF9wdXRfdW1lbSh4cy0mZ3Q7dW1lbSwgIXhzLSZndDtwb29sKTsKJiM0MzsJeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTsKIH0KIAogc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLApkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuYyBiL25ldC94ZHAveHNrX3F1ZXVlLmMKaW5kZXggNGRkMDFiN2Q4NThlYi4uZWRjMmJhOTdjYzBmZiAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hza19xdWV1ZS5jCkBAIC03LDYgJiM0Mzs3LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb3ZlcmZsb3cuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC92bWFsbG9jLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9zb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hkcF9zb2NrX2Rydi5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3hza19xdWV1ZS5oJiMzNDsKQEAgLTIxLDcgJiM0MzsyMiwyNSBAQCBzdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpCiAJcmV0dXJuIHN0cnVjdF9zaXplKHJ4dHhfcmluZywgZGVzYywgcS0mZ3Q7bmVudHJpZXMpOwogfQogCi1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSkKJiM0MztzdGF0aWMgYm9vbCB4c2txX2NoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHNpemVfdCBzaXplKQomIzQzO3sKJiM0MzsJaW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLSZndDtjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTsKJiM0MzsJaW50IG9sZCwgbmV3OwomIzQzOwomIzQzOwlpZiAob3B0bWVtX21heCAmbHQ7PSAwIHx8IHNpemUgJmd0OyBvcHRtZW1fbWF4KQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlkbyB7CiYjNDM7CQlvbGQgPSBhdG9taWNfcmVhZCgmYW1wO3NrLSZndDtza19vbWVtX2FsbG9jKTsKJiM0MzsJCWlmIChvbGQgJmx0OyAwIHx8IG9sZCAmZ3Q7IG9wdG1lbV9tYXggLSAoaW50KXNpemUpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJbmV3ID0gb2xkICYjNDM7IChpbnQpc2l6ZTsKJiM0MzsJfSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoJmFtcDtzay0mZ3Q7c2tfb21lbV9hbGxvYywgb2xkLCBuZXcpICE9IG9sZCk7CiYjNDM7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKQogewogCXN0cnVjdCB4c2tfcXVldWUgKnE7CiAJc2l6ZV90IHNpemU7CkBAIC00NSw5ICYjNDM7NjQsMTggQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpCiAJfQogCiAJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CiYjNDM7CWlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7CiYjNDM7CQlrZnJlZShxKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNvY2tfaG9sZChzayk7CiYjNDM7CXEtJmd0O3NrID0gc2s7CiAKIAlxLSZndDtyaW5nID0gdm1hbGxvY191c2VyKHNpemUpOwogCWlmICghcS0mZ3Q7cmluZykgewomIzQzOwkJYXRvbWljX3N1YigoaW50KXNpemUsICZhbXA7c2stJmd0O3NrX29tZW1fYWxsb2MpOwomIzQzOwkJc29ja19wdXQoc2spOwogCQlrZnJlZShxKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNjEsNiAmIzQzOzg5LDExIEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpCiAJaWYgKCFxKQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKHEtJmd0O3NrKSB7CiYjNDM7CQlhdG9taWNfc3ViKChpbnQpcS0mZ3Q7cmluZ192bWFsbG9jX3NpemUsICZhbXA7cS0mZ3Q7c2stJmd0O3NrX29tZW1fYWxsb2MpOwomIzQzOwkJc29ja19wdXQocS0mZ3Q7c2spOwomIzQzOwl9CiYjNDM7CiAJdmZyZWUocS0mZ3Q7cmluZyk7CiAJa2ZyZWUocSk7CiB9CmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaAppbmRleCAxYmM0MmM4OTAyZjRiLi42MTc0NGU0YzFjYTJmIDEwMDY0NAotLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZHAveHNrX3F1ZXVlLmgKQEAgLTM3LDYgJiM0MzszNyw4IEBAIHN0cnVjdCB4ZHBfdW1lbV9yaW5nIHsKIAl1NjQgZGVzY1tdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7CiB9OwogCiYjNDM7c3RydWN0IHNvY2s7CiYjNDM7CiBzdHJ1Y3QgeHNrX3F1ZXVlIHsKIAl1MzIgcmluZ19tYXNrOwogCXUzMiBuZW50cmllczsKQEAgLTQ2LDYgJiM0Mzs0OCw3IEBAIHN0cnVjdCB4c2tfcXVldWUgewogCXU2NCBpbnZhbGlkX2Rlc2NzOwogCXU2NCBxdWV1ZV9lbXB0eV9kZXNjczsKIAlzaXplX3QgcmluZ192bWFsbG9jX3NpemU7CiYjNDM7CXN0cnVjdCBzb2NrICpzazsKIAkvKiBNdXR1YWwgZXhjbHVzaW9uIG9mIHRoZSBjb21wbGV0aW9uIHJpbmcgaW4gdGhlIFNLQiBtb2RlLgogCSAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldgogCSAqIGFuZCBxdWV1ZSBpZCBpcyBzaGFyZWQuCkBAIC01MzEsNyAmIzQzOzUzNCw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSkKIAlyZXR1cm4gcSA/IHEtJmd0O3F1ZXVlX2VtcHR5X2Rlc2NzIDogMDsKIH0KIAotc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpOwotdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcV9vcHMpOwomIzQzO3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpOwomIzQzO3ZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpOwogCiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9YRFAgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBBRl9YRFAgc29ja2V0IGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQveGRwL3hzay5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBtZW1vcnkgbWFuYWdlbWVudC4gSXQmIzM5O3MgYWRkaW5nIGBza19vbWVtX2FsbG9jYCBjYWxscyB0byBjaGFyZ2UgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGB4c2txX2NyZWF0ZWAgZm9yIHRoZSByaW5ncywgd2hpY2ggaXMgYSBzZW5zaWJsZSBhZGRpdGlvbiBnaXZlbiB0aGUgcG90ZW50aWFsIGZvciByZXNvdXJjZSBleGhhdXN0aW9uIGluIHRoaXMgYXJlYS4gQWRkaXRpb25hbGx5LCB0aGV5JiMzOTt2ZSBzaGlmdGVkIHRoZSBgeHNrX3B1dF9wb29sX2FuZF91bWVtYCBjYWxsIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhpcyBsb29rcyBsaWtlIGl0JiMzOTtzIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgb2YgdGhlc2UgcmVzb3VyY2VzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRldGFpbHMuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGltcGxlbWVudHMgYHhza3FfY2hhcmdlYCwgd2hpY2ggY2hlY2tzIGFnYWluc3QgYHN5c2N0bF9vcHRtZW1fbWF4YCBhbmQgYWRqdXN0cyBgc2stJmd0O3NrX29tZW1fYWxsb2NgLiBXZSYjMzk7cmUgYWxzbyBzZWVpbmcgYHNvY2tfaG9sZChzaylgIGFuZCBgc29ja19wdXQoc2spYCBjYWxscyBhZGRlZCB3aXRoaW4gYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgcmVzcGVjdGl2ZWx5LCBzdWdnZXN0aW5nIHRoYXQgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGFkZCBhIHJlZmVyZW5jZSBjb3VudCB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiBBbmQgdGhlIGB4cF9wdXRfcG9vbGAgYW5kIGB4ZHBfcHV0X3VtZW1gIG9wZXJhdGlvbnMgYXJlIGJlaW5nIG1vdmVkIHRvIGB4c2tfcmVsZWFzZWAgdGhyb3VnaCBgeHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKWAuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgQUZfWERQIHNvY2tldCBsb2dpYywgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmb2N1c2VkIGZ1enppbmcuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgc2hvdWxkIGJlIHRoZSBwcmltYXJ5IHRhcmdldHMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIGluY2x1ZGUgYHhza19pbml0X3F1ZXVlYCwgYHhza19wdXRfcG9vbF9hbmRfdW1lbWAsIGB4c2tfZGVsZXRlX2Zyb21fbWFwc2AsIGB4c2tfcmVsZWFzZWAsIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jaGFyZ2VgLCBgeHNrcV9jcmVhdGVgLCBhbmQgYHhza3FfZGVzdHJveWAuIFRoZSBvbmVzIHRoYXQgcmVhbGx5IHN0YW5kIG91dCBhcyBjcml0aWNhbCBmb3IgZnV6emluZyBhcmUgbGlrZWx5IGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jcmVhdGVgLCBhbmQgYHhza3FfZGVzdHJveWAsIGFzIHRoZXNlIGFyZSB0aGUgY29yZSBlbnRyeSBwb2ludHMgdG8gdGhlIG5ldyBsb2dpYy4KCk5vdyBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBBRl9YRFAsIGFuZCBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIGxvY2F0ZSB3aGVyZSBgeHNrLmNgIGlzIGNvbXBpbGVkIHRvIGdldCB0aG9zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgJiM0Mzs9IHhzay5vIHhkcF91bWVtLm8geHNrX3F1ZXVlLm8geHNrbWFwLm9cbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2tfYnVmZl9wb29sLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqWERQIFNvY2tldHMgYW5kIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldHMgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhYnNvbHV0ZSByZXF1aXJlbWVudCBvZiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLiBOb3csIHNpbmNlIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiBhbGwgdGhlIHBpZWNlcywgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24uIFdoYXQgb3RoZXIga25vYnMgYW5kIGxldmVycyBhcmUgZGlyZWN0bHkgdGllZCB0byBgQ09ORklHX1hEUF9TT0NLRVRTYD8gVW5kZXJzdGFuZGluZyB0aG9zZSB1cHN0cmVhbSByZXF1aXJlbWVudHMgaXMga2V5IHRvIGVuc3VyaW5nIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCB0aGF0IGNvdWxkIHN0b3AgdGhpbmdzIHdvcmtpbmcgbGF0ZXIuIFRpbWUgdG8gdHJhY2UgdGhvc2UgZGVwZW5kZW5jaWVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRFBfU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXG5uZXQveGRwL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7WERQIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQveGRwL0tjb25maWctOS1cbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xubmV0L3hkcC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY0OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipYRFAgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFhEUC4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIGFzIGFsd2F5cywgaXMgdGhlIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQveGRwL0tjb25maWdgIHRvIGlkZW50aWZ5IGFsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHBvc3NpYmxlLCB3aGF0JiMzOTtzIHJlcXVpcmVkLCBhbmQgd2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbWlnaHQgaW5mbHVlbmNlIG9yIGJlIGluZmx1ZW5jZWQgYnkgWERQIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZGV0YWlsIGV2ZXJ5dGhpbmcsIGZyb20gdGhlIGJhc2ljIFhEUCBzdXBwb3J0IHRvIGFueSBmZWF0dXJlIGZsYWdzIGFuZCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBYRFAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFhEUF9TT0NLRVRTXG4gICAzOlx0XHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4gICA1Olx0XHRkZWZhdWx0IG5cbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcbiAgIDg6XHRcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXG4gIDEzOlx0XHRkZWZhdWx0IG5cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cbiAgMTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDY2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlhEUCBTb2NrZXRzIGFuZCBTeXN0ZW0gQ2FsbHM6IEEgUXVpY2sgTWVudGFsIENoZWNrKioKClJpZ2h0LCBzbyBgWERQX1NPQ0tFVFNgIGlzIGluaGVyZW50bHkgYnVpbHQgb24gdGhlIGZvdW5kYXRpb25zIG9mIGBCUEZfU1lTQ0FMTGAsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jeSBpcyBvYnZpb3VzIGdpdmVuIHRoZSBjb3JlIG1lY2hhbmljcy4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBMZXQgbWUgcXVpY2tseSBydW4gYSBtZW50YWwgc2NhbiBvdmVyIHRoZSBgeHNrX3NldHNvY2tvcHRgIGZ1bmN0aW9uLiBJcyBpdCBkZWNsYXJlZCBhcyBgc3RhdGljYD8gSSYjMzk7bSB0cnlpbmcgdG8gcmVjYWxsIGlmIGl0JiMzOTtzIHZpc2libGUgZ2xvYmFsbHkgYWNyb3NzIHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUsIG9yIGlmIGl0cyBzY29wZSBpcyBtb3JlIGNvbnN0cmFpbmVkLiBUaGF0IHdpbGwgaW1wYWN0IGhvdyB3ZSBjYW4gcmV1c2UgYW5kIGV4dGVuZCB0aGF0IGNvbXBvbmVudC4gVW5kZXJzdGFuZGluZyBzY29wZSwgYW5kIGl0cyB2aXNpYmlsaXR5LCBpcyBrZXkgdG8gY29tcHJlaGVuZGluZyB0aGUgb3ZlcmFsbCBzeXN0ZW0gZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAyMTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNzkxPXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xuLS1cbm5ldC94ZHAveHNrLmMtMTc5Ny1cbm5ldC94ZHAveHNrLmM6MTc5ODpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQveGRwL3hzay5jLTE3OTktXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC94ZHAveHNrLmM9MjE0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xuLS1cbm5ldC94ZHAveHNrLmMtMjE1Ny1cdC5zaHV0ZG93blx0PSBzb2NrX25vX3NodXRkb3duLFxubmV0L3hkcC94c2suYzoyMTU4Olx0LnNldHNvY2tvcHRcdD0geHNrX3NldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jLTIxNTktXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFhEUCBTb2NrZXQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIFhEUCBzb2NrZXRzIGFyZSBwdXQgdG9nZXRoZXIsIGFuZCBpdCYjMzk7cyBzdGFydGluZyB0byBjbGljay4gSSBzZWUgdGhhdCBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGBwcm90b19vcHNgLiBTbywgdGhhdCBtZWFucyB0aGV5JiMzOTtyZSBhYnNvbHV0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBgc2V0c29ja29wdGAgc3lzdGVtIGNhbGwsIHdoZW4gZGVhbGluZyB3aXRoIGFuIEFGX1hEUCBzb2NrZXQuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEFuZCBgeHNrX2Rlc3RydWN0YCwgdGhhdCYjMzk7cyBhbHNvIGRlY2xhcmVkIGBzdGF0aWNgLCBidXQgYXNzaWduZWQgdG8gYHNrLSZndDtza19kZXN0cnVjdGAuCgpUaGVuIEkgc2VlIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHNvIHRob3NlIGFyZSBsaWtlbHkgZW50cnkgcG9pbnRzLiBTaW5jZSB0aGV5IGFyZSBrZXkgdG8gdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiB0aGUgcXVldWUgaXRzZWxmLCBJIHNob3VsZCBkaXZlIGludG8gYG5ldC94ZHAveHNrX3F1ZXVlLmNgIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhleSYjMzk7cmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hza19xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrX3F1ZXVlLmM9MjU9c3RhdGljIGJvb2wgeHNrcV9jaGFyZ2Uoc3RydWN0IHNvY2sgKnNrLCBzaXplX3Qgc2l6ZSlcbi0tXG5uZXQveGRwL3hza19xdWV1ZS5jLTQyLVxubmV0L3hkcC94c2tfcXVldWUuYzo0MzpzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxubmV0L3hkcC94c2tfcXVldWUuYy00NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDIxOjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNjkKCQkJCQkJCW91dHB1dDogMTgwCgkJCQkJCQl0aG91Z2h0czogMTk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFGX1hEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgYW5kIExpZmVjeWNsZSBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBBRl9YRFAgc29ja2V0IHF1ZXVlcy4gTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBob3cgaXQgYWZmZWN0cyBtZW1vcnkgbWFuYWdlbWVudC4gSSBzZWUgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBtZW1vcnkgYWNjb3VudGluZyBmb3IgdGhlIGBBRl9YRFBgIHNvY2tldHMsIHNwZWNpZmljYWxseSB0eWluZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24gdG8gYHNrLSZndDtza19vbWVtX2FsbG9jYCBhbmQgZW5mb3JjaW5nIHRoZSBsaW1pdCBpbXBvc2VkIGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBtZW1vcnkgZm9yIHRoZXNlIHNvY2tldHMuIEFsc28gb2YgaW50ZXJlc3QgaXMgdGhhdCB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gYXJlIG5vdyByZWxlYXNlZCBpbiBgeHNrX3JlbGVhc2VgIGluc3RlYWQgb2YgYHhza19kZXN0cnVjdGAuCgpHaXZlbiB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGB4c2tfZGVzdHJ1Y3RgLCBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCwgaXQmIzM5O3MgY2xlYXIgd2UgbmVlZCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIGluIHRoZXNlIGFyZWFzLiBTaW5jZSBBRl9YRFAgc29ja2V0cyBhcmUgdXNlci1zcGFjZSBhY2Nlc3NpYmxlLCB0aGV54oCZcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyB0byBlbnN1cmUgcm9idXN0bmVzcy4gVGhlIGtleSBpcyB0byBjaGVjayBhbGwgdGhlIHBvc3NpYmxlIGNvbmZpZ3MgYXMgaXQgaXMgcmVhbGx5IGltcG9ydGFudCB0byBrbm93IGFsbCB0aGUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29ycmVjdC4gVGhlIHByZXNlbmNlIG9mIGBYRFBfU09DS0VUU2AgaXMgYSBtdXN0IGZvciBgQUZfWERQYCB0byB3b3JrIGFuZCBJIHNob3VsZCBub3RlIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyByZWxldmFudCBoZXJlIGFzIHdlbGwuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGVzdGVkIHRocm91Z2guCgpUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgcmVjb3JkIHRoZXNlIG9ic2VydmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMjE6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX3NldHNvY2tvcHQmIzM0OywKICAgICYjMzQ7eHNrX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7eHNrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0Mzo1OC4wNDE3MDU3NTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU0NzMzODkwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfc2V0c29ja29wdFwiLFxuICAgIFwieHNrX3JlbGVhc2VcIixcbiAgICBcInhza19kZXN0cnVjdFwiLFxuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEFGX1hEUCBzb2NrZXQgcXVldWUgY3JlYXRpb24gdG8gY2hhcmdlIG1lbW9yeSBhZ2FpbnN0IGBzay1cXHUwMDNlc2tfb21lbV9hbGxvY2AgYW5kIGxpbWl0cyBpdCBieSBgc3lzY3RsX29wdG1lbV9tYXhgLiBJdCBhbHNvIG1vdmVzIHRoZSByZWxlYXNlIG9mIHRoZSBidWZmZXIgcG9vbCBhbmQgdW1lbSBmcm9tIGB4c2tfZGVzdHJ1Y3RgIHRvIGB4c2tfcmVsZWFzZWAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIG1lbW9yeSBhY2NvdW50aW5nIGFuZCBsaWZlY3ljbGUgb2YgQUZfWERQIHNvY2tldHMsIHdoaWNoIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQzOjU4LjA0MTcxMzAwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMDE2NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGI5YzA1ZDJiM2E0M2JiNTk4MThhYmExZjFmMDFhOGZhMmJlNzExMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAyMTo0Mzo1NyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xcbmluZGV4IGY5MDZkNTFiNjY5OTAuLjdkNmRmOGI2YjQzZDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2suY1xcbisrKyBiL25ldC94ZHAveHNrLmNcXG5AQCAtMTQ0NiwxNSArMTQ0NiwxNSBAQCBzdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuIFxcdHJldHVybiBtYXNrO1xcbiB9XFxuIFxcbi1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXFxuLVxcdFxcdFxcdCAgYm9vbCB1bWVtX3F1ZXVlKVxcbitzdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHN0cnVjdCBzb2NrICpzaywgdTMyIGVudHJpZXMsXFxuK1xcdFxcdFxcdCAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IHhza19xdWV1ZSAqcTtcXG4gXFxuIFxcdGlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuLVxcdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG4rXFx0cSA9IHhza3FfY3JlYXRlKHNrLCBlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG4gXFx0aWYgKCFxKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTE0OTgsNiArMTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcXG4gXFx0cmV0dXJuIG1hcDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgeHNrX3B1dF9wb29sX2FuZF91bWVtKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuK3tcXG4rXFx0c3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wgPSB4cy1cXHUwMDNlcG9vbDtcXG4rXFx0c3RydWN0IHhkcF91bWVtICp1bWVtID0geHMtXFx1MDAzZXVtZW07XFxuK1xcbitcXHR4cy1cXHUwMDNlcG9vbCA9IE5VTEw7XFxuK1xcdHhzLVxcdTAwM2V1bWVtID0gTlVMTDtcXG4rXFxuK1xcdGlmICgheHBfcHV0X3Bvb2wocG9vbCkpXFxuK1xcdFxcdHhkcF9wdXRfdW1lbSh1bWVtLCAhcG9vbCk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuIHtcXG4gXFx0LyogVGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjdXJyZW50IFhEUCBzb2NrZXQgZnJvbSBhbGwgdGhlXFxuQEAgLTE1NTMsNiArMTU2NSw3IEBAIHN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4gXFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2V0eCk7XFxuIFxcdHhza3FfZGVzdHJveSh4cy1cXHUwMDNlZnFfdG1wKTtcXG4gXFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2VjcV90bXApO1xcbitcXHR4c2tfcHV0X3Bvb2xfYW5kX3VtZW0oeHMpO1xcbiBcXG4gXFx0c29ja19vcnBoYW4oc2spO1xcbiBcXHRzb2NrLVxcdTAwM2VzayA9IE5VTEw7XFxuQEAgLTE4MTAsNyArMTgyMyw3IEBAIHN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4gXFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gXFx0XFx0fVxcbiBcXHRcXHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXFx1MDAyNnhzLVxcdTAwM2V0eCA6IFxcdTAwMjZ4cy1cXHUwMDNlcng7XFxuLVxcdFxcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIGZhbHNlKTtcXG4rXFx0XFx0ZXJyID0geHNrX2luaXRfcXVldWUoc29jay1cXHUwMDNlc2ssIGVudHJpZXMsIHEsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgb3B0bmFtZSA9PSBYRFBfVFhfUklORylcXG4gXFx0XFx0XFx0LyogVHggbmVlZHMgdG8gYmUgZXhwbGljaXRseSB3b2tlbiB1cCB0aGUgZmlyc3QgdGltZSAqL1xcbiBcXHRcXHRcXHR4cy1cXHUwMDNldHgtXFx1MDAzZXJpbmctXFx1MDAzZWZsYWdzIHw9IFhEUF9SSU5HX05FRURfV0FLRVVQO1xcbkBAIC0xODc5LDcgKzE4OTIsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuIFxcbiBcXHRcXHRxID0gKG9wdG5hbWUgPT0gWERQX1VNRU1fRklMTF9SSU5HKSA/IFxcdTAwMjZ4cy1cXHUwMDNlZnFfdG1wIDpcXG4gXFx0XFx0XFx0XFx1MDAyNnhzLVxcdTAwM2VjcV90bXA7XFxuLVxcdFxcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIHRydWUpO1xcbitcXHRcXHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShzb2NrLVxcdTAwM2VzaywgZW50cmllcywgcSwgdHJ1ZSk7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2eHMtXFx1MDAzZW11dGV4KTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0fVxcbkBAIC0yMTU2LDggKzIxNjksNyBAQCBzdGF0aWMgdm9pZCB4c2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbiBcXHRpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0aWYgKCF4cF9wdXRfcG9vbCh4cy1cXHUwMDNlcG9vbCkpXFxuLVxcdFxcdHhkcF9wdXRfdW1lbSh4cy1cXHUwMDNldW1lbSwgIXhzLVxcdTAwM2Vwb29sKTtcXG4rXFx0eHNrX3B1dF9wb29sX2FuZF91bWVtKHhzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCB4c2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IHByb3RvY29sLFxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5jIGIvbmV0L3hkcC94c2tfcXVldWUuY1xcbmluZGV4IDRkZDAxYjdkODU4ZWIuLmVkYzJiYTk3Y2MwZmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcXG5AQCAtNyw2ICs3LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L292ZXJmbG93LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvc29jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInhza19xdWV1ZS5oXFxcIlxcbkBAIC0yMSw3ICsyMiwyNSBAQCBzdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpXFxuIFxcdHJldHVybiBzdHJ1Y3Rfc2l6ZShyeHR4X3JpbmcsIGRlc2MsIHEtXFx1MDAzZW5lbnRyaWVzKTtcXG4gfVxcbiBcXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxuK3N0YXRpYyBib29sIHhza3FfY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHNpemUpXFxuK3tcXG4rXFx0aW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVxcdTAwM2Vjb3JlLnN5c2N0bF9vcHRtZW1fbWF4KTtcXG4rXFx0aW50IG9sZCwgbmV3O1xcbitcXG4rXFx0aWYgKG9wdG1lbV9tYXggXFx1MDAzYz0gMCB8fCBzaXplIFxcdTAwM2Ugb3B0bWVtX21heClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0ZG8ge1xcbitcXHRcXHRvbGQgPSBhdG9taWNfcmVhZChcXHUwMDI2c2stXFx1MDAzZXNrX29tZW1fYWxsb2MpO1xcbitcXHRcXHRpZiAob2xkIFxcdTAwM2MgMCB8fCBvbGQgXFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdG5ldyA9IG9sZCArIChpbnQpc2l6ZTtcXG4rXFx0fSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jLCBvbGQsIG5ldykgIT0gb2xkKTtcXG4rXFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbitzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbiB7XFxuIFxcdHN0cnVjdCB4c2tfcXVldWUgKnE7XFxuIFxcdHNpemVfdCBzaXplO1xcbkBAIC00NSw5ICs2NCwxOCBAQCBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcXG4gXFx0fVxcbiBcXG4gXFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XFxuK1xcdGlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7XFxuK1xcdFxcdGtmcmVlKHEpO1xcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0fVxcbitcXG4rXFx0c29ja19ob2xkKHNrKTtcXG4rXFx0cS1cXHUwMDNlc2sgPSBzaztcXG4gXFxuIFxcdHEtXFx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XFxuIFxcdGlmICghcS1cXHUwMDNlcmluZykge1xcbitcXHRcXHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXFx1MDAyNnNrLVxcdTAwM2Vza19vbWVtX2FsbG9jKTtcXG4rXFx0XFx0c29ja19wdXQoc2spO1xcbiBcXHRcXHRrZnJlZShxKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG5AQCAtNjEsNiArODksMTEgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcXG4gXFx0aWYgKCFxKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAocS1cXHUwMDNlc2spIHtcXG4rXFx0XFx0YXRvbWljX3N1YigoaW50KXEtXFx1MDAzZXJpbmdfdm1hbGxvY19zaXplLCBcXHUwMDI2cS1cXHUwMDNlc2stXFx1MDAzZXNrX29tZW1fYWxsb2MpO1xcbitcXHRcXHRzb2NrX3B1dChxLVxcdTAwM2Vzayk7XFxuK1xcdH1cXG4rXFxuIFxcdHZmcmVlKHEtXFx1MDAzZXJpbmcpO1xcbiBcXHRrZnJlZShxKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaFxcbmluZGV4IDFiYzQyYzg5MDJmNGIuLjYxNzQ0ZTRjMWNhMmYgMTAwNjQ0XFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmhcXG5AQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgeGRwX3VtZW1fcmluZyB7XFxuIFxcdHU2NCBkZXNjW10gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4gfTtcXG4gXFxuK3N0cnVjdCBzb2NrO1xcbitcXG4gc3RydWN0IHhza19xdWV1ZSB7XFxuIFxcdHUzMiByaW5nX21hc2s7XFxuIFxcdHUzMiBuZW50cmllcztcXG5AQCAtNDYsNiArNDgsNyBAQCBzdHJ1Y3QgeHNrX3F1ZXVlIHtcXG4gXFx0dTY0IGludmFsaWRfZGVzY3M7XFxuIFxcdHU2NCBxdWV1ZV9lbXB0eV9kZXNjcztcXG4gXFx0c2l6ZV90IHJpbmdfdm1hbGxvY19zaXplO1xcbitcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdC8qIE11dHVhbCBleGNsdXNpb24gb2YgdGhlIGNvbXBsZXRpb24gcmluZyBpbiB0aGUgU0tCIG1vZGUuXFxuIFxcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxcbiBcXHQgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLlxcbkBAIC01MzEsNyArNTM0LDcgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxcbiBcXHRyZXR1cm4gcSA/IHEtXFx1MDAzZXF1ZXVlX2VtcHR5X2Rlc2NzIDogMDtcXG4gfVxcbiBcXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xcbi12b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxX29wcyk7XFxuK3N0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xcbit2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcXG4gXFxuICNlbmRpZiAvKiBfTElOVVhfWFNLX1FVRVVFX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDM6NTguMzIzMzg0OTMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzAyNjU2NTIxNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCIsXG4gICAgXCJ4c2tfZGVzdHJ1Y3RcIixcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXFx1MDAzZXNrX29tZW1fYWxsb2NgIGFuZCBsaW1pdHMgaXQgYnkgYHN5c2N0bF9vcHRtZW1fbWF4YC4gSXQgYWxzbyBtb3ZlcyB0aGUgcmVsZWFzZSBvZiB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gZnJvbSBgeHNrX2Rlc3RydWN0YCB0byBgeHNrX3JlbGVhc2VgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgYWNjb3VudGluZyBhbmQgbGlmZWN5Y2xlIG9mIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjljMDVkMmIzYTQzYmI1OTgxOGFiYTFmMWYwMWE4ZmEyYmU3MTEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMjE6NDM6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xuaW5kZXggZjkwNmQ1MWI2Njk5MC4uN2Q2ZGY4YjZiNDNkNiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbisrKyBiL25ldC94ZHAveHNrLmNcbkBAIC0xNDQ2LDE1ICsxNDQ2LDE1IEBAIHN0YXRpYyBfX3BvbGxfdCB4c2tfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jayxcbiBcdHJldHVybiBtYXNrO1xuIH1cbiBcbi1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG4tXHRcdFx0ICBib29sIHVtZW1fcXVldWUpXG4rc3RhdGljIGludCB4c2tfaW5pdF9xdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBlbnRyaWVzLFxuK1x0XHRcdCAgc3RydWN0IHhza19xdWV1ZSAqKnF1ZXVlLCBib29sIHVtZW1fcXVldWUpXG4ge1xuIFx0c3RydWN0IHhza19xdWV1ZSAqcTtcbiBcbiBcdGlmIChlbnRyaWVzID09IDAgfHwgKnF1ZXVlIHx8ICFpc19wb3dlcl9vZl8yKGVudHJpZXMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcbitcdHEgPSB4c2txX2NyZWF0ZShzaywgZW50cmllcywgdW1lbV9xdWV1ZSk7XG4gXHRpZiAoIXEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTE0OTgsNiArMTQ5OCwxOCBAQCBzdGF0aWMgc3RydWN0IHhza19tYXAgKnhza19nZXRfbWFwX2xpc3RfZW50cnkoc3RydWN0IHhkcF9zb2NrICp4cyxcbiBcdHJldHVybiBtYXA7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHhza19wdXRfcG9vbF9hbmRfdW1lbShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxuK3tcbitcdHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sID0geHMtXHUwMDNlcG9vbDtcbitcdHN0cnVjdCB4ZHBfdW1lbSAqdW1lbSA9IHhzLVx1MDAzZXVtZW07XG4rXG4rXHR4cy1cdTAwM2Vwb29sID0gTlVMTDtcbitcdHhzLVx1MDAzZXVtZW0gPSBOVUxMO1xuK1xuK1x0aWYgKCF4cF9wdXRfcG9vbChwb29sKSlcbitcdFx0eGRwX3B1dF91bWVtKHVtZW0sICFwb29sKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgeHNrX2RlbGV0ZV9mcm9tX21hcHMoc3RydWN0IHhkcF9zb2NrICp4cylcbiB7XG4gXHQvKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1cnJlbnQgWERQIHNvY2tldCBmcm9tIGFsbCB0aGVcbkBAIC0xNTUzLDYgKzE1NjUsNyBAQCBzdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNldHgpO1xuIFx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZWZxX3RtcCk7XG4gXHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNlY3FfdG1wKTtcbitcdHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cyk7XG4gXG4gXHRzb2NrX29ycGhhbihzayk7XG4gXHRzb2NrLVx1MDAzZXNrID0gTlVMTDtcbkBAIC0xODEwLDcgKzE4MjMsNyBAQCBzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4gXHRcdFx0cmV0dXJuIC1FQlVTWTtcbiBcdFx0fVxuIFx0XHRxID0gKG9wdG5hbWUgPT0gWERQX1RYX1JJTkcpID8gXHUwMDI2eHMtXHUwMDNldHggOiBcdTAwMjZ4cy1cdTAwM2VyeDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xuK1x0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShzb2NrLVx1MDAzZXNrLCBlbnRyaWVzLCBxLCBmYWxzZSk7XG4gXHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxuIFx0XHRcdC8qIFR4IG5lZWRzIHRvIGJlIGV4cGxpY2l0bHkgd29rZW4gdXAgdGhlIGZpcnN0IHRpbWUgKi9cbiBcdFx0XHR4cy1cdTAwM2V0eC1cdTAwM2VyaW5nLVx1MDAzZWZsYWdzIHw9IFhEUF9SSU5HX05FRURfV0FLRVVQO1xuQEAgLTE4NzksNyArMTg5Miw3IEBAIHN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbiBcbiBcdFx0cSA9IChvcHRuYW1lID09IFhEUF9VTUVNX0ZJTExfUklORykgPyBcdTAwMjZ4cy1cdTAwM2VmcV90bXAgOlxuIFx0XHRcdFx1MDAyNnhzLVx1MDAzZWNxX3RtcDtcbi1cdFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgdHJ1ZSk7XG4rXHRcdGVyciA9IHhza19pbml0X3F1ZXVlKHNvY2stXHUwMDNlc2ssIGVudHJpZXMsIHEsIHRydWUpO1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuIFx0fVxuQEAgLTIxNTYsOCArMjE2OSw3IEBAIHN0YXRpYyB2b2lkIHhza19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRpZiAoIXNvY2tfZmxhZyhzaywgU09DS19ERUFEKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0aWYgKCF4cF9wdXRfcG9vbCh4cy1cdTAwM2Vwb29sKSlcbi1cdFx0eGRwX3B1dF91bWVtKHhzLVx1MDAzZXVtZW0sICF4cy1cdTAwM2Vwb29sKTtcbitcdHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgeHNrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5jIGIvbmV0L3hkcC94c2tfcXVldWUuY1xuaW5kZXggNGRkMDFiN2Q4NThlYi4uZWRjMmJhOTdjYzBmZiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmNcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L292ZXJmbG93LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJ4c2tfcXVldWUuaFwiXG5AQCAtMjEsNyArMjIsMjUgQEAgc3RhdGljIHNpemVfdCB4c2txX2dldF9yaW5nX3NpemUoc3RydWN0IHhza19xdWV1ZSAqcSwgYm9vbCB1bWVtX3F1ZXVlKVxuIFx0cmV0dXJuIHN0cnVjdF9zaXplKHJ4dHhfcmluZywgZGVzYywgcS1cdTAwM2VuZW50cmllcyk7XG4gfVxuIFxuLXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuK3N0YXRpYyBib29sIHhza3FfY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHNpemUpXG4re1xuK1x0aW50IG9wdG1lbV9tYXggPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWNvcmUuc3lzY3RsX29wdG1lbV9tYXgpO1xuK1x0aW50IG9sZCwgbmV3O1xuK1xuK1x0aWYgKG9wdG1lbV9tYXggXHUwMDNjPSAwIHx8IHNpemUgXHUwMDNlIG9wdG1lbV9tYXgpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGRvIHtcbitcdFx0b2xkID0gYXRvbWljX3JlYWQoXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4rXHRcdGlmIChvbGQgXHUwMDNjIDAgfHwgb2xkIFx1MDAzZSBvcHRtZW1fbWF4IC0gKGludClzaXplKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0bmV3ID0gb2xkICsgKGludClzaXplO1xuK1x0fSB3aGlsZSAoYXRvbWljX2NtcHhjaGcoXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYywgb2xkLCBuZXcpICE9IG9sZCk7XG4rXG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbiB7XG4gXHRzdHJ1Y3QgeHNrX3F1ZXVlICpxO1xuIFx0c2l6ZV90IHNpemU7XG5AQCAtNDUsOSArNjQsMTggQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbitcdGlmICgheHNrcV9jaGFyZ2Uoc2ssIHNpemUpKSB7XG4rXHRcdGtmcmVlKHEpO1xuK1x0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcbitcdHNvY2tfaG9sZChzayk7XG4rXHRxLVx1MDAzZXNrID0gc2s7XG4gXG4gXHRxLVx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XG4gXHRpZiAoIXEtXHUwMDNlcmluZykge1xuK1x0XHRhdG9taWNfc3ViKChpbnQpc2l6ZSwgXHUwMDI2c2stXHUwMDNlc2tfb21lbV9hbGxvYyk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdFx0a2ZyZWUocSk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuQEAgLTYxLDYgKzg5LDExIEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXG4gXHRpZiAoIXEpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmIChxLVx1MDAzZXNrKSB7XG4rXHRcdGF0b21pY19zdWIoKGludClxLVx1MDAzZXJpbmdfdm1hbGxvY19zaXplLCBcdTAwMjZxLVx1MDAzZXNrLVx1MDAzZXNrX29tZW1fYWxsb2MpO1xuK1x0XHRzb2NrX3B1dChxLVx1MDAzZXNrKTtcbitcdH1cbitcbiBcdHZmcmVlKHEtXHUwMDNlcmluZyk7XG4gXHRrZnJlZShxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuaCBiL25ldC94ZHAveHNrX3F1ZXVlLmhcbmluZGV4IDFiYzQyYzg5MDJmNGIuLjYxNzQ0ZTRjMWNhMmYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oXG4rKysgYi9uZXQveGRwL3hza19xdWV1ZS5oXG5AQCAtMzcsNiArMzcsOCBAQCBzdHJ1Y3QgeGRwX3VtZW1fcmluZyB7XG4gXHR1NjQgZGVzY1tdIF9fX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXA7XG4gfTtcbiBcbitzdHJ1Y3Qgc29jaztcbitcbiBzdHJ1Y3QgeHNrX3F1ZXVlIHtcbiBcdHUzMiByaW5nX21hc2s7XG4gXHR1MzIgbmVudHJpZXM7XG5AQCAtNDYsNiArNDgsNyBAQCBzdHJ1Y3QgeHNrX3F1ZXVlIHtcbiBcdHU2NCBpbnZhbGlkX2Rlc2NzO1xuIFx0dTY0IHF1ZXVlX2VtcHR5X2Rlc2NzO1xuIFx0c2l6ZV90IHJpbmdfdm1hbGxvY19zaXplO1xuK1x0c3RydWN0IHNvY2sgKnNrO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzEsNyArNTM0LDcgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIFx0cmV0dXJuIHEgPyBxLVx1MDAzZXF1ZXVlX2VtcHR5X2Rlc2NzIDogMDtcbiB9XG4gXG4tc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcbitzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTtcbit2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTtcbiBcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0Mzo1OC4zMjMzODYxMDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAwMDExMDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQUZfWERQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIEFGX1hEUCBzb2NrZXQgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC94ZHAveHNrLmNgIGFuZCBgbmV0L3hkcC94c2tfcXVldWUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIGFkZGluZyBgc2tfb21lbV9hbGxvY2AgY2FsbHMgdG8gY2hhcmdlIGZvciB0aGUgbWVtb3J5IGFsbG9jYXRlZCBieSBgeHNrcV9jcmVhdGVgIGZvciB0aGUgcmluZ3MsIHdoaWNoIGlzIGEgc2Vuc2libGUgYWRkaXRpb24gZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmVzb3VyY2UgZXhoYXVzdGlvbiBpbiB0aGlzIGFyZWEuIEFkZGl0aW9uYWxseSwgdGhleSd2ZSBzaGlmdGVkIHRoZSBgeHNrX3B1dF9wb29sX2FuZF91bWVtYCBjYWxsIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhpcyBsb29rcyBsaWtlIGl0J3MgYWltZWQgYXQgaW1wcm92aW5nIHRoZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBvZiB0aGVzZSByZXNvdXJjZXMuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBkZXRhaWxzLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpbXBsZW1lbnRzIGB4c2txX2NoYXJnZWAsIHdoaWNoIGNoZWNrcyBhZ2FpbnN0IGBzeXNjdGxfb3B0bWVtX21heGAgYW5kIGFkanVzdHMgYHNrLVx1MDAzZXNrX29tZW1fYWxsb2NgLiBXZSdyZSBhbHNvIHNlZWluZyBgc29ja19ob2xkKHNrKWAgYW5kIGBzb2NrX3B1dChzaylgIGNhbGxzIGFkZGVkIHdpdGhpbiBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCByZXNwZWN0aXZlbHksIHN1Z2dlc3RpbmcgdGhhdCB0aGV5J3JlIHRyeWluZyB0byBhZGQgYSByZWZlcmVuY2UgY291bnQgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gQW5kIHRoZSBgeHBfcHV0X3Bvb2xgIGFuZCBgeGRwX3B1dF91bWVtYCBvcGVyYXRpb25zIGFyZSBiZWluZyBtb3ZlZCB0byBgeHNrX3JlbGVhc2VgIHRocm91Z2ggYHhza19wdXRfcG9vbF9hbmRfdW1lbSh4cylgLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdG8gdGhlIGNvcmUgQUZfWERQIHNvY2tldCBsb2dpYywgd2hpY2ggbWVhbnMgaXQgZGVmaW5pdGVseSB3YXJyYW50cyBmb2N1c2VkIGZ1enppbmcuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBzaG91bGQgYmUgdGhlIHByaW1hcnkgdGFyZ2V0cy5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4c2tfaW5pdF9xdWV1ZWAsIGB4c2tfcHV0X3Bvb2xfYW5kX3VtZW1gLCBgeHNrX2RlbGV0ZV9mcm9tX21hcHNgLCBgeHNrX3JlbGVhc2VgLCBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX2Rlc3RydWN0YCwgYHhza3FfY2hhcmdlYCwgYHhza3FfY3JlYXRlYCwgYW5kIGB4c2txX2Rlc3Ryb3lgLiBUaGUgb25lcyB0aGF0IHJlYWxseSBzdGFuZCBvdXQgYXMgY3JpdGljYWwgZm9yIGZ1enppbmcgYXJlIGxpa2VseSBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX3JlbGVhc2VgLCBgeHNrX2Rlc3RydWN0YCwgYHhza3FfY3JlYXRlYCwgYW5kIGB4c2txX2Rlc3Ryb3lgLCBhcyB0aGVzZSBhcmUgdGhlIGNvcmUgZW50cnkgcG9pbnRzIHRvIHRoZSBuZXcgbG9naWMuXG5cbk5vdyBJIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBBRl9YRFAsIGFuZCBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHdoZXJlIGB4c2suY2AgaXMgY29tcGlsZWQgdG8gZ2V0IHRob3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTc3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MDUuNDIzNDAwNjg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTU4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza1xcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgKz0geHNrLm8geGRwX3VtZW0ubyB4c2tfcXVldWUubyB4c2ttYXAub1xcbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhza19idWZmX3Bvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDowNS40NzA5NjM4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzI4MDA3NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipYRFAgU29ja2V0cyBhbmQgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgWERQIHNvY2tldHMgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhYnNvbHV0ZSByZXF1aXJlbWVudCBvZiBgQ09ORklHX1hEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uIE5vdywgc2luY2UgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gYWxsIHRoZSBwaWVjZXMsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGtub2JzIGFuZCBsZXZlcnMgYXJlIGRpcmVjdGx5IHRpZWQgdG8gYENPTkZJR19YRFBfU09DS0VUU2A/IFVuZGVyc3RhbmRpbmcgdGhvc2UgdXBzdHJlYW0gcmVxdWlyZW1lbnRzIGlzIGtleSB0byBlbnN1cmluZyBJJ3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3Mgc29tZXRoaW5nIGZ1bmRhbWVudGFsIHRoYXQgY291bGQgc3RvcCB0aGluZ3Mgd29ya2luZyBsYXRlci4gVGltZSB0byB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDowOC4xOTg5ODEyNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQxMjE3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhEUF9TT0NLRVRTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC94ZHAvS2NvbmZpZzoyOmNvbmZpZyBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbi0tXFxubmV0L3hkcC9LY29uZmlnLTktXFxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxubmV0L3hkcC9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjA4LjI0MzEwOTI1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDQyNzQ0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipYRFAgQ29uZmlndXJhdGlvbiBFeHBsb3JhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgWERQLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgS2NvbmZpZyBmaWxlLiBMZXQncyBkaWcgaW50byBgbmV0L3hkcC9LY29uZmlnYCB0byBpZGVudGlmeSBhbGwgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy4gSXQncyB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB3aGF0J3MgcG9zc2libGUsIHdoYXQncyByZXF1aXJlZCwgYW5kIHdoYXQgb3RoZXIga2VybmVsIGZlYXR1cmVzIG1pZ2h0IGluZmx1ZW5jZSBvciBiZSBpbmZsdWVuY2VkIGJ5IFhEUCBjb25maWd1cmF0aW9ucy4gSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZGV0YWlsIGV2ZXJ5dGhpbmcsIGZyb20gdGhlIGJhc2ljIFhEUCBzdXBwb3J0IHRvIGFueSBmZWF0dXJlIGZsYWdzIGFuZCBkZXZpY2UgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSBhc3Nlc3MgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiBYRFAgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoxMS4zNDczODYxMzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQveGRwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBYRFBfU09DS0VUU1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiWERQIHNvY2tldHNcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuICAgNTpcXHRcXHRkZWZhdWx0IG5cXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcXG4gICA4OlxcdFxcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXFxuICAxMzpcXHRcXHRkZWZhdWx0IG5cXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cXG4gIDE2OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MTEuMzQ3NDQ2NTQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwOTM2NTQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlhEUCBTb2NrZXRzIGFuZCBTeXN0ZW0gQ2FsbHM6IEEgUXVpY2sgTWVudGFsIENoZWNrKipcblxuUmlnaHQsIHNvIGBYRFBfU09DS0VUU2AgaXMgaW5oZXJlbnRseSBidWlsdCBvbiB0aGUgZm91bmRhdGlvbnMgb2YgYEJQRl9TWVNDQUxMYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmN5IGlzIG9idmlvdXMgZ2l2ZW4gdGhlIGNvcmUgbWVjaGFuaWNzLiBOb3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0IG1lIHF1aWNrbHkgcnVuIGEgbWVudGFsIHNjYW4gb3ZlciB0aGUgYHhza19zZXRzb2Nrb3B0YCBmdW5jdGlvbi4gSXMgaXQgZGVjbGFyZWQgYXMgYHN0YXRpY2A/IEknbSB0cnlpbmcgdG8gcmVjYWxsIGlmIGl0J3MgdmlzaWJsZSBnbG9iYWxseSBhY3Jvc3MgdGhlIEJQRiBpbmZyYXN0cnVjdHVyZSwgb3IgaWYgaXRzIHNjb3BlIGlzIG1vcmUgY29uc3RyYWluZWQuIFRoYXQgd2lsbCBpbXBhY3QgaG93IHdlIGNhbiByZXVzZSBhbmQgZXh0ZW5kIHRoYXQgY29tcG9uZW50LiBVbmRlcnN0YW5kaW5nIHNjb3BlLCBhbmQgaXRzIHZpc2liaWxpdHksIGlzIGtleSB0byBjb21wcmVoZW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjE0Ljc1NjgxNTU5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2MzM0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC94c2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTE3OTE9c3RydWN0IHhkcF91bWVtX3JlZ192MSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTE3OTctXFxubmV0L3hkcC94c2suYzoxNzk4OnN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG5uZXQveGRwL3hzay5jLTE3OTktXFx0XFx0XFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L3hkcC94c2suYz0yMTQ1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTIxNTctXFx0LnNodXRkb3duXFx0PSBzb2NrX25vX3NodXRkb3duLFxcbm5ldC94ZHAveHNrLmM6MjE1ODpcXHQuc2V0c29ja29wdFxcdD0geHNrX3NldHNvY2tvcHQsXFxubmV0L3hkcC94c2suYy0yMTU5LVxcdC5nZXRzb2Nrb3B0X2l0ZXIgPSB4c2tfZ2V0c29ja29wdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMjE6NDQ6MTQuODAwNDU2MTA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MDQ2MTQ1MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFhEUCBTb2NrZXQgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGVzZSBYRFAgc29ja2V0cyBhcmUgcHV0IHRvZ2V0aGVyLCBhbmQgaXQncyBzdGFydGluZyB0byBjbGljay4gSSBzZWUgdGhhdCBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgYnV0IHRoZXkgYXJlIGFzc2lnbmVkIHRvIGBwcm90b19vcHNgLiBTbywgdGhhdCBtZWFucyB0aGV5J3JlIGFic29sdXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggdGhlIHN0YW5kYXJkIGBzZXRzb2Nrb3B0YCBzeXN0ZW0gY2FsbCwgd2hlbiBkZWFsaW5nIHdpdGggYW4gQUZfWERQIHNvY2tldC4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gQW5kIGB4c2tfZGVzdHJ1Y3RgLCB0aGF0J3MgYWxzbyBkZWNsYXJlZCBgc3RhdGljYCwgYnV0IGFzc2lnbmVkIHRvIGBzay1cdTAwM2Vza19kZXN0cnVjdGAuXG5cblRoZW4gSSBzZWUgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgYXJlICpub3QqIHN0YXRpYywgc28gdGhvc2UgYXJlIGxpa2VseSBlbnRyeSBwb2ludHMuIFNpbmNlIHRoZXkgYXJlIGtleSB0byB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIHRoZSBxdWV1ZSBpdHNlbGYsIEkgc2hvdWxkIGRpdmUgaW50byBgbmV0L3hkcC94c2tfcXVldWUuY2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGV5J3JlIHVzZWQuIExldCdzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoyMi43MDUwNzM5OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzYxNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrX3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2tfcXVldWUuYz0yNT1zdGF0aWMgYm9vbCB4c2txX2NoYXJnZShzdHJ1Y3Qgc29jayAqc2ssIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYy00Mi1cXG5uZXQveGRwL3hza19xdWV1ZS5jOjQzOnN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHN0cnVjdCBzb2NrICpzaywgdTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxubmV0L3hkcC94c2tfcXVldWUuYy00NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDIxOjQ0OjIyLjc1MjgzOTc1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzU2NjQwODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFGX1hEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgYW5kIExpZmVjeWNsZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0d2Vha2luZyB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIEFGX1hEUCBzb2NrZXQgcXVldWVzLiBNeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGhvdyBpdCBhZmZlY3RzIG1lbW9yeSBtYW5hZ2VtZW50LiBJIHNlZSBpdCdzIG1vZGlmeWluZyB0aGUgbWVtb3J5IGFjY291bnRpbmcgZm9yIHRoZSBgQUZfWERQYCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgdHlpbmcgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHRvIGBzay1cdTAwM2Vza19vbWVtX2FsbG9jYCBhbmQgZW5mb3JjaW5nIHRoZSBsaW1pdCBpbXBvc2VkIGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIFRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgc2hpZnQgaW4gaG93IHdlIGhhbmRsZSBtZW1vcnkgZm9yIHRoZXNlIHNvY2tldHMuIEFsc28gb2YgaW50ZXJlc3QgaXMgdGhhdCB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gYXJlIG5vdyByZWxlYXNlZCBpbiBgeHNrX3JlbGVhc2VgIGluc3RlYWQgb2YgYHhza19kZXN0cnVjdGAuXG5cbkdpdmVuIHRoZXNlIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhcm91bmQgYHhza19zZXRzb2Nrb3B0YCwgYHhza19yZWxlYXNlYCwgYHhza19kZXN0cnVjdGAsIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgLCBpdCdzIGNsZWFyIHdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBpbiB0aGVzZSBhcmVhcy4gU2luY2UgQUZfWERQIHNvY2tldHMgYXJlIHVzZXItc3BhY2UgYWNjZXNzaWJsZSwgdGhleeKAmXJlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MuIFRoZSBrZXkgaXMgdG8gY2hlY2sgYWxsIHRoZSBwb3NzaWJsZSBjb25maWdzIGFzIGl0IGlzIHJlYWxseSBpbXBvcnRhbnQgdG8ga25vdyBhbGwgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGNvcnJlY3QuIFRoZSBwcmVzZW5jZSBvZiBgWERQX1NPQ0tFVFNgIGlzIGEgbXVzdCBmb3IgYEFGX1hEUGAgdG8gd29yayBhbmQgSSBzaG91bGQgbm90ZSB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgcmVsZXZhbnQgaGVyZSBhcyB3ZWxsLiBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGVzdGVkIHRocm91Z2guXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCByZWNvcmQgdGhlc2Ugb2JzZXJ2YXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDY5LCJPdXRwdXRUb2tlbnMiOjE4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQyMTo0NDoyOC41MDk0ODI5NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTU1MTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCIsXG4gICAgXCJ4c2tfZGVzdHJ1Y3RcIixcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBBRl9YRFAgc29ja2V0IHF1ZXVlIGNyZWF0aW9uIHRvIGNoYXJnZSBtZW1vcnkgYWdhaW5zdCBgc2stXFx1MDAzZXNrX29tZW1fYWxsb2NgIGFuZCBsaW1pdHMgaXQgYnkgYHN5c2N0bF9vcHRtZW1fbWF4YC4gSXQgYWxzbyBtb3ZlcyB0aGUgcmVsZWFzZSBvZiB0aGUgYnVmZmVyIHBvb2wgYW5kIHVtZW0gZnJvbSBgeHNrX2Rlc3RydWN0YCB0byBgeHNrX3JlbGVhc2VgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBtZW1vcnkgYWNjb3VudGluZyBhbmQgbGlmZWN5Y2xlIG9mIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19zZXRzb2Nrb3B0XCIsXG4gICAgXCJ4c2tfcmVsZWFzZVwiLFxuICAgIFwieHNrX2Rlc3RydWN0XCIsXG4gICAgXCJ4c2txX2NyZWF0ZVwiLFxuICAgIFwieHNrcV9kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQUZfWERQIHNvY2tldCBxdWV1ZSBjcmVhdGlvbiB0byBjaGFyZ2UgbWVtb3J5IGFnYWluc3QgYHNrLVxcdTAwM2Vza19vbWVtX2FsbG9jYCBhbmQgbGltaXRzIGl0IGJ5IGBzeXNjdGxfb3B0bWVtX21heGAuIEl0IGFsc28gbW92ZXMgdGhlIHJlbGVhc2Ugb2YgdGhlIGJ1ZmZlciBwb29sIGFuZCB1bWVtIGZyb20gYHhza19kZXN0cnVjdGAgdG8gYHhza19yZWxlYXNlYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgbWVtb3J5IGFjY291bnRpbmcgYW5kIGxpZmVjeWNsZSBvZiBBRl9YRFAgc29ja2V0cywgd2hpY2ggYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowrpspj[1] Phase: Succeeded StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-30 21:44:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-30 21:44:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2] Phase: Succeeded StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-31 01:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-31 01:31:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-30 21:44:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 21:44:40 +0000 UTC FinishedAt: 2026-07-30 21:44:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrpspj/series-workflowrpspj-convert-artifact-3229294330/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 21:44:50 +0000 UTC FinishedAt: 2026-07-30 22:05:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 21:44:50 +0000 UTC FinishedAt: 2026-07-30 22:05:09 +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:*3f72eccd-6dc6-4425-8896-98dd0b0b6a8a,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-workflowrpspj/series-workflowrpspj-convert-artifact-3229294330/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": "228aa6c1-2b5b-4c17-8f35-627c5e7a11ae", "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-workflowrpspj/series-workflowrpspj-build-action-1269100456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 21:44:50 +0000 UTC FinishedAt: 2026-07-30 22:04:49 +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:*3f72eccd-6dc6-4425-8896-98dd0b0b6a8a,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-workflowrpspj/series-workflowrpspj-convert-artifact-3229294330/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": "228aa6c1-2b5b-4c17-8f35-627c5e7a11ae", "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-workflowrpspj/series-workflowrpspj-build-action-1269100456/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 22:05:09 +0000 UTC FinishedAt: 2026-07-30 22:05:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 22:05:09 +0000 UTC FinishedAt: 2026-07-30 22:05:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 22:05:09 +0000 UTC FinishedAt: 2026-07-30 22:05:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 22:05:09 +0000 UTC FinishedAt: 2026-07-30 22:05:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrpspj/series-workflowrpspj-convert-artifact-2857902421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 22:05:19 +0000 UTC FinishedAt: 2026-07-30 22:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 22:05:19 +0000 UTC FinishedAt: 2026-07-30 22:07:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*228aa6c1-2b5b-4c17-8f35-627c5e7a11ae,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-workflowrpspj/series-workflowrpspj-build-action-1269100456/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-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 22:07:15 +0000 UTC FinishedAt: 2026-07-30 22:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 22:07:15 +0000 UTC FinishedAt: 2026-07-30 22:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 22:07:15 +0000 UTC FinishedAt: 2026-07-30 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 22:07:15 +0000 UTC FinishedAt: 2026-07-30 22:26:47 +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:*3f72eccd-6dc6-4425-8896-98dd0b0b6a8a,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-workflowrpspj/series-workflowrpspj-convert-artifact-2857902421/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": "7042b776-0892-41db-9013-3ad7fe79830a", "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-workflowrpspj/series-workflowrpspj-build-action-139018977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 22:07:15 +0000 UTC FinishedAt: 2026-07-30 22:26:37 +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:*3f72eccd-6dc6-4425-8896-98dd0b0b6a8a,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-workflowrpspj/series-workflowrpspj-convert-artifact-2857902421/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": "7042b776-0892-41db-9013-3ad7fe79830a", "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-workflowrpspj/series-workflowrpspj-build-action-139018977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 22:26:47 +0000 UTC FinishedAt: 2026-07-30 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 22:26:47 +0000 UTC FinishedAt: 2026-07-30 22:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 22:26:47 +0000 UTC FinishedAt: 2026-07-30 22:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 22:26:47 +0000 UTC FinishedAt: 2026-07-30 22:28:38 +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:*7042b776-0892-41db-9013-3ad7fe79830a,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-workflowrpspj/series-workflowrpspj-build-action-139018977/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-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-31 01:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-31 01:31: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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"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:*228aa6c1-2b5b-4c17-8f35-627c5e7a11ae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7042b776-0892-41db-9013-3ad7fe79830a,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-workflowrpspj/series-workflowrpspj-build-action-1269100456/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-workflowrpspj/series-workflowrpspj-build-action-139018977/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-30 22:28:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-30 22:28:52 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"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-workflowrpspj/series-workflowrpspj-convert-artifact-2018468666/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-30 22:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-30 22:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 22:28:47 +0000 UTC FinishedAt: 2026-07-30 22:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 22:28:57 +0000 UTC FinishedAt: 2026-07-31 01:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrpspj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xsk_setsockopt","xsk_release","xsk_destruct","xskq_create","xskq_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"81b986e2-ad9f-4e59-b1ff-a15bca62f17a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 22:28:57 +0000 UTC FinishedAt: 2026-07-31 01:31:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*228aa6c1-2b5b-4c17-8f35-627c5e7a11ae,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7042b776-0892-41db-9013-3ad7fe79830a,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-workflowrpspj/series-workflowrpspj-build-action-1269100456/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-workflowrpspj/series-workflowrpspj-build-action-139018977/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-workflowrpspj/series-workflowrpspj-convert-artifact-2018468666/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,}