Name: series-workflowmhjcb Phase: Failed StartedAt: 2026-08-15 08:18:12 +0000 UTC FinishedAt: 2026-08-15 08:39:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhjcb[0] Phase: Succeeded StartedAt: 2026-08-15 08:18:12 +0000 UTC FinishedAt: 2026-08-15 08:39:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhjcb[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 08:18:12 +0000 UTC FinishedAt: 2026-08-15 08:39:16 +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+CgkJCTx0ZD4yMDI2LzA4LzE1IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDg6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMmE1Njc3YzllMjlmMjllMThiMGM1ZGU0NDI1MDg0ZTBhZTZkNzYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDg6Mzg6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmNcbmluZGV4IGJjMjAyZTRlZDJiZGEuLjg2MjU5OTIxZDU0YzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2h1Z2VwYWdlX3NldHRpbmdzLmhcJiMzNDtcbiBcbiAjaWZuZGVmIE1BRFZfU09GVF9PRkZMSU5FXG5AQCAtMzEsNiAmIzQzOzMyLDggQEBcbiBcbiAjZGVmaW5lIEVQUkVGSVggXCYjMzQ7ICEhISBcJiMzNDtcbiBcbiYjNDM7I2RlZmluZSBFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEggXCYjMzQ7L3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcJiMzNDtcbiYjNDM7XG4gc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIHtcbiBcdGNoYXIgKmZpbGVtYXAgPSBOVUxMO1xuQEAgLTc3LDI2ICYjNDM7ODAsMTIgQEAgc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIGludCBzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShpbnQgdmFsdWUpXG4te1xuLVx0Y2hhciBjbWRbMjU2XSA9IHswfTtcbi1cdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xuLVxuLVx0aWYgKHZhbHVlICE9IDAgXHUwMDI2XHUwMDI2IHZhbHVlICE9IDEpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVxuLVx0c3ByaW50ZihjbWQsIFwmIzM0O2VjaG8gJWQgXHUwMDNlIC9wcm9jL3N5cy92bS9lbmFibGVfc29mdF9vZmZsaW5lXCYjMzQ7LCB2YWx1ZSk7XG4tXHRjbWRmaWxlID0gcG9wZW4oY21kLCBcJiMzNDtyXCYjMzQ7KTtcbi1cbi1cdGlmIChjbWRmaWxlKVxuLVx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtlbmFibGVfc29mdF9vZmZsaW5lID1cdTAwM2UgJWRcXG5cJiMzNDssIHZhbHVlKTtcbi1cdGVsc2Uge1xuLVx0XHRrc2Z0X3BlcnJvcihFUFJFRklYIFwmIzM0O2ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZVwmIzM0Oyk7XG4tXHRcdHJldHVybiBlcnJubztcbi1cdH1cbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gLTFVTDtcbiBcbi1cdHBjbG9zZShjbWRmaWxlKTtcbi1cdHJldHVybiAwO1xuJiM0MztzdGF0aWMgdm9pZCByZXN0b3JlX2VuYWJsZV9zb2Z0X29mZmxpbmUodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgIT0gLTFVTClcbiYjNDM7XHRcdHdyaXRlX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgsIG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY3JlYXRlX2h1Z2V0bGJmc19maWxlKHN0cnVjdCBzdGF0ZnMgKmZpbGVfc3RhdClcbkBAIC0xNDUsMTAgJiM0MzsxMzQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oaW50IGVuYWJsZV9zb2Z0X29mZmxpbmUpXG4gXHRodWdlcGFnZXNpemVfa2IgPSBmaWxlX3N0YXQuZl9ic2l6ZSAvIDEwMjQ7XG4gXHRrc2Z0X3ByaW50X21zZyhcJiMzNDtIdWdlcGFnZXNpemUgaXMgJWxka0JcXG5cJiMzNDssIGh1Z2VwYWdlc2l6ZV9rYik7XG4gXG4tXHRpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkge1xuLVx0XHRjbG9zZShmZCk7XG4tXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtGYWlsZWQgdG8gc2V0IGVuYWJsZV9zb2Z0X29mZmxpbmVcXG5cJiMzNDspO1xuLVx0fVxuJiM0MztcdHdyaXRlX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgsIGVuYWJsZV9zb2Z0X29mZmxpbmUpO1xuIFxuIFx0bnJfaHVnZXBhZ2VzX2JlZm9yZSA9IGh1Z2V0bGJfbnJfZGVmYXVsdF9wYWdlcygpO1xuIFxuQEAgLTE5Miw2ICYjNDM7MTc4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFxuIFx0a3NmdF9zZXRfcGxhbigyKTtcbiBcbiYjNDM7XHRvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpO1xuJiM0MztcdGF0ZXhpdChyZXN0b3JlX2VuYWJsZV9zb2Z0X29mZmxpbmUpO1xuJiM0MztcbiBcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigxKTtcbiBcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigwKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuY1xuaW5kZXggMTMxZDlkNmRiODY3OS4uMjhmMTUxZGFhYmU0OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbkBAIC0xMTEsMTggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfbW1hcF9taW5fYWRkcih2b2lkKVxuIFx0XHRyZXR1cm4gYWRkcjtcbiBcbiBcdGZwID0gZm9wZW4oXCYjMzQ7L3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHJcJiMzNDssIFwmIzM0O3JcJiMzNDspO1xuLVx0aWYgKGZwID09IE5VTEwpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7RmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4tXHRcdGV4aXQoS1NGVF9TS0lQKTtcbi1cdH1cbiYjNDM7XHRpZiAoIWZwKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7RmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbiBcbiBcdG5fbWF0Y2hlZCA9IGZzY2FuZihmcCwgXCYjMzQ7JWxsdVwmIzM0OywgXHUwMDI2YWRkcik7XG4gXHRpZiAobl9tYXRjaGVkICE9IDEpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7RmFpbGVkIHRvIHJlYWQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRpbnQgZXJyID0gZXJybm87XG4mIzQzO1xuIFx0XHRmY2xvc2UoZnApO1xuLVx0XHRleGl0KEtTRlRfU0tJUCk7XG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBzdHJlcnJvcihlcnIpKTtcbiBcdH1cbiBcbiBcdGZjbG9zZShmcCk7XG5AQCAtMTE2NCwxMCAmIzQzOzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxuIFx0XHRcdFx0XHQgICAgcmFuZF9hZGRyKTtcbiBcbiBcdGlmIChyZW1hcF90aW1lIFx1MDAzYyAwKSB7XG4tXHRcdGlmICh0ZXN0X2Nhc2UuZXhwZWN0X2ZhaWx1cmUpXG4tXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcJiMzNDslc1xcblxcdEV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4tXHRcdGVsc2Uge1xuJiM0MztcdFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSkge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslczogZXhwZWN0ZWQgbXJlbWFwIGZhaWx1cmVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgICAgIHRlc3RfY2FzZS5uYW1lKTtcbiYjNDM7XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcJiMzNDslc1xcblwmIzM0OywgdGVzdF9jYXNlLm5hbWUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7JXNcXG5cJiMzNDssIHRlc3RfY2FzZS5uYW1lKTtcbiBcdFx0XHQqZmFpbHVyZXMgJiM0Mzs9IDE7XG4gXHRcdH1cbkBAIC0xMTc3LDExICYjNDM7MTE3NywxMyBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsXG4gXHRcdCAqIHdhcyBmYXVsdGVkIGluLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFUSU9OX05PX1RIUkVTSE9MRCB8fFxuLVx0XHQgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSBcdTAwM2M9IHRocmVzaG9sZF9tYiAqIF8xTUIpXG4tXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0OyVzXFxuXFx0bXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdCAgICB0ZXN0X2Nhc2UuY29uZmlnLnJlZ2lvbl9zaXplIFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQikge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4gXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0OyVzXFxuXCYjMzQ7LCB0ZXN0X2Nhc2UubmFtZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7JXNcXG5cJiMzNDssIHRlc3RfY2FzZS5uYW1lKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTI1MCwxMyAmIzQzOzEyNTIsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0dGltZV90IHQ7XG4gXHRGSUxFICptYXBzX2ZwO1xuIFxuJiM0MztcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XG4mIzQzO1xuIFx0cGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZShcdTAwMjZ0KTtcbiBcbiBcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFx1MDAyNnRocmVzaG9sZF9tYiwgXHUwMDI2cGF0dGVybl9zZWVkKSBcdTAwM2MgMClcbiBcdFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCYjMzQ7VGVzdCBjb25maWdzOlxcblxcdHRocmVzaG9sZF9tYj0ldVxcblxcdHBhdHRlcm5fc2VlZD0ldVxcblxcblwmIzM0Oyxcbi1cdFx0ICAgICAgIHRocmVzaG9sZF9tYiwgcGF0dGVybl9zZWVkKTtcbiYjNDM7XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtUZXN0IGNvbmZpZ3M6XFxuXCYjMzQ7KTtcbiYjNDM7XHRrc2Z0X3ByaW50X21zZyhcJiMzNDt0aHJlc2hvbGRfbWI9JXVcXG5cJiMzNDssIHRocmVzaG9sZF9tYik7XG4mIzQzO1x0a3NmdF9wcmludF9tc2coXCYjMzQ7cGF0dGVybl9zZWVkPSV1XFxuXCYjMzQ7LCBwYXR0ZXJuX3NlZWQpO1xuIFxuIFx0LypcbiBcdCAqIHNldCBwcmVhbGxvY2F0ZWQgcmFuZG9tIGFycmF5IGFjY29yZGluZyB0byB0ZXN0IGNvbmZpZ3M7IHNlZSB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuY1xuaW5kZXggYzk3M2Q2NzIyNzIwYy4uNTcyYzI1MTZlODc0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbkBAIC0zNDcsNiAmIzQzOzM0Nyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdHN0cnVjdCB0aHBfc2V0dGluZ3Mgc2V0dGluZ3M7XG4gXHRpbnQgaSwgaiwgcGxhbiA9IDA7XG4gXG4mIzQzO1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbiYjNDM7XG4gXHRodWdlcGFnZV9zYXZlX3NldHRpbmdzKHRydWUsIHRydWUpO1xuIFxuIFx0Y2hlY2tfdWZmZF93cF9mZWF0dXJlX3N1cHBvcnRlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA4OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyYTU2NzdjOWUyOWYyOWUxOGIwYzVkZTQ0MjUwODRlMGFlNmQ3NjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwODozODo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jCmluZGV4IGJjMjAyZTRlZDJiZGEuLjg2MjU5OTIxZDU0YzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuYwpAQCAtMjMsNiAmIzQzOzIzLDcgQEAKICNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtrc2VsZnRlc3QuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oJiMzNDsKIAogI2lmbmRlZiBNQURWX1NPRlRfT0ZGTElORQpAQCAtMzEsNiAmIzQzOzMyLDggQEAKIAogI2RlZmluZSBFUFJFRklYICYjMzQ7ICEhISAmIzM0OwogCiYjNDM7I2RlZmluZSBFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEggJiMzNDsvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7CiYjNDM7CiBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pCiB7CiAJY2hhciAqZmlsZW1hcCA9IE5VTEw7CkBAIC03NywyNiAmIzQzOzgwLDEyIEBAIHN0YXRpYyBpbnQgZG9fc29mdF9vZmZsaW5lKGludCBmZCwgc2l6ZV90IGxlbiwgaW50IGV4cGVjdF9lcnJubykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNldF9lbmFibGVfc29mdF9vZmZsaW5lKGludCB2YWx1ZSkKLXsKLQljaGFyIGNtZFsyNTZdID0gezB9OwotCUZJTEUgKmNtZGZpbGUgPSBOVUxMOwotCi0JaWYgKHZhbHVlICE9IDAgJmFtcDsmYW1wOyB2YWx1ZSAhPSAxKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXNwcmludGYoY21kLCAmIzM0O2VjaG8gJWQgJmd0OyAvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7LCB2YWx1ZSk7Ci0JY21kZmlsZSA9IHBvcGVuKGNtZCwgJiMzNDtyJiMzNDspOwotCi0JaWYgKGNtZGZpbGUpCi0JCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ZW5hYmxlX3NvZnRfb2ZmbGluZSA9Jmd0OyAlZFxuJiMzNDssIHZhbHVlKTsKLQllbHNlIHsKLQkJa3NmdF9wZXJyb3IoRVBSRUZJWCAmIzM0O2ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7KTsKLQkJcmV0dXJuIGVycm5vOwotCX0KJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSAtMVVMOwogCi0JcGNsb3NlKGNtZGZpbGUpOwotCXJldHVybiAwOwomIzQzO3N0YXRpYyB2b2lkIHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSAhPSAtMVVMKQomIzQzOwkJd3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lKTsKIH0KIAogc3RhdGljIGludCBjcmVhdGVfaHVnZXRsYmZzX2ZpbGUoc3RydWN0IHN0YXRmcyAqZmlsZV9zdGF0KQpAQCAtMTQ1LDEwICYjNDM7MTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKQogCWh1Z2VwYWdlc2l6ZV9rYiA9IGZpbGVfc3RhdC5mX2JzaXplIC8gMTAyNDsKIAlrc2Z0X3ByaW50X21zZygmIzM0O0h1Z2VwYWdlc2l6ZSBpcyAlbGRrQlxuJiMzNDssIGh1Z2VwYWdlc2l6ZV9rYik7CiAKLQlpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkgewotCQljbG9zZShmZCk7Ci0JCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O0ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZVxuJiMzNDspOwotCX0KJiM0MzsJd3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgZW5hYmxlX3NvZnRfb2ZmbGluZSk7CiAKIAlucl9odWdlcGFnZXNfYmVmb3JlID0gaHVnZXRsYl9ucl9kZWZhdWx0X3BhZ2VzKCk7CiAKQEAgLTE5Miw2ICYjNDM7MTc4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJa3NmdF9zZXRfcGxhbigyKTsKIAomIzQzOwlvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpOwomIzQzOwlhdGV4aXQocmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lKTsKJiM0MzsKIAl0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7CiAJdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKDApOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuYwppbmRleCAxMzFkOWQ2ZGI4Njc5Li4yOGYxNTFkYWFiZTQ4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmMKQEAgLTExMSwxOCAmIzQzOzExMSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9tbWFwX21pbl9hZGRyKHZvaWQpCiAJCXJldHVybiBhZGRyOwogCiAJZnAgPSBmb3BlbigmIzM0Oy9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyJiMzNDssICYjMzQ7ciYjMzQ7KTsKLQlpZiAoZnAgPT0gTlVMTCkgewotCQlrc2Z0X3ByaW50X21zZygmIzM0O0ZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xuJiMzNDssCi0JCQlzdHJlcnJvcihlcnJubykpOwotCQlleGl0KEtTRlRfU0tJUCk7Ci0JfQomIzQzOwlpZiAoIWZwKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtGYWlsZWQgdG8gb3BlbiAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAomIzQzOwkJCSAgICAgICBzdHJlcnJvcihlcnJubykpOwogCiAJbl9tYXRjaGVkID0gZnNjYW5mKGZwLCAmIzM0OyVsbHUmIzM0OywgJmFtcDthZGRyKTsKIAlpZiAobl9tYXRjaGVkICE9IDEpIHsKLQkJa3NmdF9wcmludF9tc2coJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAotCQkJc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJCWludCBlcnIgPSBlcnJubzsKJiM0MzsKIAkJZmNsb3NlKGZwKTsKLQkJZXhpdChLU0ZUX1NLSVApOwomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAomIzQzOwkJCSAgICAgICBzdHJlcnJvcihlcnIpKTsKIAl9CiAKIAlmY2xvc2UoZnApOwpAQCAtMTE2NCwxMCAmIzQzOzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLAogCQkJCQkgICAgcmFuZF9hZGRyKTsKIAogCWlmIChyZW1hcF90aW1lICZsdDsgMCkgewotCQlpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKQotCQkJa3NmdF90ZXN0X3Jlc3VsdF94ZmFpbCgmIzM0OyVzXG5cdEV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXG4mIzM0OywKLQkJCQkJICAgICAgdGVzdF9jYXNlLm5hbWUpOwotCQllbHNlIHsKJiM0MzsJCWlmICh0ZXN0X2Nhc2UuZXhwZWN0X2ZhaWx1cmUpIHsKJiM0MzsJCQlrc2Z0X3ByaW50X21zZygmIzM0OyVzOiBleHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxuJiMzNDssCiYjNDM7CQkJCSAgICAgICB0ZXN0X2Nhc2UubmFtZSk7CiYjNDM7CQkJa3NmdF90ZXN0X3Jlc3VsdF94ZmFpbCgmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwomIzQzOwkJfSBlbHNlIHsKIAkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwogCQkJKmZhaWx1cmVzICYjNDM7PSAxOwogCQl9CkBAIC0xMTc3LDExICYjNDM7MTE3NywxMyBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsCiAJCSAqIHdhcyBmYXVsdGVkIGluLgogCQkgKi8KIAkJaWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFUSU9OX05PX1RIUkVTSE9MRCB8fAotCQkgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSAmbHQ7PSB0aHJlc2hvbGRfbWIgKiBfMU1CKQotCQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCYjMzQ7JXNcblx0bXJlbWFwIHRpbWU6ICUxMmxsZG5zXG4mIzM0OywKLQkJCQkJICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpOwotCQllbHNlCiYjNDM7CQkgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSAmbHQ7PSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7CiYjNDM7CQkJa3NmdF9wcmludF9tc2coJiMzNDslczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXG4mIzM0OywKJiM0MzsJCQkJICAgICAgIHRlc3RfY2FzZS5uYW1lLCByZW1hcF90aW1lKTsKIAkJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoJiMzNDslc1xuJiMzNDssIHRlc3RfY2FzZS5uYW1lKTsKJiM0MzsJCX0KIAl9CiB9CiAKQEAgLTEyNTAsMTMgJiM0MzsxMjUyLDE2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl0aW1lX3QgdDsKIAlGSUxFICptYXBzX2ZwOwogCiYjNDM7CWtzZnRfcHJpbnRfaGVhZGVyKCk7CiYjNDM7CiAJcGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZSgmYW1wO3QpOwogCiAJaWYgKHBhcnNlX2FyZ3MoYXJnYywgYXJndiwgJmFtcDt0aHJlc2hvbGRfbWIsICZhbXA7cGF0dGVybl9zZWVkKSAmbHQ7IDApCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAotCWtzZnRfcHJpbnRfbXNnKCYjMzQ7VGVzdCBjb25maWdzOlxuXHR0aHJlc2hvbGRfbWI9JXVcblx0cGF0dGVybl9zZWVkPSV1XG5cbiYjMzQ7LAotCQkgICAgICAgdGhyZXNob2xkX21iLCBwYXR0ZXJuX3NlZWQpOwomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O1Rlc3QgY29uZmlnczpcbiYjMzQ7KTsKJiM0MzsJa3NmdF9wcmludF9tc2coJiMzNDt0aHJlc2hvbGRfbWI9JXVcbiYjMzQ7LCB0aHJlc2hvbGRfbWIpOwomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O3BhdHRlcm5fc2VlZD0ldVxuJiMzNDssIHBhdHRlcm5fc2VlZCk7CiAKIAkvKgogCSAqIHNldCBwcmVhbGxvY2F0ZWQgcmFuZG9tIGFycmF5IGFjY29yZGluZyB0byB0ZXN0IGNvbmZpZ3M7IHNlZSB0aGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jCmluZGV4IGM5NzNkNjcyMjcyMGMuLjU3MmMyNTE2ZTg3NGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuYwpAQCAtMzQ3LDYgJiM0MzszNDcsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJc3RydWN0IHRocF9zZXR0aW5ncyBzZXR0aW5nczsKIAlpbnQgaSwgaiwgcGxhbiA9IDA7CiAKJiM0MzsJa3NmdF9wcmludF9oZWFkZXIoKTsKJiM0MzsKIAlodWdlcGFnZV9zYXZlX3NldHRpbmdzKHRydWUsIHRydWUpOwogCiAJY2hlY2tfdWZmZF93cF9mZWF0dXJlX3N1cHBvcnRlZCgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAxCgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyB0aHJlZSBmaWxlcyBpbnNpZGUgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gIGRpcmVjdG9yeTogYGh1Z2V0bGItc29mdC1vZmZsaW5lLmNgLCBgbXJlbWFwX3Rlc3QuY2AsIGFuZCBgdWZmZC13cC1tcmVtYXAuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhlc2UgYXJlICpzZWxmdGVzdHMqLiBNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluOyBzZWxmdGVzdHMgYXJlIHRoZXJlIHRvLCB3ZWxsLCB0ZXN0IHRoaW5ncywgYnV0ICp0aGV5KiBhcmVuJiMzOTt0IGtlcm5lbCBjb2RlLiBUaGV5IGxpdmUgaW4gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgaGVyZSBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGF0IHRlc3RpbmcgZnJhbWV3b3JrLiBUaGlzIG1lYW5zLCBpbXBvcnRhbnRseSwgdGhhdCB0aGlzIHBhdGNoICpkb2VzbiYjMzk7dCogYWN0dWFsbHkgYWx0ZXIgdGhlIGtlcm5lbCYjMzk7cyBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBwYXRoLiBTbywgbm8gbmVlZCB0byB3YXN0ZSB0aW1lIGZ1enppbmcgdGhpcyBvbmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdGhvdWdoLiBJbiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaW5jbHVkaW5nIGB2bV91dGlsLmhgLCBzd2FwcGluZyBvdXQgYHNldF9lbmFibGVfc29mdF9vZmZsaW5lYCB3aXRoIGB3cml0ZV9udW1gIGFuZCBgcmVhZF9udW1gLCBhbmQgYWRkaW5nIGEgYHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZWAgdXNpbmcgYGF0ZXhpdGAuIEZpbmUsIHRoYXQmIzM5O3MganVzdCByZXN0cnVjdHVyaW5nIHRoYXQgdGVzdC4gTW92aW5nIG9uIHRvIGBtcmVtYXBfdGVzdC5jYCwgSSBzZWUgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGBleGl0KEtTRlRfU0tJUClgIHdpdGggYGtzZnRfZXhpdF9za2lwYCwgdHdlYWtpbmcgc29tZSBvZiB0aG9zZSBga3NmdF90ZXN0X3Jlc3VsdGAgbWVzc2FnZXMsIGFuZCBhZGRpbmcgYGtzZnRfcHJpbnRfaGVhZGVyKClgLiBBZ2FpbiwgZW50aXJlbHkgd2l0aGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBGaW5hbGx5LCBgdWZmZC13cC1tcmVtYXAuY2AgYWxzbyBnZXRzIHRoZSBga3NmdF9wcmludF9oZWFkZXIoKWAuCgpZdXAsIGl0JiMzOTtzIGFsbCB3aXRoaW4gdXNlci1zcGFjZSB0ZXN0IGNvZGUuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGFueSBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuIFNvLCBubywgdGhpcyBpcyBub3QgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgY2FuIHNhZmVseSBzZXQgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIGFuZCBjYWxsIHRoZSBzZXQtcmVzdWx0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzg6NTguNDU3NzIyNThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDE2NjYyNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA4OjM4OjU4LjQ1Nzc0NTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3NzY0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMmE1Njc3YzllMjlmMjllMThiMGM1ZGU0NDI1MDg0ZTBhZTZkNzYwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDA4OjM4OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXFxuaW5kZXggYmMyMDJlNGVkMmJkYS4uODYyNTk5MjFkNTRjMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xcbkBAIC0yMyw2ICsyMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvdHlwZXMuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJrc2VsZnRlc3QuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZtX3V0aWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImh1Z2VwYWdlX3NldHRpbmdzLmhcXFwiXFxuIFxcbiAjaWZuZGVmIE1BRFZfU09GVF9PRkZMSU5FXFxuQEAgLTMxLDYgKzMyLDggQEBcXG4gXFxuICNkZWZpbmUgRVBSRUZJWCBcXFwiICEhISBcXFwiXFxuIFxcbisjZGVmaW5lIEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCBcXFwiL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcXFwiXFxuK1xcbiBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pXFxuIHtcXG4gXFx0Y2hhciAqZmlsZW1hcCA9IE5VTEw7XFxuQEAgLTc3LDI2ICs4MCwxMiBAQCBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoaW50IHZhbHVlKVxcbi17XFxuLVxcdGNoYXIgY21kWzI1Nl0gPSB7MH07XFxuLVxcdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHZhbHVlICE9IDAgXFx1MDAyNlxcdTAwMjYgdmFsdWUgIT0gMSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcbi1cXHRzcHJpbnRmKGNtZCwgXFxcImVjaG8gJWQgXFx1MDAzZSAvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZVxcXCIsIHZhbHVlKTtcXG4tXFx0Y21kZmlsZSA9IHBvcGVuKGNtZCwgXFxcInJcXFwiKTtcXG4tXFxuLVxcdGlmIChjbWRmaWxlKVxcbi1cXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiZW5hYmxlX3NvZnRfb2ZmbGluZSA9XFx1MDAzZSAlZFxcXFxuXFxcIiwgdmFsdWUpO1xcbi1cXHRlbHNlIHtcXG4tXFx0XFx0a3NmdF9wZXJyb3IoRVBSRUZJWCBcXFwiZmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxcIik7XFxuLVxcdFxcdHJldHVybiBlcnJubztcXG4tXFx0fVxcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSAtMVVMO1xcbiBcXG4tXFx0cGNsb3NlKGNtZGZpbGUpO1xcbi1cXHRyZXR1cm4gMDtcXG4rc3RhdGljIHZvaWQgcmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lKHZvaWQpXFxuK3tcXG4rXFx0aWYgKG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSAhPSAtMVVMKVxcbitcXHRcXHR3cml0ZV9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRILCBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNyZWF0ZV9odWdldGxiZnNfZmlsZShzdHJ1Y3Qgc3RhdGZzICpmaWxlX3N0YXQpXFxuQEAgLTE0NSwxMCArMTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKVxcbiBcXHRodWdlcGFnZXNpemVfa2IgPSBmaWxlX3N0YXQuZl9ic2l6ZSAvIDEwMjQ7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJIdWdlcGFnZXNpemUgaXMgJWxka0JcXFxcblxcXCIsIGh1Z2VwYWdlc2l6ZV9rYik7XFxuIFxcbi1cXHRpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkge1xcbi1cXHRcXHRjbG9zZShmZCk7XFxuLVxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiRmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxcXG5cXFwiKTtcXG4tXFx0fVxcbitcXHR3cml0ZV9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRILCBlbmFibGVfc29mdF9vZmZsaW5lKTtcXG4gXFxuIFxcdG5yX2h1Z2VwYWdlc19iZWZvcmUgPSBodWdldGxiX25yX2RlZmF1bHRfcGFnZXMoKTtcXG4gXFxuQEAgLTE5Miw2ICsxNzgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcbiBcXHRrc2Z0X3NldF9wbGFuKDIpO1xcbiBcXG4rXFx0b3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gcmVhZF9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRIKTtcXG4rXFx0YXRleGl0KHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XFxuK1xcbiBcXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7XFxuIFxcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigwKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXFxuaW5kZXggMTMxZDlkNmRiODY3OS4uMjhmMTUxZGFhYmU0OCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuY1xcbkBAIC0xMTEsMTggKzExMSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9tbWFwX21pbl9hZGRyKHZvaWQpXFxuIFxcdFxcdHJldHVybiBhZGRyO1xcbiBcXG4gXFx0ZnAgPSBmb3BlbihcXFwiL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHJcXFwiLCBcXFwiclxcXCIpO1xcbi1cXHRpZiAoZnAgPT0gTlVMTCkge1xcbi1cXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiRmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRzdHJlcnJvcihlcnJubykpO1xcbi1cXHRcXHRleGl0KEtTRlRfU0tJUCk7XFxuLVxcdH1cXG4rXFx0aWYgKCFmcClcXG4rXFx0XFx0a3NmdF9leGl0X3NraXAoXFxcIkZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XFxuIFxcbiBcXHRuX21hdGNoZWQgPSBmc2NhbmYoZnAsIFxcXCIlbGx1XFxcIiwgXFx1MDAyNmFkZHIpO1xcbiBcXHRpZiAobl9tYXRjaGVkICE9IDEpIHtcXG4tXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0c3RyZXJyb3IoZXJybm8pKTtcXG4rXFx0XFx0aW50IGVyciA9IGVycm5vO1xcbitcXG4gXFx0XFx0ZmNsb3NlKGZwKTtcXG4tXFx0XFx0ZXhpdChLU0ZUX1NLSVApO1xcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiRmFpbGVkIHRvIHJlYWQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgICAgc3RyZXJyb3IoZXJyKSk7XFxuIFxcdH1cXG4gXFxuIFxcdGZjbG9zZShmcCk7XFxuQEAgLTExNjQsMTAgKzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgcmFuZF9hZGRyKTtcXG4gXFxuIFxcdGlmIChyZW1hcF90aW1lIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKVxcbi1cXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFxcXCIlc1xcXFxuXFxcXHRFeHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgdGVzdF9jYXNlLm5hbWUpO1xcbi1cXHRcXHRlbHNlIHtcXG4rXFx0XFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSkge1xcbitcXHRcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiJXM6IGV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgdGVzdF9jYXNlLm5hbWUpO1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFxcXCIlc1xcXFxuXFxcIiwgdGVzdF9jYXNlLm5hbWUpO1xcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcIiVzXFxcXG5cXFwiLCB0ZXN0X2Nhc2UubmFtZSk7XFxuIFxcdFxcdFxcdCpmYWlsdXJlcyArPSAxO1xcbiBcXHRcXHR9XFxuQEAgLTExNzcsMTEgKzExNzcsMTMgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxcbiBcXHRcXHQgKiB3YXMgZmF1bHRlZCBpbi5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICh0aHJlc2hvbGRfbWIgPT0gVkFMSURBVElPTl9OT19USFJFU0hPTEQgfHxcXG4tXFx0XFx0ICAgIHRlc3RfY2FzZS5jb25maWcucmVnaW9uX3NpemUgXFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQilcXG4tXFx0XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFxcXCIlc1xcXFxuXFxcXHRtcmVtYXAgdGltZTogJTEybGxkbnNcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHRlc3RfY2FzZS5uYW1lLCByZW1hcF90aW1lKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHQgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSBcXHUwMDNjPSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7XFxuK1xcdFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIlczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpO1xcbiBcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIiVzXFxcXG5cXFwiLCB0ZXN0X2Nhc2UubmFtZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiJXNcXFxcblxcXCIsIHRlc3RfY2FzZS5uYW1lKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTEyNTAsMTMgKzEyNTIsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHR0aW1lX3QgdDtcXG4gXFx0RklMRSAqbWFwc19mcDtcXG4gXFxuK1xcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XFxuK1xcbiBcXHRwYXR0ZXJuX3NlZWQgPSAodW5zaWduZWQgaW50KSB0aW1lKFxcdTAwMjZ0KTtcXG4gXFxuIFxcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFxcdTAwMjZ0aHJlc2hvbGRfbWIsIFxcdTAwMjZwYXR0ZXJuX3NlZWQpIFxcdTAwM2MgMClcXG4gXFx0XFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xcbiBcXG4tXFx0a3NmdF9wcmludF9tc2coXFxcIlRlc3QgY29uZmlnczpcXFxcblxcXFx0dGhyZXNob2xkX21iPSV1XFxcXG5cXFxcdHBhdHRlcm5fc2VlZD0ldVxcXFxuXFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgdGhyZXNob2xkX21iLCBwYXR0ZXJuX3NlZWQpO1xcbitcXHRrc2Z0X3ByaW50X21zZyhcXFwiVGVzdCBjb25maWdzOlxcXFxuXFxcIik7XFxuK1xcdGtzZnRfcHJpbnRfbXNnKFxcXCJ0aHJlc2hvbGRfbWI9JXVcXFxcblxcXCIsIHRocmVzaG9sZF9tYik7XFxuK1xcdGtzZnRfcHJpbnRfbXNnKFxcXCJwYXR0ZXJuX3NlZWQ9JXVcXFxcblxcXCIsIHBhdHRlcm5fc2VlZCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBzZXQgcHJlYWxsb2NhdGVkIHJhbmRvbSBhcnJheSBhY2NvcmRpbmcgdG8gdGVzdCBjb25maWdzOyBzZWUgdGhlXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXFxuaW5kZXggYzk3M2Q2NzIyNzIwYy4uNTcyYzI1MTZlODc0ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuY1xcbkBAIC0zNDcsNiArMzQ3LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHRzdHJ1Y3QgdGhwX3NldHRpbmdzIHNldHRpbmdzO1xcbiBcXHRpbnQgaSwgaiwgcGxhbiA9IDA7XFxuIFxcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXG4gXFx0aHVnZXBhZ2Vfc2F2ZV9zZXR0aW5ncyh0cnVlLCB0cnVlKTtcXG4gXFxuIFxcdGNoZWNrX3VmZmRfd3BfZmVhdHVyZV9zdXBwb3J0ZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzg6NTguOTAzNDA4MDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjU3MDk2NDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIyYTU2NzdjOWUyOWYyOWUxOGIwYzVkZTQ0MjUwODRlMGFlNmQ3NjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwODozODo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG5pbmRleCBiYzIwMmU0ZWQyYmRhLi44NjI1OTkyMWQ1NGMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xuQEAgLTIzLDYgKzIzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0LmhcIlxuKyNpbmNsdWRlIFwidm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcImh1Z2VwYWdlX3NldHRpbmdzLmhcIlxuIFxuICNpZm5kZWYgTUFEVl9TT0ZUX09GRkxJTkVcbkBAIC0zMSw2ICszMiw4IEBAXG4gXG4gI2RlZmluZSBFUFJFRklYIFwiICEhISBcIlxuIFxuKyNkZWZpbmUgRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRIIFwiL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcIlxuK1xuIHN0YXRpYyBpbnQgZG9fc29mdF9vZmZsaW5lKGludCBmZCwgc2l6ZV90IGxlbiwgaW50IGV4cGVjdF9lcnJubylcbiB7XG4gXHRjaGFyICpmaWxlbWFwID0gTlVMTDtcbkBAIC03NywyNiArODAsMTIgQEAgc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIGludCBzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShpbnQgdmFsdWUpXG4te1xuLVx0Y2hhciBjbWRbMjU2XSA9IHswfTtcbi1cdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xuLVxuLVx0aWYgKHZhbHVlICE9IDAgXHUwMDI2XHUwMDI2IHZhbHVlICE9IDEpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVxuLVx0c3ByaW50ZihjbWQsIFwiZWNobyAlZCBcdTAwM2UgL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcIiwgdmFsdWUpO1xuLVx0Y21kZmlsZSA9IHBvcGVuKGNtZCwgXCJyXCIpO1xuLVxuLVx0aWYgKGNtZGZpbGUpXG4tXHRcdGtzZnRfcHJpbnRfbXNnKFwiZW5hYmxlX3NvZnRfb2ZmbGluZSA9XHUwMDNlICVkXFxuXCIsIHZhbHVlKTtcbi1cdGVsc2Uge1xuLVx0XHRrc2Z0X3BlcnJvcihFUFJFRklYIFwiZmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXCIpO1xuLVx0XHRyZXR1cm4gZXJybm87XG4tXHR9XG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gLTFVTDtcbiBcbi1cdHBjbG9zZShjbWRmaWxlKTtcbi1cdHJldHVybiAwO1xuK3N0YXRpYyB2b2lkIHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSh2b2lkKVxuK3tcbitcdGlmIChvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgIT0gLTFVTClcbitcdFx0d3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lKTtcbiB9XG4gXG4gc3RhdGljIGludCBjcmVhdGVfaHVnZXRsYmZzX2ZpbGUoc3RydWN0IHN0YXRmcyAqZmlsZV9zdGF0KVxuQEAgLTE0NSwxMCArMTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKVxuIFx0aHVnZXBhZ2VzaXplX2tiID0gZmlsZV9zdGF0LmZfYnNpemUgLyAxMDI0O1xuIFx0a3NmdF9wcmludF9tc2coXCJIdWdlcGFnZXNpemUgaXMgJWxka0JcXG5cIiwgaHVnZXBhZ2VzaXplX2tiKTtcbiBcbi1cdGlmIChzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShlbmFibGVfc29mdF9vZmZsaW5lKSAhPSAwKSB7XG4tXHRcdGNsb3NlKGZkKTtcbi1cdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiRmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxuXCIpO1xuLVx0fVxuK1x0d3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4gXG4gXHRucl9odWdlcGFnZXNfYmVmb3JlID0gaHVnZXRsYl9ucl9kZWZhdWx0X3BhZ2VzKCk7XG4gXG5AQCAtMTkyLDYgKzE3OCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcbiBcdGtzZnRfc2V0X3BsYW4oMik7XG4gXG4rXHRvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpO1xuK1x0YXRleGl0KHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4rXG4gXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7XG4gXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMCk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbmluZGV4IDEzMWQ5ZDZkYjg2NzkuLjI4ZjE1MWRhYWJlNDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXG5AQCAtMTExLDE4ICsxMTEsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfbW1hcF9taW5fYWRkcih2b2lkKVxuIFx0XHRyZXR1cm4gYWRkcjtcbiBcbiBcdGZwID0gZm9wZW4oXCIvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkclwiLCBcInJcIik7XG4tXHRpZiAoZnAgPT0gTlVMTCkge1xuLVx0XHRrc2Z0X3ByaW50X21zZyhcIkZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4tXHRcdGV4aXQoS1NGVF9TS0lQKTtcbi1cdH1cbitcdGlmICghZnApXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiRmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCIsXG4rXHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4gXG4gXHRuX21hdGNoZWQgPSBmc2NhbmYoZnAsIFwiJWxsdVwiLCBcdTAwMjZhZGRyKTtcbiBcdGlmIChuX21hdGNoZWQgIT0gMSkge1xuLVx0XHRrc2Z0X3ByaW50X21zZyhcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4rXHRcdGludCBlcnIgPSBlcnJubztcbitcbiBcdFx0ZmNsb3NlKGZwKTtcbi1cdFx0ZXhpdChLU0ZUX1NLSVApO1xuK1x0XHRrc2Z0X2V4aXRfc2tpcChcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuK1x0XHRcdCAgICAgICBzdHJlcnJvcihlcnIpKTtcbiBcdH1cbiBcbiBcdGZjbG9zZShmcCk7XG5AQCAtMTE2NCwxMCArMTE2MywxMSBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsXG4gXHRcdFx0XHRcdCAgICByYW5kX2FkZHIpO1xuIFxuIFx0aWYgKHJlbWFwX3RpbWUgXHUwMDNjIDApIHtcbi1cdFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSlcbi1cdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFwiJXNcXG5cXHRFeHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxcblwiLFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4tXHRcdGVsc2Uge1xuK1x0XHRpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKSB7XG4rXHRcdFx0a3NmdF9wcmludF9tc2coXCIlczogZXhwZWN0ZWQgbXJlbWFwIGZhaWx1cmVcXG5cIixcbitcdFx0XHRcdCAgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4rXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcIiVzXFxuXCIsIHRlc3RfY2FzZS5uYW1lKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCIlc1xcblwiLCB0ZXN0X2Nhc2UubmFtZSk7XG4gXHRcdFx0KmZhaWx1cmVzICs9IDE7XG4gXHRcdH1cbkBAIC0xMTc3LDExICsxMTc3LDEzIEBAIHN0YXRpYyB2b2lkIHJ1bl9tcmVtYXBfdGVzdF9jYXNlKHN0cnVjdCB0ZXN0IHRlc3RfY2FzZSwgaW50ICpmYWlsdXJlcyxcbiBcdFx0ICogd2FzIGZhdWx0ZWQgaW4uXG4gXHRcdCAqL1xuIFx0XHRpZiAodGhyZXNob2xkX21iID09IFZBTElEQVRJT05fTk9fVEhSRVNIT0xEIHx8XG4tXHRcdCAgICB0ZXN0X2Nhc2UuY29uZmlnLnJlZ2lvbl9zaXplIFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQilcbi1cdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCIlc1xcblxcdG1yZW1hcCB0aW1lOiAlMTJsbGRuc1xcblwiLFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4tXHRcdGVsc2VcbitcdFx0ICAgIHRlc3RfY2FzZS5jb25maWcucmVnaW9uX3NpemUgXHUwMDNjPSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7XG4rXHRcdFx0a3NmdF9wcmludF9tc2coXCIlczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCIsXG4rXHRcdFx0XHQgICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpO1xuIFx0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcIiVzXFxuXCIsIHRlc3RfY2FzZS5uYW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCIlc1xcblwiLCB0ZXN0X2Nhc2UubmFtZSk7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTI1MCwxMyArMTI1MiwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHR0aW1lX3QgdDtcbiBcdEZJTEUgKm1hcHNfZnA7XG4gXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1xuIFx0cGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZShcdTAwMjZ0KTtcbiBcbiBcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFx1MDAyNnRocmVzaG9sZF9tYiwgXHUwMDI2cGF0dGVybl9zZWVkKSBcdTAwM2MgMClcbiBcdFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCJUZXN0IGNvbmZpZ3M6XFxuXFx0dGhyZXNob2xkX21iPSV1XFxuXFx0cGF0dGVybl9zZWVkPSV1XFxuXFxuXCIsXG4tXHRcdCAgICAgICB0aHJlc2hvbGRfbWIsIHBhdHRlcm5fc2VlZCk7XG4rXHRrc2Z0X3ByaW50X21zZyhcIlRlc3QgY29uZmlnczpcXG5cIik7XG4rXHRrc2Z0X3ByaW50X21zZyhcInRocmVzaG9sZF9tYj0ldVxcblwiLCB0aHJlc2hvbGRfbWIpO1xuK1x0a3NmdF9wcmludF9tc2coXCJwYXR0ZXJuX3NlZWQ9JXVcXG5cIiwgcGF0dGVybl9zZWVkKTtcbiBcbiBcdC8qXG4gXHQgKiBzZXQgcHJlYWxsb2NhdGVkIHJhbmRvbSBhcnJheSBhY2NvcmRpbmcgdG8gdGVzdCBjb25maWdzOyBzZWUgdGhlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbmluZGV4IGM5NzNkNjcyMjcyMGMuLjU3MmMyNTE2ZTg3NGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXG5AQCAtMzQ3LDYgKzM0Nyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdHN0cnVjdCB0aHBfc2V0dGluZ3Mgc2V0dGluZ3M7XG4gXHRpbnQgaSwgaiwgcGxhbiA9IDA7XG4gXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1xuIFx0aHVnZXBhZ2Vfc2F2ZV9zZXR0aW5ncyh0cnVlLCB0cnVlKTtcbiBcbiBcdGNoZWNrX3VmZmRfd3BfZmVhdHVyZV9zdXBwb3J0ZWQoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA4OjM4OjU4LjkwMzQwOTQ2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NzA5MzkwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCB0b3VjaGVzIHRocmVlIGZpbGVzIGluc2lkZSB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2AgZGlyZWN0b3J5OiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGBtcmVtYXBfdGVzdC5jYCwgYW5kIGB1ZmZkLXdwLW1yZW1hcC5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnNlbGZ0ZXN0cyouIE15IGV4cGVydCBpbnR1aXRpb24ga2lja3MgaW47IHNlbGZ0ZXN0cyBhcmUgdGhlcmUgdG8sIHdlbGwsIHRlc3QgdGhpbmdzLCBidXQgKnRoZXkqIGFyZW4ndCBrZXJuZWwgY29kZS4gVGhleSBsaXZlIGluIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGhlcmUgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCB0ZXN0aW5nIGZyYW1ld29yay4gVGhpcyBtZWFucywgaW1wb3J0YW50bHksIHRoYXQgdGhpcyBwYXRjaCAqZG9lc24ndCogYWN0dWFsbHkgYWx0ZXIgdGhlIGtlcm5lbCdzIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIHBhdGguIFNvLCBubyBuZWVkIHRvIHdhc3RlIHRpbWUgZnV6emluZyB0aGlzIG9uZS5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdGhvdWdoLiBJbiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBpbmNsdWRpbmcgYHZtX3V0aWwuaGAsIHN3YXBwaW5nIG91dCBgc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmVgIHdpdGggYHdyaXRlX251bWAgYW5kIGByZWFkX251bWAsIGFuZCBhZGRpbmcgYSBgcmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lYCB1c2luZyBgYXRleGl0YC4gRmluZSwgdGhhdCdzIGp1c3QgcmVzdHJ1Y3R1cmluZyB0aGF0IHRlc3QuIE1vdmluZyBvbiB0byBgbXJlbWFwX3Rlc3QuY2AsIEkgc2VlIHRoZXkncmUgcmVwbGFjaW5nIGBleGl0KEtTRlRfU0tJUClgIHdpdGggYGtzZnRfZXhpdF9za2lwYCwgdHdlYWtpbmcgc29tZSBvZiB0aG9zZSBga3NmdF90ZXN0X3Jlc3VsdGAgbWVzc2FnZXMsIGFuZCBhZGRpbmcgYGtzZnRfcHJpbnRfaGVhZGVyKClgLiBBZ2FpbiwgZW50aXJlbHkgd2l0aGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBGaW5hbGx5LCBgdWZmZC13cC1tcmVtYXAuY2AgYWxzbyBnZXRzIHRoZSBga3NmdF9wcmludF9oZWFkZXIoKWAuXG5cbll1cCwgaXQncyBhbGwgd2l0aGluIHVzZXItc3BhY2UgdGVzdCBjb2RlLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBhbnkgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBTbywgbm8sIHRoaXMgaXMgbm90IGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIGNhbiBzYWZlbHkgc2V0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHRvIGBmYWxzZWAuIFRpbWUgdG8gbW92ZSBvbiBhbmQgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDEsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwODozOTowNS40NzQzNTE1NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzk6MDUuNDc0Mzc0NzY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmhjcb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 08:18:12 +0000 UTC FinishedAt: 2026-08-15 08:39:06 +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+CgkJCTx0ZD4yMDI2LzA4LzE1IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDg6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMmE1Njc3YzllMjlmMjllMThiMGM1ZGU0NDI1MDg0ZTBhZTZkNzYwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDg6Mzg6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmNcbmluZGV4IGJjMjAyZTRlZDJiZGEuLjg2MjU5OTIxZDU0YzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2h1Z2VwYWdlX3NldHRpbmdzLmhcJiMzNDtcbiBcbiAjaWZuZGVmIE1BRFZfU09GVF9PRkZMSU5FXG5AQCAtMzEsNiAmIzQzOzMyLDggQEBcbiBcbiAjZGVmaW5lIEVQUkVGSVggXCYjMzQ7ICEhISBcJiMzNDtcbiBcbiYjNDM7I2RlZmluZSBFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEggXCYjMzQ7L3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcJiMzNDtcbiYjNDM7XG4gc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIHtcbiBcdGNoYXIgKmZpbGVtYXAgPSBOVUxMO1xuQEAgLTc3LDI2ICYjNDM7ODAsMTIgQEAgc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIGludCBzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShpbnQgdmFsdWUpXG4te1xuLVx0Y2hhciBjbWRbMjU2XSA9IHswfTtcbi1cdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xuLVxuLVx0aWYgKHZhbHVlICE9IDAgXHUwMDI2XHUwMDI2IHZhbHVlICE9IDEpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVxuLVx0c3ByaW50ZihjbWQsIFwmIzM0O2VjaG8gJWQgXHUwMDNlIC9wcm9jL3N5cy92bS9lbmFibGVfc29mdF9vZmZsaW5lXCYjMzQ7LCB2YWx1ZSk7XG4tXHRjbWRmaWxlID0gcG9wZW4oY21kLCBcJiMzNDtyXCYjMzQ7KTtcbi1cbi1cdGlmIChjbWRmaWxlKVxuLVx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtlbmFibGVfc29mdF9vZmZsaW5lID1cdTAwM2UgJWRcXG5cJiMzNDssIHZhbHVlKTtcbi1cdGVsc2Uge1xuLVx0XHRrc2Z0X3BlcnJvcihFUFJFRklYIFwmIzM0O2ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZVwmIzM0Oyk7XG4tXHRcdHJldHVybiBlcnJubztcbi1cdH1cbiYjNDM7c3RhdGljIHVuc2lnbmVkIGxvbmcgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gLTFVTDtcbiBcbi1cdHBjbG9zZShjbWRmaWxlKTtcbi1cdHJldHVybiAwO1xuJiM0MztzdGF0aWMgdm9pZCByZXN0b3JlX2VuYWJsZV9zb2Z0X29mZmxpbmUodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgIT0gLTFVTClcbiYjNDM7XHRcdHdyaXRlX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgsIG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgY3JlYXRlX2h1Z2V0bGJmc19maWxlKHN0cnVjdCBzdGF0ZnMgKmZpbGVfc3RhdClcbkBAIC0xNDUsMTAgJiM0MzsxMzQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oaW50IGVuYWJsZV9zb2Z0X29mZmxpbmUpXG4gXHRodWdlcGFnZXNpemVfa2IgPSBmaWxlX3N0YXQuZl9ic2l6ZSAvIDEwMjQ7XG4gXHRrc2Z0X3ByaW50X21zZyhcJiMzNDtIdWdlcGFnZXNpemUgaXMgJWxka0JcXG5cJiMzNDssIGh1Z2VwYWdlc2l6ZV9rYik7XG4gXG4tXHRpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkge1xuLVx0XHRjbG9zZShmZCk7XG4tXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtGYWlsZWQgdG8gc2V0IGVuYWJsZV9zb2Z0X29mZmxpbmVcXG5cJiMzNDspO1xuLVx0fVxuJiM0MztcdHdyaXRlX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgsIGVuYWJsZV9zb2Z0X29mZmxpbmUpO1xuIFxuIFx0bnJfaHVnZXBhZ2VzX2JlZm9yZSA9IGh1Z2V0bGJfbnJfZGVmYXVsdF9wYWdlcygpO1xuIFxuQEAgLTE5Miw2ICYjNDM7MTc4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFxuIFx0a3NmdF9zZXRfcGxhbigyKTtcbiBcbiYjNDM7XHRvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpO1xuJiM0MztcdGF0ZXhpdChyZXN0b3JlX2VuYWJsZV9zb2Z0X29mZmxpbmUpO1xuJiM0MztcbiBcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigxKTtcbiBcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigwKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuY1xuaW5kZXggMTMxZDlkNmRiODY3OS4uMjhmMTUxZGFhYmU0OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbkBAIC0xMTEsMTggJiM0MzsxMTEsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfbW1hcF9taW5fYWRkcih2b2lkKVxuIFx0XHRyZXR1cm4gYWRkcjtcbiBcbiBcdGZwID0gZm9wZW4oXCYjMzQ7L3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHJcJiMzNDssIFwmIzM0O3JcJiMzNDspO1xuLVx0aWYgKGZwID09IE5VTEwpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7RmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4tXHRcdGV4aXQoS1NGVF9TS0lQKTtcbi1cdH1cbiYjNDM7XHRpZiAoIWZwKVxuJiM0MztcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7RmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgc3RyZXJyb3IoZXJybm8pKTtcbiBcbiBcdG5fbWF0Y2hlZCA9IGZzY2FuZihmcCwgXCYjMzQ7JWxsdVwmIzM0OywgXHUwMDI2YWRkcik7XG4gXHRpZiAobl9tYXRjaGVkICE9IDEpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7RmFpbGVkIHRvIHJlYWQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCYjMzQ7LFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1x0XHRpbnQgZXJyID0gZXJybm87XG4mIzQzO1xuIFx0XHRmY2xvc2UoZnApO1xuLVx0XHRleGl0KEtTRlRfU0tJUCk7XG4mIzQzO1x0XHRrc2Z0X2V4aXRfc2tpcChcJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICAgICBzdHJlcnJvcihlcnIpKTtcbiBcdH1cbiBcbiBcdGZjbG9zZShmcCk7XG5AQCAtMTE2NCwxMCAmIzQzOzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxuIFx0XHRcdFx0XHQgICAgcmFuZF9hZGRyKTtcbiBcbiBcdGlmIChyZW1hcF90aW1lIFx1MDAzYyAwKSB7XG4tXHRcdGlmICh0ZXN0X2Nhc2UuZXhwZWN0X2ZhaWx1cmUpXG4tXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcJiMzNDslc1xcblxcdEV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4tXHRcdGVsc2Uge1xuJiM0MztcdFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSkge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslczogZXhwZWN0ZWQgbXJlbWFwIGZhaWx1cmVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgICAgIHRlc3RfY2FzZS5uYW1lKTtcbiYjNDM7XHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcJiMzNDslc1xcblwmIzM0OywgdGVzdF9jYXNlLm5hbWUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiBcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCYjMzQ7JXNcXG5cJiMzNDssIHRlc3RfY2FzZS5uYW1lKTtcbiBcdFx0XHQqZmFpbHVyZXMgJiM0Mzs9IDE7XG4gXHRcdH1cbkBAIC0xMTc3LDExICYjNDM7MTE3NywxMyBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsXG4gXHRcdCAqIHdhcyBmYXVsdGVkIGluLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFUSU9OX05PX1RIUkVTSE9MRCB8fFxuLVx0XHQgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSBcdTAwM2M9IHRocmVzaG9sZF9tYiAqIF8xTUIpXG4tXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0OyVzXFxuXFx0bXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCYjMzQ7LFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4tXHRcdGVsc2VcbiYjNDM7XHRcdCAgICB0ZXN0X2Nhc2UuY29uZmlnLnJlZ2lvbl9zaXplIFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQikge1xuJiM0MztcdFx0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4gXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFwmIzM0OyVzXFxuXCYjMzQ7LCB0ZXN0X2Nhc2UubmFtZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7JXNcXG5cJiMzNDssIHRlc3RfY2FzZS5uYW1lKTtcbiYjNDM7XHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTI1MCwxMyAmIzQzOzEyNTIsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0dGltZV90IHQ7XG4gXHRGSUxFICptYXBzX2ZwO1xuIFxuJiM0MztcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XG4mIzQzO1xuIFx0cGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZShcdTAwMjZ0KTtcbiBcbiBcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFx1MDAyNnRocmVzaG9sZF9tYiwgXHUwMDI2cGF0dGVybl9zZWVkKSBcdTAwM2MgMClcbiBcdFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCYjMzQ7VGVzdCBjb25maWdzOlxcblxcdHRocmVzaG9sZF9tYj0ldVxcblxcdHBhdHRlcm5fc2VlZD0ldVxcblxcblwmIzM0Oyxcbi1cdFx0ICAgICAgIHRocmVzaG9sZF9tYiwgcGF0dGVybl9zZWVkKTtcbiYjNDM7XHRrc2Z0X3ByaW50X21zZyhcJiMzNDtUZXN0IGNvbmZpZ3M6XFxuXCYjMzQ7KTtcbiYjNDM7XHRrc2Z0X3ByaW50X21zZyhcJiMzNDt0aHJlc2hvbGRfbWI9JXVcXG5cJiMzNDssIHRocmVzaG9sZF9tYik7XG4mIzQzO1x0a3NmdF9wcmludF9tc2coXCYjMzQ7cGF0dGVybl9zZWVkPSV1XFxuXCYjMzQ7LCBwYXR0ZXJuX3NlZWQpO1xuIFxuIFx0LypcbiBcdCAqIHNldCBwcmVhbGxvY2F0ZWQgcmFuZG9tIGFycmF5IGFjY29yZGluZyB0byB0ZXN0IGNvbmZpZ3M7IHNlZSB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuY1xuaW5kZXggYzk3M2Q2NzIyNzIwYy4uNTcyYzI1MTZlODc0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbkBAIC0zNDcsNiAmIzQzOzM0Nyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdHN0cnVjdCB0aHBfc2V0dGluZ3Mgc2V0dGluZ3M7XG4gXHRpbnQgaSwgaiwgcGxhbiA9IDA7XG4gXG4mIzQzO1x0a3NmdF9wcmludF9oZWFkZXIoKTtcbiYjNDM7XG4gXHRodWdlcGFnZV9zYXZlX3NldHRpbmdzKHRydWUsIHRydWUpO1xuIFxuIFx0Y2hlY2tfdWZmZF93cF9mZWF0dXJlX3N1cHBvcnRlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA4OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIyYTU2NzdjOWUyOWYyOWUxOGIwYzVkZTQ0MjUwODRlMGFlNmQ3NjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwODozODo1NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jCmluZGV4IGJjMjAyZTRlZDJiZGEuLjg2MjU5OTIxZDU0YzAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuYwpAQCAtMjMsNiAmIzQzOzIzLDcgQEAKICNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtrc2VsZnRlc3QuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtodWdlcGFnZV9zZXR0aW5ncy5oJiMzNDsKIAogI2lmbmRlZiBNQURWX1NPRlRfT0ZGTElORQpAQCAtMzEsNiAmIzQzOzMyLDggQEAKIAogI2RlZmluZSBFUFJFRklYICYjMzQ7ICEhISAmIzM0OwogCiYjNDM7I2RlZmluZSBFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEggJiMzNDsvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7CiYjNDM7CiBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pCiB7CiAJY2hhciAqZmlsZW1hcCA9IE5VTEw7CkBAIC03NywyNiAmIzQzOzgwLDEyIEBAIHN0YXRpYyBpbnQgZG9fc29mdF9vZmZsaW5lKGludCBmZCwgc2l6ZV90IGxlbiwgaW50IGV4cGVjdF9lcnJubykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNldF9lbmFibGVfc29mdF9vZmZsaW5lKGludCB2YWx1ZSkKLXsKLQljaGFyIGNtZFsyNTZdID0gezB9OwotCUZJTEUgKmNtZGZpbGUgPSBOVUxMOwotCi0JaWYgKHZhbHVlICE9IDAgJmFtcDsmYW1wOyB2YWx1ZSAhPSAxKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXNwcmludGYoY21kLCAmIzM0O2VjaG8gJWQgJmd0OyAvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7LCB2YWx1ZSk7Ci0JY21kZmlsZSA9IHBvcGVuKGNtZCwgJiMzNDtyJiMzNDspOwotCi0JaWYgKGNtZGZpbGUpCi0JCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ZW5hYmxlX3NvZnRfb2ZmbGluZSA9Jmd0OyAlZFxuJiMzNDssIHZhbHVlKTsKLQllbHNlIHsKLQkJa3NmdF9wZXJyb3IoRVBSRUZJWCAmIzM0O2ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZSYjMzQ7KTsKLQkJcmV0dXJuIGVycm5vOwotCX0KJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSAtMVVMOwogCi0JcGNsb3NlKGNtZGZpbGUpOwotCXJldHVybiAwOwomIzQzO3N0YXRpYyB2b2lkIHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSAhPSAtMVVMKQomIzQzOwkJd3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lKTsKIH0KIAogc3RhdGljIGludCBjcmVhdGVfaHVnZXRsYmZzX2ZpbGUoc3RydWN0IHN0YXRmcyAqZmlsZV9zdGF0KQpAQCAtMTQ1LDEwICYjNDM7MTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKQogCWh1Z2VwYWdlc2l6ZV9rYiA9IGZpbGVfc3RhdC5mX2JzaXplIC8gMTAyNDsKIAlrc2Z0X3ByaW50X21zZygmIzM0O0h1Z2VwYWdlc2l6ZSBpcyAlbGRrQlxuJiMzNDssIGh1Z2VwYWdlc2l6ZV9rYik7CiAKLQlpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkgewotCQljbG9zZShmZCk7Ci0JCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O0ZhaWxlZCB0byBzZXQgZW5hYmxlX3NvZnRfb2ZmbGluZVxuJiMzNDspOwotCX0KJiM0MzsJd3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgZW5hYmxlX3NvZnRfb2ZmbGluZSk7CiAKIAlucl9odWdlcGFnZXNfYmVmb3JlID0gaHVnZXRsYl9ucl9kZWZhdWx0X3BhZ2VzKCk7CiAKQEAgLTE5Miw2ICYjNDM7MTc4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJa3NmdF9zZXRfcGxhbigyKTsKIAomIzQzOwlvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpOwomIzQzOwlhdGV4aXQocmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lKTsKJiM0MzsKIAl0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7CiAJdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKDApOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuYwppbmRleCAxMzFkOWQ2ZGI4Njc5Li4yOGYxNTFkYWFiZTQ4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmMKQEAgLTExMSwxOCAmIzQzOzExMSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9tbWFwX21pbl9hZGRyKHZvaWQpCiAJCXJldHVybiBhZGRyOwogCiAJZnAgPSBmb3BlbigmIzM0Oy9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyJiMzNDssICYjMzQ7ciYjMzQ7KTsKLQlpZiAoZnAgPT0gTlVMTCkgewotCQlrc2Z0X3ByaW50X21zZygmIzM0O0ZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xuJiMzNDssCi0JCQlzdHJlcnJvcihlcnJubykpOwotCQlleGl0KEtTRlRfU0tJUCk7Ci0JfQomIzQzOwlpZiAoIWZwKQomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtGYWlsZWQgdG8gb3BlbiAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAomIzQzOwkJCSAgICAgICBzdHJlcnJvcihlcnJubykpOwogCiAJbl9tYXRjaGVkID0gZnNjYW5mKGZwLCAmIzM0OyVsbHUmIzM0OywgJmFtcDthZGRyKTsKIAlpZiAobl9tYXRjaGVkICE9IDEpIHsKLQkJa3NmdF9wcmludF9tc2coJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAotCQkJc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJCWludCBlcnIgPSBlcnJubzsKJiM0MzsKIAkJZmNsb3NlKGZwKTsKLQkJZXhpdChLU0ZUX1NLSVApOwomIzQzOwkJa3NmdF9leGl0X3NraXAoJiMzNDtGYWlsZWQgdG8gcmVhZCAvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkcjogJXNcbiYjMzQ7LAomIzQzOwkJCSAgICAgICBzdHJlcnJvcihlcnIpKTsKIAl9CiAKIAlmY2xvc2UoZnApOwpAQCAtMTE2NCwxMCAmIzQzOzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLAogCQkJCQkgICAgcmFuZF9hZGRyKTsKIAogCWlmIChyZW1hcF90aW1lICZsdDsgMCkgewotCQlpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKQotCQkJa3NmdF90ZXN0X3Jlc3VsdF94ZmFpbCgmIzM0OyVzXG5cdEV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXG4mIzM0OywKLQkJCQkJICAgICAgdGVzdF9jYXNlLm5hbWUpOwotCQllbHNlIHsKJiM0MzsJCWlmICh0ZXN0X2Nhc2UuZXhwZWN0X2ZhaWx1cmUpIHsKJiM0MzsJCQlrc2Z0X3ByaW50X21zZygmIzM0OyVzOiBleHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxuJiMzNDssCiYjNDM7CQkJCSAgICAgICB0ZXN0X2Nhc2UubmFtZSk7CiYjNDM7CQkJa3NmdF90ZXN0X3Jlc3VsdF94ZmFpbCgmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwomIzQzOwkJfSBlbHNlIHsKIAkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwogCQkJKmZhaWx1cmVzICYjNDM7PSAxOwogCQl9CkBAIC0xMTc3LDExICYjNDM7MTE3NywxMyBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsCiAJCSAqIHdhcyBmYXVsdGVkIGluLgogCQkgKi8KIAkJaWYgKHRocmVzaG9sZF9tYiA9PSBWQUxJREFUSU9OX05PX1RIUkVTSE9MRCB8fAotCQkgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSAmbHQ7PSB0aHJlc2hvbGRfbWIgKiBfMU1CKQotCQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCYjMzQ7JXNcblx0bXJlbWFwIHRpbWU6ICUxMmxsZG5zXG4mIzM0OywKLQkJCQkJICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpOwotCQllbHNlCiYjNDM7CQkgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSAmbHQ7PSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7CiYjNDM7CQkJa3NmdF9wcmludF9tc2coJiMzNDslczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXG4mIzM0OywKJiM0MzsJCQkJICAgICAgIHRlc3RfY2FzZS5uYW1lLCByZW1hcF90aW1lKTsKIAkJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0OyVzXG4mIzM0OywgdGVzdF9jYXNlLm5hbWUpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoJiMzNDslc1xuJiMzNDssIHRlc3RfY2FzZS5uYW1lKTsKJiM0MzsJCX0KIAl9CiB9CiAKQEAgLTEyNTAsMTMgJiM0MzsxMjUyLDE2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl0aW1lX3QgdDsKIAlGSUxFICptYXBzX2ZwOwogCiYjNDM7CWtzZnRfcHJpbnRfaGVhZGVyKCk7CiYjNDM7CiAJcGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZSgmYW1wO3QpOwogCiAJaWYgKHBhcnNlX2FyZ3MoYXJnYywgYXJndiwgJmFtcDt0aHJlc2hvbGRfbWIsICZhbXA7cGF0dGVybl9zZWVkKSAmbHQ7IDApCiAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIAotCWtzZnRfcHJpbnRfbXNnKCYjMzQ7VGVzdCBjb25maWdzOlxuXHR0aHJlc2hvbGRfbWI9JXVcblx0cGF0dGVybl9zZWVkPSV1XG5cbiYjMzQ7LAotCQkgICAgICAgdGhyZXNob2xkX21iLCBwYXR0ZXJuX3NlZWQpOwomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O1Rlc3QgY29uZmlnczpcbiYjMzQ7KTsKJiM0MzsJa3NmdF9wcmludF9tc2coJiMzNDt0aHJlc2hvbGRfbWI9JXVcbiYjMzQ7LCB0aHJlc2hvbGRfbWIpOwomIzQzOwlrc2Z0X3ByaW50X21zZygmIzM0O3BhdHRlcm5fc2VlZD0ldVxuJiMzNDssIHBhdHRlcm5fc2VlZCk7CiAKIAkvKgogCSAqIHNldCBwcmVhbGxvY2F0ZWQgcmFuZG9tIGFycmF5IGFjY29yZGluZyB0byB0ZXN0IGNvbmZpZ3M7IHNlZSB0aGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jCmluZGV4IGM5NzNkNjcyMjcyMGMuLjU3MmMyNTE2ZTg3NGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuYwpAQCAtMzQ3LDYgJiM0MzszNDcsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJc3RydWN0IHRocF9zZXR0aW5ncyBzZXR0aW5nczsKIAlpbnQgaSwgaiwgcGxhbiA9IDA7CiAKJiM0MzsJa3NmdF9wcmludF9oZWFkZXIoKTsKJiM0MzsKIAlodWdlcGFnZV9zYXZlX3NldHRpbmdzKHRydWUsIHRydWUpOwogCiAJY2hlY2tfdWZmZF93cF9mZWF0dXJlX3N1cHBvcnRlZCgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTAxCgkJCQkJCQlvdXRwdXQ6IDYzCgkJCQkJCQl0aG91Z2h0czogMzI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyB0aHJlZSBmaWxlcyBpbnNpZGUgdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gIGRpcmVjdG9yeTogYGh1Z2V0bGItc29mdC1vZmZsaW5lLmNgLCBgbXJlbWFwX3Rlc3QuY2AsIGFuZCBgdWZmZC13cC1tcmVtYXAuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhlc2UgYXJlICpzZWxmdGVzdHMqLiBNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluOyBzZWxmdGVzdHMgYXJlIHRoZXJlIHRvLCB3ZWxsLCB0ZXN0IHRoaW5ncywgYnV0ICp0aGV5KiBhcmVuJiMzOTt0IGtlcm5lbCBjb2RlLiBUaGV5IGxpdmUgaW4gdXNlciBzcGFjZS4gVGhlIGNoYW5nZXMgaGVyZSBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGF0IHRlc3RpbmcgZnJhbWV3b3JrLiBUaGlzIG1lYW5zLCBpbXBvcnRhbnRseSwgdGhhdCB0aGlzIHBhdGNoICpkb2VzbiYjMzk7dCogYWN0dWFsbHkgYWx0ZXIgdGhlIGtlcm5lbCYjMzk7cyBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBwYXRoLiBTbywgbm8gbmVlZCB0byB3YXN0ZSB0aW1lIGZ1enppbmcgdGhpcyBvbmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdGhvdWdoLiBJbiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgaW5jbHVkaW5nIGB2bV91dGlsLmhgLCBzd2FwcGluZyBvdXQgYHNldF9lbmFibGVfc29mdF9vZmZsaW5lYCB3aXRoIGB3cml0ZV9udW1gIGFuZCBgcmVhZF9udW1gLCBhbmQgYWRkaW5nIGEgYHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZWAgdXNpbmcgYGF0ZXhpdGAuIEZpbmUsIHRoYXQmIzM5O3MganVzdCByZXN0cnVjdHVyaW5nIHRoYXQgdGVzdC4gTW92aW5nIG9uIHRvIGBtcmVtYXBfdGVzdC5jYCwgSSBzZWUgdGhleSYjMzk7cmUgcmVwbGFjaW5nIGBleGl0KEtTRlRfU0tJUClgIHdpdGggYGtzZnRfZXhpdF9za2lwYCwgdHdlYWtpbmcgc29tZSBvZiB0aG9zZSBga3NmdF90ZXN0X3Jlc3VsdGAgbWVzc2FnZXMsIGFuZCBhZGRpbmcgYGtzZnRfcHJpbnRfaGVhZGVyKClgLiBBZ2FpbiwgZW50aXJlbHkgd2l0aGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBGaW5hbGx5LCBgdWZmZC13cC1tcmVtYXAuY2AgYWxzbyBnZXRzIHRoZSBga3NmdF9wcmludF9oZWFkZXIoKWAuCgpZdXAsIGl0JiMzOTtzIGFsbCB3aXRoaW4gdXNlci1zcGFjZSB0ZXN0IGNvZGUuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGFueSBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuIFNvLCBubywgdGhpcyBpcyBub3QgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgY2FuIHNhZmVseSBzZXQgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gVGltZSB0byBtb3ZlIG9uIGFuZCBjYWxsIHRoZSBzZXQtcmVzdWx0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwODozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzg6NTguNDU3NzIyNThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDE2NjYyNDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA4OjM4OjU4LjQ1Nzc0NTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3NzY0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMmE1Njc3YzllMjlmMjllMThiMGM1ZGU0NDI1MDg0ZTBhZTZkNzYwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDA4OjM4OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXFxuaW5kZXggYmMyMDJlNGVkMmJkYS4uODYyNTk5MjFkNTRjMCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xcbkBAIC0yMyw2ICsyMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvdHlwZXMuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJrc2VsZnRlc3QuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInZtX3V0aWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImh1Z2VwYWdlX3NldHRpbmdzLmhcXFwiXFxuIFxcbiAjaWZuZGVmIE1BRFZfU09GVF9PRkZMSU5FXFxuQEAgLTMxLDYgKzMyLDggQEBcXG4gXFxuICNkZWZpbmUgRVBSRUZJWCBcXFwiICEhISBcXFwiXFxuIFxcbisjZGVmaW5lIEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCBcXFwiL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcXFwiXFxuK1xcbiBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pXFxuIHtcXG4gXFx0Y2hhciAqZmlsZW1hcCA9IE5VTEw7XFxuQEAgLTc3LDI2ICs4MCwxMiBAQCBzdGF0aWMgaW50IGRvX3NvZnRfb2ZmbGluZShpbnQgZmQsIHNpemVfdCBsZW4sIGludCBleHBlY3RfZXJybm8pXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoaW50IHZhbHVlKVxcbi17XFxuLVxcdGNoYXIgY21kWzI1Nl0gPSB7MH07XFxuLVxcdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xcbi1cXG4tXFx0aWYgKHZhbHVlICE9IDAgXFx1MDAyNlxcdTAwMjYgdmFsdWUgIT0gMSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcbi1cXHRzcHJpbnRmKGNtZCwgXFxcImVjaG8gJWQgXFx1MDAzZSAvcHJvYy9zeXMvdm0vZW5hYmxlX3NvZnRfb2ZmbGluZVxcXCIsIHZhbHVlKTtcXG4tXFx0Y21kZmlsZSA9IHBvcGVuKGNtZCwgXFxcInJcXFwiKTtcXG4tXFxuLVxcdGlmIChjbWRmaWxlKVxcbi1cXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiZW5hYmxlX3NvZnRfb2ZmbGluZSA9XFx1MDAzZSAlZFxcXFxuXFxcIiwgdmFsdWUpO1xcbi1cXHRlbHNlIHtcXG4tXFx0XFx0a3NmdF9wZXJyb3IoRVBSRUZJWCBcXFwiZmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxcIik7XFxuLVxcdFxcdHJldHVybiBlcnJubztcXG4tXFx0fVxcbitzdGF0aWMgdW5zaWduZWQgbG9uZyBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSAtMVVMO1xcbiBcXG4tXFx0cGNsb3NlKGNtZGZpbGUpO1xcbi1cXHRyZXR1cm4gMDtcXG4rc3RhdGljIHZvaWQgcmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lKHZvaWQpXFxuK3tcXG4rXFx0aWYgKG9yaWdfZW5hYmxlX3NvZnRfb2ZmbGluZSAhPSAtMVVMKVxcbitcXHRcXHR3cml0ZV9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRILCBvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGNyZWF0ZV9odWdldGxiZnNfZmlsZShzdHJ1Y3Qgc3RhdGZzICpmaWxlX3N0YXQpXFxuQEAgLTE0NSwxMCArMTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKVxcbiBcXHRodWdlcGFnZXNpemVfa2IgPSBmaWxlX3N0YXQuZl9ic2l6ZSAvIDEwMjQ7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJIdWdlcGFnZXNpemUgaXMgJWxka0JcXFxcblxcXCIsIGh1Z2VwYWdlc2l6ZV9rYik7XFxuIFxcbi1cXHRpZiAoc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmUoZW5hYmxlX3NvZnRfb2ZmbGluZSkgIT0gMCkge1xcbi1cXHRcXHRjbG9zZShmZCk7XFxuLVxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiRmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxcXG5cXFwiKTtcXG4tXFx0fVxcbitcXHR3cml0ZV9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRILCBlbmFibGVfc29mdF9vZmZsaW5lKTtcXG4gXFxuIFxcdG5yX2h1Z2VwYWdlc19iZWZvcmUgPSBodWdldGxiX25yX2RlZmF1bHRfcGFnZXMoKTtcXG4gXFxuQEAgLTE5Miw2ICsxNzgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcbiBcXHRrc2Z0X3NldF9wbGFuKDIpO1xcbiBcXG4rXFx0b3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gcmVhZF9udW0oRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRIKTtcXG4rXFx0YXRleGl0KHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XFxuK1xcbiBcXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7XFxuIFxcdHRlc3Rfc29mdF9vZmZsaW5lX2NvbW1vbigwKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXFxuaW5kZXggMTMxZDlkNmRiODY3OS4uMjhmMTUxZGFhYmU0OCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuY1xcbkBAIC0xMTEsMTggKzExMSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGdldF9tbWFwX21pbl9hZGRyKHZvaWQpXFxuIFxcdFxcdHJldHVybiBhZGRyO1xcbiBcXG4gXFx0ZnAgPSBmb3BlbihcXFwiL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHJcXFwiLCBcXFwiclxcXCIpO1xcbi1cXHRpZiAoZnAgPT0gTlVMTCkge1xcbi1cXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiRmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRzdHJlcnJvcihlcnJubykpO1xcbi1cXHRcXHRleGl0KEtTRlRfU0tJUCk7XFxuLVxcdH1cXG4rXFx0aWYgKCFmcClcXG4rXFx0XFx0a3NmdF9leGl0X3NraXAoXFxcIkZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XFxuIFxcbiBcXHRuX21hdGNoZWQgPSBmc2NhbmYoZnAsIFxcXCIlbGx1XFxcIiwgXFx1MDAyNmFkZHIpO1xcbiBcXHRpZiAobl9tYXRjaGVkICE9IDEpIHtcXG4tXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcXFxuXFxcIixcXG4tXFx0XFx0XFx0c3RyZXJyb3IoZXJybm8pKTtcXG4rXFx0XFx0aW50IGVyciA9IGVycm5vO1xcbitcXG4gXFx0XFx0ZmNsb3NlKGZwKTtcXG4tXFx0XFx0ZXhpdChLU0ZUX1NLSVApO1xcbitcXHRcXHRrc2Z0X2V4aXRfc2tpcChcXFwiRmFpbGVkIHRvIHJlYWQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgICAgc3RyZXJyb3IoZXJyKSk7XFxuIFxcdH1cXG4gXFxuIFxcdGZjbG9zZShmcCk7XFxuQEAgLTExNjQsMTAgKzExNjMsMTEgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgcmFuZF9hZGRyKTtcXG4gXFxuIFxcdGlmIChyZW1hcF90aW1lIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKVxcbi1cXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFxcXCIlc1xcXFxuXFxcXHRFeHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgdGVzdF9jYXNlLm5hbWUpO1xcbi1cXHRcXHRlbHNlIHtcXG4rXFx0XFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSkge1xcbitcXHRcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiJXM6IGV4cGVjdGVkIG1yZW1hcCBmYWlsdXJlXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgdGVzdF9jYXNlLm5hbWUpO1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFxcXCIlc1xcXFxuXFxcIiwgdGVzdF9jYXNlLm5hbWUpO1xcbitcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcIiVzXFxcXG5cXFwiLCB0ZXN0X2Nhc2UubmFtZSk7XFxuIFxcdFxcdFxcdCpmYWlsdXJlcyArPSAxO1xcbiBcXHRcXHR9XFxuQEAgLTExNzcsMTEgKzExNzcsMTMgQEAgc3RhdGljIHZvaWQgcnVuX21yZW1hcF90ZXN0X2Nhc2Uoc3RydWN0IHRlc3QgdGVzdF9jYXNlLCBpbnQgKmZhaWx1cmVzLFxcbiBcXHRcXHQgKiB3YXMgZmF1bHRlZCBpbi5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICh0aHJlc2hvbGRfbWIgPT0gVkFMSURBVElPTl9OT19USFJFU0hPTEQgfHxcXG4tXFx0XFx0ICAgIHRlc3RfY2FzZS5jb25maWcucmVnaW9uX3NpemUgXFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQilcXG4tXFx0XFx0XFx0a3NmdF90ZXN0X3Jlc3VsdF9wYXNzKFxcXCIlc1xcXFxuXFxcXHRtcmVtYXAgdGltZTogJTEybGxkbnNcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHRlc3RfY2FzZS5uYW1lLCByZW1hcF90aW1lKTtcXG4tXFx0XFx0ZWxzZVxcbitcXHRcXHQgICAgdGVzdF9jYXNlLmNvbmZpZy5yZWdpb25fc2l6ZSBcXHUwMDNjPSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7XFxuK1xcdFxcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIlczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpO1xcbiBcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIiVzXFxcXG5cXFwiLCB0ZXN0X2Nhc2UubmFtZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwiJXNcXFxcblxcXCIsIHRlc3RfY2FzZS5uYW1lKTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTEyNTAsMTMgKzEyNTIsMTYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHR0aW1lX3QgdDtcXG4gXFx0RklMRSAqbWFwc19mcDtcXG4gXFxuK1xcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XFxuK1xcbiBcXHRwYXR0ZXJuX3NlZWQgPSAodW5zaWduZWQgaW50KSB0aW1lKFxcdTAwMjZ0KTtcXG4gXFxuIFxcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFxcdTAwMjZ0aHJlc2hvbGRfbWIsIFxcdTAwMjZwYXR0ZXJuX3NlZWQpIFxcdTAwM2MgMClcXG4gXFx0XFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xcbiBcXG4tXFx0a3NmdF9wcmludF9tc2coXFxcIlRlc3QgY29uZmlnczpcXFxcblxcXFx0dGhyZXNob2xkX21iPSV1XFxcXG5cXFxcdHBhdHRlcm5fc2VlZD0ldVxcXFxuXFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgdGhyZXNob2xkX21iLCBwYXR0ZXJuX3NlZWQpO1xcbitcXHRrc2Z0X3ByaW50X21zZyhcXFwiVGVzdCBjb25maWdzOlxcXFxuXFxcIik7XFxuK1xcdGtzZnRfcHJpbnRfbXNnKFxcXCJ0aHJlc2hvbGRfbWI9JXVcXFxcblxcXCIsIHRocmVzaG9sZF9tYik7XFxuK1xcdGtzZnRfcHJpbnRfbXNnKFxcXCJwYXR0ZXJuX3NlZWQ9JXVcXFxcblxcXCIsIHBhdHRlcm5fc2VlZCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBzZXQgcHJlYWxsb2NhdGVkIHJhbmRvbSBhcnJheSBhY2NvcmRpbmcgdG8gdGVzdCBjb25maWdzOyBzZWUgdGhlXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXFxuaW5kZXggYzk3M2Q2NzIyNzIwYy4uNTcyYzI1MTZlODc0ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuY1xcbkBAIC0zNDcsNiArMzQ3LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHRzdHJ1Y3QgdGhwX3NldHRpbmdzIHNldHRpbmdzO1xcbiBcXHRpbnQgaSwgaiwgcGxhbiA9IDA7XFxuIFxcbitcXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xcbitcXG4gXFx0aHVnZXBhZ2Vfc2F2ZV9zZXR0aW5ncyh0cnVlLCB0cnVlKTtcXG4gXFxuIFxcdGNoZWNrX3VmZmRfd3BfZmVhdHVyZV9zdXBwb3J0ZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzg6NTguOTAzNDA4MDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjU3MDk2NDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2Ugc2VsZnRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIyYTU2NzdjOWUyOWYyOWUxOGIwYzVkZTQ0MjUwODRlMGFlNmQ3NjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxNSAwODozODo1NyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGItc29mdC1vZmZsaW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiLXNvZnQtb2ZmbGluZS5jXG5pbmRleCBiYzIwMmU0ZWQyYmRhLi44NjI1OTkyMWQ1NGMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY1xuQEAgLTIzLDYgKzIzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0LmhcIlxuKyNpbmNsdWRlIFwidm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcImh1Z2VwYWdlX3NldHRpbmdzLmhcIlxuIFxuICNpZm5kZWYgTUFEVl9TT0ZUX09GRkxJTkVcbkBAIC0zMSw2ICszMiw4IEBAXG4gXG4gI2RlZmluZSBFUFJFRklYIFwiICEhISBcIlxuIFxuKyNkZWZpbmUgRU5BQkxFX1NPRlRfT0ZGTElORV9QQVRIIFwiL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcIlxuK1xuIHN0YXRpYyBpbnQgZG9fc29mdF9vZmZsaW5lKGludCBmZCwgc2l6ZV90IGxlbiwgaW50IGV4cGVjdF9lcnJubylcbiB7XG4gXHRjaGFyICpmaWxlbWFwID0gTlVMTDtcbkBAIC03NywyNiArODAsMTIgQEAgc3RhdGljIGludCBkb19zb2Z0X29mZmxpbmUoaW50IGZkLCBzaXplX3QgbGVuLCBpbnQgZXhwZWN0X2Vycm5vKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4tc3RhdGljIGludCBzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShpbnQgdmFsdWUpXG4te1xuLVx0Y2hhciBjbWRbMjU2XSA9IHswfTtcbi1cdEZJTEUgKmNtZGZpbGUgPSBOVUxMO1xuLVxuLVx0aWYgKHZhbHVlICE9IDAgXHUwMDI2XHUwMDI2IHZhbHVlICE9IDEpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVxuLVx0c3ByaW50ZihjbWQsIFwiZWNobyAlZCBcdTAwM2UgL3Byb2Mvc3lzL3ZtL2VuYWJsZV9zb2Z0X29mZmxpbmVcIiwgdmFsdWUpO1xuLVx0Y21kZmlsZSA9IHBvcGVuKGNtZCwgXCJyXCIpO1xuLVxuLVx0aWYgKGNtZGZpbGUpXG4tXHRcdGtzZnRfcHJpbnRfbXNnKFwiZW5hYmxlX3NvZnRfb2ZmbGluZSA9XHUwMDNlICVkXFxuXCIsIHZhbHVlKTtcbi1cdGVsc2Uge1xuLVx0XHRrc2Z0X3BlcnJvcihFUFJFRklYIFwiZmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXCIpO1xuLVx0XHRyZXR1cm4gZXJybm87XG4tXHR9XG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lID0gLTFVTDtcbiBcbi1cdHBjbG9zZShjbWRmaWxlKTtcbi1cdHJldHVybiAwO1xuK3N0YXRpYyB2b2lkIHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSh2b2lkKVxuK3tcbitcdGlmIChvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgIT0gLTFVTClcbitcdFx0d3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgb3JpZ19lbmFibGVfc29mdF9vZmZsaW5lKTtcbiB9XG4gXG4gc3RhdGljIGludCBjcmVhdGVfaHVnZXRsYmZzX2ZpbGUoc3RydWN0IHN0YXRmcyAqZmlsZV9zdGF0KVxuQEAgLTE0NSwxMCArMTM0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2Z0X29mZmxpbmVfY29tbW9uKGludCBlbmFibGVfc29mdF9vZmZsaW5lKVxuIFx0aHVnZXBhZ2VzaXplX2tiID0gZmlsZV9zdGF0LmZfYnNpemUgLyAxMDI0O1xuIFx0a3NmdF9wcmludF9tc2coXCJIdWdlcGFnZXNpemUgaXMgJWxka0JcXG5cIiwgaHVnZXBhZ2VzaXplX2tiKTtcbiBcbi1cdGlmIChzZXRfZW5hYmxlX3NvZnRfb2ZmbGluZShlbmFibGVfc29mdF9vZmZsaW5lKSAhPSAwKSB7XG4tXHRcdGNsb3NlKGZkKTtcbi1cdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiRmFpbGVkIHRvIHNldCBlbmFibGVfc29mdF9vZmZsaW5lXFxuXCIpO1xuLVx0fVxuK1x0d3JpdGVfbnVtKEVOQUJMRV9TT0ZUX09GRkxJTkVfUEFUSCwgZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4gXG4gXHRucl9odWdlcGFnZXNfYmVmb3JlID0gaHVnZXRsYl9ucl9kZWZhdWx0X3BhZ2VzKCk7XG4gXG5AQCAtMTkyLDYgKzE3OCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcbiBcdGtzZnRfc2V0X3BsYW4oMik7XG4gXG4rXHRvcmlnX2VuYWJsZV9zb2Z0X29mZmxpbmUgPSByZWFkX251bShFTkFCTEVfU09GVF9PRkZMSU5FX1BBVEgpO1xuK1x0YXRleGl0KHJlc3RvcmVfZW5hYmxlX3NvZnRfb2ZmbGluZSk7XG4rXG4gXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMSk7XG4gXHR0ZXN0X3NvZnRfb2ZmbGluZV9jb21tb24oMCk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vbXJlbWFwX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL21yZW1hcF90ZXN0LmNcbmluZGV4IDEzMWQ5ZDZkYjg2NzkuLjI4ZjE1MWRhYWJlNDggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9tcmVtYXBfdGVzdC5jXG5AQCAtMTExLDE4ICsxMTEsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfbW1hcF9taW5fYWRkcih2b2lkKVxuIFx0XHRyZXR1cm4gYWRkcjtcbiBcbiBcdGZwID0gZm9wZW4oXCIvcHJvYy9zeXMvdm0vbW1hcF9taW5fYWRkclwiLCBcInJcIik7XG4tXHRpZiAoZnAgPT0gTlVMTCkge1xuLVx0XHRrc2Z0X3ByaW50X21zZyhcIkZhaWxlZCB0byBvcGVuIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4tXHRcdGV4aXQoS1NGVF9TS0lQKTtcbi1cdH1cbitcdGlmICghZnApXG4rXHRcdGtzZnRfZXhpdF9za2lwKFwiRmFpbGVkIHRvIG9wZW4gL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHI6ICVzXFxuXCIsXG4rXHRcdFx0ICAgICAgIHN0cmVycm9yKGVycm5vKSk7XG4gXG4gXHRuX21hdGNoZWQgPSBmc2NhbmYoZnAsIFwiJWxsdVwiLCBcdTAwMjZhZGRyKTtcbiBcdGlmIChuX21hdGNoZWQgIT0gMSkge1xuLVx0XHRrc2Z0X3ByaW50X21zZyhcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuLVx0XHRcdHN0cmVycm9yKGVycm5vKSk7XG4rXHRcdGludCBlcnIgPSBlcnJubztcbitcbiBcdFx0ZmNsb3NlKGZwKTtcbi1cdFx0ZXhpdChLU0ZUX1NLSVApO1xuK1x0XHRrc2Z0X2V4aXRfc2tpcChcIkZhaWxlZCB0byByZWFkIC9wcm9jL3N5cy92bS9tbWFwX21pbl9hZGRyOiAlc1xcblwiLFxuK1x0XHRcdCAgICAgICBzdHJlcnJvcihlcnIpKTtcbiBcdH1cbiBcbiBcdGZjbG9zZShmcCk7XG5AQCAtMTE2NCwxMCArMTE2MywxMSBAQCBzdGF0aWMgdm9pZCBydW5fbXJlbWFwX3Rlc3RfY2FzZShzdHJ1Y3QgdGVzdCB0ZXN0X2Nhc2UsIGludCAqZmFpbHVyZXMsXG4gXHRcdFx0XHRcdCAgICByYW5kX2FkZHIpO1xuIFxuIFx0aWYgKHJlbWFwX3RpbWUgXHUwMDNjIDApIHtcbi1cdFx0aWYgKHRlc3RfY2FzZS5leHBlY3RfZmFpbHVyZSlcbi1cdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3hmYWlsKFwiJXNcXG5cXHRFeHBlY3RlZCBtcmVtYXAgZmFpbHVyZVxcblwiLFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4tXHRcdGVsc2Uge1xuK1x0XHRpZiAodGVzdF9jYXNlLmV4cGVjdF9mYWlsdXJlKSB7XG4rXHRcdFx0a3NmdF9wcmludF9tc2coXCIlczogZXhwZWN0ZWQgbXJlbWFwIGZhaWx1cmVcXG5cIixcbitcdFx0XHRcdCAgICAgICB0ZXN0X2Nhc2UubmFtZSk7XG4rXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF94ZmFpbChcIiVzXFxuXCIsIHRlc3RfY2FzZS5uYW1lKTtcbitcdFx0fSBlbHNlIHtcbiBcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCIlc1xcblwiLCB0ZXN0X2Nhc2UubmFtZSk7XG4gXHRcdFx0KmZhaWx1cmVzICs9IDE7XG4gXHRcdH1cbkBAIC0xMTc3LDExICsxMTc3LDEzIEBAIHN0YXRpYyB2b2lkIHJ1bl9tcmVtYXBfdGVzdF9jYXNlKHN0cnVjdCB0ZXN0IHRlc3RfY2FzZSwgaW50ICpmYWlsdXJlcyxcbiBcdFx0ICogd2FzIGZhdWx0ZWQgaW4uXG4gXHRcdCAqL1xuIFx0XHRpZiAodGhyZXNob2xkX21iID09IFZBTElEQVRJT05fTk9fVEhSRVNIT0xEIHx8XG4tXHRcdCAgICB0ZXN0X2Nhc2UuY29uZmlnLnJlZ2lvbl9zaXplIFx1MDAzYz0gdGhyZXNob2xkX21iICogXzFNQilcbi1cdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCIlc1xcblxcdG1yZW1hcCB0aW1lOiAlMTJsbGRuc1xcblwiLFxuLVx0XHRcdFx0XHQgICAgICB0ZXN0X2Nhc2UubmFtZSwgcmVtYXBfdGltZSk7XG4tXHRcdGVsc2VcbitcdFx0ICAgIHRlc3RfY2FzZS5jb25maWcucmVnaW9uX3NpemUgXHUwMDNjPSB0aHJlc2hvbGRfbWIgKiBfMU1CKSB7XG4rXHRcdFx0a3NmdF9wcmludF9tc2coXCIlczogbXJlbWFwIHRpbWU6ICUxMmxsZG5zXFxuXCIsXG4rXHRcdFx0XHQgICAgICAgdGVzdF9jYXNlLm5hbWUsIHJlbWFwX3RpbWUpO1xuIFx0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcIiVzXFxuXCIsIHRlc3RfY2FzZS5uYW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCIlc1xcblwiLCB0ZXN0X2Nhc2UubmFtZSk7XG4rXHRcdH1cbiBcdH1cbiB9XG4gXG5AQCAtMTI1MCwxMyArMTI1MiwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHR0aW1lX3QgdDtcbiBcdEZJTEUgKm1hcHNfZnA7XG4gXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1xuIFx0cGF0dGVybl9zZWVkID0gKHVuc2lnbmVkIGludCkgdGltZShcdTAwMjZ0KTtcbiBcbiBcdGlmIChwYXJzZV9hcmdzKGFyZ2MsIGFyZ3YsIFx1MDAyNnRocmVzaG9sZF9tYiwgXHUwMDI2cGF0dGVybl9zZWVkKSBcdTAwM2MgMClcbiBcdFx0ZXhpdChFWElUX0ZBSUxVUkUpO1xuIFxuLVx0a3NmdF9wcmludF9tc2coXCJUZXN0IGNvbmZpZ3M6XFxuXFx0dGhyZXNob2xkX21iPSV1XFxuXFx0cGF0dGVybl9zZWVkPSV1XFxuXFxuXCIsXG4tXHRcdCAgICAgICB0aHJlc2hvbGRfbWIsIHBhdHRlcm5fc2VlZCk7XG4rXHRrc2Z0X3ByaW50X21zZyhcIlRlc3QgY29uZmlnczpcXG5cIik7XG4rXHRrc2Z0X3ByaW50X21zZyhcInRocmVzaG9sZF9tYj0ldVxcblwiLCB0aHJlc2hvbGRfbWIpO1xuK1x0a3NmdF9wcmludF9tc2coXCJwYXR0ZXJuX3NlZWQ9JXVcXG5cIiwgcGF0dGVybl9zZWVkKTtcbiBcbiBcdC8qXG4gXHQgKiBzZXQgcHJlYWxsb2NhdGVkIHJhbmRvbSBhcnJheSBhY2NvcmRpbmcgdG8gdGVzdCBjb25maWdzOyBzZWUgdGhlXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC13cC1tcmVtYXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtd3AtbXJlbWFwLmNcbmluZGV4IGM5NzNkNjcyMjcyMGMuLjU3MmMyNTE2ZTg3NGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS91ZmZkLXdwLW1yZW1hcC5jXG5AQCAtMzQ3LDYgKzM0Nyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdHN0cnVjdCB0aHBfc2V0dGluZ3Mgc2V0dGluZ3M7XG4gXHRpbnQgaSwgaiwgcGxhbiA9IDA7XG4gXG4rXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuK1xuIFx0aHVnZXBhZ2Vfc2F2ZV9zZXR0aW5ncyh0cnVlLCB0cnVlKTtcbiBcbiBcdGNoZWNrX3VmZmRfd3BfZmVhdHVyZV9zdXBwb3J0ZWQoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA4OjM4OjU4LjkwMzQwOTQ2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NzA5MzkwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCB0b3VjaGVzIHRocmVlIGZpbGVzIGluc2lkZSB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2AgZGlyZWN0b3J5OiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGBtcmVtYXBfdGVzdC5jYCwgYW5kIGB1ZmZkLXdwLW1yZW1hcC5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGVzZSBhcmUgKnNlbGZ0ZXN0cyouIE15IGV4cGVydCBpbnR1aXRpb24ga2lja3MgaW47IHNlbGZ0ZXN0cyBhcmUgdGhlcmUgdG8sIHdlbGwsIHRlc3QgdGhpbmdzLCBidXQgKnRoZXkqIGFyZW4ndCBrZXJuZWwgY29kZS4gVGhleSBsaXZlIGluIHVzZXIgc3BhY2UuIFRoZSBjaGFuZ2VzIGhlcmUgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCB0ZXN0aW5nIGZyYW1ld29yay4gVGhpcyBtZWFucywgaW1wb3J0YW50bHksIHRoYXQgdGhpcyBwYXRjaCAqZG9lc24ndCogYWN0dWFsbHkgYWx0ZXIgdGhlIGtlcm5lbCdzIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIHBhdGguIFNvLCBubyBuZWVkIHRvIHdhc3RlIHRpbWUgZnV6emluZyB0aGlzIG9uZS5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdGhvdWdoLiBJbiBgaHVnZXRsYi1zb2Z0LW9mZmxpbmUuY2AsIGl0IGxvb2tzIGxpa2UgdGhleSdyZSBpbmNsdWRpbmcgYHZtX3V0aWwuaGAsIHN3YXBwaW5nIG91dCBgc2V0X2VuYWJsZV9zb2Z0X29mZmxpbmVgIHdpdGggYHdyaXRlX251bWAgYW5kIGByZWFkX251bWAsIGFuZCBhZGRpbmcgYSBgcmVzdG9yZV9lbmFibGVfc29mdF9vZmZsaW5lYCB1c2luZyBgYXRleGl0YC4gRmluZSwgdGhhdCdzIGp1c3QgcmVzdHJ1Y3R1cmluZyB0aGF0IHRlc3QuIE1vdmluZyBvbiB0byBgbXJlbWFwX3Rlc3QuY2AsIEkgc2VlIHRoZXkncmUgcmVwbGFjaW5nIGBleGl0KEtTRlRfU0tJUClgIHdpdGggYGtzZnRfZXhpdF9za2lwYCwgdHdlYWtpbmcgc29tZSBvZiB0aG9zZSBga3NmdF90ZXN0X3Jlc3VsdGAgbWVzc2FnZXMsIGFuZCBhZGRpbmcgYGtzZnRfcHJpbnRfaGVhZGVyKClgLiBBZ2FpbiwgZW50aXJlbHkgd2l0aGluIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLiBGaW5hbGx5LCBgdWZmZC13cC1tcmVtYXAuY2AgYWxzbyBnZXRzIHRoZSBga3NmdF9wcmludF9oZWFkZXIoKWAuXG5cbll1cCwgaXQncyBhbGwgd2l0aGluIHVzZXItc3BhY2UgdGVzdCBjb2RlLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBhbnkgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBTbywgbm8sIHRoaXMgaXMgbm90IGEgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIGNhbiBzYWZlbHkgc2V0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHRvIGBmYWxzZWAuIFRpbWUgdG8gbW92ZSBvbiBhbmQgY2FsbCB0aGUgc2V0LXJlc3VsdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMDEsIk91dHB1dFRva2VucyI6NjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwODozOTowNS40NzQzNTE1NTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHNlbGZ0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBzZWxmdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDg6Mzk6MDUuNDc0Mzc0NzY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmhjcb[1] Phase: Running StartedAt: 2026-08-15 08:39:16 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmhjcb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-15 08:39:16 +0000 UTC FinishedAt: 2026-08-15 08:39:21 +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,}