Name: series-workflowqpxtf Phase: Failed StartedAt: 2026-08-10 14:35:35 +0000 UTC FinishedAt: 2026-08-10 15:00:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpxtf[0] Phase: Succeeded StartedAt: 2026-08-10 14:35:35 +0000 UTC FinishedAt: 2026-08-10 15:00:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpxtf[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 14:35:35 +0000 UTC FinishedAt: 2026-08-10 15:00:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzYWYxM2VhYzgwMTY5OWUxNDU0MTAzYzc1YmYxMDc0Y2RmY2Y0ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNTowMDoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbmluZGV4IDMzZTE4YmI2OTc3NDAuLmJmMDQ0OGIwMzViNDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuQEAgLTY3MCwxMyAmIzQzOzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHRcdFx0XHQgTlVNX1JYX0JEU19NQVhdO1xuIFx0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGN1cnJlbnRfYmQtXHUwMDNlZGF0YTtcbiBcbiBcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuJiM0MztcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cbiYjNDM7XHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XG4mIzQzO1x0XHRpZiAobmV0X3JhdGVsaW1pdCgpKVxuJiM0MztcdFx0XHREUF9OT1RJQ0UoZWRldixcbiYjNDM7XHRcdFx0XHQgIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBSWCBidWZmZXIgZm9yIFRQQSBhZ2cgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQmIzQzOyYjNDM7LFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IHJ4cS1cdTAwM2VyeF9oZWFkcm9vbSxcbiBcdFx0XHQgICBsZW5fb25fYmQpO1xuIFxuQEAgLTY4NCw3ICYjNDM7Njk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuJiM0MztcdFx0cGFnZV9yZWZfaW5jKHBhZ2UpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbkBAIC02OTgsOCAmIzQzOzcwOCwxMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXG4gb3V0OlxuIFx0dHBhX2luZm8tXHUwMDNlc3RhdGUgPSBRRURFX0FHR19TVEFURV9FUlJPUjtcbi1cdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XG4tXG4mIzQzO1x0aWYgKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSkge1xuJiM0MztcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbiYjNDM7XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuJiM0MztcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbkBAIC04NDUsNyAmIzQzOzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0ICAgICAgcGFkLCBmYWxzZSk7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlcGFnZV9vZmZzZXQ7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIubWFwcGluZyA9IHN3X3J4X2RhdGFfY29ucy1cdTAwM2VtYXBwaW5nO1xuLVxuJiM0MztcdHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5kYXRhID0gc3dfcnhfZGF0YV9jb25zLVx1MDAzZWRhdGE7XG4gXHRpZiAodW5saWtlbHkoIXRwYV9pbmZvLVx1MDAzZXNrYikpIHtcbiBcdFx0RFBfTk9USUNFKGVkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBTS0IgZm9yIGdyb1xcblwmIzM0Oyk7XG4gXG5AQCAtOTU5LDggJiM0Mzs5NzMsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBxZWRlX3J4X3F1ZXVlICpyeHEsXG4gXHRcdFx0XHQgc3RydWN0IGV0aF9mYXN0X3BhdGhfcnhfdHBhX2NvbnRfY3FlICpjcWUpXG4ge1xuJiM0MztcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4cS1cdTAwM2V0cGFfaW5mb1tjcWUtXHUwMDNldHBhX2FnZ19pbmRleF07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBEb24mIzM5O3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuJiM0MztcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpIHtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSBcdTAwMjZyeHEtXHUwMDNlc3dfcnhfcmluZ1tyeHEtXHUwMDNlc3dfcnhfY29ucyBcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdE5VTV9SWF9CRFNfTUFYXTtcbiYjNDM7XHRcdFx0XHRpZiAobGlrZWx5KHJ4X2JkLVx1MDAzZWRhdGEpKSB7XG4mIzQzO1x0XHRcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuJiM0MztcdFx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0XHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xuJiM0MztcdFx0XHRcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGNxZS1cdTAwM2VsZW5fbGlzdCkgXHUwMDI2XHUwMDI2IGNxZS1cdTAwM2VsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG5AQCAtOTg2LDYgJiM0MzsxMDE2LDIyIEBAIHN0YXRpYyBpbnQgcWVkZV90cGFfZW5kKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0ZG1hX3VubWFwX3BhZ2UocnhxLVx1MDAzZWRldiwgdHBhX2luZm8tXHUwMDNlYnVmZmVyLm1hcHBpbmcsXG4gXHRcdFx0ICAgICAgIFBBR0VfU0laRSwgcnhxLVx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcbiBcbiYjNDM7XHQvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuJiM0MztcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCB8fCAhc2tiKSkge1xuJiM0MztcdFx0LyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtXHUwMDNlbGVuX2xpc3QgdG8ga2VlcCByaW5nIHN5bmNocm9uaXplZCAqL1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFx1MDAyNnJ4cS1cdTAwM2Vzd19yeF9yaW5nW3J4cS1cdTAwM2Vzd19yeF9jb25zIFx1MDAyNlxuJiM0MztcdFx0XHRcdFx0XHRcdFx0TlVNX1JYX0JEU19NQVhdO1xuJiM0MztcdFx0XHRpZiAobGlrZWx5KHJ4X2JkLVx1MDAzZWRhdGEpKSB7XG4mIzQzO1x0XHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xuJiM0MztcdFx0XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KVxuIFx0XHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXHUwMDNldHBhX2FnZ19pbmRleCxcbiBcdFx0XHRcdCAgIGxlMTZfdG9fY3B1KGNxZS1cdTAwM2VsZW5fbGlzdFtpXSkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzNhZjEzZWFjODAxNjk5ZTE0NTQxMDNjNzViZjEwNzRjZGZjZjQ4MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE1OjAwOjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jCmluZGV4IDMzZTE4YmI2OTc3NDAuLmJmMDQ0OGIwMzViNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMKQEAgLTY3MCwxMyAmIzQzOzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJCQkJIE5VTV9SWF9CRFNfTUFYXTsKIAlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bdHBhX2FnZ19pbmRleF07CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLSZndDtza2I7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC0mZ3Q7ZGF0YTsKIAogCWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKQogCQlnb3RvIG91dDsKIAomIzQzOwkvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovCiYjNDM7CWlmICh1bmxpa2VseSghcGFnZSkpIHsKJiM0MzsJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCiYjNDM7CQkJRFBfTk9USUNFKGVkZXYsCiYjNDM7CQkJCSAgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XG4mIzM0OywKJiM0MzsJCQkJICB0cGFfYWdnX2luZGV4KTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJLyogQWRkIG9uZSBmcmFnIGFuZCB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIGZpZWxkcyBpbiB0aGUgc2tiICovCiAJc2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgdHBhX2luZm8tJmd0O2ZyYWdfaWQmIzQzOyYjNDM7LAotCQkJICAgY3VycmVudF9iZC0mZ3Q7ZGF0YSwKJiM0MzsJCQkgICBwYWdlLAogCQkJICAgY3VycmVudF9iZC0mZ3Q7cGFnZV9vZmZzZXQgJiM0MzsgcnhxLSZndDtyeF9oZWFkcm9vbSwKIAkJCSAgIGxlbl9vbl9iZCk7CiAKQEAgLTY4NCw3ICYjNDM7Njk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCQkvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZQogCQkgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi4KIAkJICovCi0JCXBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLSZndDtkYXRhKTsKJiM0MzsJCXBhZ2VfcmVmX2luYyhwYWdlKTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC02OTgsOCAmIzQzOzcwOCwxMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAKIG91dDoKIAl0cGFfaW5mby0mZ3Q7c3RhdGUgPSBRRURFX0FHR19TVEFURV9FUlJPUjsKLQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwotCiYjNDM7CWlmIChjdXJyZW50X2JkLSZndDtkYXRhKSB7CiYjNDM7CQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTsKJiM0MzsJCXJ4cS0mZ3Q7ZmlsbGVkX2J1ZmZlcnMtLTsKJiM0MzsJfQogCXJldHVybiAtRU5PTUVNOwogfQogCkBAIC04NDUsNyAmIzQzOzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldiwKIAkJCQkJICAgICAgcGFkLCBmYWxzZSk7CiAJdHBhX2luZm8tJmd0O2J1ZmZlci5wYWdlX29mZnNldCA9IHN3X3J4X2RhdGFfY29ucy0mZ3Q7cGFnZV9vZmZzZXQ7CiAJdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nID0gc3dfcnhfZGF0YV9jb25zLSZndDttYXBwaW5nOwotCiYjNDM7CXRwYV9pbmZvLSZndDtidWZmZXIuZGF0YSA9IHN3X3J4X2RhdGFfY29ucy0mZ3Q7ZGF0YTsKIAlpZiAodW5saWtlbHkoIXRwYV9pbmZvLSZndDtza2IpKSB7CiAJCURQX05PVElDRShlZGV2LCAmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBTS0IgZm9yIGdyb1xuJiMzNDspOwogCkBAIC05NTksOCAmIzQzOzk3MywyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJIHN0cnVjdCBxZWRlX3J4X3F1ZXVlICpyeHEsCiAJCQkJIHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKQogewomIzQzOwlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bY3FlLSZndDt0cGFfYWdnX2luZGV4XTsKIAlpbnQgaTsKIAomIzQzOwkvKiBEb24mIzM5O3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqLwomIzQzOwlpZiAodW5saWtlbHkodHBhX2luZm8tJmd0O3N0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoY3FlLSZndDtsZW5fbGlzdCkgJmFtcDsmYW1wOyBjcWUtJmd0O2xlbl9saXN0W2ldOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9ICZhbXA7cnhxLSZndDtzd19yeF9yaW5nW3J4cS0mZ3Q7c3dfcnhfY29ucyAmYW1wOwomIzQzOwkJCQkJCQkJTlVNX1JYX0JEU19NQVhdOwomIzQzOwkJCQlpZiAobGlrZWx5KHJ4X2JkLSZndDtkYXRhKSkgewomIzQzOwkJCQkJcWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTsKJiM0MzsJCQkJfSBlbHNlIHsKJiM0MzsJCQkJCXFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7CiYjNDM7CQkJCQlyeHEtJmd0O2ZpbGxlZF9idWZmZXJzLS07CiYjNDM7CQkJCX0KJiM0MzsJCX0KJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspCiAJCXFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS0mZ3Q7dHBhX2FnZ19pbmRleCwKIAkJCQkgICBsZTE2X3RvX2NwdShjcWUtJmd0O2xlbl9saXN0W2ldKSk7CkBAIC05ODYsNiAmIzQzOzEwMTYsMjIgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCQlkbWFfdW5tYXBfcGFnZShyeHEtJmd0O2RldiwgdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nLAogCQkJICAgICAgIFBBR0VfU0laRSwgcnhxLSZndDtkYXRhX2RpcmVjdGlvbik7CiAKJiM0MzsJLyogRHJvcCB0aGUgcGFja2V0IGlmIFRQQSBzdGFydCBmYWlsZWQgKi8KJiM0MzsJaWYgKHVubGlrZWx5KHRwYV9pbmZvLSZndDtzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCB8fCAhc2tiKSkgewomIzQzOwkJLyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtJmd0O2xlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi8KJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQlzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSAmYW1wO3J4cS0mZ3Q7c3dfcnhfcmluZ1tyeHEtJmd0O3N3X3J4X2NvbnMgJmFtcDsKJiM0MzsJCQkJCQkJCU5VTV9SWF9CRFNfTUFYXTsKJiM0MzsJCQlpZiAobGlrZWx5KHJ4X2JkLSZndDtkYXRhKSkgewomIzQzOwkJCQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCXFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7CiYjNDM7CQkJCXJ4cS0mZ3Q7ZmlsbGVkX2J1ZmZlcnMtLTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspCiAJCXFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS0mZ3Q7dHBhX2FnZ19pbmRleCwKIAkJCQkgICBsZTE2X3RvX2NwdShjcWUtJmd0O2xlbl9saXN0W2ldKSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjIKCQkJCQkJCW91dHB1dDogNzAKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgRmxhZyBmb3IgYSBRTG9naWMgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmb3IgdGhlIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBDb3JlIEV0aGVybmV0IERyaXZlci4gTm93LCBJIGtub3cgdGhlc2UgRmFzdExpblEgY2FyZHMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIOKAkyB0aGV5JiMzOTtyZSBub3Qgc29tZXRoaW5nIHlvdSYjMzk7ZCBlbXVsYXRlIGVhc2lseSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LgoKVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBpbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIGNhbiYjMzk7dCBiZSByZWFkaWx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4YW1wbGVzIHRoZXkgZ2l2ZSDigJMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUg4oCTIHRoZXkmIzM5O3JlIGFsbCBpbiB0aGF0IHNhbWUgYm9hdC4KCldhaXQgYSBzZWNvbmQuLi4gYHFlZGVgLi4uIGlzbiYjMzk7dCB0aGF0IHBhcnQgb2YgdGhlIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBkcml2ZXIgZmFtaWx5PyBZZXMsIGl0IGlzLiBgcWVkYCBpcyB0aGUgY29yZSBkcml2ZXIsIGFuZCBgcWVkZWAgaXMgc3BlY2lmaWNhbGx5IHRoZSBFdGhlcm5ldCBkcml2ZXIuIFRoZSBpbnN0cnVjdGlvbnMgZXhwbGljaXRseSBtZW50aW9uIGBxZWRgLiBTbywgdGhlIGBxZWRlYCBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgYW5kIG5lZWRzIGFjdHVhbCBoYXJkd2FyZSwgbm8/CgpZdXAsIGNoZWNraW5nIHRoZSBwYXRoLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYCBjb25maXJtcyBpdCYjMzk7cyBRTG9naWMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGRvY3VtZW50ZWQgY3JpdGVyaWEsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQW5kIGhlcmUmIzM5O3MgdGhlIHJlYXNvbmluZyB0byBiYWNrIGl0IHVwOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTU6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE1OjAwOjIzLjc4OTI4MTQyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTUwNjMwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDoyMy43ODkyODkzNjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTY5MDE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzYWYxM2VhYzgwMTY5OWUxNDU0MTAzYzc1YmYxMDc0Y2RmY2Y0ODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTU6MDA6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXFxuaW5kZXggMzNlMThiYjY5Nzc0MC4uYmYwNDQ4YjAzNWI0NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcXG5AQCAtNjcwLDEzICs2NzAsMjMgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTlVNX1JYX0JEU19NQVhdO1xcbiBcXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcXHUwMDI2cnhxLVxcdTAwM2V0cGFfaW5mb1t0cGFfYWdnX2luZGV4XTtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVxcdTAwM2Vza2I7XFxuK1xcdHN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC1cXHUwMDNlZGF0YTtcXG4gXFxuIFxcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cXG4rXFx0aWYgKHVubGlrZWx5KCFwYWdlKSkge1xcbitcXHRcXHRpZiAobmV0X3JhdGVsaW1pdCgpKVxcbitcXHRcXHRcXHREUF9OT1RJQ0UoZWRldixcXG4rXFx0XFx0XFx0XFx0ICBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICB0cGFfYWdnX2luZGV4KTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdC8qIEFkZCBvbmUgZnJhZyBhbmQgdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaW4gdGhlIHNrYiAqL1xcbiBcXHRza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCB0cGFfaW5mby1cXHUwMDNlZnJhZ19pZCsrLFxcbi1cXHRcXHRcXHQgICBjdXJyZW50X2JkLVxcdTAwM2VkYXRhLFxcbitcXHRcXHRcXHQgICBwYWdlLFxcbiBcXHRcXHRcXHQgICBjdXJyZW50X2JkLVxcdTAwM2VwYWdlX29mZnNldCArIHJ4cS1cXHUwMDNlcnhfaGVhZHJvb20sXFxuIFxcdFxcdFxcdCAgIGxlbl9vbl9iZCk7XFxuIFxcbkBAIC02ODQsNyArNjk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxcbiBcXHRcXHQgKiBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0cGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtXFx1MDAzZWRhdGEpO1xcbitcXHRcXHRwYWdlX3JlZl9pbmMocGFnZSk7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbkBAIC02OTgsOCArNzA4LDEyIEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcXG4gXFxuIG91dDpcXG4gXFx0dHBhX2luZm8tXFx1MDAzZXN0YXRlID0gUUVERV9BR0dfU1RBVEVfRVJST1I7XFxuLVxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuLVxcbitcXHRpZiAoY3VycmVudF9iZC1cXHUwMDNlZGF0YSkge1xcbitcXHRcXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xcbitcXHRcXHRyeHEtXFx1MDAzZWZpbGxlZF9idWZmZXJzLS07XFxuK1xcdH1cXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuQEAgLTg0NSw3ICs4NTksNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3RwYV9zdGFydChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIHBhZCwgZmFsc2UpO1xcbiBcXHR0cGFfaW5mby1cXHUwMDNlYnVmZmVyLnBhZ2Vfb2Zmc2V0ID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VwYWdlX29mZnNldDtcXG4gXFx0dHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VtYXBwaW5nO1xcbi1cXG4rXFx0dHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5kYXRhID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VkYXRhO1xcbiBcXHRpZiAodW5saWtlbHkoIXRwYV9pbmZvLVxcdTAwM2Vza2IpKSB7XFxuIFxcdFxcdERQX05PVElDRShlZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIFNLQiBmb3IgZ3JvXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTk1OSw4ICs5NzMsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKVxcbiB7XFxuK1xcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW2NxZS1cXHUwMDNldHBhX2FnZ19pbmRleF07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogRG9uJ3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xcbitcXHRpZiAodW5saWtlbHkodHBhX2luZm8tXFx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjcWUtXFx1MDAzZWxlbl9saXN0KSBcXHUwMDI2XFx1MDAyNiBjcWUtXFx1MDAzZWxlbl9saXN0W2ldOyBpKyspIHtcXG4rXFx0XFx0XFx0c3RydWN0IHN3X3J4X2RhdGEgKnJ4X2JkID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3dfcnhfcmluZ1tyeHEtXFx1MDAzZXN3X3J4X2NvbnMgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHROVU1fUlhfQkRTX01BWF07XFxuK1xcdFxcdFxcdFxcdGlmIChsaWtlbHkocnhfYmQtXFx1MDAzZWRhdGEpKSB7XFxuK1xcdFxcdFxcdFxcdFxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuK1xcdFxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdFxcdHFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7XFxuK1xcdFxcdFxcdFxcdFxcdHJ4cS1cXHUwMDNlZmlsbGVkX2J1ZmZlcnMtLTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5AQCAtOTg2LDYgKzEwMTYsMjIgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRkbWFfdW5tYXBfcGFnZShyeHEtXFx1MDAzZWRldiwgdHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxcbiBcXHRcXHRcXHQgICAgICAgUEFHRV9TSVpFLCByeHEtXFx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcXG4gXFxuK1xcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXFxuK1xcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpIHtcXG4rXFx0XFx0LyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtXFx1MDAzZWxlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi9cXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFxcdTAwMjZyeHEtXFx1MDAzZXN3X3J4X3JpbmdbcnhxLVxcdTAwM2Vzd19yeF9jb25zIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0TlVNX1JYX0JEU19NQVhdO1xcbitcXHRcXHRcXHRpZiAobGlrZWx5KHJ4X2JkLVxcdTAwM2VkYXRhKSkge1xcbitcXHRcXHRcXHRcXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xcbitcXHRcXHRcXHRcXHRyeHEtXFx1MDAzZWZpbGxlZF9idWZmZXJzLS07XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTU6MDA6MjQuMzE1NjIyMDA5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODU2ODcwNDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNhZjEzZWFjODAxNjk5ZTE0NTQxMDNjNzViZjEwNzRjZGZjZjQ4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE1OjAwOjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG5pbmRleCAzM2UxOGJiNjk3NzQwLi5iZjA0NDhiMDM1YjQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbkBAIC02NzAsMTMgKzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHRcdFx0XHQgTlVNX1JYX0JEU19NQVhdO1xuIFx0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbitcdHN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC1cdTAwM2VkYXRhO1xuIFxuIFx0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHQvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovXG4rXHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XG4rXHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4rXHRcdFx0RFBfTk9USUNFKGVkZXYsXG4rXHRcdFx0XHQgIFwiRmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcblwiLFxuK1x0XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQrKyxcbi1cdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZWRhdGEsXG4rXHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICsgcnhxLVx1MDAzZXJ4X2hlYWRyb29tLFxuIFx0XHRcdCAgIGxlbl9vbl9iZCk7XG4gXG5AQCAtNjg0LDcgKzY5NCw3IEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0LyogSW5jciBwYWdlIHJlZiBjb3VudCB0byByZXVzZSBvbiBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdFx0ICogc28gdGhhdCBpdCBkb2Vzbid0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuK1x0XHRwYWdlX3JlZl9pbmMocGFnZSk7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuQEAgLTY5OCw4ICs3MDgsMTIgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFxuIG91dDpcbiBcdHRwYV9pbmZvLVx1MDAzZXN0YXRlID0gUUVERV9BR0dfU1RBVEVfRVJST1I7XG4tXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuLVxuK1x0aWYgKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSkge1xuK1x0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuK1x0fSBlbHNlIHtcbitcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4rXHR9XG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG5AQCAtODQ1LDcgKzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0ICAgICAgcGFkLCBmYWxzZSk7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlcGFnZV9vZmZzZXQ7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIubWFwcGluZyA9IHN3X3J4X2RhdGFfY29ucy1cdTAwM2VtYXBwaW5nO1xuLVxuK1x0dHBhX2luZm8tXHUwMDNlYnVmZmVyLmRhdGEgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlZGF0YTtcbiBcdGlmICh1bmxpa2VseSghdHBhX2luZm8tXHUwMDNlc2tiKSkge1xuIFx0XHREUF9OT1RJQ0UoZWRldiwgXCJGYWlsZWQgdG8gYWxsb2NhdGUgU0tCIGZvciBncm9cXG5cIik7XG4gXG5AQCAtOTU5LDggKzk3MywyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4rXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBEb24ndCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspIHtcbitcdFx0XHRzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSBcdTAwMjZyeHEtXHUwMDNlc3dfcnhfcmluZ1tyeHEtXHUwMDNlc3dfcnhfY29ucyBcdTAwMjZcbitcdFx0XHRcdFx0XHRcdFx0TlVNX1JYX0JEU19NQVhdO1xuK1x0XHRcdFx0aWYgKGxpa2VseShyeF9iZC1cdTAwM2VkYXRhKSkge1xuK1x0XHRcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuK1x0XHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0XHRcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4rXHRcdFx0XHR9XG4rXHRcdH1cbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKylcbiBcdFx0cWVkZV9maWxsX2ZyYWdfc2tiKGVkZXYsIHJ4cSwgY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXgsXG4gXHRcdFx0XHQgICBsZTE2X3RvX2NwdShjcWUtXHUwMDNlbGVuX2xpc3RbaV0pKTtcbkBAIC05ODYsNiArMTAxNiwyMiBAQCBzdGF0aWMgaW50IHFlZGVfdHBhX2VuZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4gXG4rXHQvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuK1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKSB7XG4rXHRcdC8qIFJlY3ljbGUgQkRzIGZyb20gY3FlLVx1MDAzZWxlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi9cbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKykge1xuK1x0XHRcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFx1MDAyNnJ4cS1cdTAwM2Vzd19yeF9yaW5nW3J4cS1cdTAwM2Vzd19yeF9jb25zIFx1MDAyNlxuK1x0XHRcdFx0XHRcdFx0XHROVU1fUlhfQkRTX01BWF07XG4rXHRcdFx0aWYgKGxpa2VseShyeF9iZC1cdTAwM2VkYXRhKSkge1xuK1x0XHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuK1x0XHRcdH1cbitcdFx0fVxuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDoyNC4zMTU2MjMzNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTY4NjY1MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV29ydGhGdXp6aW5nIEZsYWcgZm9yIGEgUUxvZ2ljIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZm9yIHRoZSBRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBFdGhlcm5ldCBEcml2ZXIuIE5vdywgSSBrbm93IHRoZXNlIEZhc3RMaW5RIGNhcmRzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSDigJMgdGhleSdyZSBub3Qgc29tZXRoaW5nIHlvdSdkIGVtdWxhdGUgZWFzaWx5IGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIGtleSBwb2ludC5cblxuVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBpbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIGNhbid0IGJlIHJlYWRpbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgZXhhbXBsZXMgdGhleSBnaXZlIOKAkyBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSDigJMgdGhleSdyZSBhbGwgaW4gdGhhdCBzYW1lIGJvYXQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYHFlZGVgLi4uIGlzbid0IHRoYXQgcGFydCBvZiB0aGUgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IGRyaXZlciBmYW1pbHk/IFllcywgaXQgaXMuIGBxZWRgIGlzIHRoZSBjb3JlIGRyaXZlciwgYW5kIGBxZWRlYCBpcyBzcGVjaWZpY2FsbHkgdGhlIEV0aGVybmV0IGRyaXZlci4gVGhlIGluc3RydWN0aW9ucyBleHBsaWNpdGx5IG1lbnRpb24gYHFlZGAuIFNvLCB0aGUgYHFlZGVgIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBhbmQgbmVlZHMgYWN0dWFsIGhhcmR3YXJlLCBubz9cblxuWXVwLCBjaGVja2luZyB0aGUgcGF0aCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY2AgY29uZmlybXMgaXQncyBRTG9naWMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGRvY3VtZW50ZWQgY3JpdGVyaWEsIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBBbmQgaGVyZSdzIHRoZSByZWFzb25pbmcgdG8gYmFjayBpdCB1cDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIERvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjIsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDozMi44ODQyOTMxMzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE1OjAwOjMyLjg4NDMyOTU0MloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpxtf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 14:35:35 +0000 UTC FinishedAt: 2026-08-10 15:00:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNTowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMzYWYxM2VhYzgwMTY5OWUxNDU0MTAzYzc1YmYxMDc0Y2RmY2Y0ODFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxNTowMDoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbmluZGV4IDMzZTE4YmI2OTc3NDAuLmJmMDQ0OGIwMzViNDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY1xuQEAgLTY3MCwxMyAmIzQzOzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHRcdFx0XHQgTlVNX1JYX0JEU19NQVhdO1xuIFx0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbiYjNDM7XHRzdHJ1Y3QgcGFnZSAqcGFnZSA9IGN1cnJlbnRfYmQtXHUwMDNlZGF0YTtcbiBcbiBcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpXG4gXHRcdGdvdG8gb3V0O1xuIFxuJiM0MztcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cbiYjNDM7XHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XG4mIzQzO1x0XHRpZiAobmV0X3JhdGVsaW1pdCgpKVxuJiM0MztcdFx0XHREUF9OT1RJQ0UoZWRldixcbiYjNDM7XHRcdFx0XHQgIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBSWCBidWZmZXIgZm9yIFRQQSBhZ2cgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7XG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQmIzQzOyYjNDM7LFxuLVx0XHRcdCAgIGN1cnJlbnRfYmQtXHUwMDNlZGF0YSxcbiYjNDM7XHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICYjNDM7IHJ4cS1cdTAwM2VyeF9oZWFkcm9vbSxcbiBcdFx0XHQgICBsZW5fb25fYmQpO1xuIFxuQEAgLTY4NCw3ICYjNDM7Njk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0XHQgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuJiM0MztcdFx0cGFnZV9yZWZfaW5jKHBhZ2UpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbkBAIC02OTgsOCAmIzQzOzcwOCwxMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXG4gb3V0OlxuIFx0dHBhX2luZm8tXHUwMDNlc3RhdGUgPSBRRURFX0FHR19TVEFURV9FUlJPUjtcbi1cdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XG4tXG4mIzQzO1x0aWYgKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSkge1xuJiM0MztcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbiYjNDM7XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuJiM0MztcdH1cbiBcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbkBAIC04NDUsNyAmIzQzOzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0ICAgICAgcGFkLCBmYWxzZSk7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlcGFnZV9vZmZzZXQ7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIubWFwcGluZyA9IHN3X3J4X2RhdGFfY29ucy1cdTAwM2VtYXBwaW5nO1xuLVxuJiM0MztcdHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5kYXRhID0gc3dfcnhfZGF0YV9jb25zLVx1MDAzZWRhdGE7XG4gXHRpZiAodW5saWtlbHkoIXRwYV9pbmZvLVx1MDAzZXNrYikpIHtcbiBcdFx0RFBfTk9USUNFKGVkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBTS0IgZm9yIGdyb1xcblwmIzM0Oyk7XG4gXG5AQCAtOTU5LDggJiM0Mzs5NzMsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBxZWRlX3J4X3F1ZXVlICpyeHEsXG4gXHRcdFx0XHQgc3RydWN0IGV0aF9mYXN0X3BhdGhfcnhfdHBhX2NvbnRfY3FlICpjcWUpXG4ge1xuJiM0MztcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFx1MDAyNnJ4cS1cdTAwM2V0cGFfaW5mb1tjcWUtXHUwMDNldHBhX2FnZ19pbmRleF07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBEb24mIzM5O3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuJiM0MztcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCkpIHtcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSBcdTAwMjZyeHEtXHUwMDNlc3dfcnhfcmluZ1tyeHEtXHUwMDNlc3dfcnhfY29ucyBcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdE5VTV9SWF9CRFNfTUFYXTtcbiYjNDM7XHRcdFx0XHRpZiAobGlrZWx5KHJ4X2JkLVx1MDAzZWRhdGEpKSB7XG4mIzQzO1x0XHRcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuJiM0MztcdFx0XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdFx0XHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xuJiM0MztcdFx0XHRcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4mIzQzO1x0XHRcdFx0fVxuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGNxZS1cdTAwM2VsZW5fbGlzdCkgXHUwMDI2XHUwMDI2IGNxZS1cdTAwM2VsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG5AQCAtOTg2LDYgJiM0MzsxMDE2LDIyIEBAIHN0YXRpYyBpbnQgcWVkZV90cGFfZW5kKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0ZG1hX3VubWFwX3BhZ2UocnhxLVx1MDAzZWRldiwgdHBhX2luZm8tXHUwMDNlYnVmZmVyLm1hcHBpbmcsXG4gXHRcdFx0ICAgICAgIFBBR0VfU0laRSwgcnhxLVx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcbiBcbiYjNDM7XHQvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuJiM0MztcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cdTAwM2VzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCB8fCAhc2tiKSkge1xuJiM0MztcdFx0LyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtXHUwMDNlbGVuX2xpc3QgdG8ga2VlcCByaW5nIHN5bmNocm9uaXplZCAqL1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFx1MDAyNnJ4cS1cdTAwM2Vzd19yeF9yaW5nW3J4cS1cdTAwM2Vzd19yeF9jb25zIFx1MDAyNlxuJiM0MztcdFx0XHRcdFx0XHRcdFx0TlVNX1JYX0JEU19NQVhdO1xuJiM0MztcdFx0XHRpZiAobGlrZWx5KHJ4X2JkLVx1MDAzZWRhdGEpKSB7XG4mIzQzO1x0XHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbiYjNDM7XHRcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0XHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xuJiM0MztcdFx0XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkmIzQzOyYjNDM7KVxuIFx0XHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXHUwMDNldHBhX2FnZ19pbmRleCxcbiBcdFx0XHRcdCAgIGxlMTZfdG9fY3B1KGNxZS1cdTAwM2VsZW5fbGlzdFtpXSkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzNhZjEzZWFjODAxNjk5ZTE0NTQxMDNjNzViZjEwNzRjZGZjZjQ4MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE1OjAwOjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jCmluZGV4IDMzZTE4YmI2OTc3NDAuLmJmMDQ0OGIwMzViNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmMKQEAgLTY3MCwxMyAmIzQzOzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJCQkJIE5VTV9SWF9CRFNfTUFYXTsKIAlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bdHBhX2FnZ19pbmRleF07CiAJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLSZndDtza2I7CiYjNDM7CXN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC0mZ3Q7ZGF0YTsKIAogCWlmICh1bmxpa2VseSh0cGFfaW5mby0mZ3Q7c3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKQogCQlnb3RvIG91dDsKIAomIzQzOwkvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovCiYjNDM7CWlmICh1bmxpa2VseSghcGFnZSkpIHsKJiM0MzsJCWlmIChuZXRfcmF0ZWxpbWl0KCkpCiYjNDM7CQkJRFBfTk9USUNFKGVkZXYsCiYjNDM7CQkJCSAgJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgUlggYnVmZmVyIGZvciBUUEEgYWdnICV1XG4mIzM0OywKJiM0MzsJCQkJICB0cGFfYWdnX2luZGV4KTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJLyogQWRkIG9uZSBmcmFnIGFuZCB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIGZpZWxkcyBpbiB0aGUgc2tiICovCiAJc2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgdHBhX2luZm8tJmd0O2ZyYWdfaWQmIzQzOyYjNDM7LAotCQkJICAgY3VycmVudF9iZC0mZ3Q7ZGF0YSwKJiM0MzsJCQkgICBwYWdlLAogCQkJICAgY3VycmVudF9iZC0mZ3Q7cGFnZV9vZmZzZXQgJiM0MzsgcnhxLSZndDtyeF9oZWFkcm9vbSwKIAkJCSAgIGxlbl9vbl9iZCk7CiAKQEAgLTY4NCw3ICYjNDM7Njk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCQkvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZQogCQkgKiBzbyB0aGF0IGl0IGRvZXNuJiMzOTt0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi4KIAkJICovCi0JCXBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLSZndDtkYXRhKTsKJiM0MzsJCXBhZ2VfcmVmX2luYyhwYWdlKTsKIAkJZ290byBvdXQ7CiAJfQogCkBAIC02OTgsOCAmIzQzOzcwOCwxMiBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAKIG91dDoKIAl0cGFfaW5mby0mZ3Q7c3RhdGUgPSBRRURFX0FHR19TVEFURV9FUlJPUjsKLQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwotCiYjNDM7CWlmIChjdXJyZW50X2JkLSZndDtkYXRhKSB7CiYjNDM7CQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJcWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTsKJiM0MzsJCXJ4cS0mZ3Q7ZmlsbGVkX2J1ZmZlcnMtLTsKJiM0MzsJfQogCXJldHVybiAtRU5PTUVNOwogfQogCkBAIC04NDUsNyAmIzQzOzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldiwKIAkJCQkJICAgICAgcGFkLCBmYWxzZSk7CiAJdHBhX2luZm8tJmd0O2J1ZmZlci5wYWdlX29mZnNldCA9IHN3X3J4X2RhdGFfY29ucy0mZ3Q7cGFnZV9vZmZzZXQ7CiAJdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nID0gc3dfcnhfZGF0YV9jb25zLSZndDttYXBwaW5nOwotCiYjNDM7CXRwYV9pbmZvLSZndDtidWZmZXIuZGF0YSA9IHN3X3J4X2RhdGFfY29ucy0mZ3Q7ZGF0YTsKIAlpZiAodW5saWtlbHkoIXRwYV9pbmZvLSZndDtza2IpKSB7CiAJCURQX05PVElDRShlZGV2LCAmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBTS0IgZm9yIGdyb1xuJiMzNDspOwogCkBAIC05NTksOCAmIzQzOzk3MywyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsCiAJCQkJIHN0cnVjdCBxZWRlX3J4X3F1ZXVlICpyeHEsCiAJCQkJIHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKQogewomIzQzOwlzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSAmYW1wO3J4cS0mZ3Q7dHBhX2luZm9bY3FlLSZndDt0cGFfYWdnX2luZGV4XTsKIAlpbnQgaTsKIAomIzQzOwkvKiBEb24mIzM5O3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqLwomIzQzOwlpZiAodW5saWtlbHkodHBhX2luZm8tJmd0O3N0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkgewomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoY3FlLSZndDtsZW5fbGlzdCkgJmFtcDsmYW1wOyBjcWUtJmd0O2xlbl9saXN0W2ldOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCXN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9ICZhbXA7cnhxLSZndDtzd19yeF9yaW5nW3J4cS0mZ3Q7c3dfcnhfY29ucyAmYW1wOwomIzQzOwkJCQkJCQkJTlVNX1JYX0JEU19NQVhdOwomIzQzOwkJCQlpZiAobGlrZWx5KHJ4X2JkLSZndDtkYXRhKSkgewomIzQzOwkJCQkJcWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTsKJiM0MzsJCQkJfSBlbHNlIHsKJiM0MzsJCQkJCXFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7CiYjNDM7CQkJCQlyeHEtJmd0O2ZpbGxlZF9idWZmZXJzLS07CiYjNDM7CQkJCX0KJiM0MzsJCX0KJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspCiAJCXFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS0mZ3Q7dHBhX2FnZ19pbmRleCwKIAkJCQkgICBsZTE2X3RvX2NwdShjcWUtJmd0O2xlbl9saXN0W2ldKSk7CkBAIC05ODYsNiAmIzQzOzEwMTYsMjIgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LAogCQlkbWFfdW5tYXBfcGFnZShyeHEtJmd0O2RldiwgdHBhX2luZm8tJmd0O2J1ZmZlci5tYXBwaW5nLAogCQkJICAgICAgIFBBR0VfU0laRSwgcnhxLSZndDtkYXRhX2RpcmVjdGlvbik7CiAKJiM0MzsJLyogRHJvcCB0aGUgcGFja2V0IGlmIFRQQSBzdGFydCBmYWlsZWQgKi8KJiM0MzsJaWYgKHVubGlrZWx5KHRwYV9pbmZvLSZndDtzdGF0ZSAhPSBRRURFX0FHR19TVEFURV9TVEFSVCB8fCAhc2tiKSkgewomIzQzOwkJLyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtJmd0O2xlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi8KJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQlzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSAmYW1wO3J4cS0mZ3Q7c3dfcnhfcmluZ1tyeHEtJmd0O3N3X3J4X2NvbnMgJmFtcDsKJiM0MzsJCQkJCQkJCU5VTV9SWF9CRFNfTUFYXTsKJiM0MzsJCQlpZiAobGlrZWx5KHJ4X2JkLSZndDtkYXRhKSkgewomIzQzOwkJCQlxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpOwomIzQzOwkJCX0gZWxzZSB7CiYjNDM7CQkJCXFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7CiYjNDM7CQkJCXJ4cS0mZ3Q7ZmlsbGVkX2J1ZmZlcnMtLTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKGNxZS0mZ3Q7bGVuX2xpc3QpICZhbXA7JmFtcDsgY3FlLSZndDtsZW5fbGlzdFtpXTsgaSYjNDM7JiM0MzspCiAJCXFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS0mZ3Q7dHBhX2FnZ19pbmRleCwKIAkJCQkgICBsZTE2X3RvX2NwdShjcWUtJmd0O2xlbl9saXN0W2ldKSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjIKCQkJCQkJCW91dHB1dDogNzAKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgRmxhZyBmb3IgYSBRTG9naWMgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmb3IgdGhlIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBDb3JlIEV0aGVybmV0IERyaXZlci4gTm93LCBJIGtub3cgdGhlc2UgRmFzdExpblEgY2FyZHMgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIOKAkyB0aGV5JiMzOTtyZSBub3Qgc29tZXRoaW5nIHlvdSYjMzk7ZCBlbXVsYXRlIGVhc2lseSBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50LgoKVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBpbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIGNhbiYjMzk7dCBiZSByZWFkaWx5IGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4YW1wbGVzIHRoZXkgZ2l2ZSDigJMgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUg4oCTIHRoZXkmIzM5O3JlIGFsbCBpbiB0aGF0IHNhbWUgYm9hdC4KCldhaXQgYSBzZWNvbmQuLi4gYHFlZGVgLi4uIGlzbiYjMzk7dCB0aGF0IHBhcnQgb2YgdGhlIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBkcml2ZXIgZmFtaWx5PyBZZXMsIGl0IGlzLiBgcWVkYCBpcyB0aGUgY29yZSBkcml2ZXIsIGFuZCBgcWVkZWAgaXMgc3BlY2lmaWNhbGx5IHRoZSBFdGhlcm5ldCBkcml2ZXIuIFRoZSBpbnN0cnVjdGlvbnMgZXhwbGljaXRseSBtZW50aW9uIGBxZWRgLiBTbywgdGhlIGBxZWRlYCBkcml2ZXIgaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgYW5kIG5lZWRzIGFjdHVhbCBoYXJkd2FyZSwgbm8/CgpZdXAsIGNoZWNraW5nIHRoZSBwYXRoLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jYCBjb25maXJtcyBpdCYjMzk7cyBRTG9naWMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGRvY3VtZW50ZWQgY3JpdGVyaWEsIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gQW5kIGhlcmUmIzM5O3MgdGhlIHJlYXNvbmluZyB0byBiYWNrIGl0IHVwOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTU6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE1OjAwOjIzLjc4OTI4MTQyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwOTUwNjMwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCksIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDoyMy43ODkyODkzNjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTY5MDE2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzYWYxM2VhYzgwMTY5OWUxNDU0MTAzYzc1YmYxMDc0Y2RmY2Y0ODFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTU6MDA6MjIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXFxuaW5kZXggMzNlMThiYjY5Nzc0MC4uYmYwNDQ4YjAzNWI0NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcXG5AQCAtNjcwLDEzICs2NzAsMjMgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTlVNX1JYX0JEU19NQVhdO1xcbiBcXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcXHUwMDI2cnhxLVxcdTAwM2V0cGFfaW5mb1t0cGFfYWdnX2luZGV4XTtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVxcdTAwM2Vza2I7XFxuK1xcdHN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC1cXHUwMDNlZGF0YTtcXG4gXFxuIFxcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdC8qIEF2b2lkIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIHVuZGVyIHNldmVyZSBtZW1vcnkgcHJlc3N1cmUgKi9cXG4rXFx0aWYgKHVubGlrZWx5KCFwYWdlKSkge1xcbitcXHRcXHRpZiAobmV0X3JhdGVsaW1pdCgpKVxcbitcXHRcXHRcXHREUF9OT1RJQ0UoZWRldixcXG4rXFx0XFx0XFx0XFx0ICBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICB0cGFfYWdnX2luZGV4KTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuIFxcdC8qIEFkZCBvbmUgZnJhZyBhbmQgdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaW4gdGhlIHNrYiAqL1xcbiBcXHRza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCB0cGFfaW5mby1cXHUwMDNlZnJhZ19pZCsrLFxcbi1cXHRcXHRcXHQgICBjdXJyZW50X2JkLVxcdTAwM2VkYXRhLFxcbitcXHRcXHRcXHQgICBwYWdlLFxcbiBcXHRcXHRcXHQgICBjdXJyZW50X2JkLVxcdTAwM2VwYWdlX29mZnNldCArIHJ4cS1cXHUwMDNlcnhfaGVhZHJvb20sXFxuIFxcdFxcdFxcdCAgIGxlbl9vbl9iZCk7XFxuIFxcbkBAIC02ODQsNyArNjk0LDcgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHQvKiBJbmNyIHBhZ2UgcmVmIGNvdW50IHRvIHJldXNlIG9uIGFsbG9jYXRpb24gZmFpbHVyZVxcbiBcXHRcXHQgKiBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IGZyZWVkIHdoaWxlIGZyZWVpbmcgU0tCLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0cGFnZV9yZWZfaW5jKGN1cnJlbnRfYmQtXFx1MDAzZWRhdGEpO1xcbitcXHRcXHRwYWdlX3JlZl9pbmMocGFnZSk7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuIFxcbkBAIC02OTgsOCArNzA4LDEyIEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcXG4gXFxuIG91dDpcXG4gXFx0dHBhX2luZm8tXFx1MDAzZXN0YXRlID0gUUVERV9BR0dfU1RBVEVfRVJST1I7XFxuLVxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuLVxcbitcXHRpZiAoY3VycmVudF9iZC1cXHUwMDNlZGF0YSkge1xcbitcXHRcXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xcbitcXHRcXHRyeHEtXFx1MDAzZWZpbGxlZF9idWZmZXJzLS07XFxuK1xcdH1cXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuQEAgLTg0NSw3ICs4NTksNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3RwYV9zdGFydChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgIHBhZCwgZmFsc2UpO1xcbiBcXHR0cGFfaW5mby1cXHUwMDNlYnVmZmVyLnBhZ2Vfb2Zmc2V0ID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VwYWdlX29mZnNldDtcXG4gXFx0dHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VtYXBwaW5nO1xcbi1cXG4rXFx0dHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5kYXRhID0gc3dfcnhfZGF0YV9jb25zLVxcdTAwM2VkYXRhO1xcbiBcXHRpZiAodW5saWtlbHkoIXRwYV9pbmZvLVxcdTAwM2Vza2IpKSB7XFxuIFxcdFxcdERQX05PVElDRShlZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIFNLQiBmb3IgZ3JvXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTk1OSw4ICs5NzMsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIHFlZGVfdHBhX2NvbnQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBldGhfZmFzdF9wYXRoX3J4X3RwYV9jb250X2NxZSAqY3FlKVxcbiB7XFxuK1xcdHN0cnVjdCBxZWRlX2FnZ19pbmZvICp0cGFfaW5mbyA9IFxcdTAwMjZyeHEtXFx1MDAzZXRwYV9pbmZvW2NxZS1cXHUwMDNldHBhX2FnZ19pbmRleF07XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0LyogRG9uJ3QgcHJvY2VzcyBmcmFnbWVudHMgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xcbitcXHRpZiAodW5saWtlbHkodHBhX2luZm8tXFx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShjcWUtXFx1MDAzZWxlbl9saXN0KSBcXHUwMDI2XFx1MDAyNiBjcWUtXFx1MDAzZWxlbl9saXN0W2ldOyBpKyspIHtcXG4rXFx0XFx0XFx0c3RydWN0IHN3X3J4X2RhdGEgKnJ4X2JkID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3dfcnhfcmluZ1tyeHEtXFx1MDAzZXN3X3J4X2NvbnMgXFx1MDAyNlxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHROVU1fUlhfQkRTX01BWF07XFxuK1xcdFxcdFxcdFxcdGlmIChsaWtlbHkocnhfYmQtXFx1MDAzZWRhdGEpKSB7XFxuK1xcdFxcdFxcdFxcdFxcdHFlZGVfcmVjeWNsZV9yeF9iZF9yaW5nKHJ4cSwgMSk7XFxuK1xcdFxcdFxcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdFxcdFxcdHFlZGVfcnhfYmRfcmluZ19jb25zdW1lKHJ4cSk7XFxuK1xcdFxcdFxcdFxcdFxcdHJ4cS1cXHUwMDNlZmlsbGVkX2J1ZmZlcnMtLTtcXG4rXFx0XFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5AQCAtOTg2LDYgKzEwMTYsMjIgQEAgc3RhdGljIGludCBxZWRlX3RwYV9lbmQoc3RydWN0IHFlZGVfZGV2ICplZGV2LFxcbiBcXHRcXHRkbWFfdW5tYXBfcGFnZShyeHEtXFx1MDAzZWRldiwgdHBhX2luZm8tXFx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxcbiBcXHRcXHRcXHQgICAgICAgUEFHRV9TSVpFLCByeHEtXFx1MDAzZWRhdGFfZGlyZWN0aW9uKTtcXG4gXFxuK1xcdC8qIERyb3AgdGhlIHBhY2tldCBpZiBUUEEgc3RhcnQgZmFpbGVkICovXFxuK1xcdGlmICh1bmxpa2VseSh0cGFfaW5mby1cXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQgfHwgIXNrYikpIHtcXG4rXFx0XFx0LyogUmVjeWNsZSBCRHMgZnJvbSBjcWUtXFx1MDAzZWxlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi9cXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFxcdTAwMjZyeHEtXFx1MDAzZXN3X3J4X3JpbmdbcnhxLVxcdTAwM2Vzd19yeF9jb25zIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0TlVNX1JYX0JEU19NQVhdO1xcbitcXHRcXHRcXHRpZiAobGlrZWx5KHJ4X2JkLVxcdTAwM2VkYXRhKSkge1xcbitcXHRcXHRcXHRcXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRxZWRlX3J4X2JkX3JpbmdfY29uc3VtZShyeHEpO1xcbitcXHRcXHRcXHRcXHRyeHEtXFx1MDAzZWZpbGxlZF9idWZmZXJzLS07XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fVxcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0fVxcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVxcdTAwM2VsZW5fbGlzdCkgXFx1MDAyNlxcdTAwMjYgY3FlLVxcdTAwM2VsZW5fbGlzdFtpXTsgaSsrKVxcbiBcXHRcXHRxZWRlX2ZpbGxfZnJhZ19za2IoZWRldiwgcnhxLCBjcWUtXFx1MDAzZXRwYV9hZ2dfaW5kZXgsXFxuIFxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGNxZS1cXHUwMDNlbGVuX2xpc3RbaV0pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTU6MDA6MjQuMzE1NjIyMDA5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODU2ODcwNDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNhZjEzZWFjODAxNjk5ZTE0NTQxMDNjNzViZjEwNzRjZGZjZjQ4MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDEwIDE1OjAwOjIyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG5pbmRleCAzM2UxOGJiNjk3NzQwLi5iZjA0NDhiMDM1YjQ2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9mcC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZwLmNcbkBAIC02NzAsMTMgKzY3MCwyMyBAQCBzdGF0aWMgaW50IHFlZGVfZmlsbF9mcmFnX3NrYihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHRcdFx0XHQgTlVNX1JYX0JEU19NQVhdO1xuIFx0c3RydWN0IHFlZGVfYWdnX2luZm8gKnRwYV9pbmZvID0gXHUwMDI2cnhxLVx1MDAzZXRwYV9pbmZvW3RwYV9hZ2dfaW5kZXhdO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHRwYV9pbmZvLVx1MDAzZXNrYjtcbitcdHN0cnVjdCBwYWdlICpwYWdlID0gY3VycmVudF9iZC1cdTAwM2VkYXRhO1xuIFxuIFx0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUKSlcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHQvKiBBdm9pZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB1bmRlciBzZXZlcmUgbWVtb3J5IHByZXNzdXJlICovXG4rXHRpZiAodW5saWtlbHkoIXBhZ2UpKSB7XG4rXHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4rXHRcdFx0RFBfTk9USUNFKGVkZXYsXG4rXHRcdFx0XHQgIFwiRmFpbGVkIHRvIGFsbG9jYXRlIFJYIGJ1ZmZlciBmb3IgVFBBIGFnZyAldVxcblwiLFxuK1x0XHRcdFx0ICB0cGFfYWdnX2luZGV4KTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHQvKiBBZGQgb25lIGZyYWcgYW5kIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGluIHRoZSBza2IgKi9cbiBcdHNrYl9maWxsX3BhZ2VfZGVzYyhza2IsIHRwYV9pbmZvLVx1MDAzZWZyYWdfaWQrKyxcbi1cdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZWRhdGEsXG4rXHRcdFx0ICAgcGFnZSxcbiBcdFx0XHQgICBjdXJyZW50X2JkLVx1MDAzZXBhZ2Vfb2Zmc2V0ICsgcnhxLVx1MDAzZXJ4X2hlYWRyb29tLFxuIFx0XHRcdCAgIGxlbl9vbl9iZCk7XG4gXG5AQCAtNjg0LDcgKzY5NCw3IEBAIHN0YXRpYyBpbnQgcWVkZV9maWxsX2ZyYWdfc2tiKHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0LyogSW5jciBwYWdlIHJlZiBjb3VudCB0byByZXVzZSBvbiBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdFx0ICogc28gdGhhdCBpdCBkb2Vzbid0IGdldCBmcmVlZCB3aGlsZSBmcmVlaW5nIFNLQi5cbiBcdFx0ICovXG4tXHRcdHBhZ2VfcmVmX2luYyhjdXJyZW50X2JkLVx1MDAzZWRhdGEpO1xuK1x0XHRwYWdlX3JlZl9pbmMocGFnZSk7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuQEAgLTY5OCw4ICs3MDgsMTIgQEAgc3RhdGljIGludCBxZWRlX2ZpbGxfZnJhZ19za2Ioc3RydWN0IHFlZGVfZGV2ICplZGV2LFxuIFxuIG91dDpcbiBcdHRwYV9pbmZvLVx1MDAzZXN0YXRlID0gUUVERV9BR0dfU1RBVEVfRVJST1I7XG4tXHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuLVxuK1x0aWYgKGN1cnJlbnRfYmQtXHUwMDNlZGF0YSkge1xuK1x0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuK1x0fSBlbHNlIHtcbitcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4rXHR9XG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG5AQCAtODQ1LDcgKzg1OSw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfdHBhX3N0YXJ0KHN0cnVjdCBxZWRlX2RldiAqZWRldixcbiBcdFx0XHRcdFx0ICAgICAgcGFkLCBmYWxzZSk7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIucGFnZV9vZmZzZXQgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlcGFnZV9vZmZzZXQ7XG4gXHR0cGFfaW5mby1cdTAwM2VidWZmZXIubWFwcGluZyA9IHN3X3J4X2RhdGFfY29ucy1cdTAwM2VtYXBwaW5nO1xuLVxuK1x0dHBhX2luZm8tXHUwMDNlYnVmZmVyLmRhdGEgPSBzd19yeF9kYXRhX2NvbnMtXHUwMDNlZGF0YTtcbiBcdGlmICh1bmxpa2VseSghdHBhX2luZm8tXHUwMDNlc2tiKSkge1xuIFx0XHREUF9OT1RJQ0UoZWRldiwgXCJGYWlsZWQgdG8gYWxsb2NhdGUgU0tCIGZvciBncm9cXG5cIik7XG4gXG5AQCAtOTU5LDggKzk3MywyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcWVkZV90cGFfY29udChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdFx0XHQgc3RydWN0IHFlZGVfcnhfcXVldWUgKnJ4cSxcbiBcdFx0XHRcdCBzdHJ1Y3QgZXRoX2Zhc3RfcGF0aF9yeF90cGFfY29udF9jcWUgKmNxZSlcbiB7XG4rXHRzdHJ1Y3QgcWVkZV9hZ2dfaW5mbyAqdHBhX2luZm8gPSBcdTAwMjZyeHEtXHUwMDNldHBhX2luZm9bY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXhdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBEb24ndCBwcm9jZXNzIGZyYWdtZW50cyBpZiBUUEEgc3RhcnQgZmFpbGVkICovXG4rXHRpZiAodW5saWtlbHkodHBhX2luZm8tXHUwMDNlc3RhdGUgIT0gUUVERV9BR0dfU1RBVEVfU1RBUlQpKSB7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspIHtcbitcdFx0XHRzdHJ1Y3Qgc3dfcnhfZGF0YSAqcnhfYmQgPSBcdTAwMjZyeHEtXHUwMDNlc3dfcnhfcmluZ1tyeHEtXHUwMDNlc3dfcnhfY29ucyBcdTAwMjZcbitcdFx0XHRcdFx0XHRcdFx0TlVNX1JYX0JEU19NQVhdO1xuK1x0XHRcdFx0aWYgKGxpa2VseShyeF9iZC1cdTAwM2VkYXRhKSkge1xuK1x0XHRcdFx0XHRxZWRlX3JlY3ljbGVfcnhfYmRfcmluZyhyeHEsIDEpO1xuK1x0XHRcdFx0fSBlbHNlIHtcbitcdFx0XHRcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0XHRcdFx0cnhxLVx1MDAzZWZpbGxlZF9idWZmZXJzLS07XG4rXHRcdFx0XHR9XG4rXHRcdH1cbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKylcbiBcdFx0cWVkZV9maWxsX2ZyYWdfc2tiKGVkZXYsIHJ4cSwgY3FlLVx1MDAzZXRwYV9hZ2dfaW5kZXgsXG4gXHRcdFx0XHQgICBsZTE2X3RvX2NwdShjcWUtXHUwMDNlbGVuX2xpc3RbaV0pKTtcbkBAIC05ODYsNiArMTAxNiwyMiBAQCBzdGF0aWMgaW50IHFlZGVfdHBhX2VuZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYsXG4gXHRcdGRtYV91bm1hcF9wYWdlKHJ4cS1cdTAwM2VkZXYsIHRwYV9pbmZvLVx1MDAzZWJ1ZmZlci5tYXBwaW5nLFxuIFx0XHRcdCAgICAgICBQQUdFX1NJWkUsIHJ4cS1cdTAwM2VkYXRhX2RpcmVjdGlvbik7XG4gXG4rXHQvKiBEcm9wIHRoZSBwYWNrZXQgaWYgVFBBIHN0YXJ0IGZhaWxlZCAqL1xuK1x0aWYgKHVubGlrZWx5KHRwYV9pbmZvLVx1MDAzZXN0YXRlICE9IFFFREVfQUdHX1NUQVRFX1NUQVJUIHx8ICFza2IpKSB7XG4rXHRcdC8qIFJlY3ljbGUgQkRzIGZyb20gY3FlLVx1MDAzZWxlbl9saXN0IHRvIGtlZXAgcmluZyBzeW5jaHJvbml6ZWQgKi9cbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShjcWUtXHUwMDNlbGVuX2xpc3QpIFx1MDAyNlx1MDAyNiBjcWUtXHUwMDNlbGVuX2xpc3RbaV07IGkrKykge1xuK1x0XHRcdHN0cnVjdCBzd19yeF9kYXRhICpyeF9iZCA9IFx1MDAyNnJ4cS1cdTAwM2Vzd19yeF9yaW5nW3J4cS1cdTAwM2Vzd19yeF9jb25zIFx1MDAyNlxuK1x0XHRcdFx0XHRcdFx0XHROVU1fUlhfQkRTX01BWF07XG4rXHRcdFx0aWYgKGxpa2VseShyeF9iZC1cdTAwM2VkYXRhKSkge1xuK1x0XHRcdFx0cWVkZV9yZWN5Y2xlX3J4X2JkX3JpbmcocnhxLCAxKTtcbitcdFx0XHR9IGVsc2Uge1xuK1x0XHRcdFx0cWVkZV9yeF9iZF9yaW5nX2NvbnN1bWUocnhxKTtcbitcdFx0XHRcdHJ4cS1cdTAwM2VmaWxsZWRfYnVmZmVycy0tO1xuK1x0XHRcdH1cbitcdFx0fVxuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoY3FlLVx1MDAzZWxlbl9saXN0KSBcdTAwMjZcdTAwMjYgY3FlLVx1MDAzZWxlbl9saXN0W2ldOyBpKyspXG4gXHRcdHFlZGVfZmlsbF9mcmFnX3NrYihlZGV2LCByeHEsIGNxZS1cdTAwM2V0cGFfYWdnX2luZGV4LFxuIFx0XHRcdFx0ICAgbGUxNl90b19jcHUoY3FlLVx1MDAzZWxlbl9saXN0W2ldKSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDoyNC4zMTU2MjMzNDlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTY4NjY1MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV29ydGhGdXp6aW5nIEZsYWcgZm9yIGEgUUxvZ2ljIEV0aGVybmV0IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZm9yIHRoZSBRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBFdGhlcm5ldCBEcml2ZXIuIE5vdywgSSBrbm93IHRoZXNlIEZhc3RMaW5RIGNhcmRzIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSDigJMgdGhleSdyZSBub3Qgc29tZXRoaW5nIHlvdSdkIGVtdWxhdGUgZWFzaWx5IGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIGtleSBwb2ludC5cblxuVGhlIGluc3RydWN0aW9ucyB0ZWxsIG1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgY29kZSBpbiBkcml2ZXJzIHRoYXQgKnJlcXVpcmUqIHBoeXNpY2FsIFBDSWUgY2FyZHMgYW5kIGNhbid0IGJlIHJlYWRpbHkgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgZXhhbXBsZXMgdGhleSBnaXZlIOKAkyBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSDigJMgdGhleSdyZSBhbGwgaW4gdGhhdCBzYW1lIGJvYXQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYHFlZGVgLi4uIGlzbid0IHRoYXQgcGFydCBvZiB0aGUgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IGRyaXZlciBmYW1pbHk/IFllcywgaXQgaXMuIGBxZWRgIGlzIHRoZSBjb3JlIGRyaXZlciwgYW5kIGBxZWRlYCBpcyBzcGVjaWZpY2FsbHkgdGhlIEV0aGVybmV0IGRyaXZlci4gVGhlIGluc3RydWN0aW9ucyBleHBsaWNpdGx5IG1lbnRpb24gYHFlZGAuIFNvLCB0aGUgYHFlZGVgIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBhbmQgbmVlZHMgYWN0dWFsIGhhcmR3YXJlLCBubz9cblxuWXVwLCBjaGVja2luZyB0aGUgcGF0aCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZnAuY2AgY29uZmlybXMgaXQncyBRTG9naWMuIFRoZXJlZm9yZSwgYmFzZWQgb24gdGhlIGRvY3VtZW50ZWQgY3JpdGVyaWEsIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBBbmQgaGVyZSdzIHRoZSByZWFzb25pbmcgdG8gYmFjayBpdCB1cDogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHgpLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGhhcmR3YXJlIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIERvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjIsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQxNTowMDozMi44ODQyOTMxMzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4KSwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE1OjAwOjMyLjg4NDMyOTU0MloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpxtf[1] Phase: Running StartedAt: 2026-08-10 15:00:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpxtf[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 15:00:44 +0000 UTC FinishedAt: 2026-08-10 15:00:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}