Name: series-workflowqvst6 Phase: Succeeded StartedAt: 2026-07-01 05:47:33 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[0] Phase: Succeeded StartedAt: 2026-07-01 05:47:33 +0000 UTC FinishedAt: 2026-07-01 05:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 05:47:33 +0000 UTC FinishedAt: 2026-07-01 05:54:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV", "KVM_XEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV", "KVM_XEN" ], "series_id": "d1944d2d-d2ab-40b6-80dd-a684ffec97b8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_hv_flush_tlb", "kvm_xen_hcall_vcpu_op", "kvm_xen_vcpu_set_attr", "kvm_hv_vcpu_flush_tlb", "kvm_hv_activate_synic" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "60fac5d8-1296-4ec7-a8e3-40f561d007e9" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OywKICAgICYjMzQ7S1ZNX1hFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9odl9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF92Y3B1X29wJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fdmNwdV9zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtrdm1faHZfdmNwdV9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX2h2X2FjdGl2YXRlX3N5bmljJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ2MTA3ZjAxOTcyMmEyN2VlMTkzZjVjODI1MTVhYTU1NDVjYmFhOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjUzOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbkBAIC0yMDYsMTQgJiM0MzsyMDYsMjAgQEAgc3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqZ2V0X3ZjcHVfYnlfdnBpZHgoc3RydWN0IGt2bSAqa3ZtLCB1MzIgdnBpZHgpXG4gXG4gc3RhdGljIHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWNfZ2V0KHN0cnVjdCBrdm0gKmt2bSwgdTMyIHZwaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWM7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1O1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdHZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTtcbi1cdGlmICghdmNwdSB8fCAhdG9faHZfdmNwdSh2Y3B1KSlcbiYjNDM7XHRpZiAoIXZjcHUpXG4gXHRcdHJldHVybiBOVUxMO1xuLVx0c3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTtcbi1cdHJldHVybiAoc3luaWMtXHUwMDNlYWN0aXZlKSA/IHN5bmljIDogTlVMTDtcbiYjNDM7XG4mIzQzO1x0aHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcbiYjNDM7XHRpZiAoIWh2X3ZjcHUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0c3luaWMgPSBcdTAwMjZodl92Y3B1LVx1MDAzZXN5bmljO1xuJiM0MztcdHJldHVybiBSRUFEX09OQ0Uoc3luaWMtXHUwMDNlYWN0aXZlKSA/IHN5bmljIDogTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQga3ZtX2h2X25vdGlmeV9hY2tlZF9zaW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHNpbnQpXG5AQCAtNTkzLDggJiM0Mzs1OTksNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBodl9zdGltZXJfdG9fdmNwdShzdGltZXIpO1xuIFxuLVx0c2V0X2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdHRvX2h2X3ZjcHUodmNwdSktXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcbiYjNDM7XHRzZXRfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX0hWX1NUSU1FUiwgdmNwdSk7XG4gXHRpZiAodmNwdV9raWNrKVxuIFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuQEAgLTYwOCw4ICYjNDM7NjEzLDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX2NsZWFudXAoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuIFx0XHRcdFx0ICAgIHN0aW1lci1cdTAwM2VpbmRleCk7XG4gXG4gXHRocnRpbWVyX2NhbmNlbChcdTAwMjZzdGltZXItXHUwMDNldGltZXIpO1xuLVx0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCxcbi1cdFx0ICB0b19odl92Y3B1KHZjcHUpLVx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XG4mIzQzO1x0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0c3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSAwO1xuIH1cbkBAIC05NzIsNyAmIzQzOzk3Niw2IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmICghaHZfdmNwdSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHR2Y3B1LVx1MDAzZWFyY2guaHlwZXJ2ID0gaHZfdmNwdTtcbiBcdGh2X3ZjcHUtXHUwMDNldmNwdSA9IHZjcHU7XG4gXG4gXHRzeW5pY19pbml0KFx1MDAyNmh2X3ZjcHUtXHUwMDNlc3luaWMpO1xuQEAgLTk4OCw2ICYjNDM7OTkxLDE0IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXS53cml0ZV9sb2NrKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEVuc3VyZSB0aGUgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBpdCYjMzk7cyB2aXNpYmxlIHRvXG4mIzQzO1x0ICogb3RoZXIgdGFza3MsIGFzIG11Y2ggb2YgdGhlIHN0YXRlIGNhbiBiZSBsZWdhbGx5IGFjY2Vzc2VkIHdpdGhvdXRcbiYjNDM7XHQgKiBob2xkaW5nIHZjcHUtXHUwMDNlbXV0ZXguXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gdG9faHZfdmNwdV9zYWZlKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmh5cGVydiwgaHZfdmNwdSk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTAwMiw3ICYjNDM7MTAxMyw3IEBAIGludCBrdm1faHZfYWN0aXZhdGVfc3luaWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGRvbnRfemVyb19zeW5pY19wYWdlcylcbiBcbiBcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XG4gXG4tXHRzeW5pYy1cdTAwM2VhY3RpdmUgPSB0cnVlO1xuJiM0MztcdFdSSVRFX09OQ0Uoc3luaWMtXHUwMDNlYWN0aXZlLCB0cnVlKTtcbiBcdHN5bmljLVx1MDAzZWRvbnRfemVyb19zeW5pY19wYWdlcyA9IGRvbnRfemVyb19zeW5pY19wYWdlcztcbiBcdHN5bmljLVx1MDAzZWNvbnRyb2wgPSBIVl9TWU5JQ19DT05UUk9MX0VOQUJMRTtcbiBcdHJldHVybiAwO1xuQEAgLTE5MzUsMTQgJiM0MzsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjXG4gXHRyZXR1cm4ga3ZtX2h2X2dldF9oY19kYXRhKGt2bSwgaGMsIGhjLVx1MDAzZXJlcF9jbnQsIGhjLVx1MDAzZXJlcF9jbnQsIGVudHJpZXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tXHRcdFx0XHQgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbyxcbi1cdFx0XHRcdCB1NjQgKmVudHJpZXMsIGludCBjb3VudClcbiYjNDM7c3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmVudHJpZXMsIGludCBjb3VudCxcbiYjNDM7XHRcdFx0XHQgYm9vbCBpc19ndWVzdF9tb2RlKVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcbiBcdHU2NCBmbHVzaF9hbGxfZW50cnkgPSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZO1xuIFxuLVx0aWYgKCFodl92Y3B1KVxuJiM0MztcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKTtcbiYjNDM7XHRpZiAoIXRsYl9mbHVzaF9maWZvKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNld3JpdGVfbG9jayk7XG5AQCAtMTk3MCwxNSAmIzQzOzE5ODEsMTYgQEAgc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIGludCBrdm1faHZfdmNwdV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xuIFx0dTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdO1xuIFx0aW50IGksIGosIGNvdW50O1xuIFx0Z3ZhX3QgZ3ZhO1xuIFxuLVx0aWYgKCF0ZHBfZW5hYmxlZCB8fCAhaHZfdmNwdSlcbiYjNDM7XHRpZiAoIXRkcF9lbmFibGVkKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbiYjNDM7XHRpZiAoIXRsYl9mbHVzaF9maWZvKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRjb3VudCA9IGtmaWZvX291dChcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2VlbnRyaWVzLCBlbnRyaWVzLCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4gXG5AQCAtMjAxNyw3ICYjNDM7MjAyOSw2IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG4gXHRzdHJ1Y3QgaHZfdGxiX2ZsdXNoX2V4IGZsdXNoX2V4O1xuIFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHQvKlxuIFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJiMzOTtLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSYjMzk7XG4gXHQgKiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gVGhlIGxhc3QgZW50cnksIGhvd2V2ZXIsIG5lZWRzIHRvIGJlXG5AQCAtMjE0NCwxMSAmIzQzOzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcbiBcdCAqIGFuYWx5emUgaXQgaGVyZSwgZmx1c2ggVExCIHJlZ2FyZGxlc3Mgb2YgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHNwYWNlLlxuIFx0ICovXG4gXHRpZiAoYWxsX2NwdXMgXHUwMDI2XHUwMDI2ICFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG4tXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuLVx0XHR9XG4mIzQzO1x0XHRrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pXG4mIzQzO1x0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250LCBmYWxzZSk7XG4gXG4gXHRcdGt2bV9tYWtlX2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCk7XG4gXHR9IGVsc2UgaWYgKCFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG5AQCAtMjE1OCw5ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcbiBcdFx0XHRpZiAoIXYpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbiYjNDM7XHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQsIGZhbHNlKTtcbiBcdFx0fVxuIFxuIFx0XHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcbkBAIC0yMTcwLDcgJiM0MzsyMTc2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXG4gXHRcdGJpdG1hcF96ZXJvKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XG4gXG4gXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdGh2X3YgPSB0b19odl92Y3B1KHYpO1xuJiM0MztcdFx0XHRodl92ID0gdG9faHZfdmNwdV9zYWZlKHYpO1xuIFxuIFx0XHRcdC8qXG4gXHRcdFx0ICogVGhlIGZvbGxvd2luZyBjaGVjayByYWNlcyB3aXRoIG5lc3RlZCB2Q1BVcyBlbnRlcmluZy9leGl0aW5nXG5AQCAtMjE5MSw5ICYjNDM7MjE5Nyw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0X19zZXRfYml0KGksIHZjcHVfbWFzayk7XG4tXHRcdFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIHRydWUpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbiYjNDM7XHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQsIHRydWUpO1xuIFx0XHR9XG4gXG4gXHRcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaCBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjM3YTBiY2YwM2UyODE2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbkBAIC02Miw4ICYjNDM7NjIsMjIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2h2ICp0b19rdm1faHYoc3RydWN0IGt2bSAqa3ZtKVxuIFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmh5cGVydjtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1X3NhZmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbnN1cmUgdGhlIEh5cGVyViBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBhY2Nlc3NpbmcgaXRcbiYjNDM7XHQgKiB3aXRob3V0IGhvbGRpbmcgdmNwdS1cdTAwM2VtdXRleCAob3Igc29tZSBvdGhlciBndWFyYW50ZWUgdGhhdCBLVk0gY2FuJiMzOTt0XG4mIzQzO1x0ICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogUGFpcnMgd2l0aCB0aGUgc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1faHZfdmNwdV9pbml0KCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0dXJuIHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmh5cGVydik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4mIzQzO1xuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5oeXBlcnY7XG4gfVxuIFxuQEAgLTg4LDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1faHZfc3luZGJnICp0b19odl9zeW5kYmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIHN0YXRpYyBpbmxpbmUgdTMyIGt2bV9odl9nZXRfdnBpbmRleChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXG4gXHRyZXR1cm4gaHZfdmNwdSA/IGh2X3ZjcHUtXHUwMDNldnBfaW5kZXggOiB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuIH1cbkBAIC0xNDIsNyAmIzQzOzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpodl9zdGltZXJfdG9fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltXG4gXG4gc3RhdGljIGlubGluZSBib29sIGt2bV9odl9oYXNfc3RpbWVyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xuIFxuIFx0aWYgKCFodl92Y3B1KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTk4LDEwICYjNDM7MjEyLDEzIEBAIGludCBrdm1fZ2V0X2h2X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZDIgKmNwdWlkLFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICprdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdFx0XHRcdFx0XHQgICBib29sIGlzX2d1ZXN0X21vZGUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXHRpbnQgaSA9IGlzX2d1ZXN0X21vZGUgPyBIVl9MMl9UTEJfRkxVU0hfRklGTyA6XG4gXHRcdFx0XHRIVl9MMV9UTEJfRkxVU0hfRklGTztcbiBcbiYjNDM7XHRpZiAoIWh2X3ZjcHUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4gXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXTtcbiB9XG4gXG5AQCAtMjA5LDEwICYjNDM7MjI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfdmNwdV9wdXJnZV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXG4tXHRpZiAoIXRvX2h2X3ZjcHUodmNwdSkgfHwgIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSlcbiYjNDM7XHRpZiAoIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUodmNwdSkpO1xuJiM0MztcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRrZmlmb19yZXNldF9vdXQoXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNlZW50cmllcyk7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG5pbmRleCA2ZDZjZDU5MDRkZGY2Ni4uYzZkZTg0OGJkOWNlZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG5AQCAtNTcsMTYgJiM0Mzs1NywxNCBAQCBib29sIG5lc3RlZF92bXhfY2hlY2tfaW9fYml0bWFwcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBwb3J0LFxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXHUwMDI2dmNwdS1cdTAwM2VtdXRleCkgfHxcbi1cdFx0XHQgICAgIXJlZmNvdW50X3JlYWQoXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNldXNlcnNfY291bnQpKTtcbiYjNDM7XHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4gXG4gXHRyZXR1cm4gdG9fdm14KHZjcHUpLVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF9zaGFkb3dfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuLVx0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuJiM0MztcdGt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZSh2Y3B1KTtcbiBcbiBcdHJldHVybiB0b192bXgodmNwdSktXHUwMDNlbmVzdGVkLmNhY2hlZF9zaGFkb3dfdm1jczEyO1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi5lZWYzNzhkMGJiNDU1NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ZW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N4ZW4vaW50ZXJmYWNlL3ZlcnNpb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3hlbi9pbnRlcmZhY2UvZXZlbnRfY2hhbm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjeGVuL2ludGVyZmFjZS9zY2hlZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3hlbi94ZW4tb3BzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20veGVuL2NwdWlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcHZjbG9jay5oXHUwMDNlXG5AQCAtMTEwMyw2ICYjNDM7MTEwNCw4IEBAIGludCBrdm1feGVuX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3hlbl92Y3B1X2F0dHIgKmRhdGEpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBLVk1fWEVOX1ZDUFVfQVRUUl9UWVBFX1ZDUFVfSUQ6XG4mIzQzO1x0XHRCVUlMRF9CVUdfT04oWEVOX1ZDUFVfSURfSU5WQUxJRCBcdTAwM2MgS1ZNX01BWF9WQ1BVUyk7XG4mIzQzO1xuIFx0XHRpZiAoZGF0YS1cdTAwM2V1LnZjcHVfaWQgXHUwMDNlPSBLVk1fTUFYX1ZDUFVTKVxuIFx0XHRcdHIgPSAtRUlOVkFMO1xuIFx0XHRlbHNlIHtcbkBAIC0xNjA3LDE2ICYjNDM7MTYxMCwyOCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxuIFx0c3RydWN0IHZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIgb25lc2hvdDtcbiBcdHN0cnVjdCB4ODZfZXhjZXB0aW9uIGU7XG4gXG4mIzQzO1x0aWYgKGNtZCAhPSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdGlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRzd2l0Y2ggKGNtZCkge1xuLVx0Y2FzZSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXI6XG4tXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xuLVx0XHRcdCpyID0gLUVJTlZBTDtcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fVxuJiM0MztcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPT0gWEVOX1ZDUFVfSURfSU5WQUxJRClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWplY3QgdGhlIGh5cGVyY2FsbCBpZiB0aGUgZ3Vlc3QgaXMgdHJ5aW5nIHRvIHN0YXJ0L3N0b3AgdGhlIHRpbWVyXG4mIzQzO1x0ICogZm9yIGEgZGlmZmVyZW50IHZDUFUuICBYZW4gcGVyLXZDUFUgaHlwZXJjYWxscyB0YWtlIGEgdGFyZ2V0IHZDUFUgYXNcbiYjNDM7XHQgKiBhIGNvbW1vbiBwYXJhbWV0ZXIsIGFzIGFsbCBwZXItdkNQVSBoeXBlcmNhbGxzICpleGNlcHQqIHNpbmdsZS1zaG90XG4mIzQzO1x0ICogdGltZXIgdXBkYXRlcyBjYW4gYmUgY3Jvc3MtdkNQVS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbiYjNDM7XHRcdCpyID0gLUVJTlZBTDtcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiBcbiYjNDM7XHRpZiAoY21kID09IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgb25seSBkaWZmZXJlbmNlIGZvciAzMi1iaXQgY29tcGF0IGlzIHRoZSA0IGJ5dGVzIG9mXG4gXHRcdCAqIHBhZGRpbmcgYWZ0ZXIgdGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlIHN0cnVjdHVyZS4gU29cbkBAIC0xNjQwLDIwICYjNDM7MTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxuIFx0XHR9XG4gXG4gXHRcdGt2bV94ZW5fc3RhcnRfdGltZXIodmNwdSwgb25lc2hvdC50aW1lb3V0X2Fic19ucywgZmFsc2UpO1xuLVx0XHQqciA9IDA7XG4tXHRcdHJldHVybiB0cnVlO1xuLVxuLVx0Y2FzZSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyOlxuLVx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbi1cdFx0XHQqciA9IC1FSU5WQUw7XG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRrdm1feGVuX3N0b3BfdGltZXIodmNwdSk7XG4tXHRcdCpyID0gMDtcbi1cdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0KnIgPSAwO1xuJiM0MztcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3NldF90aW1lcl9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVpbnQ2NF90IHRpbWVvdXQsXG5AQCAtMjI5OSw3ICYjNDM7MjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcbiB2b2lkIGt2bV94ZW5faW5pdF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7XG4gXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnBvbGxfZXZ0Y2huID0gMDtcbiBcbiBcdHRpbWVyX3NldHVwKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4ucG9sbF90aW1lciwgY2FuY2VsX2V2dGNobl9wb2xsLCAwKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi4wYmRmYTM2OTkzNTI3ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtOTg5LDYgJiM0Mzs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KVxuIFx0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKFx1MDAyNnZjcHUtXHUwMDNlbXV0ZXgpIHx8XG4mIzQzO1x0XHRcdCAgICB2Y3B1LVx1MDAzZXZjcHVfaWR4IFx1MDAzYyAwIHx8XG4mIzQzO1x0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICprdm1fZ2V0X3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBpbnQgaSlcbiB7XG4gXHRpbnQgbnVtX3ZjcHVzID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi4wNTI3NWQzMThiZmJjNyAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC00MTg4LDYgJiM0Mzs0MTg4LDggQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxuIFx0XHRnb3RvIHZjcHVfZGVjcmVtZW50O1xuIFx0fVxuIFxuJiM0MztcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiYjNDM7XG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBrdm1fcnVuKSBcdTAwM2UgUEFHRV9TSVpFKTtcbiBcdHBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pO1xuIFx0aWYgKCFwYWdlKSB7XG5AQCAtNDIxNiw2ICYjNDM7NDIxOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRcdGdvdG8gdW5sb2NrX3ZjcHVfZGVzdHJveTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFNldCB0aGUgdkNQVSYjMzk7cyBpbmRleCAqYmVmb3JlKiB0aGUgdkNQVSBpcyByZWFjaGFibGUgYnkgb3RoZXIgdGFza3MuXG4mIzQzO1x0ICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXhcbiYjNDM7XHQgKiB0byBkZXRlY3QgdGhhdCB0aGUgdkNQVSBpcyB1bnJlYWNoYWJsZSwgZS5nLiBmb3IgbG9ja2RlcCBhc3NlcnRzLlxuJiM0MztcdCAqL1xuIFx0dmNwdS1cdTAwM2V2Y3B1X2lkeCA9IGF0b21pY19yZWFkKFx1MDAyNmt2bS1cdTAwM2VvbmxpbmVfdmNwdXMpO1xuIFx0ciA9IHhhX2luc2VydChcdTAwMjZrdm0tXHUwMDNldmNwdV9hcnJheSwgdmNwdS1cdTAwM2V2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFdBUk5fT05fT05DRShyID09IC1FQlVTWSk7XG5AQCAtNDI1NCw2ICYjNDM7NDI2MSw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcbiBcdGt2bV9wdXRfa3ZtX25vX2Rlc3Ryb3koa3ZtKTtcbiBcdHhhX2VyYXNlKFx1MDAyNmt2bS1cdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVx1MDAzZXZjcHVfaWR4KTtcbiB1bmxvY2tfdmNwdV9kZXN0cm95OlxuJiM0MztcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4gXHRrdm1fZGlydHlfcmluZ19mcmVlKFx1MDAyNnZjcHUtXHUwMDNlZGlydHlfcmluZyk7XG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl92Y3B1X3NldF9hdHRyJiMzNDssCiAgICAmIzM0O2t2bV9odl92Y3B1X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1faHZfYWN0aXZhdGVfc3luaWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwNTo1MzozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuYwppbmRleCAxZWUwZDIzZjg5NDk3NC4uOWQzOGNiNjQ0NjY4ZGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMKQEAgLTIwNiwxNCAmIzQzOzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeCkKIAogc3RhdGljIHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWNfZ2V0KHN0cnVjdCBrdm0gKmt2bSwgdTMyIHZwaWR4KQogewotCXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgKnN5bmljOwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHU7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKIAogCXZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTsKLQlpZiAoIXZjcHUgfHwgIXRvX2h2X3ZjcHUodmNwdSkpCiYjNDM7CWlmICghdmNwdSkKIAkJcmV0dXJuIE5VTEw7Ci0Jc3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTsKLQlyZXR1cm4gKHN5bmljLSZndDthY3RpdmUpID8gc3luaWMgOiBOVUxMOwomIzQzOwomIzQzOwlodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwomIzQzOwlpZiAoIWh2X3ZjcHUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJc3luaWMgPSAmYW1wO2h2X3ZjcHUtJmd0O3N5bmljOwomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKHN5bmljLSZndDthY3RpdmUpID8gc3luaWMgOiBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBrdm1faHZfbm90aWZ5X2Fja2VkX3NpbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgc2ludCkKQEAgLTU5Myw4ICYjNDM7NTk5LDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsCiB7CiAJc3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKTsKIAotCXNldF9iaXQoc3RpbWVyLSZndDtpbmRleCwKLQkJdG9faHZfdmNwdSh2Y3B1KS0mZ3Q7c3RpbWVyX3BlbmRpbmdfYml0bWFwKTsKJiM0MzsJc2V0X2JpdChzdGltZXItJmd0O2luZGV4LCB2Y3B1LSZndDthcmNoLmh5cGVydi0mZ3Q7c3RpbWVyX3BlbmRpbmdfYml0bWFwKTsKIAlrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTsKIAlpZiAodmNwdV9raWNrKQogCQlrdm1fdmNwdV9raWNrKHZjcHUpOwpAQCAtNjA4LDggJiM0Mzs2MTMsNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfY2xlYW51cChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpCiAJCQkJICAgIHN0aW1lci0mZ3Q7aW5kZXgpOwogCiAJaHJ0aW1lcl9jYW5jZWwoJmFtcDtzdGltZXItJmd0O3RpbWVyKTsKLQljbGVhcl9iaXQoc3RpbWVyLSZndDtpbmRleCwKLQkJICB0b19odl92Y3B1KHZjcHUpLSZndDtzdGltZXJfcGVuZGluZ19iaXRtYXApOwomIzQzOwljbGVhcl9iaXQoc3RpbWVyLSZndDtpbmRleCwgdmNwdS0mZ3Q7YXJjaC5oeXBlcnYtJmd0O3N0aW1lcl9wZW5kaW5nX2JpdG1hcCk7CiAJc3RpbWVyLSZndDttc2dfcGVuZGluZyA9IGZhbHNlOwogCXN0aW1lci0mZ3Q7ZXhwX3RpbWUgPSAwOwogfQpAQCAtOTcyLDcgJiM0Mzs5NzYsNiBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFodl92Y3B1KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXZjcHUtJmd0O2FyY2guaHlwZXJ2ID0gaHZfdmNwdTsKIAlodl92Y3B1LSZndDt2Y3B1ID0gdmNwdTsKIAogCXN5bmljX2luaXQoJmFtcDtodl92Y3B1LSZndDtzeW5pYyk7CkBAIC05ODgsNiAmIzQzOzk5MSwxNCBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXNwaW5fbG9ja19pbml0KCZhbXA7aHZfdmNwdS0mZ3Q7dGxiX2ZsdXNoX2ZpZm9baV0ud3JpdGVfbG9jayk7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIEVuc3VyZSB0aGUgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBpdCYjMzk7cyB2aXNpYmxlIHRvCiYjNDM7CSAqIG90aGVyIHRhc2tzLCBhcyBtdWNoIG9mIHRoZSBzdGF0ZSBjYW4gYmUgbGVnYWxseSBhY2Nlc3NlZCB3aXRob3V0CiYjNDM7CSAqIGhvbGRpbmcgdmNwdS0mZ3Q7bXV0ZXguCiYjNDM7CSAqCiYjNDM7CSAqIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiB0b19odl92Y3B1X3NhZmUoKS4KJiM0MzsJICovCiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5oeXBlcnYsIGh2X3ZjcHUpOwogCXJldHVybiAwOwogfQogCkBAIC0xMDAyLDcgJiM0MzsxMDEzLDcgQEAgaW50IGt2bV9odl9hY3RpdmF0ZV9zeW5pYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZG9udF96ZXJvX3N5bmljX3BhZ2VzKQogCiAJc3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTsKIAotCXN5bmljLSZndDthY3RpdmUgPSB0cnVlOwomIzQzOwlXUklURV9PTkNFKHN5bmljLSZndDthY3RpdmUsIHRydWUpOwogCXN5bmljLSZndDtkb250X3plcm9fc3luaWNfcGFnZXMgPSBkb250X3plcm9fc3luaWNfcGFnZXM7CiAJc3luaWMtJmd0O2NvbnRyb2wgPSBIVl9TWU5JQ19DT05UUk9MX0VOQUJMRTsKIAlyZXR1cm4gMDsKQEAgLTE5MzUsMTQgJiM0MzsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjCiAJcmV0dXJuIGt2bV9odl9nZXRfaGNfZGF0YShrdm0sIGhjLCBoYy0mZ3Q7cmVwX2NudCwgaGMtJmd0O3JlcF9jbnQsIGVudHJpZXMpOwogfQogCi1zdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCi0JCQkJIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm8sCi0JCQkJIHU2NCAqZW50cmllcywgaW50IGNvdW50KQomIzQzO3N0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICplbnRyaWVzLCBpbnQgY291bnQsCiYjNDM7CQkJCSBib29sIGlzX2d1ZXN0X21vZGUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbzsKIAl1NjQgZmx1c2hfYWxsX2VudHJ5ID0gS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWTsKIAotCWlmICghaHZfdmNwdSkKJiM0MzsJdGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUpOwomIzQzOwlpZiAoIXRsYl9mbHVzaF9maWZvKQogCQlyZXR1cm47CiAKIAlzcGluX2xvY2soJmFtcDt0bGJfZmx1c2hfZmlmby0mZ3Q7d3JpdGVfbG9jayk7CkBAIC0xOTcwLDE1ICYjNDM7MTk4MSwxNiBAQCBzdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiBpbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvOwotCXN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7CiAJdTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdOwogCWludCBpLCBqLCBjb3VudDsKIAlndmFfdCBndmE7CiAKLQlpZiAoIXRkcF9lbmFibGVkIHx8ICFodl92Y3B1KQomIzQzOwlpZiAoIXRkcF9lbmFibGVkKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTsKJiM0MzsJaWYgKCF0bGJfZmx1c2hfZmlmbykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCiAJY291bnQgPSBrZmlmb19vdXQoJmFtcDt0bGJfZmx1c2hfZmlmby0mZ3Q7ZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpOwogCkBAIC0yMDE3LDcgJiM0MzsyMDI5LDYgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpCiAJc3RydWN0IGt2bSAqa3ZtID0gdmNwdS0mZ3Q7a3ZtOwogCXN0cnVjdCBodl90bGJfZmx1c2hfZXggZmx1c2hfZXg7CiAJc3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDsKLQlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvOwogCS8qCiAJICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJiMzOTtLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSYjMzk7CiAJICogZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIFRoZSBsYXN0IGVudHJ5LCBob3dldmVyLCBuZWVkcyB0byBiZQpAQCAtMjE0NCwxMSAmIzQzOzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYykKIAkgKiBhbmFseXplIGl0IGhlcmUsIGZsdXNoIFRMQiByZWdhcmRsZXNzIG9mIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBzcGFjZS4KIAkgKi8KIAlpZiAoYWxsX2NwdXMgJmFtcDsmYW1wOyAhaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkgewotCQlrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pIHsKLQkJCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7Ci0JCQlodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZmlmbywKLQkJCQkJICAgICB0bGJfZmx1c2hfZW50cmllcywgaGMtJmd0O3JlcF9jbnQpOwotCQl9CiYjNDM7CQlrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pCiYjNDM7CQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250LCBmYWxzZSk7CiAKIAkJa3ZtX21ha2VfYWxsX2NwdXNfcmVxdWVzdChrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNIKTsKIAl9IGVsc2UgaWYgKCFpc19ndWVzdF9tb2RlKHZjcHUpKSB7CkBAIC0yMTU4LDkgJiM0MzsyMTY2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpCiAJCQl2ID0ga3ZtX2dldF92Y3B1KGt2bSwgaSk7CiAJCQlpZiAoIXYpCiAJCQkJY29udGludWU7Ci0JCQl0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpOwotCQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sCi0JCQkJCSAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250KTsKJiM0MzsJCQlodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtJmd0O3JlcF9jbnQsIGZhbHNlKTsKIAkJfQogCiAJCWt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spOwpAQCAtMjE3MCw3ICYjNDM7MjE3Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKQogCQliaXRtYXBfemVybyh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpOwogCiAJCWt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkgewotCQkJaHZfdiA9IHRvX2h2X3ZjcHUodik7CiYjNDM7CQkJaHZfdiA9IHRvX2h2X3ZjcHVfc2FmZSh2KTsKIAogCQkJLyoKIAkJCSAqIFRoZSBmb2xsb3dpbmcgY2hlY2sgcmFjZXMgd2l0aCBuZXN0ZWQgdkNQVXMgZW50ZXJpbmcvZXhpdGluZwpAQCAtMjE5MSw5ICYjNDM7MjE5Nyw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKQogCQkJCWNvbnRpbnVlOwogCiAJCQlfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTsKLQkJCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCB0cnVlKTsKLQkJCWh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLAotCQkJCQkgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy0mZ3Q7cmVwX2NudCk7CiYjNDM7CQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250LCB0cnVlKTsKIAkJfQogCiAJCWt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5oIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oCmluZGV4IDFjOGY3YWFhYjA2M2QwLi4zN2EwYmNmMDNlMjgxNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaApAQCAtNjIsOCAmIzQzOzYyLDIyIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odiAqdG9fa3ZtX2h2KHN0cnVjdCBrdm0gKmt2bSkKIAlyZXR1cm4gJmFtcDtrdm0tJmd0O2FyY2guaHlwZXJ2OwogfQogCiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwkvKgomIzQzOwkgKiBFbnN1cmUgdGhlIEh5cGVyViBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBhY2Nlc3NpbmcgaXQKJiM0MzsJICogd2l0aG91dCBob2xkaW5nIHZjcHUtJmd0O211dGV4IChvciBzb21lIG90aGVyIGd1YXJhbnRlZSB0aGF0IEtWTSBjYW4mIzM5O3QKJiM0MzsJICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLgomIzQzOwkgKgomIzQzOwkgKiBQYWlycyB3aXRoIHRoZSBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGt2bV9odl92Y3B1X2luaXQoKS4KJiM0MzsJICovCiYjNDM7CXJldHVybiBzbXBfbG9hZF9hY3F1aXJlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5oeXBlcnYpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKJiM0MzsJa3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpOwomIzQzOwogCXJldHVybiB2Y3B1LSZndDthcmNoLmh5cGVydjsKIH0KIApAQCAtODgsNyAmIzQzOzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAKIHN0YXRpYyBpbmxpbmUgdTMyIGt2bV9odl9nZXRfdnBpbmRleChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCiAJcmV0dXJuIGh2X3ZjcHUgPyBodl92Y3B1LSZndDt2cF9pbmRleCA6IHZjcHUtJmd0O3ZjcHVfaWR4OwogfQpAQCAtMTQyLDcgJiM0MzsxNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqaHZfc3RpbWVyX3RvX3ZjcHUoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbQogCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2h2X2hhc19zdGltZXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCiAJaWYgKCFodl92Y3B1KQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xOTgsMTAgJiM0MzsyMTIsMTMgQEAgaW50IGt2bV9nZXRfaHZfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2NwdWlkMiAqY3B1aWQsCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqa3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJCQkJCQkgICBib29sIGlzX2d1ZXN0X21vZGUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCWludCBpID0gaXNfZ3Vlc3RfbW9kZSA/IEhWX0wyX1RMQl9GTFVTSF9GSUZPIDoKIAkJCQlIVl9MMV9UTEJfRkxVU0hfRklGTzsKIAomIzQzOwlpZiAoIWh2X3ZjcHUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAlyZXR1cm4gJmFtcDtodl92Y3B1LSZndDt0bGJfZmx1c2hfZmlmb1tpXTsKIH0KIApAQCAtMjA5LDEwICYjNDM7MjI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfdmNwdV9wdXJnZV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87CiAKLQlpZiAoIXRvX2h2X3ZjcHUodmNwdSkgfHwgIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSkKJiM0MzsJaWYgKCFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpCiAJCXJldHVybjsKIAogCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTsKJiM0MzsJaWYgKCF0bGJfZmx1c2hfZmlmbykKJiM0MzsJCXJldHVybjsKIAogCWtmaWZvX3Jlc2V0X291dCgmYW1wO3RsYl9mbHVzaF9maWZvLSZndDtlbnRyaWVzKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oCmluZGV4IDZkNmNkNTkwNGRkZjY2Li5jNmRlODQ4YmQ5Y2VkNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oCkBAIC01NywxNiAmIzQzOzU3LDE0IEBAIGJvb2wgbmVzdGVkX3ZteF9jaGVja19pb19iaXRtYXBzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IHBvcnQsCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoJmFtcDt2Y3B1LSZndDttdXRleCkgfHwKLQkJCSAgICAhcmVmY291bnRfcmVhZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7dXNlcnNfY291bnQpKTsKJiM0MzsJa3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpOwogCiAJcmV0dXJuIHRvX3ZteCh2Y3B1KS0mZ3Q7bmVzdGVkLmNhY2hlZF92bWNzMTI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3NoYWRvd192bWNzMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCWxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKCZhbXA7dmNwdS0mZ3Q7bXV0ZXgpIHx8Ci0JCQkgICAgIXJlZmNvdW50X3JlYWQoJmFtcDt2Y3B1LSZndDtrdm0tJmd0O3VzZXJzX2NvdW50KSk7CiYjNDM7CWt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZSh2Y3B1KTsKIAogCXJldHVybiB0b192bXgodmNwdSktJmd0O25lc3RlZC5jYWNoZWRfc2hhZG93X3ZtY3MxMjsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uYwppbmRleCA2OTRiMzFjMWZjYzlhZi4uZWVmMzc4ZDBiYjQ1NTcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veGVuLmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS92ZXJzaW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS9ldmVudF9jaGFubmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS9zY2hlZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt4ZW4veGVuLW9wcy5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7YXNtL3hlbi9jcHVpZC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9wdmNsb2NrLmgmZ3Q7CkBAIC0xMTAzLDYgJiM0MzsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSkKIAkJYnJlYWs7CiAKIAljYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDoKJiM0MzsJCUJVSUxEX0JVR19PTihYRU5fVkNQVV9JRF9JTlZBTElEICZsdDsgS1ZNX01BWF9WQ1BVUyk7CiYjNDM7CiAJCWlmIChkYXRhLSZndDt1LnZjcHVfaWQgJmd0Oz0gS1ZNX01BWF9WQ1BVUykKIAkJCXIgPSAtRUlOVkFMOwogCQllbHNlIHsKQEAgLTE2MDcsMTYgJiM0MzsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsCiAJc3RydWN0IHZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIgb25lc2hvdDsKIAlzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiBlOwogCiYjNDM7CWlmIChjbWQgIT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyICZhbXA7JmFtcDsKJiM0MzsJICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCWlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlzd2l0Y2ggKGNtZCkgewotCWNhc2UgVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyOgotCQlpZiAodmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCAhPSB2Y3B1X2lkKSB7Ci0JCQkqciA9IC1FSU5WQUw7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCA9PSBYRU5fVkNQVV9JRF9JTlZBTElEKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWplY3QgdGhlIGh5cGVyY2FsbCBpZiB0aGUgZ3Vlc3QgaXMgdHJ5aW5nIHRvIHN0YXJ0L3N0b3AgdGhlIHRpbWVyCiYjNDM7CSAqIGZvciBhIGRpZmZlcmVudCB2Q1BVLiAgWGVuIHBlci12Q1BVIGh5cGVyY2FsbHMgdGFrZSBhIHRhcmdldCB2Q1BVIGFzCiYjNDM7CSAqIGEgY29tbW9uIHBhcmFtZXRlciwgYXMgYWxsIHBlci12Q1BVIGh5cGVyY2FsbHMgKmV4Y2VwdCogc2luZ2xlLXNob3QKJiM0MzsJICogdGltZXIgdXBkYXRlcyBjYW4gYmUgY3Jvc3MtdkNQVS4KJiM0MzsJICovCiYjNDM7CWlmICh2Y3B1LSZndDthcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHsKJiM0MzsJCSpyID0gLUVJTlZBTDsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiAKJiM0MzsJaWYgKGNtZCA9PSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXIpIHsKIAkJLyoKIAkJICogVGhlIG9ubHkgZGlmZmVyZW5jZSBmb3IgMzItYml0IGNvbXBhdCBpcyB0aGUgNCBieXRlcyBvZgogCQkgKiBwYWRkaW5nIGFmdGVyIHRoZSBpbnRlcmVzdGluZyBwYXJ0IG9mIHRoZSBzdHJ1Y3R1cmUuIFNvCkBAIC0xNjQwLDIwICYjNDM7MTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLAogCQl9CiAKIAkJa3ZtX3hlbl9zdGFydF90aW1lcih2Y3B1LCBvbmVzaG90LnRpbWVvdXRfYWJzX25zLCBmYWxzZSk7Ci0JCSpyID0gMDsKLQkJcmV0dXJuIHRydWU7Ci0KLQljYXNlIFZDUFVPUF9zdG9wX3NpbmdsZXNob3RfdGltZXI6Ci0JCWlmICh2Y3B1LSZndDthcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHsKLQkJCSpyID0gLUVJTlZBTDsKLQkJCXJldHVybiB0cnVlOwotCQl9CiYjNDM7CX0gZWxzZSB7CiAJCWt2bV94ZW5fc3RvcF90aW1lcih2Y3B1KTsKLQkJKnIgPSAwOwotCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKLQlyZXR1cm4gZmFsc2U7CiYjNDM7CSpyID0gMDsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfc2V0X3RpbWVyX29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdWludDY0X3QgdGltZW91dCwKQEAgLTIyOTksNyAmIzQzOzIzMDYsNyBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpCiAKIHZvaWQga3ZtX3hlbl9pbml0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZjcHUtJmd0O2FyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LSZndDt2Y3B1X2lkeDsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7CiAJdmNwdS0mZ3Q7YXJjaC54ZW4ucG9sbF9ldnRjaG4gPSAwOwogCiAJdGltZXJfc2V0dXAoJmFtcDt2Y3B1LSZndDthcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCmluZGV4IGFiOGNmYWVjODJkMzFlLi4wYmRmYTM2OTkzNTI3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaApAQCAtOTg5LDYgJiM0Mzs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KQogCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7a3ZtLSZndDtzbG90c19sb2NrKSk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKCZhbXA7dmNwdS0mZ3Q7bXV0ZXgpIHx8CiYjNDM7CQkJICAgIHZjcHUtJmd0O3ZjcHVfaWR4ICZsdDsgMCB8fAomIzQzOwkJCSAgICAhcmVmY291bnRfcmVhZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7dXNlcnNfY291bnQpKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqa3ZtX2dldF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGkpCiB7CiAJaW50IG51bV92Y3B1cyA9IGF0b21pY19yZWFkKCZhbXA7a3ZtLSZndDtvbmxpbmVfdmNwdXMpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjA1Mjc1ZDMxOGJmYmM3IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTQxODgsNiAmIzQzOzQxODgsOCBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpCiAJCWdvdG8gdmNwdV9kZWNyZW1lbnQ7CiAJfQogCiYjNDM7CXZjcHUtJmd0O3ZjcHVfaWR4ID0gLTE7CiYjNDM7CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qga3ZtX3J1bikgJmd0OyBQQUdFX1NJWkUpOwogCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pOwogCWlmICghcGFnZSkgewpAQCAtNDIxNiw2ICYjNDM7NDIxOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpCiAJCWdvdG8gdW5sb2NrX3ZjcHVfZGVzdHJveTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogU2V0IHRoZSB2Q1BVJiMzOTtzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy4KJiM0MzsJICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXgKJiM0MzsJICogdG8gZGV0ZWN0IHRoYXQgdGhlIHZDUFUgaXMgdW5yZWFjaGFibGUsIGUuZy4gZm9yIGxvY2tkZXAgYXNzZXJ0cy4KJiM0MzsJICovCiAJdmNwdS0mZ3Q7dmNwdV9pZHggPSBhdG9taWNfcmVhZCgmYW1wO2t2bS0mZ3Q7b25saW5lX3ZjcHVzKTsKIAlyID0geGFfaW5zZXJ0KCZhbXA7a3ZtLSZndDt2Y3B1X2FycmF5LCB2Y3B1LSZndDt2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlXQVJOX09OX09OQ0UociA9PSAtRUJVU1kpOwpAQCAtNDI1NCw2ICYjNDM7NDI2MSw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZCkKIAlrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7CiAJeGFfZXJhc2UoJmFtcDtrdm0tJmd0O3ZjcHVfYXJyYXksIHZjcHUtJmd0O3ZjcHVfaWR4KTsKIHVubG9ja192Y3B1X2Rlc3Ryb3k6CiYjNDM7CXZjcHUtJmd0O3ZjcHVfaWR4ID0gLTE7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDtsb2NrKTsKIAlrdm1fZGlydHlfcmluZ19mcmVlKCZhbXA7dmNwdS0mZ3Q7ZGlydHlfcmluZyk7CiBhcmNoX3ZjcHVfZGVzdHJveToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgZW11bGF0aW9uIG9mIEh5cGVyLVYgYW5kIFhlbiBvbiB4ODYsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcywgaW1wYWN0aW5nIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiBLVk0uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSAmIzM0O1dvcnRoRnV6emluZz10cnVlJiMzNDsgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4KClRoZSBjaGFuZ2VzIGFyZSBkaXN0cmlidXRlZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGh5cGVydi5jYCwgYGh5cGVydi5oYCwgYG5lc3RlZC5oYCwgYHhlbi5jYCwgYGt2bV9ob3N0LmhgLCBhbmQgYGt2bV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBoaXR0aW5nIGJvdGggSHlwZXItViBhbmQgWGVuLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGRpZmZlcmVudCBlbXVsYXRpb24gcGF0aHMuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgYXJlOiBgc3luaWNfZ2V0YCwgYHN0aW1lcl9tYXJrX3BlbmRpbmdgLCBgc3RpbWVyX2NsZWFudXBgLCBga3ZtX2h2X3ZjcHVfaW5pdGAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBgaHZfdGxiX2ZsdXNoX2VucXVldWVgLCBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCwgYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIGBrdm1feGVuX2luaXRfdmNwdWAsIGFuZCBga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1YC4KCk5vdywgZm9yIGZ1enppbmcsIEkgd2FudCB0byBwcmlvcml0aXplIHNwZWNpZmljIHRhcmdldHMuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEkgd2FudCB0byBhdm9pZCBhbnl0aGluZyB0aGF0JiMzOTtzIHRvbyBnZW5lcmljIGxpa2UgYGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdWAgaWYgaXQmIzM5O3Mgbm90IGEgaG90LXBhdGgsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQuIEkmIzM5O20gZm9jdXNpbmcgb24gaHlwZXJjYWxsIGFuZCBpb2N0bCBoYW5kbGVycy4gYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYW5kIGBrdm1feGVuX3ZjcHVfc2V0X2F0dHJgIGFyZSBhbGwgZXhjZWxsZW50IHRhcmdldHMuICBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCBhbmQgYGt2bV9odl9hY3RpdmF0ZV9zeW5pY2AgYXJlIGxpa2VseSBhbHNvIGludGVyZXN0aW5nLiBUaGUgb3RoZXJzIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2Vzcy4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIE9idmlvdXNseSwgYEtWTWAgaXRzZWxmIGlzIHJlcXVpcmVkLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb2YgdGhlc2UgY2hhbmdlcyBhcmUgZ2F0ZWQgYmVoaW5kIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBIeXBlci1WIG9yIFhlbiBzdXBwb3J0LiBJJiMzOTtsbCBncmVwIGZvciBvcHRpb25zIGxpa2UgYEtWTV9YRU5gIG9yIGBLVk1fSFlQRVJWYCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGlzIHdpbGwgaGVscCB0YWlsb3IgZnV6emluZyBjb25maWd1cmF0aW9ucyB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIG9uIGh5cGVydmlzb3Igc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSW1tZWRpYXRlbHksIHRoZSBuYW1lcyBgS1ZNX0hZUEVSVmAgYW5kIGBLVk1fWEVOYCBqdW1wIG91dC4gVGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGluZyB0byBIeXBlci1WIGFuZCBYZW4gc3VwcG9ydCByZXNwZWN0aXZlbHksIGFuZCBpdCYjMzk7cyBsb2dpY2FsIHRvIGFzc3VtZSB0aGF0IHRoZXkgYXJlIGtleSB0byBlbmFibGluZyB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgcGxhdGZvcm0uIEnigJltIHRoaW5raW5nIHdlIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciB0aGVzZSBtb2R1bGVzIGFyZSAqZXNzZW50aWFsKiB0byB0aGlzIHNldHVwLiBUaGF0IGlzIHRvIHNheSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHRoZSBuZXh0IHF1ZXN0aW9uLiBEbyB3ZSBuZWVkIHRoZW0sIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZXMgYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY3VycmVudCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MTI9a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICYjNDM7PSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxMzprdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTQta3ZtLSQoQ09ORklHX0tWTV9YRU4pXHQmIzQzOz0geGVuLm9cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVx0JiM0Mzs9IHZteC9zZ3gub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIxOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMi1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjY9a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcdCYjNDM7PSBzdm0vc2V2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNzprdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gc3ZtL2h5cGVydi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBjb21waWxpbmcgYGh5cGVydi5vYCBhbmQgYHhlbi5vYCBkZWZpbml0ZWx5IHJlcXVpcmVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLCBidXQgYmFzZWQgb24gdGhlIHBhdGNoLCB0aG9zZSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBvbmVzLiBJdCYjMzk7cyBtb2RpZnlpbmcgYGFyY2gveDg2L2t2bS9oeXBlcnYuY2AgYW5kIGBhcmNoL3g4Ni9rdm0veGVuLmNgLCBzbyB0aGF0IGNvbmZpcm1zIGl0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoYXQgc2hvdWxkIEkgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uPyBGcm9tIHRoZSBjb250ZXh0LCBJJiMzOTt2ZSBnb3QgYSBsaXN0OiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV9odl92Y3B1X2ZsdXNoX3RsYmAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBhbmQgYGt2bV9odl92Y3B1X2luaXRgLgoKV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBzZWVpbmcgdGhhdCBga3ZtX2h2X2ZsdXNoX3RsYmAgYW5kIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgIGFyZSBoeXBlcmNhbGwgaGFuZGxlcnMuIEV4Y2VsbGVudCB0YXJnZXRzLCBhcyBleHBlY3RlZC4gQW5kIGBrdm1feGVuX3ZjcHVfc2V0X2F0dHJgIGlzIGFuIGlvY3RsIGhhbmRsZXIhIEV2ZW4gYmV0dGVyLiBUaGVzZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyB0byB0aHJvdyBzb21lIGZ1enppbmcgZGF0YSBhdC4gSSBzaG91bGQgcHJvYmFibHkgZ2l2ZSBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCBhbm90aGVyIGxvb2sgdG9vLgoKUmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRob3NlIHR3byBoeXBlcmNhbGwgaGFuZGxlcnMsIGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIHRvIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSB3aGF0IEkgdGhpbmsgdGhleSBhcmUuIFRoZXNlIGFyZSBnb2luZyB0byBiZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTk4MT1pbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjAyMy1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMDI0OnN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjUte1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMDc5LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwODA6XHRcdHRyYWNlX2t2bV9odl9mbHVzaF90bGIoZmx1c2gucHJvY2Vzc29yX21hc2ssXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjA4MS1cdFx0XHRcdCAgICAgICBmbHVzaC5hZGRyZXNzX3NwYWNlLCBmbHVzaC5mbGFncyxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjEwOS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTEwOlx0XHR0cmFjZV9rdm1faHZfZmx1c2hfdGxiX2V4KGZsdXNoX2V4Lmh2X3ZwX3NldC52YWxpZF9iYW5rX21hc2ssXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjExMS1cdFx0XHRcdFx0ICBmbHVzaF9leC5odl92cF9zZXQuZm9ybWF0LFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMTg1LVx0XHRcdCAqIHJ1bm5pbmcgb24gdGhlIHNhbWUgTDEgdkNQVSBmcm9tIHRoZSBtb21lbnQgb2YgdGhlIHJlcXVlc3QgdW50aWxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTg2Olx0XHRcdCAqIGt2bV9odl9mbHVzaF90bGIoKSByZXR1cm5zLiBUTEIgaXMgZnVsbHkgZmx1c2hlZCBpbiBhbGwgb3RoZXJcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMTg3LVx0XHRcdCAqIGNhc2VzLCBlLmcuIHdoZW4gdGhlIHRhcmdldCBMMiB2Q1BVIG1pZ3JhdGVzIHRvIGEgZGlmZmVyZW50IEwxXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI1Mzg9aW50IGt2bV9odl9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjMxLVx0XHR9XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjYzMjpcdFx0cmV0ID0ga3ZtX2h2X2ZsdXNoX3RsYih2Y3B1LCBcdTAwMjZoYyk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjYzMy1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2NDQtXHRcdH1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNjQ1Olx0XHRyZXQgPSBrdm1faHZfZmx1c2hfdGxiKHZjcHUsIFx1MDAyNmhjKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjQ2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc2NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqVHJhY2luZyB0aGUgVExCIEZsdXNoIENhbGwqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGF0IGBrdm1faHZfZmx1c2hfdGxiYCBpcyBpbmRlZWQgaW52b2tlZCB3aXRoaW4gdGhlIGBrdm1faHZfaHlwZXJjYWxsYCBmdW5jdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaG93IHRoaXMgaHlwZXJjYWxsIGlzIGJlaW5nIGhhbmRsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIG9mIGV4ZWN1dGlvbiB0byBkZXRlcm1pbmUgd2hlbiBhbmQgd2h5IHRoZSBUTEIgZmx1c2ggaXMgaGFwcGVuaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBhbnRpY2lwYXRlIHRoZSBoeXBlcmNhbGwgZGlzcGF0Y2hpbmcgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBUTEIgZmx1c2ggd2l0aGluIHRoZSBoeXBlcnZpc29yLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIGJlaGF2aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTE2MDI9c3RydWN0IGNvbXBhdF92Y3B1X3NldF9zaW5nbGVzaG90X3RpbWVyIHtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwNi1cbmFyY2gveDg2L2t2bS94ZW4uYzoxNjA3OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwOC1cdFx0XHRcdCAgaW50IHZjcHVfaWQsIHU2NCBwYXJhbSwgdTY0ICpyKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0xNjgxPWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTE3NDMtXHRjYXNlIF9fSFlQRVJWSVNPUl92Y3B1X29wOlxuYXJjaC94ODYva3ZtL3hlbi5jOjE3NDQ6XHRcdGhhbmRsZWQgPSBrdm1feGVuX2hjYWxsX3ZjcHVfb3AodmNwdSwgbG9uZ21vZGUsIHBhcmFtc1swXSwgcGFyYW1zWzFdLFxuYXJjaC94ODYva3ZtL3hlbi5jLTE3NDUtXHRcdFx0XHRcdFx0cGFyYW1zWzJdLCBcdTAwMjZyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNL1hlbiBIeXBlcmNhbGwgSW50ZXJhY3Rpb24qKgoKUmlnaHQsIHNvIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgICppcyogZGVmaW5pdGVseSBpbnZva2VkIGZyb20gYGt2bV94ZW5faHlwZXJjYWxsYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGludGVyYWN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGNsb3NlbHkgYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhdHRyaWJ1dGVzIGFyZSBzZXQgd2l0aGluIHRoaXMgd2hvbGUgaHlwZXJjYWxsIHNjaGVtZSwgYW5kIHVuZGVyc3RhbmQgaWYgdGhhdCBmdW5jdGlvbiB3aWxsIGVsdWNpZGF0ZSB0aGUgZXhhY3QgZGF0YSBwYXRocyBJJiMzOTttIGFmdGVyLiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB1bmRlcnN0YW5kaW5nIGhvdyBLVk0gaW50ZXJhY3RzIHdpdGggdGhlIFhlbiBoeXBlcnZpc29yIGF0IHRoZSB2Q1BVIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX3ZjcHVfc2V0X2F0dHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTg1Mj1pbnQga3ZtX3hlbl9odm1fZ2V0X2F0dHIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA2LVxuYXJjaC94ODYva3ZtL3hlbi5jOjkwNzppbnQga3ZtX3hlbl92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV94ZW5fdmNwdV9hdHRyICpkYXRhKVxuYXJjaC94ODYva3ZtL3hlbi5jLTkwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzY0CgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgS1ZNJiMzOTtzIGVtdWxhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBIeXBlci1WIGFuZCBYZW4gYXNwZWN0cy4gUmlnaHQsIEkgc2VlIHRoYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0LgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHRoZXkmIzM5O3JlIGZpeGluZyByYWNlcyBhbmQgaW5pdGlhbGl6YXRpb24gcHJvYmxlbXMgaW4gdGhlIHZDUFUgc3RydWN0dXJlcywgVExCIGZsdXNoaW5nLCBhbmQgdGltZXIgbWVjaGFuaXNtcy4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBjb3JlIGtlcm5lbCBhcmVhcyB0aGF0IGFyZSByZWFjaGFibGUsIHNvIGZ1enppbmcgaXMgY2VydGFpbmx5IHdhcnJhbnRlZCBoZXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgcHJlcmVxdWlzaXRlcyBjb3JyZWN0LiBJdCBsb29rcyBsaWtlIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGFyZSB0aGUgb25seSBjb25maWdzIEkgbmVlZCB0byBlbmFibGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUuIE9rYXksIGdvb2QgdG8ga25vdy4KCkkgc2hvdWxkIGFsc28gbWFrZSBhIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgaW4gbXkgZnV6emluZyBzZXR1cDogYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAsIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgLCBhbmQgYGt2bV9odl9hY3RpdmF0ZV9zeW5pY2AuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzZXQtcmVzdWx0cyBwcm9jZXNzIG1vdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OywKICAgICYjMzQ7S1ZNX1hFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9odl9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF92Y3B1X29wJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fdmNwdV9zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtrdm1faHZfdmNwdV9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX2h2X2FjdGl2YXRlX3N5bmljJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl92Y3B1X3NldF9hdHRyJiMzNDssCiAgICAmIzM0O2t2bV9odl92Y3B1X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1faHZfYWN0aXZhdGVfc3luaWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6MzUuMzg4Mjg1ODQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNjk5NDMxODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6MzUuMzg4MjkzNzkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQwNzc3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDU6NTM6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXFxuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbkBAIC0yMDYsMTQgKzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgKnN5bmljX2dldChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWM7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXG4gXFx0dmNwdSA9IGdldF92Y3B1X2J5X3ZwaWR4KGt2bSwgdnBpZHgpO1xcbi1cXHRpZiAoIXZjcHUgfHwgIXRvX2h2X3ZjcHUodmNwdSkpXFxuK1xcdGlmICghdmNwdSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XFxuLVxcdHJldHVybiAoc3luaWMtXFx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XFxuK1xcbitcXHRodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xcbitcXHRpZiAoIWh2X3ZjcHUpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0c3luaWMgPSBcXHUwMDI2aHZfdmNwdS1cXHUwMDNlc3luaWM7XFxuK1xcdHJldHVybiBSRUFEX09OQ0Uoc3luaWMtXFx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxcbkBAIC01OTMsOCArNTk5LDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXFxuIHtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKTtcXG4gXFxuLVxcdHNldF9iaXQoc3RpbWVyLVxcdTAwM2VpbmRleCxcXG4tXFx0XFx0dG9faHZfdmNwdSh2Y3B1KS1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4rXFx0c2V0X2JpdChzdGltZXItXFx1MDAzZWluZGV4LCB2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydi1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4gXFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX0hWX1NUSU1FUiwgdmNwdSk7XFxuIFxcdGlmICh2Y3B1X2tpY2spXFxuIFxcdFxcdGt2bV92Y3B1X2tpY2sodmNwdSk7XFxuQEAgLTYwOCw4ICs2MTMsNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfY2xlYW51cChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuIFxcdFxcdFxcdFxcdCAgICBzdGltZXItXFx1MDAzZWluZGV4KTtcXG4gXFxuIFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyKTtcXG4tXFx0Y2xlYXJfYml0KHN0aW1lci1cXHUwMDNlaW5kZXgsXFxuLVxcdFxcdCAgdG9faHZfdmNwdSh2Y3B1KS1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4rXFx0Y2xlYXJfYml0KHN0aW1lci1cXHUwMDNlaW5kZXgsIHZjcHUtXFx1MDAzZWFyY2guaHlwZXJ2LVxcdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xcbiBcXHRzdGltZXItXFx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XFxuIFxcdHN0aW1lci1cXHUwMDNlZXhwX3RpbWUgPSAwO1xcbiB9XFxuQEAgLTk3Miw3ICs5NzYsNiBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICghaHZfdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydiA9IGh2X3ZjcHU7XFxuIFxcdGh2X3ZjcHUtXFx1MDAzZXZjcHUgPSB2Y3B1O1xcbiBcXG4gXFx0c3luaWNfaW5pdChcXHUwMDI2aHZfdmNwdS1cXHUwMDNlc3luaWMpO1xcbkBAIC05ODgsNiArOTkxLDE0IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmh2X3ZjcHUtXFx1MDAzZXRsYl9mbHVzaF9maWZvW2ldLndyaXRlX2xvY2spO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBFbnN1cmUgdGhlIHN0cnVjdHVyZSBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgaXQncyB2aXNpYmxlIHRvXFxuK1xcdCAqIG90aGVyIHRhc2tzLCBhcyBtdWNoIG9mIHRoZSBzdGF0ZSBjYW4gYmUgbGVnYWxseSBhY2Nlc3NlZCB3aXRob3V0XFxuK1xcdCAqIGhvbGRpbmcgdmNwdS1cXHUwMDNlbXV0ZXguXFxuK1xcdCAqXFxuK1xcdCAqIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiB0b19odl92Y3B1X3NhZmUoKS5cXG4rXFx0ICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydiwgaHZfdmNwdSk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xMDAyLDcgKzEwMTMsNyBAQCBpbnQga3ZtX2h2X2FjdGl2YXRlX3N5bmljKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXMpXFxuIFxcbiBcXHRzeW5pYyA9IHRvX2h2X3N5bmljKHZjcHUpO1xcbiBcXG4tXFx0c3luaWMtXFx1MDAzZWFjdGl2ZSA9IHRydWU7XFxuK1xcdFdSSVRFX09OQ0Uoc3luaWMtXFx1MDAzZWFjdGl2ZSwgdHJ1ZSk7XFxuIFxcdHN5bmljLVxcdTAwM2Vkb250X3plcm9fc3luaWNfcGFnZXMgPSBkb250X3plcm9fc3luaWNfcGFnZXM7XFxuIFxcdHN5bmljLVxcdTAwM2Vjb250cm9sID0gSFZfU1lOSUNfQ09OVFJPTF9FTkFCTEU7XFxuIFxcdHJldHVybiAwO1xcbkBAIC0xOTM1LDE0ICsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjXFxuIFxcdHJldHVybiBrdm1faHZfZ2V0X2hjX2RhdGEoa3ZtLCBoYywgaGMtXFx1MDAzZXJlcF9jbnQsIGhjLVxcdTAwM2VyZXBfY250LCBlbnRyaWVzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbyxcXG4tXFx0XFx0XFx0XFx0IHU2NCAqZW50cmllcywgaW50IGNvdW50KVxcbitzdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCAqZW50cmllcywgaW50IGNvdW50LFxcbitcXHRcXHRcXHRcXHQgYm9vbCBpc19ndWVzdF9tb2RlKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XFxuIFxcdHU2NCBmbHVzaF9hbGxfZW50cnkgPSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZO1xcbiBcXG4tXFx0aWYgKCFodl92Y3B1KVxcbitcXHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odmNwdSwgaXNfZ3Vlc3RfbW9kZSk7XFxuK1xcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXFx1MDAzZXdyaXRlX2xvY2spO1xcbkBAIC0xOTcwLDE1ICsxOTgxLDE2IEBAIHN0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gaW50IGt2bV9odl92Y3B1X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcXG4tXFx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcXG4gXFx0dTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdO1xcbiBcXHRpbnQgaSwgaiwgY291bnQ7XFxuIFxcdGd2YV90IGd2YTtcXG4gXFxuLVxcdGlmICghdGRwX2VuYWJsZWQgfHwgIWh2X3ZjcHUpXFxuK1xcdGlmICghdGRwX2VuYWJsZWQpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUodmNwdSkpO1xcbitcXHRpZiAoIXRsYl9mbHVzaF9maWZvKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdGNvdW50ID0ga2ZpZm9fb3V0KFxcdTAwMjZ0bGJfZmx1c2hfZmlmby1cXHUwMDNlZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xcbiBcXG5AQCAtMjAxNyw3ICsyMDI5LDYgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuIFxcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXFx1MDAzZWt2bTtcXG4gXFx0c3RydWN0IGh2X3RsYl9mbHVzaF9leCBmbHVzaF9leDtcXG4gXFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcXG4tXFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcXG4gXFx0LypcXG4gXFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJ0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFJ1xcbiBcXHQgKiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gVGhlIGxhc3QgZW50cnksIGhvd2V2ZXIsIG5lZWRzIHRvIGJlXFxuQEAgLTIxNDQsMTEgKzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0ICogYW5hbHl6ZSBpdCBoZXJlLCBmbHVzaCBUTEIgcmVnYXJkbGVzcyBvZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3Mgc3BhY2UuXFxuIFxcdCAqL1xcbiBcXHRpZiAoYWxsX2NwdXMgXFx1MDAyNlxcdTAwMjYgIWlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG4tXFx0XFx0a3ZtX2Zvcl9lYWNoX3ZjcHUoaSwgdiwga3ZtKSB7XFxuLVxcdFxcdFxcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XFxuLVxcdFxcdFxcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cXHUwMDNlcmVwX2NudCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0a3ZtX2Zvcl9lYWNoX3ZjcHUoaSwgdiwga3ZtKVxcbitcXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQsIGZhbHNlKTtcXG4gXFxuIFxcdFxcdGt2bV9tYWtlX2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCk7XFxuIFxcdH0gZWxzZSBpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG5AQCAtMjE1OCw5ICsyMTY2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuIFxcdFxcdFxcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcXG4gXFx0XFx0XFx0aWYgKCF2KVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0XFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIGZhbHNlKTtcXG4tXFx0XFx0XFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVxcdTAwM2VyZXBfY250KTtcXG4rXFx0XFx0XFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVxcdTAwM2VyZXBfY250LCBmYWxzZSk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xcbkBAIC0yMTcwLDcgKzIxNzYsNyBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0XFx0Yml0bWFwX3plcm8odmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcXG4gXFxuIFxcdFxcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xcbi1cXHRcXHRcXHRodl92ID0gdG9faHZfdmNwdSh2KTtcXG4rXFx0XFx0XFx0aHZfdiA9IHRvX2h2X3ZjcHVfc2FmZSh2KTtcXG4gXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFRoZSBmb2xsb3dpbmcgY2hlY2sgcmFjZXMgd2l0aCBuZXN0ZWQgdkNQVXMgZW50ZXJpbmcvZXhpdGluZ1xcbkBAIC0yMTkxLDkgKzIxOTcsNyBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTtcXG4tXFx0XFx0XFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIHRydWUpO1xcbi1cXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZmlmbyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQpO1xcbitcXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5oIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjM3YTBiY2YwM2UyODE2IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxcbkBAIC02Miw4ICs2MiwyMiBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1faHYgKnRvX2t2bV9odihzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdHJldHVybiBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmh5cGVydjtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogRW5zdXJlIHRoZSBIeXBlclYgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIHdoZW4gYWNjZXNzaW5nIGl0XFxuK1xcdCAqIHdpdGhvdXQgaG9sZGluZyB2Y3B1LVxcdTAwM2VtdXRleCAob3Igc29tZSBvdGhlciBndWFyYW50ZWUgdGhhdCBLVk0gY2FuJ3RcXG4rXFx0ICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLlxcbitcXHQgKlxcbitcXHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGt2bV9odl92Y3B1X2luaXQoKS5cXG4rXFx0ICovXFxuK1xcdHJldHVybiBzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbitcXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XFxuK1xcbiBcXHRyZXR1cm4gdmNwdS1cXHUwMDNlYXJjaC5oeXBlcnY7XFxuIH1cXG4gXFxuQEAgLTg4LDcgKzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcbiBzdGF0aWMgaW5saW5lIHUzMiBrdm1faHZfZ2V0X3ZwaW5kZXgoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcXG4gXFxuIFxcdHJldHVybiBodl92Y3B1ID8gaHZfdmNwdS1cXHUwMDNldnBfaW5kZXggOiB2Y3B1LVxcdTAwM2V2Y3B1X2lkeDtcXG4gfVxcbkBAIC0xNDIsNyArMTU2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHUgKmh2X3N0aW1lcl90b192Y3B1KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faHZfaGFzX3N0aW1lcl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XFxuIFxcbiBcXHRpZiAoIWh2X3ZjcHUpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTk4LDEwICsyMTIsMTMgQEAgaW50IGt2bV9nZXRfaHZfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2NwdWlkMiAqY3B1aWQsXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICprdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgYm9vbCBpc19ndWVzdF9tb2RlKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcXG4gXFx0aW50IGkgPSBpc19ndWVzdF9tb2RlID8gSFZfTDJfVExCX0ZMVVNIX0ZJRk8gOlxcbiBcXHRcXHRcXHRcXHRIVl9MMV9UTEJfRkxVU0hfRklGTztcXG4gXFxuK1xcdGlmICghaHZfdmNwdSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbiBcXHRyZXR1cm4gXFx1MDAyNmh2X3ZjcHUtXFx1MDAzZXRsYl9mbHVzaF9maWZvW2ldO1xcbiB9XFxuIFxcbkBAIC0yMDksMTAgKzIyNiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2h2X3ZjcHVfcHVyZ2VfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvO1xcbiBcXG4tXFx0aWYgKCF0b19odl92Y3B1KHZjcHUpIHx8ICFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpXFxuK1xcdGlmICgha3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9UTEJfRkxVU0gsIHZjcHUpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odmNwdSwgaXNfZ3Vlc3RfbW9kZSh2Y3B1KSk7XFxuK1xcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGtmaWZvX3Jlc2V0X291dChcXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXFx1MDAzZWVudHJpZXMpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXFxuaW5kZXggNmQ2Y2Q1OTA0ZGRmNjYuLmM2ZGU4NDhiZDljZWQ1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXFxuQEAgLTU3LDE2ICs1NywxNCBAQCBib29sIG5lc3RlZF92bXhfY2hlY2tfaW9fYml0bWFwcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBwb3J0LFxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1jczEyICpnZXRfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2dmNwdS1cXHUwMDNlbXV0ZXgpIHx8XFxuLVxcdFxcdFxcdCAgICAhcmVmY291bnRfcmVhZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2V1c2Vyc19jb3VudCkpO1xcbitcXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XFxuIFxcbiBcXHRyZXR1cm4gdG9fdm14KHZjcHUpLVxcdTAwM2VuZXN0ZWQuY2FjaGVkX3ZtY3MxMjtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1jczEyICpnZXRfc2hhZG93X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KSB8fFxcbi1cXHRcXHRcXHQgICAgIXJlZmNvdW50X3JlYWQoXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNldXNlcnNfY291bnQpKTtcXG4rXFx0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xcbiBcXG4gXFx0cmV0dXJuIHRvX3ZteCh2Y3B1KS1cXHUwMDNlbmVzdGVkLmNhY2hlZF9zaGFkb3dfdm1jczEyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi5lZWYzNzhkMGJiNDU1NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjeGVuL2ludGVyZmFjZS92ZXJzaW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2N4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3hlbi9pbnRlcmZhY2Uvc2NoZWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3hlbi94ZW4tb3BzLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3hlbi9jcHVpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3B2Y2xvY2suaFxcdTAwM2VcXG5AQCAtMTEwMyw2ICsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDpcXG4rXFx0XFx0QlVJTERfQlVHX09OKFhFTl9WQ1BVX0lEX0lOVkFMSUQgXFx1MDAzYyBLVk1fTUFYX1ZDUFVTKTtcXG4rXFxuIFxcdFxcdGlmIChkYXRhLVxcdTAwM2V1LnZjcHVfaWQgXFx1MDAzZT0gS1ZNX01BWF9WQ1BVUylcXG4gXFx0XFx0XFx0ciA9IC1FSU5WQUw7XFxuIFxcdFxcdGVsc2Uge1xcbkBAIC0xNjA3LDE2ICsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXFxuIFxcdHN0cnVjdCB2Y3B1X3NldF9zaW5nbGVzaG90X3RpbWVyIG9uZXNob3Q7XFxuIFxcdHN0cnVjdCB4ODZfZXhjZXB0aW9uIGU7XFxuIFxcbitcXHRpZiAoY21kICE9IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY21kICE9IFZDUFVPUF9zdG9wX3NpbmdsZXNob3RfdGltZXIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdGlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRzd2l0Y2ggKGNtZCkge1xcbi1cXHRjYXNlIFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcjpcXG4tXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbi1cXHRcXHRcXHQqciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHR9XFxuK1xcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X2lkID09IFhFTl9WQ1BVX0lEX0lOVkFMSUQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFJlamVjdCB0aGUgaHlwZXJjYWxsIGlmIHRoZSBndWVzdCBpcyB0cnlpbmcgdG8gc3RhcnQvc3RvcCB0aGUgdGltZXJcXG4rXFx0ICogZm9yIGEgZGlmZmVyZW50IHZDUFUuICBYZW4gcGVyLXZDUFUgaHlwZXJjYWxscyB0YWtlIGEgdGFyZ2V0IHZDUFUgYXNcXG4rXFx0ICogYSBjb21tb24gcGFyYW1ldGVyLCBhcyBhbGwgcGVyLXZDUFUgaHlwZXJjYWxscyAqZXhjZXB0KiBzaW5nbGUtc2hvdFxcbitcXHQgKiB0aW1lciB1cGRhdGVzIGNhbiBiZSBjcm9zcy12Q1BVLlxcbitcXHQgKi9cXG4rXFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbitcXHRcXHQqciA9IC1FSU5WQUw7XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuIFxcbitcXHRpZiAoY21kID09IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcikge1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBUaGUgb25seSBkaWZmZXJlbmNlIGZvciAzMi1iaXQgY29tcGF0IGlzIHRoZSA0IGJ5dGVzIG9mXFxuIFxcdFxcdCAqIHBhZGRpbmcgYWZ0ZXIgdGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlIHN0cnVjdHVyZS4gU29cXG5AQCAtMTY0MCwyMCArMTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRrdm1feGVuX3N0YXJ0X3RpbWVyKHZjcHUsIG9uZXNob3QudGltZW91dF9hYnNfbnMsIGZhbHNlKTtcXG4tXFx0XFx0KnIgPSAwO1xcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdGNhc2UgVkNQVU9QX3N0b3Bfc2luZ2xlc2hvdF90aW1lcjpcXG4tXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbi1cXHRcXHRcXHQqciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuIFxcdFxcdGt2bV94ZW5fc3RvcF90aW1lcih2Y3B1KTtcXG4tXFx0XFx0KnIgPSAwO1xcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIGZhbHNlO1xcbitcXHQqciA9IDA7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3NldF90aW1lcl9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVpbnQ2NF90IHRpbWVvdXQsXFxuQEAgLTIyOTksNyArMjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcXG4gXFxuIHZvaWQga3ZtX3hlbl9pbml0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVxcdTAwM2V2Y3B1X2lkeDtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7XFxuIFxcdHZjcHUtXFx1MDAzZWFyY2gueGVuLnBvbGxfZXZ0Y2huID0gMDtcXG4gXFxuIFxcdHRpbWVyX3NldHVwKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcXG5pbmRleCBhYjhjZmFlYzgyZDMxZS4uMGJkZmEzNjk5MzUyN2UgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuQEAgLTk4OSw2ICs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KVxcbiBcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spKTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIGt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KSB8fFxcbitcXHRcXHRcXHQgICAgdmNwdS1cXHUwMDNldmNwdV9pZHggXFx1MDAzYyAwIHx8XFxuK1xcdFxcdFxcdCAgICAhcmVmY291bnRfcmVhZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2V1c2Vyc19jb3VudCkpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqa3ZtX2dldF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGkpXFxuIHtcXG4gXFx0aW50IG51bV92Y3B1cyA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm0tXFx1MDAzZW9ubGluZV92Y3B1cyk7XFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjA1Mjc1ZDMxOGJmYmM3IDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuQEAgLTQxODgsNiArNDE4OCw4IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcXG4gXFx0XFx0Z290byB2Y3B1X2RlY3JlbWVudDtcXG4gXFx0fVxcbiBcXG4rXFx0dmNwdS1cXHUwMDNldmNwdV9pZHggPSAtMTtcXG4rXFxuIFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGt2bV9ydW4pIFxcdTAwM2UgUEFHRV9TSVpFKTtcXG4gXFx0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XFxuIFxcdGlmICghcGFnZSkge1xcbkBAIC00MjE2LDYgKzQyMTgsMTEgQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxcbiBcXHRcXHRnb3RvIHVubG9ja192Y3B1X2Rlc3Ryb3k7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFNldCB0aGUgdkNQVSdzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy5cXG4rXFx0ICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXhcXG4rXFx0ICogdG8gZGV0ZWN0IHRoYXQgdGhlIHZDUFUgaXMgdW5yZWFjaGFibGUsIGUuZy4gZm9yIGxvY2tkZXAgYXNzZXJ0cy5cXG4rXFx0ICovXFxuIFxcdHZjcHUtXFx1MDAzZXZjcHVfaWR4ID0gYXRvbWljX3JlYWQoXFx1MDAyNmt2bS1cXHUwMDNlb25saW5lX3ZjcHVzKTtcXG4gXFx0ciA9IHhhX2luc2VydChcXHUwMDI2a3ZtLVxcdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVxcdTAwM2V2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0V0FSTl9PTl9PTkNFKHIgPT0gLUVCVVNZKTtcXG5AQCAtNDI1NCw2ICs0MjYxLDcgQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxcbiBcXHRrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7XFxuIFxcdHhhX2VyYXNlKFxcdTAwMjZrdm0tXFx1MDAzZXZjcHVfYXJyYXksIHZjcHUtXFx1MDAzZXZjcHVfaWR4KTtcXG4gdW5sb2NrX3ZjcHVfZGVzdHJveTpcXG4rXFx0dmNwdS1cXHUwMDNldmNwdV9pZHggPSAtMTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWxvY2spO1xcbiBcXHRrdm1fZGlydHlfcmluZ19mcmVlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VkaXJ0eV9yaW5nKTtcXG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjM1Ljc2MzM3MDc1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5OTQ4NDg3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNTo1MzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbkBAIC0yMDYsMTQgKzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcbiBcbiBzdGF0aWMgc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljICpzeW5pY19nZXQoc3RydWN0IGt2bSAqa3ZtLCB1MzIgdnBpZHgpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljICpzeW5pYztcbitcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdTtcbitcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdHZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTtcbi1cdGlmICghdmNwdSB8fCAhdG9faHZfdmNwdSh2Y3B1KSlcbitcdGlmICghdmNwdSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRzeW5pYyA9IHRvX2h2X3N5bmljKHZjcHUpO1xuLVx0cmV0dXJuIChzeW5pYy1cdTAwM2VhY3RpdmUpID8gc3luaWMgOiBOVUxMO1xuK1xuK1x0aHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcbitcdGlmICghaHZfdmNwdSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRzeW5pYyA9IFx1MDAyNmh2X3ZjcHUtXHUwMDNlc3luaWM7XG4rXHRyZXR1cm4gUkVBRF9PTkNFKHN5bmljLVx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxuQEAgLTU5Myw4ICs1OTksNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBodl9zdGltZXJfdG9fdmNwdShzdGltZXIpO1xuIFxuLVx0c2V0X2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdHRvX2h2X3ZjcHUodmNwdSktXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcbitcdHNldF9iaXQoc3RpbWVyLVx1MDAzZWluZGV4LCB2Y3B1LVx1MDAzZWFyY2guaHlwZXJ2LVx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XG4gXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTtcbiBcdGlmICh2Y3B1X2tpY2spXG4gXHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG5AQCAtNjA4LDggKzYxMyw3IEBAIHN0YXRpYyB2b2lkIHN0aW1lcl9jbGVhbnVwKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdCAgICBzdGltZXItXHUwMDNlaW5kZXgpO1xuIFxuIFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyKTtcbi1cdGNsZWFyX2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdCAgdG9faHZfdmNwdSh2Y3B1KS1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuK1x0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0c3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSAwO1xuIH1cbkBAIC05NzIsNyArOTc2LDYgQEAgaW50IGt2bV9odl92Y3B1X2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFodl92Y3B1KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5oeXBlcnYgPSBodl92Y3B1O1xuIFx0aHZfdmNwdS1cdTAwM2V2Y3B1ID0gdmNwdTtcbiBcbiBcdHN5bmljX2luaXQoXHUwMDI2aHZfdmNwdS1cdTAwM2VzeW5pYyk7XG5AQCAtOTg4LDYgKzk5MSwxNCBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmh2X3ZjcHUtXHUwMDNldGxiX2ZsdXNoX2ZpZm9baV0ud3JpdGVfbG9jayk7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogRW5zdXJlIHRoZSBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGl0J3MgdmlzaWJsZSB0b1xuK1x0ICogb3RoZXIgdGFza3MsIGFzIG11Y2ggb2YgdGhlIHN0YXRlIGNhbiBiZSBsZWdhbGx5IGFjY2Vzc2VkIHdpdGhvdXRcbitcdCAqIGhvbGRpbmcgdmNwdS1cdTAwM2VtdXRleC5cbitcdCAqXG4rXHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gdG9faHZfdmNwdV9zYWZlKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5oeXBlcnYsIGh2X3ZjcHUpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEwMDIsNyArMTAxMyw3IEBAIGludCBrdm1faHZfYWN0aXZhdGVfc3luaWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGRvbnRfemVyb19zeW5pY19wYWdlcylcbiBcbiBcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XG4gXG4tXHRzeW5pYy1cdTAwM2VhY3RpdmUgPSB0cnVlO1xuK1x0V1JJVEVfT05DRShzeW5pYy1cdTAwM2VhY3RpdmUsIHRydWUpO1xuIFx0c3luaWMtXHUwMDNlZG9udF96ZXJvX3N5bmljX3BhZ2VzID0gZG9udF96ZXJvX3N5bmljX3BhZ2VzO1xuIFx0c3luaWMtXHUwMDNlY29udHJvbCA9IEhWX1NZTklDX0NPTlRST0xfRU5BQkxFO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTkzNSwxNCArMTk0NiwxNCBAQCBzdGF0aWMgaW50IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2VudHJpZXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoY1xuIFx0cmV0dXJuIGt2bV9odl9nZXRfaGNfZGF0YShrdm0sIGhjLCBoYy1cdTAwM2VyZXBfY250LCBoYy1cdTAwM2VyZXBfY250LCBlbnRyaWVzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLVx0XHRcdFx0IHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHQgdTY0ICplbnRyaWVzLCBpbnQgY291bnQpXG4rc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmVudHJpZXMsIGludCBjb3VudCxcbitcdFx0XHRcdCBib29sIGlzX2d1ZXN0X21vZGUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbitcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHR1NjQgZmx1c2hfYWxsX2VudHJ5ID0gS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWTtcbiBcbi1cdGlmICghaHZfdmNwdSlcbitcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4gXHRcdHJldHVybjtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2V3cml0ZV9sb2NrKTtcbkBAIC0xOTcwLDE1ICsxOTgxLDE2IEBAIHN0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBpbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvO1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiBcdHU2NCBlbnRyaWVzW0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFXTtcbiBcdGludCBpLCBqLCBjb3VudDtcbiBcdGd2YV90IGd2YTtcbiBcbi1cdGlmICghdGRwX2VuYWJsZWQgfHwgIWh2X3ZjcHUpXG4rXHRpZiAoIXRkcF9lbmFibGVkKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0Y291bnQgPSBrZmlmb19vdXQoXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNlZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xuIFxuQEAgLTIwMTcsNyArMjAyOSw2IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG4gXHRzdHJ1Y3QgaHZfdGxiX2ZsdXNoX2V4IGZsdXNoX2V4O1xuIFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHQvKlxuIFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJ0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFJ1xuIFx0ICogZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIFRoZSBsYXN0IGVudHJ5LCBob3dldmVyLCBuZWVkcyB0byBiZVxuQEAgLTIxNDQsMTEgKzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcbiBcdCAqIGFuYWx5emUgaXQgaGVyZSwgZmx1c2ggVExCIHJlZ2FyZGxlc3Mgb2YgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHNwYWNlLlxuIFx0ICovXG4gXHRpZiAoYWxsX2NwdXMgXHUwMDI2XHUwMDI2ICFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG4tXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuLVx0XHR9XG4rXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSlcbitcdFx0XHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXHUwMDNlcmVwX2NudCwgZmFsc2UpO1xuIFxuIFx0XHRrdm1fbWFrZV9hbGxfY3B1c19yZXF1ZXN0KGt2bSwgS1ZNX1JFUV9IVl9UTEJfRkxVU0gpO1xuIFx0fSBlbHNlIGlmICghaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkge1xuQEAgLTIxNTgsOSArMjE2Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcbiBcdFx0XHRpZiAoIXYpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbitcdFx0XHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXHUwMDNlcmVwX2NudCwgZmFsc2UpO1xuIFx0XHR9XG4gXG4gXHRcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xuQEAgLTIxNzAsNyArMjE3Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRiaXRtYXBfemVybyh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuIFxuIFx0XHRrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pIHtcbi1cdFx0XHRodl92ID0gdG9faHZfdmNwdSh2KTtcbitcdFx0XHRodl92ID0gdG9faHZfdmNwdV9zYWZlKHYpO1xuIFxuIFx0XHRcdC8qXG4gXHRcdFx0ICogVGhlIGZvbGxvd2luZyBjaGVjayByYWNlcyB3aXRoIG5lc3RlZCB2Q1BVcyBlbnRlcmluZy9leGl0aW5nXG5AQCAtMjE5MSw5ICsyMTk3LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgdHJ1ZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuK1x0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250LCB0cnVlKTtcbiBcdFx0fVxuIFxuIFx0XHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi4zN2EwYmNmMDNlMjgxNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtNjIsOCArNjIsMjIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2h2ICp0b19rdm1faHYoc3RydWN0IGt2bSAqa3ZtKVxuIFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmh5cGVydjtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0LypcbitcdCAqIEVuc3VyZSB0aGUgSHlwZXJWIHN0cnVjdHVyZSBpcyBmdWxseSBpbml0aWFsaXplZCB3aGVuIGFjY2Vzc2luZyBpdFxuK1x0ICogd2l0aG91dCBob2xkaW5nIHZjcHUtXHUwMDNlbXV0ZXggKG9yIHNvbWUgb3RoZXIgZ3VhcmFudGVlIHRoYXQgS1ZNIGNhbid0XG4rXHQgKiBjb25jdXJyZW50bHkgaW5zdGFudGlhdGUgdGhlIHN0cnVjdHVyZSkuXG4rXHQgKlxuK1x0ICogUGFpcnMgd2l0aCB0aGUgc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1faHZfdmNwdV9pbml0KCkuXG4rXHQgKi9cbitcdHJldHVybiBzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5oeXBlcnYpO1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odiAqdG9faHZfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuK1x0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xuK1xuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5oeXBlcnY7XG4gfVxuIFxuQEAgLTg4LDcgKzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gc3RhdGljIGlubGluZSB1MzIga3ZtX2h2X2dldF92cGluZGV4KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xuIFxuIFx0cmV0dXJuIGh2X3ZjcHUgPyBodl92Y3B1LVx1MDAzZXZwX2luZGV4IDogdmNwdS1cdTAwM2V2Y3B1X2lkeDtcbiB9XG5AQCAtMTQyLDcgKzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpodl9zdGltZXJfdG9fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltXG4gXG4gc3RhdGljIGlubGluZSBib29sIGt2bV9odl9oYXNfc3RpbWVyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXG4gXHRpZiAoIWh2X3ZjcHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0xOTgsMTAgKzIxMiwxMyBAQCBpbnQga3ZtX2dldF9odl9jcHVpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1aWQyICpjcHVpZCxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqa3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0XHRcdFx0XHRcdFx0ICAgYm9vbCBpc19ndWVzdF9tb2RlKVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXHRpbnQgaSA9IGlzX2d1ZXN0X21vZGUgPyBIVl9MMl9UTEJfRkxVU0hfRklGTyA6XG4gXHRcdFx0XHRIVl9MMV9UTEJfRkxVU0hfRklGTztcbiBcbitcdGlmICghaHZfdmNwdSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRyZXR1cm4gXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXTtcbiB9XG4gXG5AQCAtMjA5LDEwICsyMjYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGt2bV9odl92Y3B1X3B1cmdlX2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcbiBcbi1cdGlmICghdG9faHZfdmNwdSh2Y3B1KSB8fCAha3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9UTEJfRkxVU0gsIHZjcHUpKVxuK1x0aWYgKCFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4rXHRcdHJldHVybjtcbiBcbiBcdGtmaWZvX3Jlc2V0X291dChcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2VlbnRyaWVzKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuaCBiL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbmluZGV4IDZkNmNkNTkwNGRkZjY2Li5jNmRlODQ4YmQ5Y2VkNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbkBAIC01NywxNiArNTcsMTQgQEAgYm9vbCBuZXN0ZWRfdm14X2NoZWNrX2lvX2JpdG1hcHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgcG9ydCxcbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF92bWNzMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdGxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKFx1MDAyNnZjcHUtXHUwMDNlbXV0ZXgpIHx8XG4tXHRcdFx0ICAgICFyZWZjb3VudF9yZWFkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZXVzZXJzX2NvdW50KSk7XG4rXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4gXG4gXHRyZXR1cm4gdG9fdm14KHZjcHUpLVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF9zaGFkb3dfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuLVx0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuK1x0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xuIFxuIFx0cmV0dXJuIHRvX3ZteCh2Y3B1KS1cdTAwM2VuZXN0ZWQuY2FjaGVkX3NoYWRvd192bWNzMTI7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xuaW5kZXggNjk0YjMxYzFmY2M5YWYuLmVlZjM3OGQwYmI0NTU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3hlbi5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbkBAIC0yMiw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjeGVuL2ludGVyZmFjZS92ZXJzaW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3hlbi9pbnRlcmZhY2Uvc2NoZWQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3hlbi94ZW4tb3BzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20veGVuL2NwdWlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcHZjbG9jay5oXHUwMDNlXG5AQCAtMTEwMyw2ICsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDpcbitcdFx0QlVJTERfQlVHX09OKFhFTl9WQ1BVX0lEX0lOVkFMSUQgXHUwMDNjIEtWTV9NQVhfVkNQVVMpO1xuK1xuIFx0XHRpZiAoZGF0YS1cdTAwM2V1LnZjcHVfaWQgXHUwMDNlPSBLVk1fTUFYX1ZDUFVTKVxuIFx0XHRcdHIgPSAtRUlOVkFMO1xuIFx0XHRlbHNlIHtcbkBAIC0xNjA3LDE2ICsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXG4gXHRzdHJ1Y3QgdmNwdV9zZXRfc2luZ2xlc2hvdF90aW1lciBvbmVzaG90O1xuIFx0c3RydWN0IHg4Nl9leGNlcHRpb24gZTtcbiBcbitcdGlmIChjbWQgIT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRpZiAoIWt2bV94ZW5fdGltZXJfZW5hYmxlZCh2Y3B1KSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0c3dpdGNoIChjbWQpIHtcbi1cdGNhc2UgVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyOlxuLVx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbi1cdFx0XHQqciA9IC1FSU5WQUw7XG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbitcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPT0gWEVOX1ZDUFVfSURfSU5WQUxJRClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0LypcbitcdCAqIFJlamVjdCB0aGUgaHlwZXJjYWxsIGlmIHRoZSBndWVzdCBpcyB0cnlpbmcgdG8gc3RhcnQvc3RvcCB0aGUgdGltZXJcbitcdCAqIGZvciBhIGRpZmZlcmVudCB2Q1BVLiAgWGVuIHBlci12Q1BVIGh5cGVyY2FsbHMgdGFrZSBhIHRhcmdldCB2Q1BVIGFzXG4rXHQgKiBhIGNvbW1vbiBwYXJhbWV0ZXIsIGFzIGFsbCBwZXItdkNQVSBoeXBlcmNhbGxzICpleGNlcHQqIHNpbmdsZS1zaG90XG4rXHQgKiB0aW1lciB1cGRhdGVzIGNhbiBiZSBjcm9zcy12Q1BVLlxuK1x0ICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbitcdFx0KnIgPSAtRUlOVkFMO1xuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbiBcbitcdGlmIChjbWQgPT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyKSB7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBvbmx5IGRpZmZlcmVuY2UgZm9yIDMyLWJpdCBjb21wYXQgaXMgdGhlIDQgYnl0ZXMgb2ZcbiBcdFx0ICogcGFkZGluZyBhZnRlciB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBTb1xuQEAgLTE2NDAsMjAgKzE2NTUsMTIgQEAgc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCxcbiBcdFx0fVxuIFxuIFx0XHRrdm1feGVuX3N0YXJ0X3RpbWVyKHZjcHUsIG9uZXNob3QudGltZW91dF9hYnNfbnMsIGZhbHNlKTtcbi1cdFx0KnIgPSAwO1xuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdGNhc2UgVkNQVU9QX3N0b3Bfc2luZ2xlc2hvdF90aW1lcjpcbi1cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pZCAhPSB2Y3B1X2lkKSB7XG4tXHRcdFx0KnIgPSAtRUlOVkFMO1xuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0XHR9XG4rXHR9IGVsc2Uge1xuIFx0XHRrdm1feGVuX3N0b3BfdGltZXIodmNwdSk7XG4tXHRcdCpyID0gMDtcbi1cdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmFsc2U7XG4rXHQqciA9IDA7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF9zZXRfdGltZXJfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1aW50NjRfdCB0aW1lb3V0LFxuQEAgLTIyOTksNyArMjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcbiB2b2lkIGt2bV94ZW5faW5pdF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuK1x0dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkID0gWEVOX1ZDUFVfSURfSU5WQUxJRDtcbiBcdHZjcHUtXHUwMDNlYXJjaC54ZW4ucG9sbF9ldnRjaG4gPSAwO1xuIFxuIFx0dGltZXJfc2V0dXAoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuaW5kZXggYWI4Y2ZhZWM4MmQzMWUuLjBiZGZhMzY5OTM1MjdlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbkBAIC05ODksNiArOTg5LDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9pb19idXMgKmt2bV9nZXRfYnVzKHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGlkeClcbiBcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jaykpO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuK1x0XHRcdCAgICB2Y3B1LVx1MDAzZXZjcHVfaWR4IFx1MDAzYyAwIHx8XG4rXHRcdFx0ICAgICFyZWZjb3VudF9yZWFkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZXVzZXJzX2NvdW50KSk7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICprdm1fZ2V0X3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBpbnQgaSlcbiB7XG4gXHRpbnQgbnVtX3ZjcHVzID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi4wNTI3NWQzMThiZmJjNyAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC00MTg4LDYgKzQxODgsOCBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRcdGdvdG8gdmNwdV9kZWNyZW1lbnQ7XG4gXHR9XG4gXG4rXHR2Y3B1LVx1MDAzZXZjcHVfaWR4ID0gLTE7XG4rXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBrdm1fcnVuKSBcdTAwM2UgUEFHRV9TSVpFKTtcbiBcdHBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pO1xuIFx0aWYgKCFwYWdlKSB7XG5AQCAtNDIxNiw2ICs0MjE4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcbiBcdFx0Z290byB1bmxvY2tfdmNwdV9kZXN0cm95O1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIFNldCB0aGUgdkNQVSdzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy5cbitcdCAqIFVud2luZCB0aGUgaW5kZXggYmFjayB0byAtMSBvbiBmYWlsdXJlIHNvIHRoYXQgS1ZNIGNhbiB1c2UgdGhlIGluZGV4XG4rXHQgKiB0byBkZXRlY3QgdGhhdCB0aGUgdkNQVSBpcyB1bnJlYWNoYWJsZSwgZS5nLiBmb3IgbG9ja2RlcCBhc3NlcnRzLlxuK1x0ICovXG4gXHR2Y3B1LVx1MDAzZXZjcHVfaWR4ID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG4gXHRyID0geGFfaW5zZXJ0KFx1MDAyNmt2bS1cdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVx1MDAzZXZjcHVfaWR4LCB2Y3B1LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0V0FSTl9PTl9PTkNFKHIgPT0gLUVCVVNZKTtcbkBAIC00MjU0LDYgKzQyNjEsNyBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7XG4gXHR4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNldmNwdV9hcnJheSwgdmNwdS1cdTAwM2V2Y3B1X2lkeCk7XG4gdW5sb2NrX3ZjcHVfZGVzdHJveTpcbitcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4gXHRrdm1fZGlydHlfcmluZ19mcmVlKFx1MDAyNnZjcHUtXHUwMDNlZGlydHlfcmluZyk7XG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1MzozNS43NjMzNzI4NDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg2MzY2NDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBlbXVsYXRpb24gb2YgSHlwZXItViBhbmQgWGVuIG9uIHg4Niwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzLCBpbXBhY3RpbmcgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIEtWTS4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIFwiV29ydGhGdXp6aW5nPXRydWVcIiBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5UaGUgY2hhbmdlcyBhcmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHNldmVyYWwgZmlsZXM6IGBoeXBlcnYuY2AsIGBoeXBlcnYuaGAsIGBuZXN0ZWQuaGAsIGB4ZW4uY2AsIGBrdm1faG9zdC5oYCwgYW5kIGBrdm1fbWFpbi5jYC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBoaXR0aW5nIGJvdGggSHlwZXItViBhbmQgWGVuLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGRpZmZlcmVudCBlbXVsYXRpb24gcGF0aHMuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgYXJlOiBgc3luaWNfZ2V0YCwgYHN0aW1lcl9tYXJrX3BlbmRpbmdgLCBgc3RpbWVyX2NsZWFudXBgLCBga3ZtX2h2X3ZjcHVfaW5pdGAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBgaHZfdGxiX2ZsdXNoX2VucXVldWVgLCBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCwgYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIGBrdm1feGVuX2luaXRfdmNwdWAsIGFuZCBga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1YC5cblxuTm93LCBmb3IgZnV6emluZywgSSB3YW50IHRvIHByaW9yaXRpemUgc3BlY2lmaWMgdGFyZ2V0cy4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgSSB3YW50IHRvIGF2b2lkIGFueXRoaW5nIHRoYXQncyB0b28gZ2VuZXJpYyBsaWtlIGBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHVgIGlmIGl0J3Mgbm90IGEgaG90LXBhdGgsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQuIEknbSBmb2N1c2luZyBvbiBoeXBlcmNhbGwgYW5kIGlvY3RsIGhhbmRsZXJzLiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBhbmQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgYXJlIGFsbCBleGNlbGxlbnQgdGFyZ2V0cy4gIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgIGFuZCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYCBhcmUgbGlrZWx5IGFsc28gaW50ZXJlc3RpbmcuIFRoZSBvdGhlcnMgbmVlZCBtb3JlIGNvbnRleHQgdG8gYXNzZXNzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBPYnZpb3VzbHksIGBLVk1gIGl0c2VsZiBpcyByZXF1aXJlZCwgYnV0IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIGNoYW5nZXMgYXJlIGdhdGVkIGJlaGluZCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgSHlwZXItViBvciBYZW4gc3VwcG9ydC4gSSdsbCBncmVwIGZvciBvcHRpb25zIGxpa2UgYEtWTV9YRU5gIG9yIGBLVk1fSFlQRVJWYCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGlzIHdpbGwgaGVscCB0YWlsb3IgZnV6emluZyBjb25maWd1cmF0aW9ucyB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NDUuMjQ5NzQxODIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk1MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjQ1LjM4MzY5ODcyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDIxNzc3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZm9jdXMgaXMgb24gaHlwZXJ2aXNvciBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsLiBJbW1lZGlhdGVseSwgdGhlIG5hbWVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGp1bXAgb3V0LiBUaGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHJlbGF0aW5nIHRvIEh5cGVyLVYgYW5kIFhlbiBzdXBwb3J0IHJlc3BlY3RpdmVseSwgYW5kIGl0J3MgbG9naWNhbCB0byBhc3N1bWUgdGhhdCB0aGV5IGFyZSBrZXkgdG8gZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSBvbiB0aGlzIHBsYXRmb3JtLiBJ4oCZbSB0aGlua2luZyB3ZSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbW9kdWxlcyBhcmUgKmVzc2VudGlhbCogdG8gdGhpcyBzZXR1cC4gVGhhdCBpcyB0byBzYXksIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHRoZSBuZXh0IHF1ZXN0aW9uLiBEbyB3ZSBuZWVkIHRoZW0sIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZXMgYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY3VycmVudCBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzY2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NTAuMjI1ODc4NTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTg0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9IWVBFUlZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMj1rdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgKz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEzOmt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSArPSBoeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xNC1rdm0tJChDT05GSUdfS1ZNX1hFTilcXHQrPSB4ZW4ub1xcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjE6a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMi1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcXHQrPSB2bXgvdGR4Lm9cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0yNj1rdm0tYW1kLSQoQ09ORklHX0tWTV9BTURfU0VWKVxcdCs9IHN2bS9zZXYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNzprdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gc3ZtL2h5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1Mzo1MC4yODA4Njg5NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU4Njg0ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBjb21waWxpbmcgYGh5cGVydi5vYCBhbmQgYHhlbi5vYCBkZWZpbml0ZWx5IHJlcXVpcmVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YsIGJ1dCBiYXNlZCBvbiB0aGUgcGF0Y2gsIHRob3NlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIG9uZXMuIEl0J3MgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYCwgc28gdGhhdCBjb25maXJtcyBpdC5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrczogd2hhdCBzaG91bGQgSSBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24/IEZyb20gdGhlIGNvbnRleHQsIEkndmUgZ290IGEgbGlzdDogYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAsIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgLCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYCwgYW5kIGBrdm1faHZfdmNwdV9pbml0YC5cblxuV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIHNlZWluZyB0aGF0IGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAgYXJlIGh5cGVyY2FsbCBoYW5kbGVycy4gRXhjZWxsZW50IHRhcmdldHMsIGFzIGV4cGVjdGVkLiBBbmQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciEgRXZlbiBiZXR0ZXIuIFRoZXNlIGFyZSBwcmltZSBjYW5kaWRhdGVzIHRvIHRocm93IHNvbWUgZnV6emluZyBkYXRhIGF0LiBJIHNob3VsZCBwcm9iYWJseSBnaXZlIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgIGFub3RoZXIgbG9vayB0b28uXG5cblJpZ2h0LCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRob3NlIHR3byBoeXBlcmNhbGwgaGFuZGxlcnMsIGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHdoYXQgSSB0aGluayB0aGV5IGFyZS4gVGhlc2UgYXJlIGdvaW5nIHRvIGJlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMzYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NTYuMjM5NTU4MDAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzY2NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz0xOTgxPWludCBrdm1faHZfdmNwdV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjMtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwMjQ6c3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjUte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwNzktXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwODA6XFx0XFx0dHJhY2Vfa3ZtX2h2X2ZsdXNoX3RsYihmbHVzaC5wcm9jZXNzb3JfbWFzayxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjA4MS1cXHRcXHRcXHRcXHQgICAgICAgZmx1c2guYWRkcmVzc19zcGFjZSwgZmx1c2guZmxhZ3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjEwOS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjExMDpcXHRcXHR0cmFjZV9rdm1faHZfZmx1c2hfdGxiX2V4KGZsdXNoX2V4Lmh2X3ZwX3NldC52YWxpZF9iYW5rX21hc2ssXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIxMTEtXFx0XFx0XFx0XFx0XFx0ICBmbHVzaF9leC5odl92cF9zZXQuZm9ybWF0LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIxODUtXFx0XFx0XFx0ICogcnVubmluZyBvbiB0aGUgc2FtZSBMMSB2Q1BVIGZyb20gdGhlIG1vbWVudCBvZiB0aGUgcmVxdWVzdCB1bnRpbFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTg2OlxcdFxcdFxcdCAqIGt2bV9odl9mbHVzaF90bGIoKSByZXR1cm5zLiBUTEIgaXMgZnVsbHkgZmx1c2hlZCBpbiBhbGwgb3RoZXJcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjE4Ny1cXHRcXHRcXHQgKiBjYXNlcywgZS5nLiB3aGVuIHRoZSB0YXJnZXQgTDIgdkNQVSBtaWdyYXRlcyB0byBhIGRpZmZlcmVudCBMMVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI1Mzg9aW50IGt2bV9odl9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2MzEtXFx0XFx0fVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNjMyOlxcdFxcdHJldCA9IGt2bV9odl9mbHVzaF90bGIodmNwdSwgXFx1MDAyNmhjKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjYzMy1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjQ0LVxcdFxcdH1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjY0NTpcXHRcXHRyZXQgPSBrdm1faHZfZmx1c2hfdGxiKHZjcHUsIFxcdTAwMjZoYyk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2NDYtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjU2LjI5NzMyOTUxNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Nzc3ODUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqVHJhY2luZyB0aGUgVExCIEZsdXNoIENhbGwqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBiZWxpZXZlIHRoYXQgYGt2bV9odl9mbHVzaF90bGJgIGlzIGluZGVlZCBpbnZva2VkIHdpdGhpbiB0aGUgYGt2bV9odl9oeXBlcmNhbGxgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBob3cgdGhpcyBoeXBlcmNhbGwgaXMgYmVpbmcgaGFuZGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGggb2YgZXhlY3V0aW9uIHRvIGRldGVybWluZSB3aGVuIGFuZCB3aHkgdGhlIFRMQiBmbHVzaCBpcyBoYXBwZW5pbmcuIEknbGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLiBUaGF0J3Mgd2hlcmUgSSBhbnRpY2lwYXRlIHRoZSBoeXBlcmNhbGwgZGlzcGF0Y2hpbmcgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBUTEIgZmx1c2ggd2l0aGluIHRoZSBoeXBlcnZpc29yLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIGJlaGF2aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc2NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjU5Ljc3NTExNjcwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4NzM3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9oY2FsbF92Y3B1X29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veGVuLmM9MTYwMj1zdHJ1Y3QgY29tcGF0X3ZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIge1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTE2MDYtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE2MDc6c3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwOC1cXHRcXHRcXHRcXHQgIGludCB2Y3B1X2lkLCB1NjQgcGFyYW0sIHU2NCAqcilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xNjgxPWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTc0My1cXHRjYXNlIF9fSFlQRVJWSVNPUl92Y3B1X29wOlxcbmFyY2gveDg2L2t2bS94ZW4uYzoxNzQ0OlxcdFxcdGhhbmRsZWQgPSBrdm1feGVuX2hjYWxsX3ZjcHVfb3AodmNwdSwgbG9uZ21vZGUsIHBhcmFtc1swXSwgcGFyYW1zWzFdLFxcbmFyY2gveDg2L2t2bS94ZW4uYy0xNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdHBhcmFtc1syXSwgXFx1MDAyNnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1Mzo1OS44MzA5OTY1MDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwOTk0MzI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNL1hlbiBIeXBlcmNhbGwgSW50ZXJhY3Rpb24qKlxuXG5SaWdodCwgc28gYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAgKmlzKiBkZWZpbml0ZWx5IGludm9rZWQgZnJvbSBga3ZtX3hlbl9oeXBlcmNhbGxgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5Ob3csIEknbSB0aGlua2luZyBJIHNob3VsZCBsb29rIGNsb3NlbHkgYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhdHRyaWJ1dGVzIGFyZSBzZXQgd2l0aGluIHRoaXMgd2hvbGUgaHlwZXJjYWxsIHNjaGVtZSwgYW5kIHVuZGVyc3RhbmQgaWYgdGhhdCBmdW5jdGlvbiB3aWxsIGVsdWNpZGF0ZSB0aGUgZXhhY3QgZGF0YSBwYXRocyBJJ20gYWZ0ZXIuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHVuZGVyc3RhbmRpbmcgaG93IEtWTSBpbnRlcmFjdHMgd2l0aCB0aGUgWGVuIGh5cGVydmlzb3IgYXQgdGhlIHZDUFUgbGV2ZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzQ1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTQ6MDIuODQwOTQyNjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjMwMDI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1feGVuX3ZjcHVfc2V0X2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3hlbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz04NTI9aW50IGt2bV94ZW5faHZtX2dldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA2LVxcbmFyY2gveDg2L2t2bS94ZW4uYzo5MDc6aW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTQ6MDIuODk3MjQ5MDk0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODAyNzg2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIEtWTSdzIGVtdWxhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBIeXBlci1WIGFuZCBYZW4gYXNwZWN0cy4gUmlnaHQsIEkgc2VlIHRoYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciDigJMgdGhhdCdzIGRlZmluaXRlbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHRoZXkncmUgZml4aW5nIHJhY2VzIGFuZCBpbml0aWFsaXphdGlvbiBwcm9ibGVtcyBpbiB0aGUgdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lciBtZWNoYW5pc21zLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGNvcmUga2VybmVsIGFyZWFzIHRoYXQgYXJlIHJlYWNoYWJsZSwgc28gZnV6emluZyBpcyBjZXJ0YWlubHkgd2FycmFudGVkIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgcHJlcmVxdWlzaXRlcyBjb3JyZWN0LiBJdCBsb29rcyBsaWtlIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGFyZSB0aGUgb25seSBjb25maWdzIEkgbmVlZCB0byBlbmFibGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUuIE9rYXksIGdvb2QgdG8ga25vdy5cblxuSSBzaG91bGQgYWxzbyBtYWtlIGEgbm90ZSBvZiB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIHRhcmdldCBpbiBteSBmdXp6aW5nIHNldHVwOiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV9odl92Y3B1X2ZsdXNoX3RsYmAsIGFuZCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdHMgcHJvY2VzcyBtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzY0LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1NDowOC42Nzc1Mjk2MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY4NTcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCIsXG4gICAgXCJLVk1fWEVOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X2ZsdXNoX3RsYlwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF92Y3B1X29wXCIsXG4gICAgXCJrdm1feGVuX3ZjcHVfc2V0X2F0dHJcIixcbiAgICBcImt2bV9odl92Y3B1X2ZsdXNoX3RsYlwiLFxuICAgIFwia3ZtX2h2X2FjdGl2YXRlX3N5bmljXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 05:47:33 +0000 UTC FinishedAt: 2026-07-01 05:54:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV", "KVM_XEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV", "KVM_XEN" ], "series_id": "d1944d2d-d2ab-40b6-80dd-a684ffec97b8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_hv_flush_tlb", "kvm_xen_hcall_vcpu_op", "kvm_xen_vcpu_set_attr", "kvm_hv_vcpu_flush_tlb", "kvm_hv_activate_synic" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "60fac5d8-1296-4ec7-a8e3-40f561d007e9" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OywKICAgICYjMzQ7S1ZNX1hFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9odl9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF92Y3B1X29wJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fdmNwdV9zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtrdm1faHZfdmNwdV9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX2h2X2FjdGl2YXRlX3N5bmljJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ2MTA3ZjAxOTcyMmEyN2VlMTkzZjVjODI1MTVhYTU1NDVjYmFhOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDA1OjUzOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbkBAIC0yMDYsMTQgJiM0MzsyMDYsMjAgQEAgc3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqZ2V0X3ZjcHVfYnlfdnBpZHgoc3RydWN0IGt2bSAqa3ZtLCB1MzIgdnBpZHgpXG4gXG4gc3RhdGljIHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWNfZ2V0KHN0cnVjdCBrdm0gKmt2bSwgdTMyIHZwaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWM7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1O1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdHZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTtcbi1cdGlmICghdmNwdSB8fCAhdG9faHZfdmNwdSh2Y3B1KSlcbiYjNDM7XHRpZiAoIXZjcHUpXG4gXHRcdHJldHVybiBOVUxMO1xuLVx0c3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTtcbi1cdHJldHVybiAoc3luaWMtXHUwMDNlYWN0aXZlKSA/IHN5bmljIDogTlVMTDtcbiYjNDM7XG4mIzQzO1x0aHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcbiYjNDM7XHRpZiAoIWh2X3ZjcHUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4mIzQzO1x0c3luaWMgPSBcdTAwMjZodl92Y3B1LVx1MDAzZXN5bmljO1xuJiM0MztcdHJldHVybiBSRUFEX09OQ0Uoc3luaWMtXHUwMDNlYWN0aXZlKSA/IHN5bmljIDogTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQga3ZtX2h2X25vdGlmeV9hY2tlZF9zaW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIHNpbnQpXG5AQCAtNTkzLDggJiM0Mzs1OTksNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBodl9zdGltZXJfdG9fdmNwdShzdGltZXIpO1xuIFxuLVx0c2V0X2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdHRvX2h2X3ZjcHUodmNwdSktXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcbiYjNDM7XHRzZXRfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX0hWX1NUSU1FUiwgdmNwdSk7XG4gXHRpZiAodmNwdV9raWNrKVxuIFx0XHRrdm1fdmNwdV9raWNrKHZjcHUpO1xuQEAgLTYwOCw4ICYjNDM7NjEzLDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX2NsZWFudXAoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuIFx0XHRcdFx0ICAgIHN0aW1lci1cdTAwM2VpbmRleCk7XG4gXG4gXHRocnRpbWVyX2NhbmNlbChcdTAwMjZzdGltZXItXHUwMDNldGltZXIpO1xuLVx0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCxcbi1cdFx0ICB0b19odl92Y3B1KHZjcHUpLVx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XG4mIzQzO1x0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0c3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSAwO1xuIH1cbkBAIC05NzIsNyAmIzQzOzk3Niw2IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmICghaHZfdmNwdSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHR2Y3B1LVx1MDAzZWFyY2guaHlwZXJ2ID0gaHZfdmNwdTtcbiBcdGh2X3ZjcHUtXHUwMDNldmNwdSA9IHZjcHU7XG4gXG4gXHRzeW5pY19pbml0KFx1MDAyNmh2X3ZjcHUtXHUwMDNlc3luaWMpO1xuQEAgLTk4OCw2ICYjNDM7OTkxLDE0IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXS53cml0ZV9sb2NrKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEVuc3VyZSB0aGUgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBpdCYjMzk7cyB2aXNpYmxlIHRvXG4mIzQzO1x0ICogb3RoZXIgdGFza3MsIGFzIG11Y2ggb2YgdGhlIHN0YXRlIGNhbiBiZSBsZWdhbGx5IGFjY2Vzc2VkIHdpdGhvdXRcbiYjNDM7XHQgKiBob2xkaW5nIHZjcHUtXHUwMDNlbXV0ZXguXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gdG9faHZfdmNwdV9zYWZlKCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmh5cGVydiwgaHZfdmNwdSk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTAwMiw3ICYjNDM7MTAxMyw3IEBAIGludCBrdm1faHZfYWN0aXZhdGVfc3luaWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGRvbnRfemVyb19zeW5pY19wYWdlcylcbiBcbiBcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XG4gXG4tXHRzeW5pYy1cdTAwM2VhY3RpdmUgPSB0cnVlO1xuJiM0MztcdFdSSVRFX09OQ0Uoc3luaWMtXHUwMDNlYWN0aXZlLCB0cnVlKTtcbiBcdHN5bmljLVx1MDAzZWRvbnRfemVyb19zeW5pY19wYWdlcyA9IGRvbnRfemVyb19zeW5pY19wYWdlcztcbiBcdHN5bmljLVx1MDAzZWNvbnRyb2wgPSBIVl9TWU5JQ19DT05UUk9MX0VOQUJMRTtcbiBcdHJldHVybiAwO1xuQEAgLTE5MzUsMTQgJiM0MzsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjXG4gXHRyZXR1cm4ga3ZtX2h2X2dldF9oY19kYXRhKGt2bSwgaGMsIGhjLVx1MDAzZXJlcF9jbnQsIGhjLVx1MDAzZXJlcF9jbnQsIGVudHJpZXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tXHRcdFx0XHQgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbyxcbi1cdFx0XHRcdCB1NjQgKmVudHJpZXMsIGludCBjb3VudClcbiYjNDM7c3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmVudHJpZXMsIGludCBjb3VudCxcbiYjNDM7XHRcdFx0XHQgYm9vbCBpc19ndWVzdF9tb2RlKVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcbiBcdHU2NCBmbHVzaF9hbGxfZW50cnkgPSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZO1xuIFxuLVx0aWYgKCFodl92Y3B1KVxuJiM0MztcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKTtcbiYjNDM7XHRpZiAoIXRsYl9mbHVzaF9maWZvKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNld3JpdGVfbG9jayk7XG5AQCAtMTk3MCwxNSAmIzQzOzE5ODEsMTYgQEAgc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIGludCBrdm1faHZfdmNwdV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xuIFx0dTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdO1xuIFx0aW50IGksIGosIGNvdW50O1xuIFx0Z3ZhX3QgZ3ZhO1xuIFxuLVx0aWYgKCF0ZHBfZW5hYmxlZCB8fCAhaHZfdmNwdSlcbiYjNDM7XHRpZiAoIXRkcF9lbmFibGVkKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbiYjNDM7XHRpZiAoIXRsYl9mbHVzaF9maWZvKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRjb3VudCA9IGtmaWZvX291dChcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2VlbnRyaWVzLCBlbnRyaWVzLCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4gXG5AQCAtMjAxNyw3ICYjNDM7MjAyOSw2IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG4gXHRzdHJ1Y3QgaHZfdGxiX2ZsdXNoX2V4IGZsdXNoX2V4O1xuIFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHQvKlxuIFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJiMzOTtLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSYjMzk7XG4gXHQgKiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gVGhlIGxhc3QgZW50cnksIGhvd2V2ZXIsIG5lZWRzIHRvIGJlXG5AQCAtMjE0NCwxMSAmIzQzOzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcbiBcdCAqIGFuYWx5emUgaXQgaGVyZSwgZmx1c2ggVExCIHJlZ2FyZGxlc3Mgb2YgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHNwYWNlLlxuIFx0ICovXG4gXHRpZiAoYWxsX2NwdXMgXHUwMDI2XHUwMDI2ICFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG4tXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuLVx0XHR9XG4mIzQzO1x0XHRrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pXG4mIzQzO1x0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250LCBmYWxzZSk7XG4gXG4gXHRcdGt2bV9tYWtlX2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCk7XG4gXHR9IGVsc2UgaWYgKCFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG5AQCAtMjE1OCw5ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcbiBcdFx0XHRpZiAoIXYpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbiYjNDM7XHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQsIGZhbHNlKTtcbiBcdFx0fVxuIFxuIFx0XHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcbkBAIC0yMTcwLDcgJiM0MzsyMTc2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXG4gXHRcdGJpdG1hcF96ZXJvKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XG4gXG4gXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdGh2X3YgPSB0b19odl92Y3B1KHYpO1xuJiM0MztcdFx0XHRodl92ID0gdG9faHZfdmNwdV9zYWZlKHYpO1xuIFxuIFx0XHRcdC8qXG4gXHRcdFx0ICogVGhlIGZvbGxvd2luZyBjaGVjayByYWNlcyB3aXRoIG5lc3RlZCB2Q1BVcyBlbnRlcmluZy9leGl0aW5nXG5AQCAtMjE5MSw5ICYjNDM7MjE5Nyw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0X19zZXRfYml0KGksIHZjcHVfbWFzayk7XG4tXHRcdFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIHRydWUpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbiYjNDM7XHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQsIHRydWUpO1xuIFx0XHR9XG4gXG4gXHRcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaCBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjM3YTBiY2YwM2UyODE2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbkBAIC02Miw4ICYjNDM7NjIsMjIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2h2ICp0b19rdm1faHYoc3RydWN0IGt2bSAqa3ZtKVxuIFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmh5cGVydjtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1X3NhZmUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuJiM0Mzt7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBFbnN1cmUgdGhlIEh5cGVyViBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBhY2Nlc3NpbmcgaXRcbiYjNDM7XHQgKiB3aXRob3V0IGhvbGRpbmcgdmNwdS1cdTAwM2VtdXRleCAob3Igc29tZSBvdGhlciBndWFyYW50ZWUgdGhhdCBLVk0gY2FuJiMzOTt0XG4mIzQzO1x0ICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogUGFpcnMgd2l0aCB0aGUgc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1faHZfdmNwdV9pbml0KCkuXG4mIzQzO1x0ICovXG4mIzQzO1x0cmV0dXJuIHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLmh5cGVydik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4mIzQzO1xuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5oeXBlcnY7XG4gfVxuIFxuQEAgLTg4LDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1faHZfc3luZGJnICp0b19odl9zeW5kYmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIHN0YXRpYyBpbmxpbmUgdTMyIGt2bV9odl9nZXRfdnBpbmRleChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXG4gXHRyZXR1cm4gaHZfdmNwdSA/IGh2X3ZjcHUtXHUwMDNldnBfaW5kZXggOiB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuIH1cbkBAIC0xNDIsNyAmIzQzOzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpodl9zdGltZXJfdG9fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltXG4gXG4gc3RhdGljIGlubGluZSBib29sIGt2bV9odl9oYXNfc3RpbWVyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4mIzQzO1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xuIFxuIFx0aWYgKCFodl92Y3B1KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTk4LDEwICYjNDM7MjEyLDEzIEBAIGludCBrdm1fZ2V0X2h2X2NwdWlkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9jcHVpZDIgKmNwdWlkLFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICprdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdFx0XHRcdFx0XHQgICBib29sIGlzX2d1ZXN0X21vZGUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXHRpbnQgaSA9IGlzX2d1ZXN0X21vZGUgPyBIVl9MMl9UTEJfRkxVU0hfRklGTyA6XG4gXHRcdFx0XHRIVl9MMV9UTEJfRkxVU0hfRklGTztcbiBcbiYjNDM7XHRpZiAoIWh2X3ZjcHUpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRyZXR1cm4gXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXTtcbiB9XG4gXG5AQCAtMjA5LDEwICYjNDM7MjI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfdmNwdV9wdXJnZV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXG4tXHRpZiAoIXRvX2h2X3ZjcHUodmNwdSkgfHwgIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSlcbiYjNDM7XHRpZiAoIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUodmNwdSkpO1xuJiM0MztcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRrZmlmb19yZXNldF9vdXQoXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNlZW50cmllcyk7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG5pbmRleCA2ZDZjZDU5MDRkZGY2Ni4uYzZkZTg0OGJkOWNlZDUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXG5AQCAtNTcsMTYgJiM0Mzs1NywxNCBAQCBib29sIG5lc3RlZF92bXhfY2hlY2tfaW9fYml0bWFwcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBwb3J0LFxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuLVx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXHUwMDI2dmNwdS1cdTAwM2VtdXRleCkgfHxcbi1cdFx0XHQgICAgIXJlZmNvdW50X3JlYWQoXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNldXNlcnNfY291bnQpKTtcbiYjNDM7XHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4gXG4gXHRyZXR1cm4gdG9fdm14KHZjcHUpLVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF9zaGFkb3dfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuLVx0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuJiM0MztcdGt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZSh2Y3B1KTtcbiBcbiBcdHJldHVybiB0b192bXgodmNwdSktXHUwMDNlbmVzdGVkLmNhY2hlZF9zaGFkb3dfdm1jczEyO1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi5lZWYzNzhkMGJiNDU1NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ZW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jXG5AQCAtMjIsNiAmIzQzOzIyLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N4ZW4vaW50ZXJmYWNlL3ZlcnNpb24uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3hlbi9pbnRlcmZhY2UvZXZlbnRfY2hhbm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjeGVuL2ludGVyZmFjZS9zY2hlZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3hlbi94ZW4tb3BzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20veGVuL2NwdWlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcHZjbG9jay5oXHUwMDNlXG5AQCAtMTEwMyw2ICYjNDM7MTEwNCw4IEBAIGludCBrdm1feGVuX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3hlbl92Y3B1X2F0dHIgKmRhdGEpXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBLVk1fWEVOX1ZDUFVfQVRUUl9UWVBFX1ZDUFVfSUQ6XG4mIzQzO1x0XHRCVUlMRF9CVUdfT04oWEVOX1ZDUFVfSURfSU5WQUxJRCBcdTAwM2MgS1ZNX01BWF9WQ1BVUyk7XG4mIzQzO1xuIFx0XHRpZiAoZGF0YS1cdTAwM2V1LnZjcHVfaWQgXHUwMDNlPSBLVk1fTUFYX1ZDUFVTKVxuIFx0XHRcdHIgPSAtRUlOVkFMO1xuIFx0XHRlbHNlIHtcbkBAIC0xNjA3LDE2ICYjNDM7MTYxMCwyOCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxuIFx0c3RydWN0IHZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIgb25lc2hvdDtcbiBcdHN0cnVjdCB4ODZfZXhjZXB0aW9uIGU7XG4gXG4mIzQzO1x0aWYgKGNtZCAhPSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdGlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRzd2l0Y2ggKGNtZCkge1xuLVx0Y2FzZSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXI6XG4tXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xuLVx0XHRcdCpyID0gLUVJTlZBTDtcbi1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi1cdFx0fVxuJiM0MztcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPT0gWEVOX1ZDUFVfSURfSU5WQUxJRClcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWplY3QgdGhlIGh5cGVyY2FsbCBpZiB0aGUgZ3Vlc3QgaXMgdHJ5aW5nIHRvIHN0YXJ0L3N0b3AgdGhlIHRpbWVyXG4mIzQzO1x0ICogZm9yIGEgZGlmZmVyZW50IHZDUFUuICBYZW4gcGVyLXZDUFUgaHlwZXJjYWxscyB0YWtlIGEgdGFyZ2V0IHZDUFUgYXNcbiYjNDM7XHQgKiBhIGNvbW1vbiBwYXJhbWV0ZXIsIGFzIGFsbCBwZXItdkNQVSBoeXBlcmNhbGxzICpleGNlcHQqIHNpbmdsZS1zaG90XG4mIzQzO1x0ICogdGltZXIgdXBkYXRlcyBjYW4gYmUgY3Jvc3MtdkNQVS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbiYjNDM7XHRcdCpyID0gLUVJTlZBTDtcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdH1cbiBcbiYjNDM7XHRpZiAoY21kID09IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcikge1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgb25seSBkaWZmZXJlbmNlIGZvciAzMi1iaXQgY29tcGF0IGlzIHRoZSA0IGJ5dGVzIG9mXG4gXHRcdCAqIHBhZGRpbmcgYWZ0ZXIgdGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlIHN0cnVjdHVyZS4gU29cbkBAIC0xNjQwLDIwICYjNDM7MTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxuIFx0XHR9XG4gXG4gXHRcdGt2bV94ZW5fc3RhcnRfdGltZXIodmNwdSwgb25lc2hvdC50aW1lb3V0X2Fic19ucywgZmFsc2UpO1xuLVx0XHQqciA9IDA7XG4tXHRcdHJldHVybiB0cnVlO1xuLVxuLVx0Y2FzZSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyOlxuLVx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbi1cdFx0XHQqciA9IC1FSU5WQUw7XG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRrdm1feGVuX3N0b3BfdGltZXIodmNwdSk7XG4tXHRcdCpyID0gMDtcbi1cdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0KnIgPSAwO1xuJiM0MztcdHJldHVybiB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3NldF90aW1lcl9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVpbnQ2NF90IHRpbWVvdXQsXG5AQCAtMjI5OSw3ICYjNDM7MjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcbiB2b2lkIGt2bV94ZW5faW5pdF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuJiM0MztcdHZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7XG4gXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnBvbGxfZXZ0Y2huID0gMDtcbiBcbiBcdHRpbWVyX3NldHVwKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4ucG9sbF90aW1lciwgY2FuY2VsX2V2dGNobl9wb2xsLCAwKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbmluZGV4IGFiOGNmYWVjODJkMzFlLi4wYmRmYTM2OTkzNTI3ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG5AQCAtOTg5LDYgJiM0Mzs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KVxuIFx0XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmt2bS1cdTAwM2VzbG90c19sb2NrKSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiYjNDM7e1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKFx1MDAyNnZjcHUtXHUwMDNlbXV0ZXgpIHx8XG4mIzQzO1x0XHRcdCAgICB2Y3B1LVx1MDAzZXZjcHVfaWR4IFx1MDAzYyAwIHx8XG4mIzQzO1x0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICprdm1fZ2V0X3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBpbnQgaSlcbiB7XG4gXHRpbnQgbnVtX3ZjcHVzID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi4wNTI3NWQzMThiZmJjNyAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC00MTg4LDYgJiM0Mzs0MTg4LDggQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxuIFx0XHRnb3RvIHZjcHVfZGVjcmVtZW50O1xuIFx0fVxuIFxuJiM0MztcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiYjNDM7XG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBrdm1fcnVuKSBcdTAwM2UgUEFHRV9TSVpFKTtcbiBcdHBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pO1xuIFx0aWYgKCFwYWdlKSB7XG5AQCAtNDIxNiw2ICYjNDM7NDIxOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRcdGdvdG8gdW5sb2NrX3ZjcHVfZGVzdHJveTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFNldCB0aGUgdkNQVSYjMzk7cyBpbmRleCAqYmVmb3JlKiB0aGUgdkNQVSBpcyByZWFjaGFibGUgYnkgb3RoZXIgdGFza3MuXG4mIzQzO1x0ICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXhcbiYjNDM7XHQgKiB0byBkZXRlY3QgdGhhdCB0aGUgdkNQVSBpcyB1bnJlYWNoYWJsZSwgZS5nLiBmb3IgbG9ja2RlcCBhc3NlcnRzLlxuJiM0MztcdCAqL1xuIFx0dmNwdS1cdTAwM2V2Y3B1X2lkeCA9IGF0b21pY19yZWFkKFx1MDAyNmt2bS1cdTAwM2VvbmxpbmVfdmNwdXMpO1xuIFx0ciA9IHhhX2luc2VydChcdTAwMjZrdm0tXHUwMDNldmNwdV9hcnJheSwgdmNwdS1cdTAwM2V2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdFdBUk5fT05fT05DRShyID09IC1FQlVTWSk7XG5AQCAtNDI1NCw2ICYjNDM7NDI2MSw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcbiBcdGt2bV9wdXRfa3ZtX25vX2Rlc3Ryb3koa3ZtKTtcbiBcdHhhX2VyYXNlKFx1MDAyNmt2bS1cdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVx1MDAzZXZjcHVfaWR4KTtcbiB1bmxvY2tfdmNwdV9kZXN0cm95OlxuJiM0MztcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4gXHRrdm1fZGlydHlfcmluZ19mcmVlKFx1MDAyNnZjcHUtXHUwMDNlZGlydHlfcmluZyk7XG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl92Y3B1X3NldF9hdHRyJiMzNDssCiAgICAmIzM0O2t2bV9odl92Y3B1X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1faHZfYWN0aXZhdGVfc3luaWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAwNTo1MzozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuYwppbmRleCAxZWUwZDIzZjg5NDk3NC4uOWQzOGNiNjQ0NjY4ZGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMKQEAgLTIwNiwxNCAmIzQzOzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeCkKIAogc3RhdGljIHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWNfZ2V0KHN0cnVjdCBrdm0gKmt2bSwgdTMyIHZwaWR4KQogewotCXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgKnN5bmljOwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHU7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKIAogCXZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTsKLQlpZiAoIXZjcHUgfHwgIXRvX2h2X3ZjcHUodmNwdSkpCiYjNDM7CWlmICghdmNwdSkKIAkJcmV0dXJuIE5VTEw7Ci0Jc3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTsKLQlyZXR1cm4gKHN5bmljLSZndDthY3RpdmUpID8gc3luaWMgOiBOVUxMOwomIzQzOwomIzQzOwlodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwomIzQzOwlpZiAoIWh2X3ZjcHUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJc3luaWMgPSAmYW1wO2h2X3ZjcHUtJmd0O3N5bmljOwomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKHN5bmljLSZndDthY3RpdmUpID8gc3luaWMgOiBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBrdm1faHZfbm90aWZ5X2Fja2VkX3NpbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgc2ludCkKQEAgLTU5Myw4ICYjNDM7NTk5LDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsCiB7CiAJc3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKTsKIAotCXNldF9iaXQoc3RpbWVyLSZndDtpbmRleCwKLQkJdG9faHZfdmNwdSh2Y3B1KS0mZ3Q7c3RpbWVyX3BlbmRpbmdfYml0bWFwKTsKJiM0MzsJc2V0X2JpdChzdGltZXItJmd0O2luZGV4LCB2Y3B1LSZndDthcmNoLmh5cGVydi0mZ3Q7c3RpbWVyX3BlbmRpbmdfYml0bWFwKTsKIAlrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTsKIAlpZiAodmNwdV9raWNrKQogCQlrdm1fdmNwdV9raWNrKHZjcHUpOwpAQCAtNjA4LDggJiM0Mzs2MTMsNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfY2xlYW51cChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpCiAJCQkJICAgIHN0aW1lci0mZ3Q7aW5kZXgpOwogCiAJaHJ0aW1lcl9jYW5jZWwoJmFtcDtzdGltZXItJmd0O3RpbWVyKTsKLQljbGVhcl9iaXQoc3RpbWVyLSZndDtpbmRleCwKLQkJICB0b19odl92Y3B1KHZjcHUpLSZndDtzdGltZXJfcGVuZGluZ19iaXRtYXApOwomIzQzOwljbGVhcl9iaXQoc3RpbWVyLSZndDtpbmRleCwgdmNwdS0mZ3Q7YXJjaC5oeXBlcnYtJmd0O3N0aW1lcl9wZW5kaW5nX2JpdG1hcCk7CiAJc3RpbWVyLSZndDttc2dfcGVuZGluZyA9IGZhbHNlOwogCXN0aW1lci0mZ3Q7ZXhwX3RpbWUgPSAwOwogfQpAQCAtOTcyLDcgJiM0Mzs5NzYsNiBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKCFodl92Y3B1KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXZjcHUtJmd0O2FyY2guaHlwZXJ2ID0gaHZfdmNwdTsKIAlodl92Y3B1LSZndDt2Y3B1ID0gdmNwdTsKIAogCXN5bmljX2luaXQoJmFtcDtodl92Y3B1LSZndDtzeW5pYyk7CkBAIC05ODgsNiAmIzQzOzk5MSwxNCBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXNwaW5fbG9ja19pbml0KCZhbXA7aHZfdmNwdS0mZ3Q7dGxiX2ZsdXNoX2ZpZm9baV0ud3JpdGVfbG9jayk7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIEVuc3VyZSB0aGUgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBpdCYjMzk7cyB2aXNpYmxlIHRvCiYjNDM7CSAqIG90aGVyIHRhc2tzLCBhcyBtdWNoIG9mIHRoZSBzdGF0ZSBjYW4gYmUgbGVnYWxseSBhY2Nlc3NlZCB3aXRob3V0CiYjNDM7CSAqIGhvbGRpbmcgdmNwdS0mZ3Q7bXV0ZXguCiYjNDM7CSAqCiYjNDM7CSAqIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiB0b19odl92Y3B1X3NhZmUoKS4KJiM0MzsJICovCiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5oeXBlcnYsIGh2X3ZjcHUpOwogCXJldHVybiAwOwogfQogCkBAIC0xMDAyLDcgJiM0MzsxMDEzLDcgQEAgaW50IGt2bV9odl9hY3RpdmF0ZV9zeW5pYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZG9udF96ZXJvX3N5bmljX3BhZ2VzKQogCiAJc3luaWMgPSB0b19odl9zeW5pYyh2Y3B1KTsKIAotCXN5bmljLSZndDthY3RpdmUgPSB0cnVlOwomIzQzOwlXUklURV9PTkNFKHN5bmljLSZndDthY3RpdmUsIHRydWUpOwogCXN5bmljLSZndDtkb250X3plcm9fc3luaWNfcGFnZXMgPSBkb250X3plcm9fc3luaWNfcGFnZXM7CiAJc3luaWMtJmd0O2NvbnRyb2wgPSBIVl9TWU5JQ19DT05UUk9MX0VOQUJMRTsKIAlyZXR1cm4gMDsKQEAgLTE5MzUsMTQgJiM0MzsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjCiAJcmV0dXJuIGt2bV9odl9nZXRfaGNfZGF0YShrdm0sIGhjLCBoYy0mZ3Q7cmVwX2NudCwgaGMtJmd0O3JlcF9jbnQsIGVudHJpZXMpOwogfQogCi1zdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCi0JCQkJIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm8sCi0JCQkJIHU2NCAqZW50cmllcywgaW50IGNvdW50KQomIzQzO3N0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICplbnRyaWVzLCBpbnQgY291bnQsCiYjNDM7CQkJCSBib29sIGlzX2d1ZXN0X21vZGUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbzsKIAl1NjQgZmx1c2hfYWxsX2VudHJ5ID0gS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWTsKIAotCWlmICghaHZfdmNwdSkKJiM0MzsJdGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUpOwomIzQzOwlpZiAoIXRsYl9mbHVzaF9maWZvKQogCQlyZXR1cm47CiAKIAlzcGluX2xvY2soJmFtcDt0bGJfZmx1c2hfZmlmby0mZ3Q7d3JpdGVfbG9jayk7CkBAIC0xOTcwLDE1ICYjNDM7MTk4MSwxNiBAQCBzdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiBpbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvOwotCXN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7CiAJdTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdOwogCWludCBpLCBqLCBjb3VudDsKIAlndmFfdCBndmE7CiAKLQlpZiAoIXRkcF9lbmFibGVkIHx8ICFodl92Y3B1KQomIzQzOwlpZiAoIXRkcF9lbmFibGVkKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTsKJiM0MzsJaWYgKCF0bGJfZmx1c2hfZmlmbykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwogCiAJY291bnQgPSBrZmlmb19vdXQoJmFtcDt0bGJfZmx1c2hfZmlmby0mZ3Q7ZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpOwogCkBAIC0yMDE3LDcgJiM0MzsyMDI5LDYgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpCiAJc3RydWN0IGt2bSAqa3ZtID0gdmNwdS0mZ3Q7a3ZtOwogCXN0cnVjdCBodl90bGJfZmx1c2hfZXggZmx1c2hfZXg7CiAJc3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDsKLQlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvOwogCS8qCiAJICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJiMzOTtLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSYjMzk7CiAJICogZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIFRoZSBsYXN0IGVudHJ5LCBob3dldmVyLCBuZWVkcyB0byBiZQpAQCAtMjE0NCwxMSAmIzQzOzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYykKIAkgKiBhbmFseXplIGl0IGhlcmUsIGZsdXNoIFRMQiByZWdhcmRsZXNzIG9mIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBzcGFjZS4KIAkgKi8KIAlpZiAoYWxsX2NwdXMgJmFtcDsmYW1wOyAhaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkgewotCQlrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pIHsKLQkJCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7Ci0JCQlodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZmlmbywKLQkJCQkJICAgICB0bGJfZmx1c2hfZW50cmllcywgaGMtJmd0O3JlcF9jbnQpOwotCQl9CiYjNDM7CQlrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pCiYjNDM7CQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250LCBmYWxzZSk7CiAKIAkJa3ZtX21ha2VfYWxsX2NwdXNfcmVxdWVzdChrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNIKTsKIAl9IGVsc2UgaWYgKCFpc19ndWVzdF9tb2RlKHZjcHUpKSB7CkBAIC0yMTU4LDkgJiM0MzsyMTY2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpCiAJCQl2ID0ga3ZtX2dldF92Y3B1KGt2bSwgaSk7CiAJCQlpZiAoIXYpCiAJCQkJY29udGludWU7Ci0JCQl0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpOwotCQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sCi0JCQkJCSAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250KTsKJiM0MzsJCQlodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtJmd0O3JlcF9jbnQsIGZhbHNlKTsKIAkJfQogCiAJCWt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spOwpAQCAtMjE3MCw3ICYjNDM7MjE3Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKQogCQliaXRtYXBfemVybyh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpOwogCiAJCWt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkgewotCQkJaHZfdiA9IHRvX2h2X3ZjcHUodik7CiYjNDM7CQkJaHZfdiA9IHRvX2h2X3ZjcHVfc2FmZSh2KTsKIAogCQkJLyoKIAkJCSAqIFRoZSBmb2xsb3dpbmcgY2hlY2sgcmFjZXMgd2l0aCBuZXN0ZWQgdkNQVXMgZW50ZXJpbmcvZXhpdGluZwpAQCAtMjE5MSw5ICYjNDM7MjE5Nyw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKQogCQkJCWNvbnRpbnVlOwogCiAJCQlfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTsKLQkJCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCB0cnVlKTsKLQkJCWh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLAotCQkJCQkgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy0mZ3Q7cmVwX2NudCk7CiYjNDM7CQkJaHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLSZndDtyZXBfY250LCB0cnVlKTsKIAkJfQogCiAJCWt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5oIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oCmluZGV4IDFjOGY3YWFhYjA2M2QwLi4zN2EwYmNmMDNlMjgxNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaApAQCAtNjIsOCAmIzQzOzYyLDIyIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odiAqdG9fa3ZtX2h2KHN0cnVjdCBrdm0gKmt2bSkKIAlyZXR1cm4gJmFtcDtrdm0tJmd0O2FyY2guaHlwZXJ2OwogfQogCiYjNDM7c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiYjNDM7ewomIzQzOwkvKgomIzQzOwkgKiBFbnN1cmUgdGhlIEh5cGVyViBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBhY2Nlc3NpbmcgaXQKJiM0MzsJICogd2l0aG91dCBob2xkaW5nIHZjcHUtJmd0O211dGV4IChvciBzb21lIG90aGVyIGd1YXJhbnRlZSB0aGF0IEtWTSBjYW4mIzM5O3QKJiM0MzsJICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLgomIzQzOwkgKgomIzQzOwkgKiBQYWlycyB3aXRoIHRoZSBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGt2bV9odl92Y3B1X2luaXQoKS4KJiM0MzsJICovCiYjNDM7CXJldHVybiBzbXBfbG9hZF9hY3F1aXJlKCZhbXA7dmNwdS0mZ3Q7YXJjaC5oeXBlcnYpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKJiM0MzsJa3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpOwomIzQzOwogCXJldHVybiB2Y3B1LSZndDthcmNoLmh5cGVydjsKIH0KIApAQCAtODgsNyAmIzQzOzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAKIHN0YXRpYyBpbmxpbmUgdTMyIGt2bV9odl9nZXRfdnBpbmRleChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCiAJcmV0dXJuIGh2X3ZjcHUgPyBodl92Y3B1LSZndDt2cF9pbmRleCA6IHZjcHUtJmd0O3ZjcHVfaWR4OwogfQpAQCAtMTQyLDcgJiM0MzsxNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqaHZfc3RpbWVyX3RvX3ZjcHUoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbQogCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2h2X2hhc19zdGltZXJfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCiAJaWYgKCFodl92Y3B1KQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xOTgsMTAgJiM0MzsyMTIsMTMgQEAgaW50IGt2bV9nZXRfaHZfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2NwdWlkMiAqY3B1aWQsCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqa3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJCQkJCQkgICBib29sIGlzX2d1ZXN0X21vZGUpCiB7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpOwogCWludCBpID0gaXNfZ3Vlc3RfbW9kZSA/IEhWX0wyX1RMQl9GTFVTSF9GSUZPIDoKIAkJCQlIVl9MMV9UTEJfRkxVU0hfRklGTzsKIAomIzQzOwlpZiAoIWh2X3ZjcHUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKIAlyZXR1cm4gJmFtcDtodl92Y3B1LSZndDt0bGJfZmx1c2hfZmlmb1tpXTsKIH0KIApAQCAtMjA5LDEwICYjNDM7MjI2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1faHZfdmNwdV9wdXJnZV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87CiAKLQlpZiAoIXRvX2h2X3ZjcHUodmNwdSkgfHwgIWt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1KSkKJiM0MzsJaWYgKCFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpCiAJCXJldHVybjsKIAogCXRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTsKJiM0MzsJaWYgKCF0bGJfZmx1c2hfZmlmbykKJiM0MzsJCXJldHVybjsKIAogCWtmaWZvX3Jlc2V0X291dCgmYW1wO3RsYl9mbHVzaF9maWZvLSZndDtlbnRyaWVzKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oCmluZGV4IDZkNmNkNTkwNGRkZjY2Li5jNmRlODQ4YmQ5Y2VkNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oCkBAIC01NywxNiAmIzQzOzU3LDE0IEBAIGJvb2wgbmVzdGVkX3ZteF9jaGVja19pb19iaXRtYXBzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IHBvcnQsCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoJmFtcDt2Y3B1LSZndDttdXRleCkgfHwKLQkJCSAgICAhcmVmY291bnRfcmVhZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7dXNlcnNfY291bnQpKTsKJiM0MzsJa3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpOwogCiAJcmV0dXJuIHRvX3ZteCh2Y3B1KS0mZ3Q7bmVzdGVkLmNhY2hlZF92bWNzMTI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHZtY3MxMiAqZ2V0X3NoYWRvd192bWNzMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCWxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKCZhbXA7dmNwdS0mZ3Q7bXV0ZXgpIHx8Ci0JCQkgICAgIXJlZmNvdW50X3JlYWQoJmFtcDt2Y3B1LSZndDtrdm0tJmd0O3VzZXJzX2NvdW50KSk7CiYjNDM7CWt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZSh2Y3B1KTsKIAogCXJldHVybiB0b192bXgodmNwdSktJmd0O25lc3RlZC5jYWNoZWRfc2hhZG93X3ZtY3MxMjsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uYwppbmRleCA2OTRiMzFjMWZjYzlhZi4uZWVmMzc4ZDBiYjQ1NTcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS94ZW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veGVuLmMKQEAgLTIyLDYgJiM0MzsyMiw3IEBACiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS92ZXJzaW9uLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS9ldmVudF9jaGFubmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7eGVuL2ludGVyZmFjZS9zY2hlZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt4ZW4veGVuLW9wcy5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7YXNtL3hlbi9jcHVpZC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9wdmNsb2NrLmgmZ3Q7CkBAIC0xMTAzLDYgJiM0MzsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSkKIAkJYnJlYWs7CiAKIAljYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDoKJiM0MzsJCUJVSUxEX0JVR19PTihYRU5fVkNQVV9JRF9JTlZBTElEICZsdDsgS1ZNX01BWF9WQ1BVUyk7CiYjNDM7CiAJCWlmIChkYXRhLSZndDt1LnZjcHVfaWQgJmd0Oz0gS1ZNX01BWF9WQ1BVUykKIAkJCXIgPSAtRUlOVkFMOwogCQllbHNlIHsKQEAgLTE2MDcsMTYgJiM0MzsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsCiAJc3RydWN0IHZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIgb25lc2hvdDsKIAlzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiBlOwogCiYjNDM7CWlmIChjbWQgIT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyICZhbXA7JmFtcDsKJiM0MzsJICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCWlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlzd2l0Y2ggKGNtZCkgewotCWNhc2UgVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyOgotCQlpZiAodmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCAhPSB2Y3B1X2lkKSB7Ci0JCQkqciA9IC1FSU5WQUw7Ci0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQomIzQzOwlpZiAodmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCA9PSBYRU5fVkNQVV9JRF9JTlZBTElEKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWplY3QgdGhlIGh5cGVyY2FsbCBpZiB0aGUgZ3Vlc3QgaXMgdHJ5aW5nIHRvIHN0YXJ0L3N0b3AgdGhlIHRpbWVyCiYjNDM7CSAqIGZvciBhIGRpZmZlcmVudCB2Q1BVLiAgWGVuIHBlci12Q1BVIGh5cGVyY2FsbHMgdGFrZSBhIHRhcmdldCB2Q1BVIGFzCiYjNDM7CSAqIGEgY29tbW9uIHBhcmFtZXRlciwgYXMgYWxsIHBlci12Q1BVIGh5cGVyY2FsbHMgKmV4Y2VwdCogc2luZ2xlLXNob3QKJiM0MzsJICogdGltZXIgdXBkYXRlcyBjYW4gYmUgY3Jvc3MtdkNQVS4KJiM0MzsJICovCiYjNDM7CWlmICh2Y3B1LSZndDthcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHsKJiM0MzsJCSpyID0gLUVJTlZBTDsKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwl9CiAKJiM0MzsJaWYgKGNtZCA9PSBWQ1BVT1Bfc2V0X3NpbmdsZXNob3RfdGltZXIpIHsKIAkJLyoKIAkJICogVGhlIG9ubHkgZGlmZmVyZW5jZSBmb3IgMzItYml0IGNvbXBhdCBpcyB0aGUgNCBieXRlcyBvZgogCQkgKiBwYWRkaW5nIGFmdGVyIHRoZSBpbnRlcmVzdGluZyBwYXJ0IG9mIHRoZSBzdHJ1Y3R1cmUuIFNvCkBAIC0xNjQwLDIwICYjNDM7MTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLAogCQl9CiAKIAkJa3ZtX3hlbl9zdGFydF90aW1lcih2Y3B1LCBvbmVzaG90LnRpbWVvdXRfYWJzX25zLCBmYWxzZSk7Ci0JCSpyID0gMDsKLQkJcmV0dXJuIHRydWU7Ci0KLQljYXNlIFZDUFVPUF9zdG9wX3NpbmdsZXNob3RfdGltZXI6Ci0JCWlmICh2Y3B1LSZndDthcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHsKLQkJCSpyID0gLUVJTlZBTDsKLQkJCXJldHVybiB0cnVlOwotCQl9CiYjNDM7CX0gZWxzZSB7CiAJCWt2bV94ZW5fc3RvcF90aW1lcih2Y3B1KTsKLQkJKnIgPSAwOwotCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKLQlyZXR1cm4gZmFsc2U7CiYjNDM7CSpyID0gMDsKJiM0MzsJcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfc2V0X3RpbWVyX29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdWludDY0X3QgdGltZW91dCwKQEAgLTIyOTksNyAmIzQzOzIzMDYsNyBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpCiAKIHZvaWQga3ZtX3hlbl9pbml0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXZjcHUtJmd0O2FyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LSZndDt2Y3B1X2lkeDsKJiM0MzsJdmNwdS0mZ3Q7YXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7CiAJdmNwdS0mZ3Q7YXJjaC54ZW4ucG9sbF9ldnRjaG4gPSAwOwogCiAJdGltZXJfc2V0dXAoJmFtcDt2Y3B1LSZndDthcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCmluZGV4IGFiOGNmYWVjODJkMzFlLi4wYmRmYTM2OTkzNTI3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaApAQCAtOTg5LDYgJiM0Mzs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KQogCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7a3ZtLSZndDtzbG90c19sb2NrKSk7CiB9CiAKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKJiM0Mzt7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKCZhbXA7dmNwdS0mZ3Q7bXV0ZXgpIHx8CiYjNDM7CQkJICAgIHZjcHUtJmd0O3ZjcHVfaWR4ICZsdDsgMCB8fAomIzQzOwkJCSAgICAhcmVmY291bnRfcmVhZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7dXNlcnNfY291bnQpKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqa3ZtX2dldF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGkpCiB7CiAJaW50IG51bV92Y3B1cyA9IGF0b21pY19yZWFkKCZhbXA7a3ZtLSZndDtvbmxpbmVfdmNwdXMpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjA1Mjc1ZDMxOGJmYmM3IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2t2bV9tYWluLmMKQEAgLTQxODgsNiAmIzQzOzQxODgsOCBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpCiAJCWdvdG8gdmNwdV9kZWNyZW1lbnQ7CiAJfQogCiYjNDM7CXZjcHUtJmd0O3ZjcHVfaWR4ID0gLTE7CiYjNDM7CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qga3ZtX3J1bikgJmd0OyBQQUdFX1NJWkUpOwogCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pOwogCWlmICghcGFnZSkgewpAQCAtNDIxNiw2ICYjNDM7NDIxOCwxMSBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpCiAJCWdvdG8gdW5sb2NrX3ZjcHVfZGVzdHJveTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogU2V0IHRoZSB2Q1BVJiMzOTtzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy4KJiM0MzsJICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXgKJiM0MzsJICogdG8gZGV0ZWN0IHRoYXQgdGhlIHZDUFUgaXMgdW5yZWFjaGFibGUsIGUuZy4gZm9yIGxvY2tkZXAgYXNzZXJ0cy4KJiM0MzsJICovCiAJdmNwdS0mZ3Q7dmNwdV9pZHggPSBhdG9taWNfcmVhZCgmYW1wO2t2bS0mZ3Q7b25saW5lX3ZjcHVzKTsKIAlyID0geGFfaW5zZXJ0KCZhbXA7a3ZtLSZndDt2Y3B1X2FycmF5LCB2Y3B1LSZndDt2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlXQVJOX09OX09OQ0UociA9PSAtRUJVU1kpOwpAQCAtNDI1NCw2ICYjNDM7NDI2MSw3IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZCkKIAlrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7CiAJeGFfZXJhc2UoJmFtcDtrdm0tJmd0O3ZjcHVfYXJyYXksIHZjcHUtJmd0O3ZjcHVfaWR4KTsKIHVubG9ja192Y3B1X2Rlc3Ryb3k6CiYjNDM7CXZjcHUtJmd0O3ZjcHVfaWR4ID0gLTE7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDtsb2NrKTsKIAlrdm1fZGlydHlfcmluZ19mcmVlKCZhbXA7dmNwdS0mZ3Q7ZGlydHlfcmluZyk7CiBhcmNoX3ZjcHVfZGVzdHJveToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIEtWTSBjb2RlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgZW11bGF0aW9uIG9mIEh5cGVyLVYgYW5kIFhlbiBvbiB4ODYsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcywgaW1wYWN0aW5nIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiBLVk0uIFRoaXMgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSAmIzM0O1dvcnRoRnV6emluZz10cnVlJiMzNDsgc2l0dWF0aW9uLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4KClRoZSBjaGFuZ2VzIGFyZSBkaXN0cmlidXRlZCBhY3Jvc3Mgc2V2ZXJhbCBmaWxlczogYGh5cGVydi5jYCwgYGh5cGVydi5oYCwgYG5lc3RlZC5oYCwgYHhlbi5jYCwgYGt2bV9ob3N0LmhgLCBhbmQgYGt2bV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBoaXR0aW5nIGJvdGggSHlwZXItViBhbmQgWGVuLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGRpZmZlcmVudCBlbXVsYXRpb24gcGF0aHMuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgYXJlOiBgc3luaWNfZ2V0YCwgYHN0aW1lcl9tYXJrX3BlbmRpbmdgLCBgc3RpbWVyX2NsZWFudXBgLCBga3ZtX2h2X3ZjcHVfaW5pdGAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBgaHZfdGxiX2ZsdXNoX2VucXVldWVgLCBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCwgYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIGBrdm1feGVuX2luaXRfdmNwdWAsIGFuZCBga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1YC4KCk5vdywgZm9yIGZ1enppbmcsIEkgd2FudCB0byBwcmlvcml0aXplIHNwZWNpZmljIHRhcmdldHMuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEkgd2FudCB0byBhdm9pZCBhbnl0aGluZyB0aGF0JiMzOTtzIHRvbyBnZW5lcmljIGxpa2UgYGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdWAgaWYgaXQmIzM5O3Mgbm90IGEgaG90LXBhdGgsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQuIEkmIzM5O20gZm9jdXNpbmcgb24gaHlwZXJjYWxsIGFuZCBpb2N0bCBoYW5kbGVycy4gYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYW5kIGBrdm1feGVuX3ZjcHVfc2V0X2F0dHJgIGFyZSBhbGwgZXhjZWxsZW50IHRhcmdldHMuICBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCBhbmQgYGt2bV9odl9hY3RpdmF0ZV9zeW5pY2AgYXJlIGxpa2VseSBhbHNvIGludGVyZXN0aW5nLiBUaGUgb3RoZXJzIG5lZWQgbW9yZSBjb250ZXh0IHRvIGFzc2Vzcy4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGVuc3VyZSB0aGUgcmVsZXZhbnQgZmVhdHVyZXMgYXJlIGVuYWJsZWQuIE9idmlvdXNseSwgYEtWTWAgaXRzZWxmIGlzIHJlcXVpcmVkLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb2YgdGhlc2UgY2hhbmdlcyBhcmUgZ2F0ZWQgYmVoaW5kIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciBIeXBlci1WIG9yIFhlbiBzdXBwb3J0LiBJJiMzOTtsbCBncmVwIGZvciBvcHRpb25zIGxpa2UgYEtWTV9YRU5gIG9yIGBLVk1fSFlQRVJWYCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGlzIHdpbGwgaGVscCB0YWlsb3IgZnV6emluZyBjb25maWd1cmF0aW9ucyB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKQWxyaWdodCwgc28gdGhlIGZvY3VzIGlzIG9uIGh5cGVydmlzb3Igc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC4gSW1tZWRpYXRlbHksIHRoZSBuYW1lcyBgS1ZNX0hZUEVSVmAgYW5kIGBLVk1fWEVOYCBqdW1wIG91dC4gVGhlc2UgYXJlIHRoZSBjb25maWd1cmF0aW9ucyByZWxhdGluZyB0byBIeXBlci1WIGFuZCBYZW4gc3VwcG9ydCByZXNwZWN0aXZlbHksIGFuZCBpdCYjMzk7cyBsb2dpY2FsIHRvIGFzc3VtZSB0aGF0IHRoZXkgYXJlIGtleSB0byBlbmFibGluZyB2aXJ0dWFsaXphdGlvbiBmdW5jdGlvbmFsaXR5IG9uIHRoaXMgcGxhdGZvcm0uIEnigJltIHRoaW5raW5nIHdlIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciB0aGVzZSBtb2R1bGVzIGFyZSAqZXNzZW50aWFsKiB0byB0aGlzIHNldHVwLiBUaGF0IGlzIHRvIHNheSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHRoZSBuZXh0IHF1ZXN0aW9uLiBEbyB3ZSBuZWVkIHRoZW0sIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZXMgYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY3VycmVudCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MTI9a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICYjNDM7PSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxMzprdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMTQta3ZtLSQoQ09ORklHX0tWTV9YRU4pXHQmIzQzOz0geGVuLm9cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVx0JiM0Mzs9IHZteC9zZ3gub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjIxOmt2bS1pbnRlbC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHZteC9oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMi1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcdCYjNDM7PSB2bXgvdGR4Lm9cbi0tXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjY9a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcdCYjNDM7PSBzdm0vc2V2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNzprdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gc3ZtL2h5cGVydi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMzYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBjb21waWxpbmcgYGh5cGVydi5vYCBhbmQgYHhlbi5vYCBkZWZpbml0ZWx5IHJlcXVpcmVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGNvbmZpZ3MgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLCBidXQgYmFzZWQgb24gdGhlIHBhdGNoLCB0aG9zZSBzZWVtIHRvIGJlIHRoZSBjcml0aWNhbCBvbmVzLiBJdCYjMzk7cyBtb2RpZnlpbmcgYGFyY2gveDg2L2t2bS9oeXBlcnYuY2AgYW5kIGBhcmNoL3g4Ni9rdm0veGVuLmNgLCBzbyB0aGF0IGNvbmZpcm1zIGl0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoYXQgc2hvdWxkIEkgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uPyBGcm9tIHRoZSBjb250ZXh0LCBJJiMzOTt2ZSBnb3QgYSBsaXN0OiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV9odl92Y3B1X2ZsdXNoX3RsYmAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBhbmQgYGt2bV9odl92Y3B1X2luaXRgLgoKV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBzZWVpbmcgdGhhdCBga3ZtX2h2X2ZsdXNoX3RsYmAgYW5kIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgIGFyZSBoeXBlcmNhbGwgaGFuZGxlcnMuIEV4Y2VsbGVudCB0YXJnZXRzLCBhcyBleHBlY3RlZC4gQW5kIGBrdm1feGVuX3ZjcHVfc2V0X2F0dHJgIGlzIGFuIGlvY3RsIGhhbmRsZXIhIEV2ZW4gYmV0dGVyLiBUaGVzZSBhcmUgcHJpbWUgY2FuZGlkYXRlcyB0byB0aHJvdyBzb21lIGZ1enppbmcgZGF0YSBhdC4gSSBzaG91bGQgcHJvYmFibHkgZ2l2ZSBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCBhbm90aGVyIGxvb2sgdG9vLgoKUmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRob3NlIHR3byBoeXBlcmNhbGwgaGFuZGxlcnMsIGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIHRvIG1ha2Ugc3VyZSB0aGV5JiMzOTtyZSB3aGF0IEkgdGhpbmsgdGhleSBhcmUuIFRoZXNlIGFyZSBnb2luZyB0byBiZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTk4MT1pbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjAyMy1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMDI0OnN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjUte1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMDc5LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwODA6XHRcdHRyYWNlX2t2bV9odl9mbHVzaF90bGIoZmx1c2gucHJvY2Vzc29yX21hc2ssXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjA4MS1cdFx0XHRcdCAgICAgICBmbHVzaC5hZGRyZXNzX3NwYWNlLCBmbHVzaC5mbGFncyxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjEwOS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTEwOlx0XHR0cmFjZV9rdm1faHZfZmx1c2hfdGxiX2V4KGZsdXNoX2V4Lmh2X3ZwX3NldC52YWxpZF9iYW5rX21hc2ssXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjExMS1cdFx0XHRcdFx0ICBmbHVzaF9leC5odl92cF9zZXQuZm9ybWF0LFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMTg1LVx0XHRcdCAqIHJ1bm5pbmcgb24gdGhlIHNhbWUgTDEgdkNQVSBmcm9tIHRoZSBtb21lbnQgb2YgdGhlIHJlcXVlc3QgdW50aWxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTg2Olx0XHRcdCAqIGt2bV9odl9mbHVzaF90bGIoKSByZXR1cm5zLiBUTEIgaXMgZnVsbHkgZmx1c2hlZCBpbiBhbGwgb3RoZXJcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMTg3LVx0XHRcdCAqIGNhc2VzLCBlLmcuIHdoZW4gdGhlIHRhcmdldCBMMiB2Q1BVIG1pZ3JhdGVzIHRvIGEgZGlmZmVyZW50IEwxXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI1Mzg9aW50IGt2bV9odl9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjMxLVx0XHR9XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjYzMjpcdFx0cmV0ID0ga3ZtX2h2X2ZsdXNoX3RsYih2Y3B1LCBcdTAwMjZoYyk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjYzMy1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2NDQtXHRcdH1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNjQ1Olx0XHRyZXQgPSBrdm1faHZfZmx1c2hfdGxiKHZjcHUsIFx1MDAyNmhjKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjQ2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc2NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqVHJhY2luZyB0aGUgVExCIEZsdXNoIENhbGwqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGF0IGBrdm1faHZfZmx1c2hfdGxiYCBpcyBpbmRlZWQgaW52b2tlZCB3aXRoaW4gdGhlIGBrdm1faHZfaHlwZXJjYWxsYCBmdW5jdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaG93IHRoaXMgaHlwZXJjYWxsIGlzIGJlaW5nIGhhbmRsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwYXRoIG9mIGV4ZWN1dGlvbiB0byBkZXRlcm1pbmUgd2hlbiBhbmQgd2h5IHRoZSBUTEIgZmx1c2ggaXMgaGFwcGVuaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBhbnRpY2lwYXRlIHRoZSBoeXBlcmNhbGwgZGlzcGF0Y2hpbmcgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBUTEIgZmx1c2ggd2l0aGluIHRoZSBoeXBlcnZpc29yLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIGJlaGF2aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTE2MDI9c3RydWN0IGNvbXBhdF92Y3B1X3NldF9zaW5nbGVzaG90X3RpbWVyIHtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwNi1cbmFyY2gveDg2L2t2bS94ZW4uYzoxNjA3OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwOC1cdFx0XHRcdCAgaW50IHZjcHVfaWQsIHU2NCBwYXJhbSwgdTY0ICpyKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0xNjgxPWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTE3NDMtXHRjYXNlIF9fSFlQRVJWSVNPUl92Y3B1X29wOlxuYXJjaC94ODYva3ZtL3hlbi5jOjE3NDQ6XHRcdGhhbmRsZWQgPSBrdm1feGVuX2hjYWxsX3ZjcHVfb3AodmNwdSwgbG9uZ21vZGUsIHBhcmFtc1swXSwgcGFyYW1zWzFdLFxuYXJjaC94ODYva3ZtL3hlbi5jLTE3NDUtXHRcdFx0XHRcdFx0cGFyYW1zWzJdLCBcdTAwMjZyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzNDUKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNL1hlbiBIeXBlcmNhbGwgSW50ZXJhY3Rpb24qKgoKUmlnaHQsIHNvIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgICppcyogZGVmaW5pdGVseSBpbnZva2VkIGZyb20gYGt2bV94ZW5faHlwZXJjYWxsYC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGludGVyYWN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGNsb3NlbHkgYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhdHRyaWJ1dGVzIGFyZSBzZXQgd2l0aGluIHRoaXMgd2hvbGUgaHlwZXJjYWxsIHNjaGVtZSwgYW5kIHVuZGVyc3RhbmQgaWYgdGhhdCBmdW5jdGlvbiB3aWxsIGVsdWNpZGF0ZSB0aGUgZXhhY3QgZGF0YSBwYXRocyBJJiMzOTttIGFmdGVyLiBUaGlzIGNvdWxkIGJlIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB1bmRlcnN0YW5kaW5nIGhvdyBLVk0gaW50ZXJhY3RzIHdpdGggdGhlIFhlbiBoeXBlcnZpc29yIGF0IHRoZSB2Q1BVIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX3ZjcHVfc2V0X2F0dHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTg1Mj1pbnQga3ZtX3hlbl9odm1fZ2V0X2F0dHIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA2LVxuYXJjaC94ODYva3ZtL3hlbi5jOjkwNzppbnQga3ZtX3hlbl92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV94ZW5fdmNwdV9hdHRyICpkYXRhKVxuYXJjaC94ODYva3ZtL3hlbi5jLTkwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDA1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzY0CgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgS1ZNJiMzOTtzIGVtdWxhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBIeXBlci1WIGFuZCBYZW4gYXNwZWN0cy4gUmlnaHQsIEkgc2VlIHRoYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0LgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHRoZXkmIzM5O3JlIGZpeGluZyByYWNlcyBhbmQgaW5pdGlhbGl6YXRpb24gcHJvYmxlbXMgaW4gdGhlIHZDUFUgc3RydWN0dXJlcywgVExCIGZsdXNoaW5nLCBhbmQgdGltZXIgbWVjaGFuaXNtcy4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBjb3JlIGtlcm5lbCBhcmVhcyB0aGF0IGFyZSByZWFjaGFibGUsIHNvIGZ1enppbmcgaXMgY2VydGFpbmx5IHdhcnJhbnRlZCBoZXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgcHJlcmVxdWlzaXRlcyBjb3JyZWN0LiBJdCBsb29rcyBsaWtlIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGFyZSB0aGUgb25seSBjb25maWdzIEkgbmVlZCB0byBlbmFibGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUuIE9rYXksIGdvb2QgdG8ga25vdy4KCkkgc2hvdWxkIGFsc28gbWFrZSBhIG5vdGUgb2YgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgaW4gbXkgZnV6emluZyBzZXR1cDogYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAsIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgLCBhbmQgYGt2bV9odl9hY3RpdmF0ZV9zeW5pY2AuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzZXQtcmVzdWx0cyBwcm9jZXNzIG1vdmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OywKICAgICYjMzQ7S1ZNX1hFTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9odl9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF92Y3B1X29wJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fdmNwdV9zZXRfYXR0ciYjMzQ7LAogICAgJiMzNDtrdm1faHZfdmNwdV9mbHVzaF90bGImIzM0OywKICAgICYjMzQ7a3ZtX2h2X2FjdGl2YXRlX3N5bmljJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0hZUEVSViYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX3ZjcHVfb3AmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl92Y3B1X3NldF9hdHRyJiMzNDssCiAgICAmIzM0O2t2bV9odl92Y3B1X2ZsdXNoX3RsYiYjMzQ7LAogICAgJiMzNDtrdm1faHZfYWN0aXZhdGVfc3luaWMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6MzUuMzg4Mjg1ODQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzNjk5NDMxODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6MzUuMzg4MjkzNzkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQwNzc3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDEgMDU6NTM6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXFxuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbkBAIC0yMDYsMTQgKzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgKnN5bmljX2dldChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuIFxcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyAqc3luaWM7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xcbiBcXG4gXFx0dmNwdSA9IGdldF92Y3B1X2J5X3ZwaWR4KGt2bSwgdnBpZHgpO1xcbi1cXHRpZiAoIXZjcHUgfHwgIXRvX2h2X3ZjcHUodmNwdSkpXFxuK1xcdGlmICghdmNwdSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XFxuLVxcdHJldHVybiAoc3luaWMtXFx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XFxuK1xcbitcXHRodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xcbitcXHRpZiAoIWh2X3ZjcHUpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0c3luaWMgPSBcXHUwMDI2aHZfdmNwdS1cXHUwMDNlc3luaWM7XFxuK1xcdHJldHVybiBSRUFEX09OQ0Uoc3luaWMtXFx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxcbkBAIC01OTMsOCArNTk5LDcgQEAgc3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXFxuIHtcXG4gXFx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1ID0gaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKTtcXG4gXFxuLVxcdHNldF9iaXQoc3RpbWVyLVxcdTAwM2VpbmRleCxcXG4tXFx0XFx0dG9faHZfdmNwdSh2Y3B1KS1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4rXFx0c2V0X2JpdChzdGltZXItXFx1MDAzZWluZGV4LCB2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydi1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4gXFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX0hWX1NUSU1FUiwgdmNwdSk7XFxuIFxcdGlmICh2Y3B1X2tpY2spXFxuIFxcdFxcdGt2bV92Y3B1X2tpY2sodmNwdSk7XFxuQEAgLTYwOCw4ICs2MTMsNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfY2xlYW51cChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuIFxcdFxcdFxcdFxcdCAgICBzdGltZXItXFx1MDAzZWluZGV4KTtcXG4gXFxuIFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyKTtcXG4tXFx0Y2xlYXJfYml0KHN0aW1lci1cXHUwMDNlaW5kZXgsXFxuLVxcdFxcdCAgdG9faHZfdmNwdSh2Y3B1KS1cXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcXG4rXFx0Y2xlYXJfYml0KHN0aW1lci1cXHUwMDNlaW5kZXgsIHZjcHUtXFx1MDAzZWFyY2guaHlwZXJ2LVxcdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xcbiBcXHRzdGltZXItXFx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XFxuIFxcdHN0aW1lci1cXHUwMDNlZXhwX3RpbWUgPSAwO1xcbiB9XFxuQEAgLTk3Miw3ICs5NzYsNiBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGlmICghaHZfdmNwdSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHR2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydiA9IGh2X3ZjcHU7XFxuIFxcdGh2X3ZjcHUtXFx1MDAzZXZjcHUgPSB2Y3B1O1xcbiBcXG4gXFx0c3luaWNfaW5pdChcXHUwMDI2aHZfdmNwdS1cXHUwMDNlc3luaWMpO1xcbkBAIC05ODgsNiArOTkxLDE0IEBAIGludCBrdm1faHZfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmh2X3ZjcHUtXFx1MDAzZXRsYl9mbHVzaF9maWZvW2ldLndyaXRlX2xvY2spO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBFbnN1cmUgdGhlIHN0cnVjdHVyZSBpcyBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgaXQncyB2aXNpYmxlIHRvXFxuK1xcdCAqIG90aGVyIHRhc2tzLCBhcyBtdWNoIG9mIHRoZSBzdGF0ZSBjYW4gYmUgbGVnYWxseSBhY2Nlc3NlZCB3aXRob3V0XFxuK1xcdCAqIGhvbGRpbmcgdmNwdS1cXHUwMDNlbXV0ZXguXFxuK1xcdCAqXFxuK1xcdCAqIFBhaXJzIHdpdGggdGhlIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiB0b19odl92Y3B1X3NhZmUoKS5cXG4rXFx0ICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydiwgaHZfdmNwdSk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xMDAyLDcgKzEwMTMsNyBAQCBpbnQga3ZtX2h2X2FjdGl2YXRlX3N5bmljKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXMpXFxuIFxcbiBcXHRzeW5pYyA9IHRvX2h2X3N5bmljKHZjcHUpO1xcbiBcXG4tXFx0c3luaWMtXFx1MDAzZWFjdGl2ZSA9IHRydWU7XFxuK1xcdFdSSVRFX09OQ0Uoc3luaWMtXFx1MDAzZWFjdGl2ZSwgdHJ1ZSk7XFxuIFxcdHN5bmljLVxcdTAwM2Vkb250X3plcm9fc3luaWNfcGFnZXMgPSBkb250X3plcm9fc3luaWNfcGFnZXM7XFxuIFxcdHN5bmljLVxcdTAwM2Vjb250cm9sID0gSFZfU1lOSUNfQ09OVFJPTF9FTkFCTEU7XFxuIFxcdHJldHVybiAwO1xcbkBAIC0xOTM1LDE0ICsxOTQ2LDE0IEBAIHN0YXRpYyBpbnQga3ZtX2h2X2dldF90bGJfZmx1c2hfZW50cmllcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjXFxuIFxcdHJldHVybiBrdm1faHZfZ2V0X2hjX2RhdGEoa3ZtLCBoYywgaGMtXFx1MDAzZXJlcF9jbnQsIGhjLVxcdTAwM2VyZXBfY250LCBlbnRyaWVzKTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi1cXHRcXHRcXHRcXHQgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbyxcXG4tXFx0XFx0XFx0XFx0IHU2NCAqZW50cmllcywgaW50IGNvdW50KVxcbitzdGF0aWMgdm9pZCBodl90bGJfZmx1c2hfZW5xdWV1ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCAqZW50cmllcywgaW50IGNvdW50LFxcbitcXHRcXHRcXHRcXHQgYm9vbCBpc19ndWVzdF9tb2RlKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XFxuIFxcdHU2NCBmbHVzaF9hbGxfZW50cnkgPSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZO1xcbiBcXG4tXFx0aWYgKCFodl92Y3B1KVxcbitcXHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odmNwdSwgaXNfZ3Vlc3RfbW9kZSk7XFxuK1xcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdHNwaW5fbG9jayhcXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXFx1MDAzZXdyaXRlX2xvY2spO1xcbkBAIC0xOTcwLDE1ICsxOTgxLDE2IEBAIHN0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gaW50IGt2bV9odl92Y3B1X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4gXFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcXG4tXFx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcXG4gXFx0dTY0IGVudHJpZXNbS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkVdO1xcbiBcXHRpbnQgaSwgaiwgY291bnQ7XFxuIFxcdGd2YV90IGd2YTtcXG4gXFxuLVxcdGlmICghdGRwX2VuYWJsZWQgfHwgIWh2X3ZjcHUpXFxuK1xcdGlmICghdGRwX2VuYWJsZWQpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHZjcHUsIGlzX2d1ZXN0X21vZGUodmNwdSkpO1xcbitcXHRpZiAoIXRsYl9mbHVzaF9maWZvKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdGNvdW50ID0ga2ZpZm9fb3V0KFxcdTAwMjZ0bGJfZmx1c2hfZmlmby1cXHUwMDNlZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xcbiBcXG5AQCAtMjAxNyw3ICsyMDI5LDYgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuIFxcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXFx1MDAzZWt2bTtcXG4gXFx0c3RydWN0IGh2X3RsYl9mbHVzaF9leCBmbHVzaF9leDtcXG4gXFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcXG4tXFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcXG4gXFx0LypcXG4gXFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJ0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFJ1xcbiBcXHQgKiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gVGhlIGxhc3QgZW50cnksIGhvd2V2ZXIsIG5lZWRzIHRvIGJlXFxuQEAgLTIxNDQsMTEgKzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0ICogYW5hbHl6ZSBpdCBoZXJlLCBmbHVzaCBUTEIgcmVnYXJkbGVzcyBvZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3Mgc3BhY2UuXFxuIFxcdCAqL1xcbiBcXHRpZiAoYWxsX2NwdXMgXFx1MDAyNlxcdTAwMjYgIWlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG4tXFx0XFx0a3ZtX2Zvcl9lYWNoX3ZjcHUoaSwgdiwga3ZtKSB7XFxuLVxcdFxcdFxcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XFxuLVxcdFxcdFxcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cXHUwMDNlcmVwX2NudCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0a3ZtX2Zvcl9lYWNoX3ZjcHUoaSwgdiwga3ZtKVxcbitcXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQsIGZhbHNlKTtcXG4gXFxuIFxcdFxcdGt2bV9tYWtlX2FsbF9jcHVzX3JlcXVlc3Qoa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCk7XFxuIFxcdH0gZWxzZSBpZiAoIWlzX2d1ZXN0X21vZGUodmNwdSkpIHtcXG5AQCAtMjE1OCw5ICsyMTY2LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuIFxcdFxcdFxcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcXG4gXFx0XFx0XFx0aWYgKCF2KVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0XFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIGZhbHNlKTtcXG4tXFx0XFx0XFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVxcdTAwM2VyZXBfY250KTtcXG4rXFx0XFx0XFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVxcdTAwM2VyZXBfY250LCBmYWxzZSk7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xcbkBAIC0yMTcwLDcgKzIxNzYsNyBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0XFx0Yml0bWFwX3plcm8odmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcXG4gXFxuIFxcdFxcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xcbi1cXHRcXHRcXHRodl92ID0gdG9faHZfdmNwdSh2KTtcXG4rXFx0XFx0XFx0aHZfdiA9IHRvX2h2X3ZjcHVfc2FmZSh2KTtcXG4gXFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFRoZSBmb2xsb3dpbmcgY2hlY2sgcmFjZXMgd2l0aCBuZXN0ZWQgdkNQVXMgZW50ZXJpbmcvZXhpdGluZ1xcbkBAIC0yMTkxLDkgKzIxOTcsNyBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHRfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTtcXG4tXFx0XFx0XFx0dGxiX2ZsdXNoX2ZpZm8gPSBrdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHYsIHRydWUpO1xcbi1cXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZmlmbyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQpO1xcbitcXHRcXHRcXHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXFx1MDAzZXJlcF9jbnQsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5oIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjM3YTBiY2YwM2UyODE2IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxcbkBAIC02Miw4ICs2MiwyMiBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1faHYgKnRvX2t2bV9odihzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdHJldHVybiBcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLmh5cGVydjtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0LypcXG4rXFx0ICogRW5zdXJlIHRoZSBIeXBlclYgc3RydWN0dXJlIGlzIGZ1bGx5IGluaXRpYWxpemVkIHdoZW4gYWNjZXNzaW5nIGl0XFxuK1xcdCAqIHdpdGhvdXQgaG9sZGluZyB2Y3B1LVxcdTAwM2VtdXRleCAob3Igc29tZSBvdGhlciBndWFyYW50ZWUgdGhhdCBLVk0gY2FuJ3RcXG4rXFx0ICogY29uY3VycmVudGx5IGluc3RhbnRpYXRlIHRoZSBzdHJ1Y3R1cmUpLlxcbitcXHQgKlxcbitcXHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGt2bV9odl92Y3B1X2luaXQoKS5cXG4rXFx0ICovXFxuK1xcdHJldHVybiBzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLmh5cGVydik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2ICp0b19odl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbitcXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XFxuK1xcbiBcXHRyZXR1cm4gdmNwdS1cXHUwMDNlYXJjaC5oeXBlcnY7XFxuIH1cXG4gXFxuQEAgLTg4LDcgKzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcbiBzdGF0aWMgaW5saW5lIHUzMiBrdm1faHZfZ2V0X3ZwaW5kZXgoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcXG4gXFxuIFxcdHJldHVybiBodl92Y3B1ID8gaHZfdmNwdS1cXHUwMDNldnBfaW5kZXggOiB2Y3B1LVxcdTAwM2V2Y3B1X2lkeDtcXG4gfVxcbkBAIC0xNDIsNyArMTU2LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHUgKmh2X3N0aW1lcl90b192Y3B1KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1cXG4gXFxuIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1faHZfaGFzX3N0aW1lcl9wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xcbitcXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XFxuIFxcbiBcXHRpZiAoIWh2X3ZjcHUpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG5AQCAtMTk4LDEwICsyMTIsMTMgQEAgaW50IGt2bV9nZXRfaHZfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2NwdWlkMiAqY3B1aWQsXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICprdm1faHZfZ2V0X3RsYl9mbHVzaF9maWZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgYm9vbCBpc19ndWVzdF9tb2RlKVxcbiB7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcXG4gXFx0aW50IGkgPSBpc19ndWVzdF9tb2RlID8gSFZfTDJfVExCX0ZMVVNIX0ZJRk8gOlxcbiBcXHRcXHRcXHRcXHRIVl9MMV9UTEJfRkxVU0hfRklGTztcXG4gXFxuK1xcdGlmICghaHZfdmNwdSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbiBcXHRyZXR1cm4gXFx1MDAyNmh2X3ZjcHUtXFx1MDAzZXRsYl9mbHVzaF9maWZvW2ldO1xcbiB9XFxuIFxcbkBAIC0yMDksMTAgKzIyNiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2h2X3ZjcHVfcHVyZ2VfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvO1xcbiBcXG4tXFx0aWYgKCF0b19odl92Y3B1KHZjcHUpIHx8ICFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpXFxuK1xcdGlmICgha3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9UTEJfRkxVU0gsIHZjcHUpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odmNwdSwgaXNfZ3Vlc3RfbW9kZSh2Y3B1KSk7XFxuK1xcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdGtmaWZvX3Jlc2V0X291dChcXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXFx1MDAzZWVudHJpZXMpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmggYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXFxuaW5kZXggNmQ2Y2Q1OTA0ZGRmNjYuLmM2ZGU4NDhiZDljZWQ1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vdm14L25lc3RlZC5oXFxuQEAgLTU3LDE2ICs1NywxNCBAQCBib29sIG5lc3RlZF92bXhfY2hlY2tfaW9fYml0bWFwcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBwb3J0LFxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1jczEyICpnZXRfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4ge1xcbi1cXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2dmNwdS1cXHUwMDNlbXV0ZXgpIHx8XFxuLVxcdFxcdFxcdCAgICAhcmVmY291bnRfcmVhZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2V1c2Vyc19jb3VudCkpO1xcbitcXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XFxuIFxcbiBcXHRyZXR1cm4gdG9fdm14KHZjcHUpLVxcdTAwM2VuZXN0ZWQuY2FjaGVkX3ZtY3MxMjtcXG4gfVxcbiBcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3Qgdm1jczEyICpnZXRfc2hhZG93X3ZtY3MxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KSB8fFxcbi1cXHRcXHRcXHQgICAgIXJlZmNvdW50X3JlYWQoXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNldXNlcnNfY291bnQpKTtcXG4rXFx0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xcbiBcXG4gXFx0cmV0dXJuIHRvX3ZteCh2Y3B1KS1cXHUwMDNlbmVzdGVkLmNhY2hlZF9zaGFkb3dfdm1jczEyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi5lZWYzNzhkMGJiNDU1NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcXG5AQCAtMjIsNiArMjIsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjeGVuL2ludGVyZmFjZS92ZXJzaW9uLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2N4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3hlbi9pbnRlcmZhY2Uvc2NoZWQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3hlbi94ZW4tb3BzLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3hlbi9jcHVpZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3B2Y2xvY2suaFxcdTAwM2VcXG5AQCAtMTEwMyw2ICsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDpcXG4rXFx0XFx0QlVJTERfQlVHX09OKFhFTl9WQ1BVX0lEX0lOVkFMSUQgXFx1MDAzYyBLVk1fTUFYX1ZDUFVTKTtcXG4rXFxuIFxcdFxcdGlmIChkYXRhLVxcdTAwM2V1LnZjcHVfaWQgXFx1MDAzZT0gS1ZNX01BWF9WQ1BVUylcXG4gXFx0XFx0XFx0ciA9IC1FSU5WQUw7XFxuIFxcdFxcdGVsc2Uge1xcbkBAIC0xNjA3LDE2ICsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXFxuIFxcdHN0cnVjdCB2Y3B1X3NldF9zaW5nbGVzaG90X3RpbWVyIG9uZXNob3Q7XFxuIFxcdHN0cnVjdCB4ODZfZXhjZXB0aW9uIGU7XFxuIFxcbitcXHRpZiAoY21kICE9IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgY21kICE9IFZDUFVPUF9zdG9wX3NpbmdsZXNob3RfdGltZXIpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuIFxcdGlmICgha3ZtX3hlbl90aW1lcl9lbmFibGVkKHZjcHUpKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbi1cXHRzd2l0Y2ggKGNtZCkge1xcbi1cXHRjYXNlIFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcjpcXG4tXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbi1cXHRcXHRcXHQqciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHR9XFxuK1xcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X2lkID09IFhFTl9WQ1BVX0lEX0lOVkFMSUQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFJlamVjdCB0aGUgaHlwZXJjYWxsIGlmIHRoZSBndWVzdCBpcyB0cnlpbmcgdG8gc3RhcnQvc3RvcCB0aGUgdGltZXJcXG4rXFx0ICogZm9yIGEgZGlmZmVyZW50IHZDUFUuICBYZW4gcGVyLXZDUFUgaHlwZXJjYWxscyB0YWtlIGEgdGFyZ2V0IHZDUFUgYXNcXG4rXFx0ICogYSBjb21tb24gcGFyYW1ldGVyLCBhcyBhbGwgcGVyLXZDUFUgaHlwZXJjYWxscyAqZXhjZXB0KiBzaW5nbGUtc2hvdFxcbitcXHQgKiB0aW1lciB1cGRhdGVzIGNhbiBiZSBjcm9zcy12Q1BVLlxcbitcXHQgKi9cXG4rXFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbitcXHRcXHQqciA9IC1FSU5WQUw7XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHR9XFxuIFxcbitcXHRpZiAoY21kID09IFZDUFVPUF9zZXRfc2luZ2xlc2hvdF90aW1lcikge1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBUaGUgb25seSBkaWZmZXJlbmNlIGZvciAzMi1iaXQgY29tcGF0IGlzIHRoZSA0IGJ5dGVzIG9mXFxuIFxcdFxcdCAqIHBhZGRpbmcgYWZ0ZXIgdGhlIGludGVyZXN0aW5nIHBhcnQgb2YgdGhlIHN0cnVjdHVyZS4gU29cXG5AQCAtMTY0MCwyMCArMTY1NSwxMiBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3ZjcHVfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxvbmdtb2RlLCBpbnQgY21kLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRrdm1feGVuX3N0YXJ0X3RpbWVyKHZjcHUsIG9uZXNob3QudGltZW91dF9hYnNfbnMsIGZhbHNlKTtcXG4tXFx0XFx0KnIgPSAwO1xcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4tXFxuLVxcdGNhc2UgVkNQVU9QX3N0b3Bfc2luZ2xlc2hvdF90aW1lcjpcXG4tXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgIT0gdmNwdV9pZCkge1xcbi1cXHRcXHRcXHQqciA9IC1FSU5WQUw7XFxuLVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi1cXHRcXHR9XFxuK1xcdH0gZWxzZSB7XFxuIFxcdFxcdGt2bV94ZW5fc3RvcF90aW1lcih2Y3B1KTtcXG4tXFx0XFx0KnIgPSAwO1xcbi1cXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIGZhbHNlO1xcbitcXHQqciA9IDA7XFxuK1xcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX3NldF90aW1lcl9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVpbnQ2NF90IHRpbWVvdXQsXFxuQEAgLTIyOTksNyArMjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcXG4gXFxuIHZvaWQga3ZtX3hlbl9pbml0X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuLVxcdHZjcHUtXFx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVxcdTAwM2V2Y3B1X2lkeDtcXG4rXFx0dmNwdS1cXHUwMDNlYXJjaC54ZW4udmNwdV9pZCA9IFhFTl9WQ1BVX0lEX0lOVkFMSUQ7XFxuIFxcdHZjcHUtXFx1MDAzZWFyY2gueGVuLnBvbGxfZXZ0Y2huID0gMDtcXG4gXFxuIFxcdHRpbWVyX3NldHVwKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcXG5pbmRleCBhYjhjZmFlYzgyZDMxZS4uMGJkZmEzNjk5MzUyN2UgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXFxuQEAgLTk4OSw2ICs5ODksMTMgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXMoc3RydWN0IGt2bSAqa3ZtLCBlbnVtIGt2bV9idXMgaWR4KVxcbiBcXHRcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spKTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIGt2bV9sb2NrZGVwX2Fzc2VydF92Y3B1X2lzX2xvY2tlZF9vcl91bnJlYWNoYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuK3tcXG4rXFx0bG9ja2RlcF9hc3NlcnRfb25jZShsb2NrZGVwX2lzX2hlbGQoXFx1MDAyNnZjcHUtXFx1MDAzZW11dGV4KSB8fFxcbitcXHRcXHRcXHQgICAgdmNwdS1cXHUwMDNldmNwdV9pZHggXFx1MDAzYyAwIHx8XFxuK1xcdFxcdFxcdCAgICAhcmVmY291bnRfcmVhZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2V1c2Vyc19jb3VudCkpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdSAqa3ZtX2dldF92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgaW50IGkpXFxuIHtcXG4gXFx0aW50IG51bV92Y3B1cyA9IGF0b21pY19yZWFkKFxcdTAwMjZrdm0tXFx1MDAzZW9ubGluZV92Y3B1cyk7XFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWluLmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuaW5kZXggZTQ0YzIwYzA0OTYxMGQuLjA1Mjc1ZDMxOGJmYmM3IDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcXG4rKysgYi92aXJ0L2t2bS9rdm1fbWFpbi5jXFxuQEAgLTQxODgsNiArNDE4OCw4IEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcXG4gXFx0XFx0Z290byB2Y3B1X2RlY3JlbWVudDtcXG4gXFx0fVxcbiBcXG4rXFx0dmNwdS1cXHUwMDNldmNwdV9pZHggPSAtMTtcXG4rXFxuIFxcdEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGt2bV9ydW4pIFxcdTAwM2UgUEFHRV9TSVpFKTtcXG4gXFx0cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyk7XFxuIFxcdGlmICghcGFnZSkge1xcbkBAIC00MjE2LDYgKzQyMTgsMTEgQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxcbiBcXHRcXHRnb3RvIHVubG9ja192Y3B1X2Rlc3Ryb3k7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFNldCB0aGUgdkNQVSdzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy5cXG4rXFx0ICogVW53aW5kIHRoZSBpbmRleCBiYWNrIHRvIC0xIG9uIGZhaWx1cmUgc28gdGhhdCBLVk0gY2FuIHVzZSB0aGUgaW5kZXhcXG4rXFx0ICogdG8gZGV0ZWN0IHRoYXQgdGhlIHZDUFUgaXMgdW5yZWFjaGFibGUsIGUuZy4gZm9yIGxvY2tkZXAgYXNzZXJ0cy5cXG4rXFx0ICovXFxuIFxcdHZjcHUtXFx1MDAzZXZjcHVfaWR4ID0gYXRvbWljX3JlYWQoXFx1MDAyNmt2bS1cXHUwMDNlb25saW5lX3ZjcHVzKTtcXG4gXFx0ciA9IHhhX2luc2VydChcXHUwMDI2a3ZtLVxcdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVxcdTAwM2V2Y3B1X2lkeCwgdmNwdSwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gXFx0V0FSTl9PTl9PTkNFKHIgPT0gLUVCVVNZKTtcXG5AQCAtNDI1NCw2ICs0MjYxLDcgQEAgc3RhdGljIGludCBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGlkKVxcbiBcXHRrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7XFxuIFxcdHhhX2VyYXNlKFxcdTAwMjZrdm0tXFx1MDAzZXZjcHVfYXJyYXksIHZjcHUtXFx1MDAzZXZjcHVfaWR4KTtcXG4gdW5sb2NrX3ZjcHVfZGVzdHJveTpcXG4rXFx0dmNwdS1cXHUwMDNldmNwdV9pZHggPSAtMTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWxvY2spO1xcbiBcXHRrdm1fZGlydHlfcmluZ19mcmVlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VkaXJ0eV9yaW5nKTtcXG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjM1Ljc2MzM3MDc1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5OTQ4NDg3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NjEwN2YwMTk3MjJhMjdlZTE5M2Y1YzgyNTE1YWE1NTQ1Y2JhYTlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwNTo1MzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuaW5kZXggMWVlMGQyM2Y4OTQ5NzQuLjlkMzhjYjY0NDY2OGRhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbkBAIC0yMDYsMTQgKzIwNiwyMCBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpnZXRfdmNwdV9ieV92cGlkeChzdHJ1Y3Qga3ZtICprdm0sIHUzMiB2cGlkeClcbiBcbiBzdGF0aWMgc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljICpzeW5pY19nZXQoc3RydWN0IGt2bSAqa3ZtLCB1MzIgdnBpZHgpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuIFx0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljICpzeW5pYztcbitcdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdTtcbitcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiBcbiBcdHZjcHUgPSBnZXRfdmNwdV9ieV92cGlkeChrdm0sIHZwaWR4KTtcbi1cdGlmICghdmNwdSB8fCAhdG9faHZfdmNwdSh2Y3B1KSlcbitcdGlmICghdmNwdSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRzeW5pYyA9IHRvX2h2X3N5bmljKHZjcHUpO1xuLVx0cmV0dXJuIChzeW5pYy1cdTAwM2VhY3RpdmUpID8gc3luaWMgOiBOVUxMO1xuK1xuK1x0aHZfdmNwdSA9IHRvX2h2X3ZjcHVfc2FmZSh2Y3B1KTtcbitcdGlmICghaHZfdmNwdSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4rXHRzeW5pYyA9IFx1MDAyNmh2X3ZjcHUtXHUwMDNlc3luaWM7XG4rXHRyZXR1cm4gUkVBRF9PTkNFKHN5bmljLVx1MDAzZWFjdGl2ZSkgPyBzeW5pYyA6IE5VTEw7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxuQEAgLTU5Myw4ICs1OTksNyBAQCBzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUgPSBodl9zdGltZXJfdG9fdmNwdShzdGltZXIpO1xuIFxuLVx0c2V0X2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdHRvX2h2X3ZjcHUodmNwdSktXHUwMDNlc3RpbWVyX3BlbmRpbmdfYml0bWFwKTtcbitcdHNldF9iaXQoc3RpbWVyLVx1MDAzZWluZGV4LCB2Y3B1LVx1MDAzZWFyY2guaHlwZXJ2LVx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XG4gXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTtcbiBcdGlmICh2Y3B1X2tpY2spXG4gXHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG5AQCAtNjA4LDggKzYxMyw3IEBAIHN0YXRpYyB2b2lkIHN0aW1lcl9jbGVhbnVwKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdCAgICBzdGltZXItXHUwMDNlaW5kZXgpO1xuIFxuIFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyKTtcbi1cdGNsZWFyX2JpdChzdGltZXItXHUwMDNlaW5kZXgsXG4tXHRcdCAgdG9faHZfdmNwdSh2Y3B1KS1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuK1x0Y2xlYXJfYml0KHN0aW1lci1cdTAwM2VpbmRleCwgdmNwdS1cdTAwM2VhcmNoLmh5cGVydi1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuIFx0c3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nID0gZmFsc2U7XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSAwO1xuIH1cbkBAIC05NzIsNyArOTc2LDYgQEAgaW50IGt2bV9odl92Y3B1X2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0aWYgKCFodl92Y3B1KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdHZjcHUtXHUwMDNlYXJjaC5oeXBlcnYgPSBodl92Y3B1O1xuIFx0aHZfdmNwdS1cdTAwM2V2Y3B1ID0gdmNwdTtcbiBcbiBcdHN5bmljX2luaXQoXHUwMDI2aHZfdmNwdS1cdTAwM2VzeW5pYyk7XG5AQCAtOTg4LDYgKzk5MSwxNCBAQCBpbnQga3ZtX2h2X3ZjcHVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmh2X3ZjcHUtXHUwMDNldGxiX2ZsdXNoX2ZpZm9baV0ud3JpdGVfbG9jayk7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogRW5zdXJlIHRoZSBzdHJ1Y3R1cmUgaXMgZnVsbHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGl0J3MgdmlzaWJsZSB0b1xuK1x0ICogb3RoZXIgdGFza3MsIGFzIG11Y2ggb2YgdGhlIHN0YXRlIGNhbiBiZSBsZWdhbGx5IGFjY2Vzc2VkIHdpdGhvdXRcbitcdCAqIGhvbGRpbmcgdmNwdS1cdTAwM2VtdXRleC5cbitcdCAqXG4rXHQgKiBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkgaW4gdG9faHZfdmNwdV9zYWZlKCkuXG4rXHQgKi9cbitcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5oeXBlcnYsIGh2X3ZjcHUpO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTEwMDIsNyArMTAxMyw3IEBAIGludCBrdm1faHZfYWN0aXZhdGVfc3luaWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGRvbnRfemVyb19zeW5pY19wYWdlcylcbiBcbiBcdHN5bmljID0gdG9faHZfc3luaWModmNwdSk7XG4gXG4tXHRzeW5pYy1cdTAwM2VhY3RpdmUgPSB0cnVlO1xuK1x0V1JJVEVfT05DRShzeW5pYy1cdTAwM2VhY3RpdmUsIHRydWUpO1xuIFx0c3luaWMtXHUwMDNlZG9udF96ZXJvX3N5bmljX3BhZ2VzID0gZG9udF96ZXJvX3N5bmljX3BhZ2VzO1xuIFx0c3luaWMtXHUwMDNlY29udHJvbCA9IEhWX1NZTklDX0NPTlRST0xfRU5BQkxFO1xuIFx0cmV0dXJuIDA7XG5AQCAtMTkzNSwxNCArMTk0NiwxNCBAQCBzdGF0aWMgaW50IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2VudHJpZXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoY1xuIFx0cmV0dXJuIGt2bV9odl9nZXRfaGNfZGF0YShrdm0sIGhjLCBoYy1cdTAwM2VyZXBfY250LCBoYy1cdTAwM2VyZXBfY250LCBlbnRyaWVzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLVx0XHRcdFx0IHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHQgdTY0ICplbnRyaWVzLCBpbnQgY291bnQpXG4rc3RhdGljIHZvaWQgaHZfdGxiX2ZsdXNoX2VucXVldWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgKmVudHJpZXMsIGludCBjb3VudCxcbitcdFx0XHRcdCBib29sIGlzX2d1ZXN0X21vZGUpXG4ge1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbitcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHR1NjQgZmx1c2hfYWxsX2VudHJ5ID0gS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWTtcbiBcbi1cdGlmICghaHZfdmNwdSlcbitcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4gXHRcdHJldHVybjtcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2V3cml0ZV9sb2NrKTtcbkBAIC0xOTcwLDE1ICsxOTgxLDE2IEBAIHN0YXRpYyB2b2lkIGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBpbnQga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4gXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gKnRsYl9mbHVzaF9maWZvO1xuLVx0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdSh2Y3B1KTtcbiBcdHU2NCBlbnRyaWVzW0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFXTtcbiBcdGludCBpLCBqLCBjb3VudDtcbiBcdGd2YV90IGd2YTtcbiBcbi1cdGlmICghdGRwX2VuYWJsZWQgfHwgIWh2X3ZjcHUpXG4rXHRpZiAoIXRkcF9lbmFibGVkKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0Y291bnQgPSBrZmlmb19vdXQoXHUwMDI2dGxiX2ZsdXNoX2ZpZm8tXHUwMDNlZW50cmllcywgZW50cmllcywgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xuIFxuQEAgLTIwMTcsNyArMjAyOSw2IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG4gXHRzdHJ1Y3QgaHZfdGxiX2ZsdXNoX2V4IGZsdXNoX2V4O1xuIFx0c3RydWN0IGh2X3RsYl9mbHVzaCBmbHVzaDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqdGxiX2ZsdXNoX2ZpZm87XG4gXHQvKlxuIFx0ICogTm9ybWFsbHksIHRoZXJlIGNhbiBiZSBubyBtb3JlIHRoYW4gJ0tWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFJ1xuIFx0ICogZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIFRoZSBsYXN0IGVudHJ5LCBob3dldmVyLCBuZWVkcyB0byBiZVxuQEAgLTIxNDQsMTEgKzIxNTUsOCBAQCBzdGF0aWMgdTY0IGt2bV9odl9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2h2X2hjYWxsICpoYylcbiBcdCAqIGFuYWx5emUgaXQgaGVyZSwgZmx1c2ggVExCIHJlZ2FyZGxlc3Mgb2YgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHNwYWNlLlxuIFx0ICovXG4gXHRpZiAoYWxsX2NwdXMgXHUwMDI2XHUwMDI2ICFpc19ndWVzdF9tb2RlKHZjcHUpKSB7XG4tXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSkge1xuLVx0XHRcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2LCBmYWxzZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuLVx0XHR9XG4rXHRcdGt2bV9mb3JfZWFjaF92Y3B1KGksIHYsIGt2bSlcbitcdFx0XHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXHUwMDNlcmVwX2NudCwgZmFsc2UpO1xuIFxuIFx0XHRrdm1fbWFrZV9hbGxfY3B1c19yZXF1ZXN0KGt2bSwgS1ZNX1JFUV9IVl9UTEJfRkxVU0gpO1xuIFx0fSBlbHNlIGlmICghaXNfZ3Vlc3RfbW9kZSh2Y3B1KSkge1xuQEAgLTIxNTgsOSArMjE2Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRcdHYgPSBrdm1fZ2V0X3ZjcHUoa3ZtLCBpKTtcbiBcdFx0XHRpZiAoIXYpXG4gXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgZmFsc2UpO1xuLVx0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9maWZvLFxuLVx0XHRcdFx0XHQgICAgIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250KTtcbitcdFx0XHRodl90bGJfZmx1c2hfZW5xdWV1ZSh2LCB0bGJfZmx1c2hfZW50cmllcywgaGMtXHUwMDNlcmVwX2NudCwgZmFsc2UpO1xuIFx0XHR9XG4gXG4gXHRcdGt2bV9tYWtlX3ZjcHVzX3JlcXVlc3RfbWFzayhrdm0sIEtWTV9SRVFfSFZfVExCX0ZMVVNILCB2Y3B1X21hc2spO1xuQEAgLTIxNzAsNyArMjE3Niw3IEBAIHN0YXRpYyB1NjQga3ZtX2h2X2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1faHZfaGNhbGwgKmhjKVxuIFx0XHRiaXRtYXBfemVybyh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuIFxuIFx0XHRrdm1fZm9yX2VhY2hfdmNwdShpLCB2LCBrdm0pIHtcbi1cdFx0XHRodl92ID0gdG9faHZfdmNwdSh2KTtcbitcdFx0XHRodl92ID0gdG9faHZfdmNwdV9zYWZlKHYpO1xuIFxuIFx0XHRcdC8qXG4gXHRcdFx0ICogVGhlIGZvbGxvd2luZyBjaGVjayByYWNlcyB3aXRoIG5lc3RlZCB2Q1BVcyBlbnRlcmluZy9leGl0aW5nXG5AQCAtMjE5MSw5ICsyMTk3LDcgQEAgc3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHRfX3NldF9iaXQoaSwgdmNwdV9tYXNrKTtcbi1cdFx0XHR0bGJfZmx1c2hfZmlmbyA9IGt2bV9odl9nZXRfdGxiX2ZsdXNoX2ZpZm8odiwgdHJ1ZSk7XG4tXHRcdFx0aHZfdGxiX2ZsdXNoX2VucXVldWUodiwgdGxiX2ZsdXNoX2ZpZm8sXG4tXHRcdFx0XHRcdCAgICAgdGxiX2ZsdXNoX2VudHJpZXMsIGhjLVx1MDAzZXJlcF9jbnQpO1xuK1x0XHRcdGh2X3RsYl9mbHVzaF9lbnF1ZXVlKHYsIHRsYl9mbHVzaF9lbnRyaWVzLCBoYy1cdTAwM2VyZXBfY250LCB0cnVlKTtcbiBcdFx0fVxuIFxuIFx0XHRrdm1fbWFrZV92Y3B1c19yZXF1ZXN0X21hc2soa3ZtLCBLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdV9tYXNrKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi4zN2EwYmNmMDNlMjgxNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtNjIsOCArNjIsMjIgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2h2ICp0b19rdm1faHYoc3RydWN0IGt2bSAqa3ZtKVxuIFx0cmV0dXJuIFx1MDAyNmt2bS1cdTAwM2VhcmNoLmh5cGVydjtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKnRvX2h2X3ZjcHVfc2FmZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4re1xuK1x0LypcbitcdCAqIEVuc3VyZSB0aGUgSHlwZXJWIHN0cnVjdHVyZSBpcyBmdWxseSBpbml0aWFsaXplZCB3aGVuIGFjY2Vzc2luZyBpdFxuK1x0ICogd2l0aG91dCBob2xkaW5nIHZjcHUtXHUwMDNlbXV0ZXggKG9yIHNvbWUgb3RoZXIgZ3VhcmFudGVlIHRoYXQgS1ZNIGNhbid0XG4rXHQgKiBjb25jdXJyZW50bHkgaW5zdGFudGlhdGUgdGhlIHN0cnVjdHVyZSkuXG4rXHQgKlxuK1x0ICogUGFpcnMgd2l0aCB0aGUgc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBrdm1faHZfdmNwdV9pbml0KCkuXG4rXHQgKi9cbitcdHJldHVybiBzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5oeXBlcnYpO1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odiAqdG9faHZfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuK1x0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xuK1xuIFx0cmV0dXJuIHZjcHUtXHUwMDNlYXJjaC5oeXBlcnY7XG4gfVxuIFxuQEAgLTg4LDcgKzEwMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9odl9zeW5kYmcgKnRvX2h2X3N5bmRiZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gc3RhdGljIGlubGluZSB1MzIga3ZtX2h2X2dldF92cGluZGV4KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1KHZjcHUpO1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2ICpodl92Y3B1ID0gdG9faHZfdmNwdV9zYWZlKHZjcHUpO1xuIFxuIFx0cmV0dXJuIGh2X3ZjcHUgPyBodl92Y3B1LVx1MDAzZXZwX2luZGV4IDogdmNwdS1cdTAwM2V2Y3B1X2lkeDtcbiB9XG5AQCAtMTQyLDcgKzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICpodl9zdGltZXJfdG9fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltXG4gXG4gc3RhdGljIGlubGluZSBib29sIGt2bV9odl9oYXNfc3RpbWVyX3BlbmRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXG4gXHRpZiAoIWh2X3ZjcHUpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0xOTgsMTAgKzIxMiwxMyBAQCBpbnQga3ZtX2dldF9odl9jcHVpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1aWQyICpjcHVpZCxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyAqa3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0XHRcdFx0XHRcdFx0ICAgYm9vbCBpc19ndWVzdF9tb2RlKVxuIHtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odiAqaHZfdmNwdSA9IHRvX2h2X3ZjcHUodmNwdSk7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHYgKmh2X3ZjcHUgPSB0b19odl92Y3B1X3NhZmUodmNwdSk7XG4gXHRpbnQgaSA9IGlzX2d1ZXN0X21vZGUgPyBIVl9MMl9UTEJfRkxVU0hfRklGTyA6XG4gXHRcdFx0XHRIVl9MMV9UTEJfRkxVU0hfRklGTztcbiBcbitcdGlmICghaHZfdmNwdSlcbitcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRyZXR1cm4gXHUwMDI2aHZfdmNwdS1cdTAwM2V0bGJfZmx1c2hfZmlmb1tpXTtcbiB9XG4gXG5AQCAtMjA5LDEwICsyMjYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGt2bV9odl92Y3B1X3B1cmdlX2ZsdXNoX3RsYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvICp0bGJfZmx1c2hfZmlmbztcbiBcbi1cdGlmICghdG9faHZfdmNwdSh2Y3B1KSB8fCAha3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9UTEJfRkxVU0gsIHZjcHUpKVxuK1x0aWYgKCFrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX0hWX1RMQl9GTFVTSCwgdmNwdSkpXG4gXHRcdHJldHVybjtcbiBcbiBcdHRsYl9mbHVzaF9maWZvID0ga3ZtX2h2X2dldF90bGJfZmx1c2hfZmlmbyh2Y3B1LCBpc19ndWVzdF9tb2RlKHZjcHUpKTtcbitcdGlmICghdGxiX2ZsdXNoX2ZpZm8pXG4rXHRcdHJldHVybjtcbiBcbiBcdGtmaWZvX3Jlc2V0X291dChcdTAwMjZ0bGJfZmx1c2hfZmlmby1cdTAwM2VlbnRyaWVzKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9uZXN0ZWQuaCBiL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbmluZGV4IDZkNmNkNTkwNGRkZjY2Li5jNmRlODQ4YmQ5Y2VkNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvbmVzdGVkLmhcbkBAIC01NywxNiArNTcsMTQgQEAgYm9vbCBuZXN0ZWRfdm14X2NoZWNrX2lvX2JpdG1hcHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgcG9ydCxcbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF92bWNzMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdGxvY2tkZXBfYXNzZXJ0X29uY2UobG9ja2RlcF9pc19oZWxkKFx1MDAyNnZjcHUtXHUwMDNlbXV0ZXgpIHx8XG4tXHRcdFx0ICAgICFyZWZjb3VudF9yZWFkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZXVzZXJzX2NvdW50KSk7XG4rXHRrdm1fbG9ja2RlcF9hc3NlcnRfdmNwdV9pc19sb2NrZWRfb3JfdW5yZWFjaGFibGUodmNwdSk7XG4gXG4gXHRyZXR1cm4gdG9fdm14KHZjcHUpLVx1MDAzZW5lc3RlZC5jYWNoZWRfdm1jczEyO1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bWNzMTIgKmdldF9zaGFkb3dfdm1jczEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuLVx0XHRcdCAgICAhcmVmY291bnRfcmVhZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2V1c2Vyc19jb3VudCkpO1xuK1x0a3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHZjcHUpO1xuIFxuIFx0cmV0dXJuIHRvX3ZteCh2Y3B1KS1cdTAwM2VuZXN0ZWQuY2FjaGVkX3NoYWRvd192bWNzMTI7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xuaW5kZXggNjk0YjMxYzFmY2M5YWYuLmVlZjM3OGQwYmI0NTU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3hlbi5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbkBAIC0yMiw2ICsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjeGVuL2ludGVyZmFjZS92ZXJzaW9uLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3hlbi9pbnRlcmZhY2Uvc2NoZWQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3hlbi94ZW4tb3BzLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20veGVuL2NwdWlkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vcHZjbG9jay5oXHUwMDNlXG5AQCAtMTEwMyw2ICsxMTA0LDggQEAgaW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIEtWTV9YRU5fVkNQVV9BVFRSX1RZUEVfVkNQVV9JRDpcbitcdFx0QlVJTERfQlVHX09OKFhFTl9WQ1BVX0lEX0lOVkFMSUQgXHUwMDNjIEtWTV9NQVhfVkNQVVMpO1xuK1xuIFx0XHRpZiAoZGF0YS1cdTAwM2V1LnZjcHVfaWQgXHUwMDNlPSBLVk1fTUFYX1ZDUFVTKVxuIFx0XHRcdHIgPSAtRUlOVkFMO1xuIFx0XHRlbHNlIHtcbkBAIC0xNjA3LDE2ICsxNjEwLDI4IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfdmNwdV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgbG9uZ21vZGUsIGludCBjbWQsXG4gXHRzdHJ1Y3QgdmNwdV9zZXRfc2luZ2xlc2hvdF90aW1lciBvbmVzaG90O1xuIFx0c3RydWN0IHg4Nl9leGNlcHRpb24gZTtcbiBcbitcdGlmIChjbWQgIT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGNtZCAhPSBWQ1BVT1Bfc3RvcF9zaW5nbGVzaG90X3RpbWVyKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRpZiAoIWt2bV94ZW5fdGltZXJfZW5hYmxlZCh2Y3B1KSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuLVx0c3dpdGNoIChjbWQpIHtcbi1cdGNhc2UgVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyOlxuLVx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbi1cdFx0XHQqciA9IC1FSU5WQUw7XG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHRcdH1cbitcdGlmICh2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPT0gWEVOX1ZDUFVfSURfSU5WQUxJRClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0LypcbitcdCAqIFJlamVjdCB0aGUgaHlwZXJjYWxsIGlmIHRoZSBndWVzdCBpcyB0cnlpbmcgdG8gc3RhcnQvc3RvcCB0aGUgdGltZXJcbitcdCAqIGZvciBhIGRpZmZlcmVudCB2Q1BVLiAgWGVuIHBlci12Q1BVIGh5cGVyY2FsbHMgdGFrZSBhIHRhcmdldCB2Q1BVIGFzXG4rXHQgKiBhIGNvbW1vbiBwYXJhbWV0ZXIsIGFzIGFsbCBwZXItdkNQVSBoeXBlcmNhbGxzICpleGNlcHQqIHNpbmdsZS1zaG90XG4rXHQgKiB0aW1lciB1cGRhdGVzIGNhbiBiZSBjcm9zcy12Q1BVLlxuK1x0ICovXG4rXHRpZiAodmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkICE9IHZjcHVfaWQpIHtcbitcdFx0KnIgPSAtRUlOVkFMO1xuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdH1cbiBcbitcdGlmIChjbWQgPT0gVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyKSB7XG4gXHRcdC8qXG4gXHRcdCAqIFRoZSBvbmx5IGRpZmZlcmVuY2UgZm9yIDMyLWJpdCBjb21wYXQgaXMgdGhlIDQgYnl0ZXMgb2ZcbiBcdFx0ICogcGFkZGluZyBhZnRlciB0aGUgaW50ZXJlc3RpbmcgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBTb1xuQEAgLTE2NDAsMjAgKzE2NTUsMTIgQEAgc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCxcbiBcdFx0fVxuIFxuIFx0XHRrdm1feGVuX3N0YXJ0X3RpbWVyKHZjcHUsIG9uZXNob3QudGltZW91dF9hYnNfbnMsIGZhbHNlKTtcbi1cdFx0KnIgPSAwO1xuLVx0XHRyZXR1cm4gdHJ1ZTtcbi1cbi1cdGNhc2UgVkNQVU9QX3N0b3Bfc2luZ2xlc2hvdF90aW1lcjpcbi1cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pZCAhPSB2Y3B1X2lkKSB7XG4tXHRcdFx0KnIgPSAtRUlOVkFMO1xuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0XHR9XG4rXHR9IGVsc2Uge1xuIFx0XHRrdm1feGVuX3N0b3BfdGltZXIodmNwdSk7XG4tXHRcdCpyID0gMDtcbi1cdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmFsc2U7XG4rXHQqciA9IDA7XG4rXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF9zZXRfdGltZXJfb3Aoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1aW50NjRfdCB0aW1lb3V0LFxuQEAgLTIyOTksNyArMjMwNiw3IEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcbiB2b2lkIGt2bV94ZW5faW5pdF92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB7XG4tXHR2Y3B1LVx1MDAzZWFyY2gueGVuLnZjcHVfaWQgPSB2Y3B1LVx1MDAzZXZjcHVfaWR4O1xuK1x0dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2lkID0gWEVOX1ZDUFVfSURfSU5WQUxJRDtcbiBcdHZjcHUtXHUwMDNlYXJjaC54ZW4ucG9sbF9ldnRjaG4gPSAwO1xuIFxuIFx0dGltZXJfc2V0dXAoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi5wb2xsX3RpbWVyLCBjYW5jZWxfZXZ0Y2huX3BvbGwsIDApO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaCBiL2luY2x1ZGUvbGludXgva3ZtX2hvc3QuaFxuaW5kZXggYWI4Y2ZhZWM4MmQzMWUuLjBiZGZhMzY5OTM1MjdlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmhcbkBAIC05ODksNiArOTg5LDEzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9pb19idXMgKmt2bV9nZXRfYnVzKHN0cnVjdCBrdm0gKmt2bSwgZW51bSBrdm1fYnVzIGlkeClcbiBcdFx0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jaykpO1xuIH1cbiBcbitzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2xvY2tkZXBfYXNzZXJ0X3ZjcHVfaXNfbG9ja2VkX29yX3VucmVhY2hhYmxlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbit7XG4rXHRsb2NrZGVwX2Fzc2VydF9vbmNlKGxvY2tkZXBfaXNfaGVsZChcdTAwMjZ2Y3B1LVx1MDAzZW11dGV4KSB8fFxuK1x0XHRcdCAgICB2Y3B1LVx1MDAzZXZjcHVfaWR4IFx1MDAzYyAwIHx8XG4rXHRcdFx0ICAgICFyZWZjb3VudF9yZWFkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZXVzZXJzX2NvdW50KSk7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV92Y3B1ICprdm1fZ2V0X3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCBpbnQgaSlcbiB7XG4gXHRpbnQgbnVtX3ZjcHVzID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbmluZGV4IGU0NGMyMGMwNDk2MTBkLi4wNTI3NWQzMThiZmJjNyAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2t2bV9tYWluLmNcbisrKyBiL3ZpcnQva3ZtL2t2bV9tYWluLmNcbkBAIC00MTg4LDYgKzQxODgsOCBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRcdGdvdG8gdmNwdV9kZWNyZW1lbnQ7XG4gXHR9XG4gXG4rXHR2Y3B1LVx1MDAzZXZjcHVfaWR4ID0gLTE7XG4rXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBrdm1fcnVuKSBcdTAwM2UgUEFHRV9TSVpFKTtcbiBcdHBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUxfQUNDT1VOVCB8IF9fR0ZQX1pFUk8pO1xuIFx0aWYgKCFwYWdlKSB7XG5AQCAtNDIxNiw2ICs0MjE4LDExIEBAIHN0YXRpYyBpbnQga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBpZClcbiBcdFx0Z290byB1bmxvY2tfdmNwdV9kZXN0cm95O1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIFNldCB0aGUgdkNQVSdzIGluZGV4ICpiZWZvcmUqIHRoZSB2Q1BVIGlzIHJlYWNoYWJsZSBieSBvdGhlciB0YXNrcy5cbitcdCAqIFVud2luZCB0aGUgaW5kZXggYmFjayB0byAtMSBvbiBmYWlsdXJlIHNvIHRoYXQgS1ZNIGNhbiB1c2UgdGhlIGluZGV4XG4rXHQgKiB0byBkZXRlY3QgdGhhdCB0aGUgdkNQVSBpcyB1bnJlYWNoYWJsZSwgZS5nLiBmb3IgbG9ja2RlcCBhc3NlcnRzLlxuK1x0ICovXG4gXHR2Y3B1LVx1MDAzZXZjcHVfaWR4ID0gYXRvbWljX3JlYWQoXHUwMDI2a3ZtLVx1MDAzZW9ubGluZV92Y3B1cyk7XG4gXHRyID0geGFfaW5zZXJ0KFx1MDAyNmt2bS1cdTAwM2V2Y3B1X2FycmF5LCB2Y3B1LVx1MDAzZXZjcHVfaWR4LCB2Y3B1LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIFx0V0FSTl9PTl9PTkNFKHIgPT0gLUVCVVNZKTtcbkBAIC00MjU0LDYgKzQyNjEsNyBAQCBzdGF0aWMgaW50IGt2bV92bV9pb2N0bF9jcmVhdGVfdmNwdShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaWQpXG4gXHRrdm1fcHV0X2t2bV9ub19kZXN0cm95KGt2bSk7XG4gXHR4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNldmNwdV9hcnJheSwgdmNwdS1cdTAwM2V2Y3B1X2lkeCk7XG4gdW5sb2NrX3ZjcHVfZGVzdHJveTpcbitcdHZjcHUtXHUwMDNldmNwdV9pZHggPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbG9jayk7XG4gXHRrdm1fZGlydHlfcmluZ19mcmVlKFx1MDAyNnZjcHUtXHUwMDNlZGlydHlfcmluZyk7XG4gYXJjaF92Y3B1X2Rlc3Ryb3k6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1MzozNS43NjMzNzI4NDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDg2MzY2NDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBlbXVsYXRpb24gb2YgSHlwZXItViBhbmQgWGVuIG9uIHg4Niwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzLCBpbXBhY3RpbmcgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIEtWTS4gVGhpcyBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIFwiV29ydGhGdXp6aW5nPXRydWVcIiBzaXR1YXRpb24uIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5UaGUgY2hhbmdlcyBhcmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHNldmVyYWwgZmlsZXM6IGBoeXBlcnYuY2AsIGBoeXBlcnYuaGAsIGBuZXN0ZWQuaGAsIGB4ZW4uY2AsIGBrdm1faG9zdC5oYCwgYW5kIGBrdm1fbWFpbi5jYC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBoaXR0aW5nIGJvdGggSHlwZXItViBhbmQgWGVuLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGRpZmZlcmVudCBlbXVsYXRpb24gcGF0aHMuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQgYXJlOiBgc3luaWNfZ2V0YCwgYHN0aW1lcl9tYXJrX3BlbmRpbmdgLCBgc3RpbWVyX2NsZWFudXBgLCBga3ZtX2h2X3ZjcHVfaW5pdGAsIGBrdm1faHZfYWN0aXZhdGVfc3luaWNgLCBgaHZfdGxiX2ZsdXNoX2VucXVldWVgLCBga3ZtX2h2X3ZjcHVfZmx1c2hfdGxiYCwgYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIGBrdm1feGVuX2luaXRfdmNwdWAsIGFuZCBga3ZtX3ZtX2lvY3RsX2NyZWF0ZV92Y3B1YC5cblxuTm93LCBmb3IgZnV6emluZywgSSB3YW50IHRvIHByaW9yaXRpemUgc3BlY2lmaWMgdGFyZ2V0cy4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgSSB3YW50IHRvIGF2b2lkIGFueXRoaW5nIHRoYXQncyB0b28gZ2VuZXJpYyBsaWtlIGBrdm1fdm1faW9jdGxfY3JlYXRlX3ZjcHVgIGlmIGl0J3Mgbm90IGEgaG90LXBhdGgsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQuIEknbSBmb2N1c2luZyBvbiBoeXBlcmNhbGwgYW5kIGlvY3RsIGhhbmRsZXJzLiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBhbmQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgYXJlIGFsbCBleGNlbGxlbnQgdGFyZ2V0cy4gIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgIGFuZCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYCBhcmUgbGlrZWx5IGFsc28gaW50ZXJlc3RpbmcuIFRoZSBvdGhlcnMgbmVlZCBtb3JlIGNvbnRleHQgdG8gYXNzZXNzLlxuXG5OZXh0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgdGhlIHJlbGV2YW50IGZlYXR1cmVzIGFyZSBlbmFibGVkLiBPYnZpb3VzbHksIGBLVk1gIGl0c2VsZiBpcyByZXF1aXJlZCwgYnV0IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRoZXNlIGNoYW5nZXMgYXJlIGdhdGVkIGJlaGluZCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgSHlwZXItViBvciBYZW4gc3VwcG9ydC4gSSdsbCBncmVwIGZvciBvcHRpb25zIGxpa2UgYEtWTV9YRU5gIG9yIGBLVk1fSFlQRVJWYCBpbiB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQgSSBmaW5kLiBUaGlzIHdpbGwgaGVscCB0YWlsb3IgZnV6emluZyBjb25maWd1cmF0aW9ucyB0byB0cmlnZ2VyIHRoZSBtb2RpZmllZCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTc5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NDUuMjQ5NzQxODIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk1MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjQ1LjM4MzY5ODcyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NDIxNzc3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZm9jdXMgaXMgb24gaHlwZXJ2aXNvciBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsLiBJbW1lZGlhdGVseSwgdGhlIG5hbWVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGp1bXAgb3V0LiBUaGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHJlbGF0aW5nIHRvIEh5cGVyLVYgYW5kIFhlbiBzdXBwb3J0IHJlc3BlY3RpdmVseSwgYW5kIGl0J3MgbG9naWNhbCB0byBhc3N1bWUgdGhhdCB0aGV5IGFyZSBrZXkgdG8gZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gZnVuY3Rpb25hbGl0eSBvbiB0aGlzIHBsYXRmb3JtLiBJ4oCZbSB0aGlua2luZyB3ZSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbW9kdWxlcyBhcmUgKmVzc2VudGlhbCogdG8gdGhpcyBzZXR1cC4gVGhhdCBpcyB0byBzYXksIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIHRoZSBuZXh0IHF1ZXN0aW9uLiBEbyB3ZSBuZWVkIHRoZW0sIG9yIGFyZSB0aGVyZSBhbHRlcm5hdGl2ZXMgYXQgcGxheT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY3VycmVudCBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzY2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NTAuMjI1ODc4NTQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTg0NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktWTV9IWVBFUlZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZT0xMj1rdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgKz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjEzOmt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSArPSBoeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0xNC1rdm0tJChDT05GSUdfS1ZNX1hFTilcXHQrPSB4ZW4ub1xcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcXHQrPSB2bXgvc2d4Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MjE6a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0yMi1rdm0taW50ZWwtJChDT05GSUdfS1ZNX0lOVEVMX1REWClcXHQrPSB2bXgvdGR4Lm9cXG4tLVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZT0yNj1rdm0tYW1kLSQoQ09ORklHX0tWTV9BTURfU0VWKVxcdCs9IHN2bS9zZXYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyNzprdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gc3ZtL2h5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1Mzo1MC4yODA4Njg5NDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU4Njg0ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBjb21waWxpbmcgYGh5cGVydi5vYCBhbmQgYHhlbi5vYCBkZWZpbml0ZWx5IHJlcXVpcmVzIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YsIGJ1dCBiYXNlZCBvbiB0aGUgcGF0Y2gsIHRob3NlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIG9uZXMuIEl0J3MgbW9kaWZ5aW5nIGBhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYCwgc28gdGhhdCBjb25maXJtcyBpdC5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrczogd2hhdCBzaG91bGQgSSBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24/IEZyb20gdGhlIGNvbnRleHQsIEkndmUgZ290IGEgbGlzdDogYGt2bV9odl9mbHVzaF90bGJgLCBga3ZtX3hlbl9oY2FsbF92Y3B1X29wYCwgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAsIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgLCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYCwgYW5kIGBrdm1faHZfdmNwdV9pbml0YC5cblxuV2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIHNlZWluZyB0aGF0IGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAgYXJlIGh5cGVyY2FsbCBoYW5kbGVycy4gRXhjZWxsZW50IHRhcmdldHMsIGFzIGV4cGVjdGVkLiBBbmQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciEgRXZlbiBiZXR0ZXIuIFRoZXNlIGFyZSBwcmltZSBjYW5kaWRhdGVzIHRvIHRocm93IHNvbWUgZnV6emluZyBkYXRhIGF0LiBJIHNob3VsZCBwcm9iYWJseSBnaXZlIGBrdm1faHZfdmNwdV9mbHVzaF90bGJgIGFub3RoZXIgbG9vayB0b28uXG5cblJpZ2h0LCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRob3NlIHR3byBoeXBlcmNhbGwgaGFuZGxlcnMsIGBrdm1faHZfZmx1c2hfdGxiYCBhbmQgYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAsIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHdoYXQgSSB0aGluayB0aGV5IGFyZS4gVGhlc2UgYXJlIGdvaW5nIHRvIGJlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMzYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTM6NTYuMjM5NTU4MDAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NzY2NTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz0xOTgxPWludCBrdm1faHZfdmNwdV9mbHVzaF90bGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjMtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwMjQ6c3RhdGljIHU2NCBrdm1faHZfZmx1c2hfdGxiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9odl9oY2FsbCAqaGMpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwMjUte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIwNzktXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIwODA6XFx0XFx0dHJhY2Vfa3ZtX2h2X2ZsdXNoX3RsYihmbHVzaC5wcm9jZXNzb3JfbWFzayxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjA4MS1cXHRcXHRcXHRcXHQgICAgICAgZmx1c2guYWRkcmVzc19zcGFjZSwgZmx1c2guZmxhZ3MsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjEwOS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjExMDpcXHRcXHR0cmFjZV9rdm1faHZfZmx1c2hfdGxiX2V4KGZsdXNoX2V4Lmh2X3ZwX3NldC52YWxpZF9iYW5rX21hc2ssXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIxMTEtXFx0XFx0XFx0XFx0XFx0ICBmbHVzaF9leC5odl92cF9zZXQuZm9ybWF0LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTIxODUtXFx0XFx0XFx0ICogcnVubmluZyBvbiB0aGUgc2FtZSBMMSB2Q1BVIGZyb20gdGhlIG1vbWVudCBvZiB0aGUgcmVxdWVzdCB1bnRpbFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyMTg2OlxcdFxcdFxcdCAqIGt2bV9odl9mbHVzaF90bGIoKSByZXR1cm5zLiBUTEIgaXMgZnVsbHkgZmx1c2hlZCBpbiBhbGwgb3RoZXJcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjE4Ny1cXHRcXHRcXHQgKiBjYXNlcywgZS5nLiB3aGVuIHRoZSB0YXJnZXQgTDIgdkNQVSBtaWdyYXRlcyB0byBhIGRpZmZlcmVudCBMMVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI1Mzg9aW50IGt2bV9odl9oeXBlcmNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2MzEtXFx0XFx0fVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNjMyOlxcdFxcdHJldCA9IGt2bV9odl9mbHVzaF90bGIodmNwdSwgXFx1MDAyNmhjKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjYzMy1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNjQ0LVxcdFxcdH1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjY0NTpcXHRcXHRyZXQgPSBrdm1faHZfZmx1c2hfdGxiKHZjcHUsIFxcdTAwMjZoYyk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI2NDYtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjU2LjI5NzMyOTUxNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Nzc3ODUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqVHJhY2luZyB0aGUgVExCIEZsdXNoIENhbGwqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY2x1ZSBsZWFkcyBtZSB0byBiZWxpZXZlIHRoYXQgYGt2bV9odl9mbHVzaF90bGJgIGlzIGluZGVlZCBpbnZva2VkIHdpdGhpbiB0aGUgYGt2bV9odl9oeXBlcmNhbGxgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBob3cgdGhpcyBoeXBlcmNhbGwgaXMgYmVpbmcgaGFuZGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHBhdGggb2YgZXhlY3V0aW9uIHRvIGRldGVybWluZSB3aGVuIGFuZCB3aHkgdGhlIFRMQiBmbHVzaCBpcyBoYXBwZW5pbmcuIEknbGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLiBUaGF0J3Mgd2hlcmUgSSBhbnRpY2lwYXRlIHRoZSBoeXBlcmNhbGwgZGlzcGF0Y2hpbmcgbG9naWMgcmVzaWRlcywgYW5kIHRoYXQgc2hvdWxkIHNoZWQgbGlnaHQgb24gdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBUTEIgZmx1c2ggd2l0aGluIHRoZSBoeXBlcnZpc29yLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgdmlydHVhbCBtYWNoaW5lIGlzIGJlaGF2aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjc2NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDA1OjUzOjU5Ljc3NTExNjcwOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4NzM3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9oY2FsbF92Y3B1X29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ZW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veGVuLmM9MTYwMj1zdHJ1Y3QgY29tcGF0X3ZjcHVfc2V0X3NpbmdsZXNob3RfdGltZXIge1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTE2MDYtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE2MDc6c3RhdGljIGJvb2wga3ZtX3hlbl9oY2FsbF92Y3B1X29wKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsb25nbW9kZSwgaW50IGNtZCxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTYwOC1cXHRcXHRcXHRcXHQgIGludCB2Y3B1X2lkLCB1NjQgcGFyYW0sIHU2NCAqcilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xNjgxPWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTc0My1cXHRjYXNlIF9fSFlQRVJWSVNPUl92Y3B1X29wOlxcbmFyY2gveDg2L2t2bS94ZW4uYzoxNzQ0OlxcdFxcdGhhbmRsZWQgPSBrdm1feGVuX2hjYWxsX3ZjcHVfb3AodmNwdSwgbG9uZ21vZGUsIHBhcmFtc1swXSwgcGFyYW1zWzFdLFxcbmFyY2gveDg2L2t2bS94ZW4uYy0xNzQ1LVxcdFxcdFxcdFxcdFxcdFxcdHBhcmFtc1syXSwgXFx1MDAyNnIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1Mzo1OS44MzA5OTY1MDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwOTk0MzI1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNL1hlbiBIeXBlcmNhbGwgSW50ZXJhY3Rpb24qKlxuXG5SaWdodCwgc28gYGt2bV94ZW5faGNhbGxfdmNwdV9vcGAgKmlzKiBkZWZpbml0ZWx5IGludm9rZWQgZnJvbSBga3ZtX3hlbl9oeXBlcmNhbGxgLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgaW50ZXJhY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0LlxuXG5Ob3csIEknbSB0aGlua2luZyBJIHNob3VsZCBsb29rIGNsb3NlbHkgYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBhdHRyaWJ1dGVzIGFyZSBzZXQgd2l0aGluIHRoaXMgd2hvbGUgaHlwZXJjYWxsIHNjaGVtZSwgYW5kIHVuZGVyc3RhbmQgaWYgdGhhdCBmdW5jdGlvbiB3aWxsIGVsdWNpZGF0ZSB0aGUgZXhhY3QgZGF0YSBwYXRocyBJJ20gYWZ0ZXIuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHVuZGVyc3RhbmRpbmcgaG93IEtWTSBpbnRlcmFjdHMgd2l0aCB0aGUgWGVuIGh5cGVydmlzb3IgYXQgdGhlIHZDUFUgbGV2ZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzQ1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTQ6MDIuODQwOTQyNjA5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjMwMDI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1feGVuX3ZjcHVfc2V0X2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3hlbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz04NTI9aW50IGt2bV94ZW5faHZtX2dldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA2LVxcbmFyY2gveDg2L2t2bS94ZW4uYzo5MDc6aW50IGt2bV94ZW5fdmNwdV9zZXRfYXR0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1feGVuX3ZjcHVfYXR0ciAqZGF0YSlcXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDU6NTQ6MDIuODk3MjQ5MDk0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODAyNzg2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIEtWTSdzIGVtdWxhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBIeXBlci1WIGFuZCBYZW4gYXNwZWN0cy4gUmlnaHQsIEkgc2VlIHRoYXQgYGt2bV94ZW5fdmNwdV9zZXRfYXR0cmAgaXMgYW4gaW9jdGwgaGFuZGxlciDigJMgdGhhdCdzIGRlZmluaXRlbHkgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC5cblxuTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWw7IHRoZXkncmUgZml4aW5nIHJhY2VzIGFuZCBpbml0aWFsaXphdGlvbiBwcm9ibGVtcyBpbiB0aGUgdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lciBtZWNoYW5pc21zLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGNvcmUga2VybmVsIGFyZWFzIHRoYXQgYXJlIHJlYWNoYWJsZSwgc28gZnV6emluZyBpcyBjZXJ0YWlubHkgd2FycmFudGVkIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgcHJlcmVxdWlzaXRlcyBjb3JyZWN0LiBJdCBsb29rcyBsaWtlIGBLVk1fSFlQRVJWYCBhbmQgYEtWTV9YRU5gIGFyZSB0aGUgb25seSBjb25maWdzIEkgbmVlZCB0byBlbmFibGUgdG8gdHJpZ2dlciB0aGlzIGNvZGUuIE9rYXksIGdvb2QgdG8ga25vdy5cblxuSSBzaG91bGQgYWxzbyBtYWtlIGEgbm90ZSBvZiB0aGUga2V5IHN5bWJvbHMgSSBuZWVkIHRvIHRhcmdldCBpbiBteSBmdXp6aW5nIHNldHVwOiBga3ZtX2h2X2ZsdXNoX3RsYmAsIGBrdm1feGVuX2hjYWxsX3ZjcHVfb3BgLCBga3ZtX3hlbl92Y3B1X3NldF9hdHRyYCwgYGt2bV9odl92Y3B1X2ZsdXNoX3RsYmAsIGFuZCBga3ZtX2h2X2FjdGl2YXRlX3N5bmljYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc2V0LXJlc3VsdHMgcHJvY2VzcyBtb3ZpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzY0LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwNTo1NDowOC42Nzc1Mjk2MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY4NTcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9mbHVzaF90bGJcIixcbiAgICBcImt2bV94ZW5faGNhbGxfdmNwdV9vcFwiLFxuICAgIFwia3ZtX3hlbl92Y3B1X3NldF9hdHRyXCIsXG4gICAgXCJrdm1faHZfdmNwdV9mbHVzaF90bGJcIixcbiAgICBcImt2bV9odl9hY3RpdmF0ZV9zeW5pY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEtWTSBIeXBlci1WIGFuZCBYZW4gZW11bGF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgZml4aW5nIHJhY2UgY29uZGl0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gaXNzdWVzIHJlbGF0ZWQgdG8gdkNQVSBzdHJ1Y3R1cmVzLCBUTEIgZmx1c2hpbmcsIGFuZCB0aW1lcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCIsXG4gICAgXCJLVk1fWEVOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X2ZsdXNoX3RsYlwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF92Y3B1X29wXCIsXG4gICAgXCJrdm1feGVuX3ZjcHVfc2V0X2F0dHJcIixcbiAgICBcImt2bV9odl92Y3B1X2ZsdXNoX3RsYlwiLFxuICAgIFwia3ZtX2h2X2FjdGl2YXRlX3N5bmljXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIEh5cGVyLVYgYW5kIFhlbiBlbXVsYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmaXhpbmcgcmFjZSBjb25kaXRpb25zIGFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMgcmVsYXRlZCB0byB2Q1BVIHN0cnVjdHVyZXMsIFRMQiBmbHVzaGluZywgYW5kIHRpbWVycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[1] Phase: Succeeded StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 05:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 05:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2] Phase: Succeeded StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN) Phase: Failed StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 05:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 05:54:20 +0000 UTC FinishedAt: 2026-07-01 05:54:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowqvst6/series-workflowqvst6-convert-artifact-4147350019/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 05:54:30 +0000 UTC FinishedAt: 2026-07-01 06:22:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 05:54:30 +0000 UTC FinishedAt: 2026-07-01 06:22:07 +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:*fb1a20ec-4012-4a1e-8bdb-6c3408f7dc8b,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-workflowqvst6/series-workflowqvst6-convert-artifact-4147350019/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": "bfe214cf-cae8-453b-b7d9-bcc28b550916", "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-workflowqvst6/series-workflowqvst6-build-action-2238069361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 05:54:30 +0000 UTC FinishedAt: 2026-07-01 06:21:36 +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:*fb1a20ec-4012-4a1e-8bdb-6c3408f7dc8b,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-workflowqvst6/series-workflowqvst6-convert-artifact-4147350019/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": "bfe214cf-cae8-453b-b7d9-bcc28b550916", "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-workflowqvst6/series-workflowqvst6-build-action-2238069361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 06:22:07 +0000 UTC FinishedAt: 2026-07-01 06:22:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 06:22:07 +0000 UTC FinishedAt: 2026-07-01 06:22:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 06:22:07 +0000 UTC FinishedAt: 2026-07-01 06:22:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 06:22:07 +0000 UTC FinishedAt: 2026-07-01 06:22:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowqvst6/series-workflowqvst6-convert-artifact-3468900538/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 06:22:17 +0000 UTC FinishedAt: 2026-07-01 06:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 06:22:17 +0000 UTC FinishedAt: 2026-07-01 06:24:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bfe214cf-cae8-453b-b7d9-bcc28b550916,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-workflowqvst6/series-workflowqvst6-build-action-2238069361/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-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 06:24:18 +0000 UTC FinishedAt: 2026-07-01 06:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 06:24:18 +0000 UTC FinishedAt: 2026-07-01 06:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 06:24:18 +0000 UTC FinishedAt: 2026-07-01 06:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 06:24:18 +0000 UTC FinishedAt: 2026-07-01 06:46:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*fb1a20ec-4012-4a1e-8bdb-6c3408f7dc8b,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-workflowqvst6/series-workflowqvst6-convert-artifact-3468900538/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": "8fe177ab-8ccb-4f4f-8682-fa784d3b6816", "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-workflowqvst6/series-workflowqvst6-build-action-1643243294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 06:24:18 +0000 UTC FinishedAt: 2026-07-01 06:46:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*fb1a20ec-4012-4a1e-8bdb-6c3408f7dc8b,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-workflowqvst6/series-workflowqvst6-convert-artifact-3468900538/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": "8fe177ab-8ccb-4f4f-8682-fa784d3b6816", "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-workflowqvst6/series-workflowqvst6-build-action-1643243294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 06:46:32 +0000 UTC FinishedAt: 2026-07-01 06:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 06:46:32 +0000 UTC FinishedAt: 2026-07-01 06:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 06:46:32 +0000 UTC FinishedAt: 2026-07-01 06:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 06:46:32 +0000 UTC FinishedAt: 2026-07-01 06:48:24 +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:*8fe177ab-8ccb-4f4f-8682-fa784d3b6816,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-workflowqvst6/series-workflowqvst6-build-action-1643243294/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-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10] Phase: Failed StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"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:*bfe214cf-cae8-453b-b7d9-bcc28b550916,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8fe177ab-8ccb-4f4f-8682-fa784d3b6816,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-workflowqvst6/series-workflowqvst6-build-action-2238069361/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-workflowqvst6/series-workflowqvst6-build-action-1643243294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"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-workflowqvst6/series-workflowqvst6-convert-artifact-4257569519/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-retest Phase: Failed StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:49:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8fe177ab-8ccb-4f4f-8682-fa784d3b6816,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,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-workflowqvst6/series-workflowqvst6-build-action-2238069361/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-workflowqvst6/series-workflowqvst6-build-action-1643243294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},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-workflowqvst6/series-workflowqvst6-convert-artifact-1458754680/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 06:48:33 +0000 UTC FinishedAt: 2026-07-01 06:48:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 06:48:43 +0000 UTC FinishedAt: 2026-07-01 09:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 06:48:43 +0000 UTC FinishedAt: 2026-07-01 09:50:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bfe214cf-cae8-453b-b7d9-bcc28b550916,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8fe177ab-8ccb-4f4f-8682-fa784d3b6816,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-workflowqvst6/series-workflowqvst6-build-action-2238069361/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-workflowqvst6/series-workflowqvst6-build-action-1643243294/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-workflowqvst6/series-workflowqvst6-convert-artifact-4257569519/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,} --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-retest[1] Phase: Failed StartedAt: 2026-07-01 06:48:44 +0000 UTC FinishedAt: 2026-07-01 06:49:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvst6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_flush_tlb","kvm_xen_hcall_vcpu_op","kvm_xen_vcpu_set_attr","kvm_hv_vcpu_flush_tlb","kvm_hv_activate_synic"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV","KVM_XEN"],"series_id":"d1944d2d-d2ab-40b6-80dd-a684ffec97b8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:{"findings":["60fac5d8-1296-4ec7-a8e3-40f561d007e9"]},track:KASAN)[10].run-retest[1].retest Phase: Failed StartedAt: 2026-07-01 06:48:44 +0000 UTC FinishedAt: 2026-07-01 06:49:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8fe177ab-8ccb-4f4f-8682-fa784d3b6816,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,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-workflowqvst6/series-workflowqvst6-build-action-2238069361/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-workflowqvst6/series-workflowqvst6-build-action-1643243294/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.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-workflowqvst6/series-workflowqvst6-convert-artifact-1458754680/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:*1,}