Name: series-workflownttqs Phase: Failed StartedAt: 2026-08-27 18:17:57 +0000 UTC FinishedAt: 2026-08-27 18:34:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflownttqs[0] Phase: Succeeded StartedAt: 2026-08-27 18:17:57 +0000 UTC FinishedAt: 2026-08-27 18:34:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownttqs[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 18:17:57 +0000 UTC FinishedAt: 2026-08-27 18:34:08 +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+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxODozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFlNzZmMmY2MjU5ZWM1MzQ1NWIwOTQyMjZmMDgyOTdlNjdmYjhiYWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxODozMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbkBAIC00NDksNiAmIzQzOzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4gXHRyZXR1cm4gcmVhZF9udW0ocGF0aCk7XG4gfVxuIFxuJiM0Mzt1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuJiM0MztcbiYjNDM7XHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcJiMzNDtyZXN2X2h1Z2VwYWdlc1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWFkX251bShwYXRoKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBfX2h1Z2V0bGJfc2V0dXAodW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZSA9IGh1Z2V0bGJfZnJlZV9wYWdlcyhzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbkBAIC05OCw2ICYjNDM7OTgsNyBAQCB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpO1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4mIzQzO3Vuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfc2F2ZV9zZXR0aW5ncyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbmluZGV4IGY5NDU0OWVmY2M2ZmYuLjZhYTQyZjA2NDI3OWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xuQEAgLTE1LDEzICYjNDM7MTUsMjAgQEBcbiAgKlxuICAqICBUb3VjaGluZyB0aGUgZmlyc3QgcGFnZSBhZnRlciB0aHJlYWQzJiMzOTtzIGFsbG9jYXRpb24gd2lsbCByYWlzZSBhIFNJR0JVU1xuICAqXG4mIzQzOyAqICBXZSBzZXR1cCBhIDJuZCB0ZXN0IHdoZXJlIHdlIGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MsIHRoZW4gdW5tYXAgdGhlIHBhZ2UgaW5cbiYjNDM7ICogIHRoZSBwYXJlbnQgd2hpbGUgdGhlIGNoaWxkIHdhaXRzIGFuZCB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBubyB1bmRlcmZsb3dcbiYjNDM7ICogIG9mIHRoZSByZXNlcnZlZCBjb3VudC5cbiYjNDM7ICpcbiAgKiAgQXV0aG9yOiBCcmVubyBMZWl0YW8gXHUwMDNjbGVpdGFvQGRlYmlhbi5vcmdcdTAwM2VcbiAgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvbW1hbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3dhaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7dm1fdXRpbC5oXCYjMzQ7XG5AQCAtODYsNyAmIzQzOzkzLDcgQEAgaW50IG1haW4odm9pZClcbiBcdGludCBtYXggPSAxMDtcbiBcbiBcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XG4tXHRrc2Z0X3NldF9wbGFuKDEpO1xuJiM0MztcdGtzZnRfc2V0X3BsYW4oMyk7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcbiBcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7VGhpcyB0ZXN0IG5lZWRzIG9uZSBhbmQgb25seSBvbmUgcGFnZSB0byBleGVjdXRlLiBHb3QgJWx1XFxuXCYjMzQ7LFxuQEAgLTEyMCw1ICYjNDM7MTI3LDgwIEBAIGludCBtYWluKHZvaWQpXG4gXHR9XG4gXG4gXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7Tm8gdW5leHBlY3RlZCBodWdlIHBhZ2UgYWxsb2NhdGlvbnNcXG5cJiMzNDspO1xuJiM0MztcdGh1Z2VfcHRyID0gbW1hcChOVUxMLCBtbWFwX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4mIzQzO1x0XHRcdE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9IVUdFVExCLCAtMSwgMCk7XG4mIzQzO1xuJiM0MztcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaHVnZSBwYWdlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0e1xuJiM0MztcdFx0cGlkX3QgcGlkO1xuJiM0MztcdFx0aW50IHBpcGVfZmRzWzJdO1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBucl9yZXNlcnZlZCA9IDA7XG4mIzQzO1xuJiM0MztcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbiYjNDM7XHRcdGlmIChucl9yZXNlcnZlZCAhPSAxKVxuJiM0MztcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7VW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBGb3JjZSB0aGUgZmF1bHQgdG8gZW5zdXJlIHRoZSByZXNlcnZhdGlvbiBpcyBjb25zdW1lZCAqL1xuJiM0MztcdFx0Kmh1Z2VfcHRyID0gMDtcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgIT0gMClcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O1VuZXhwZWN0ZWQgbnVtYmVyIG9mIHJlc2VydmVkIHBhZ2VzOiAlbHUsIGV4cGVjdGVkIDBcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHBpcGUocGlwZV9mZHMpICE9IDApXG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtwaXBlIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdFx0cGlkID0gZm9yaygpO1xuJiM0MztcdFx0aWYgKHBpZCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O2ZvcmsgZmFpbGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocGlkID09IDApIHtcbiYjNDM7XHRcdFx0LyogQ2hpbGQ6IFNpbXBseSB3YWl0IGZvciB0aGUgcGFyZW50ICovXG4mIzQzO1x0XHRcdGNoYXIgYjtcbiYjNDM7XG4mIzQzO1x0XHRcdGNsb3NlKHBpcGVfZmRzWzFdKTtcbiYjNDM7XHRcdFx0aWYgKHJlYWQocGlwZV9mZHNbMF0sIFx1MDAyNmIsIDEpIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtjaGlsZCByZWFkIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIFBhcmVudCAqL1xuJiM0MztcdFx0Y2xvc2UocGlwZV9mZHNbMF0pO1xuJiM0MztcbiYjNDM7XHRcdC8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqL1xuJiM0MztcdFx0aWYgKG11bm1hcChodWdlX3B0ciwgbW1hcF9zaXplKSAhPSAwKSB7XG4mIzQzO1x0XHRcdGtpbGwocGlkLCBTSUdLSUxMKTtcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O211bm1hcCBmYWlsZWRcJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgPT0gVUxPTkdfTUFYKSB7XG4mIzQzO1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtBZnRlciB0aGUgbXVubWFwLCBIdWdlUGFnZXNfUnN2ZCB1bmRlcmZsb3dlZCFcXG5cJiMzNDspO1xuJiM0MztcdFx0fSBlbHNlIGlmIChucl9yZXNlcnZlZCA9PSAwKSB7XG4mIzQzO1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtVbmRlcmZsb3cgbm90IHByZXNlbnQhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciBtdW5tYXAsIHNob3VsZCBiZSAwIG9yIC0xLiAgUmVwZWF0IHRoZSB0ZXN0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgbnJfcmVzZXJ2ZWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0LyogTWFrZSB0aGUgY2hpbGQgZXhpdCwgdGhpcyBzaG91bGQgcmVzdG9yZSBIdWdlUGFnZXNfUnN2ZCB0byAwICovXG4mIzQzO1x0XHRpZiAod3JpdGUocGlwZV9mZHNbMV0sIFx1MDAyNm5yX3Jlc2VydmVkLCAxKSBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRraWxsKHBpZCwgU0lHS0lMTCk7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDt3cml0ZSBmYWlsZWRcJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xuJiM0MztcdFx0aWYgKHdhaXRwaWQocGlkLCBOVUxMLCAwKSBcdTAwM2M9IDApXG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDt3cml0ZSBmYWlsZWRcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xuJiM0MztcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7QWZ0ZXIgdGhlIGNoaWxkIGRpZXMsIEh1Z2VQYWdlc19Sc3ZkIGlzIHByb3Blcmx5IHNldCB0byAwXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciB0aGUgY2hpbGQgdGVybWluYXRpb24gbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXHRrc2Z0X2ZpbmlzaGVkKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWU3NmYyZjYyNTllYzUzNDU1YjA5NDIyNmYwODI5N2U2N2ZiOGJhZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDE4OjMzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jCkBAIC00NDksNiAmIzQzOzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpCiAJcmV0dXJuIHJlYWRfbnVtKHBhdGgpOwogfQogCiYjNDM7dW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKQomIzQzO3sKJiM0MzsJY2hhciBwYXRoW1BBVEhfTUFYXTsKJiM0MzsKJiM0MzsJaHVnZXRsYl9zeXNmc19wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgc2l6ZSwgJiMzNDtyZXN2X2h1Z2VwYWdlcyYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlYWRfbnVtKHBhdGgpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIF9faHVnZXRsYl9zZXR1cCh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpCiB7CiAJdW5zaWduZWQgbG9uZyBmcmVlID0gaHVnZXRsYl9mcmVlX3BhZ2VzKHNpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmgKaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCkBAIC05OCw2ICYjNDM7OTgsNyBAQCB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTsKIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTsKIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfc2F2ZV9zZXR0aW5ncyh2b2lkKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jCmluZGV4IGY5NDU0OWVmY2M2ZmYuLjZhYTQyZjA2NDI3OWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMKQEAgLTE1LDEzICYjNDM7MTUsMjAgQEAKICAqCiAgKiAgVG91Y2hpbmcgdGhlIGZpcnN0IHBhZ2UgYWZ0ZXIgdGhyZWFkMyYjMzk7cyBhbGxvY2F0aW9uIHdpbGwgcmFpc2UgYSBTSUdCVVMKICAqCiYjNDM7ICogIFdlIHNldHVwIGEgMm5kIHRlc3Qgd2hlcmUgd2UgY3JlYXRlIGEgY2hpbGQgcHJvY2VzcywgdGhlbiB1bm1hcCB0aGUgcGFnZSBpbgomIzQzOyAqICB0aGUgcGFyZW50IHdoaWxlIHRoZSBjaGlsZCB3YWl0cyBhbmQgdmVyaWZ5IHRoYXQgdGhlcmUgaXMgbm8gdW5kZXJmbG93CiYjNDM7ICogIG9mIHRoZSByZXNlcnZlZCBjb3VudC4KJiM0MzsgKgogICogIEF1dGhvcjogQnJlbm8gTGVpdGFvICZsdDtsZWl0YW9AZGViaWFuLm9yZyZndDsKICAqLwomIzQzOyNpbmNsdWRlICZsdDtsaW1pdHMuaCZndDsKICNpbmNsdWRlICZsdDtwdGhyZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3NpZ25hbC5oJmd0OwogI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3lzL21tYW4uaCZndDsKICNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt2bV91dGlsLmgmIzM0OwpAQCAtODYsNyAmIzQzOzkzLDcgQEAgaW50IG1haW4odm9pZCkKIAlpbnQgbWF4ID0gMTA7CiAKIAlrc2Z0X3ByaW50X2hlYWRlcigpOwotCWtzZnRfc2V0X3BsYW4oMSk7CiYjNDM7CWtzZnRfc2V0X3BsYW4oMyk7CiAKIAlpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSkKIAkJa3NmdF9leGl0X3NraXAoJiMzNDtUaGlzIHRlc3QgbmVlZHMgb25lIGFuZCBvbmx5IG9uZSBwYWdlIHRvIGV4ZWN1dGUuIEdvdCAlbHVcbiYjMzQ7LApAQCAtMTIwLDUgJiM0MzsxMjcsODAgQEAgaW50IG1haW4odm9pZCkKIAl9CiAKIAlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoJiMzNDtObyB1bmV4cGVjdGVkIGh1Z2UgcGFnZSBhbGxvY2F0aW9uc1xuJiMzNDspOwomIzQzOwlodWdlX3B0ciA9IG1tYXAoTlVMTCwgbW1hcF9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAomIzQzOwkJCU1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9IVUdFVExCLCAtMSwgMCk7CiYjNDM7CiYjNDM7CWlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSkKJiM0MzsJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBodWdlIHBhZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJewomIzQzOwkJcGlkX3QgcGlkOwomIzQzOwkJaW50IHBpcGVfZmRzWzJdOwomIzQzOwkJdW5zaWduZWQgbG9uZyBucl9yZXNlcnZlZCA9IDA7CiYjNDM7CiYjNDM7CQlucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpOwomIzQzOwkJaWYgKG5yX3Jlc2VydmVkICE9IDEpCiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7VW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxuJiMzNDssCiYjNDM7CQkJCQkgICBucl9yZXNlcnZlZCk7CiYjNDM7CiYjNDM7CQkvKiBGb3JjZSB0aGUgZmF1bHQgdG8gZW5zdXJlIHRoZSByZXNlcnZhdGlvbiBpcyBjb25zdW1lZCAqLwomIzQzOwkJKmh1Z2VfcHRyID0gMDsKJiM0MzsJCW5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7CiYjNDM7CQlpZiAobnJfcmVzZXJ2ZWQgIT0gMCkKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIG51bWJlciBvZiByZXNlcnZlZCBwYWdlczogJWx1LCBleHBlY3RlZCAwXG4mIzM0OywKJiM0MzsJCQkJCSAgIG5yX3Jlc2VydmVkKTsKJiM0MzsKJiM0MzsJCWlmIChwaXBlKHBpcGVfZmRzKSAhPSAwKQomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O3BpcGUgZmFpbGVkJiMzNDspOwomIzQzOwomIzQzOwkJcGlkID0gZm9yaygpOwomIzQzOwkJaWYgKHBpZCAmbHQ7IDApCiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Zm9yayBmYWlsZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CQlpZiAocGlkID09IDApIHsKJiM0MzsJCQkvKiBDaGlsZDogU2ltcGx5IHdhaXQgZm9yIHRoZSBwYXJlbnQgKi8KJiM0MzsJCQljaGFyIGI7CiYjNDM7CiYjNDM7CQkJY2xvc2UocGlwZV9mZHNbMV0pOwomIzQzOwkJCWlmIChyZWFkKHBpcGVfZmRzWzBdLCAmYW1wO2IsIDEpICZsdDsgMCkKJiM0MzsJCQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Y2hpbGQgcmVhZCBmYWlsZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkvKiBQYXJlbnQgKi8KJiM0MzsJCWNsb3NlKHBpcGVfZmRzWzBdKTsKJiM0MzsKJiM0MzsJCS8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqLwomIzQzOwkJaWYgKG11bm1hcChodWdlX3B0ciwgbW1hcF9zaXplKSAhPSAwKSB7CiYjNDM7CQkJa2lsbChwaWQsIFNJR0tJTEwpOwomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O211bm1hcCBmYWlsZWQmIzM0Oyk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpOwomIzQzOwkJaWYgKG5yX3Jlc2VydmVkID09IFVMT05HX01BWCkgewomIzQzOwkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgmIzM0O0FmdGVyIHRoZSBtdW5tYXAsIEh1Z2VQYWdlc19Sc3ZkIHVuZGVyZmxvd2VkIVxuJiMzNDspOwomIzQzOwkJfSBlbHNlIGlmIChucl9yZXNlcnZlZCA9PSAwKSB7CiYjNDM7CQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCYjMzQ7VW5kZXJmbG93IG5vdCBwcmVzZW50IVxuJiMzNDspOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciBtdW5tYXAsIHNob3VsZCBiZSAwIG9yIC0xLiAgUmVwZWF0IHRoZSB0ZXN0XG4mIzM0OywKJiM0MzsJCQkJCSAgIG5yX3Jlc2VydmVkKTsKJiM0MzsJCX0KJiM0MzsJCS8qIE1ha2UgdGhlIGNoaWxkIGV4aXQsIHRoaXMgc2hvdWxkIHJlc3RvcmUgSHVnZVBhZ2VzX1JzdmQgdG8gMCAqLwomIzQzOwkJaWYgKHdyaXRlKHBpcGVfZmRzWzFdLCAmYW1wO25yX3Jlc2VydmVkLCAxKSAmbHQ7IDApIHsKJiM0MzsJCQlraWxsKHBpZCwgU0lHS0lMTCk7CiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7d3JpdGUgZmFpbGVkJiMzNDspOwomIzQzOwkJfQomIzQzOwkJY2xvc2UocGlwZV9mZHNbMV0pOwomIzQzOwkJaWYgKHdhaXRwaWQocGlkLCBOVUxMLCAwKSAmbHQ7PSAwKQomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O3dyaXRlIGZhaWxlZCYjMzQ7KTsKJiM0MzsKJiM0MzsJCW5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7CiYjNDM7CQlpZiAobnJfcmVzZXJ2ZWQgPT0gMCkgewomIzQzOwkJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O0FmdGVyIHRoZSBjaGlsZCBkaWVzLCBIdWdlUGFnZXNfUnN2ZCBpcyBwcm9wZXJseSBzZXQgdG8gMFxuJiMzNDspOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciB0aGUgY2hpbGQgdGVybWluYXRpb24gbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxuJiMzNDssCiYjNDM7CQkJCQkgICBucl9yZXNlcnZlZCk7CiYjNDM7CQl9CiYjNDM7CX0KIAlrc2Z0X2ZpbmlzaGVkKCk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjEKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyB0aHJlZSBmaWxlcyB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3Rvcnk6IGBodWdlcGFnZV9zZXR0aW5ncy5jYCwgYGh1Z2VwYWdlX3NldHRpbmdzLmhgLCBhbmQgYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgaHVnZXRsYl9ucl9yZXN2X3BhZ2VzYCwgdG8gcmVhZCB0aGUgcmVzZXJ2ZWQgaHVnZXBhZ2UgY291bnQgZnJvbSBzeXNmcy4gQW5kIHRoZXJlJiMzOTtzIGEgbmV3IHRlc3QgY2FzZSB3aXRoaW4gYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AgZGVzaWduZWQgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgc2l0dWF0aW9uIHdpdGggcmVzZXJ2ZWQgY291bnRzIGR1cmluZyBhIHBhcmVudC9jaGlsZCBwcm9jZXNzIGludGVyYWN0aW9uIGludm9sdmluZyB1bm1hcHBpbmcgcGFnZXMuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoaXM6IGJhc2VkIG9uIHRoZSBmaWxlcyB0b3VjaGVkIGFuZCB0aGUgZGVzY3JpcHRpb25zIHByb3ZpZGVkLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzICpzb2xlbHkqIGFib3V0IGltcHJvdmluZyB0aGUgc2VsZnRlc3RzIHRoZW1zZWx2ZXMuIEl0JiMzOTtzIG5vdCBhbHRlcmluZyBjb3JlIGtlcm5lbCBsb2dpYywgbm9yIGlzIGl0IHRvdWNoaW5nIGRyaXZlcnMgb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbiYjMzk7dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZW5oYW5jZW1lbnRzIHRvIG91ciB0ZXN0IHN1aXRlLCB3aGljaCBpcyBncmVhdCwgYnV0IGlycmVsZXZhbnQgYXMgZmFyIGFzIGNoYW5nZXMgdGhhdCB3b3VsZCBqdXN0aWZ5IGZ1enppbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uWWVwLCBpdCYjMzk7cyBhbGwgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKmAgZGlyZWN0b3J5LiBObyBrZXJuZWwgY29kZSBpcyBiZWluZyBtb2RpZmllZC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZSBidXQgYWNjdXJhdGU6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4mIzM0OyBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgdG8gdGhlIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxODozMzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTAuNjUyNDY3NTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyMjUwNjU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE4OjMzOjUwLjY1MjQ3NDA1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk0ODg1NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWU3NmYyZjYyNTllYzUzNDU1YjA5NDIyNmYwODI5N2U2N2ZiOGJhZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxODozMzo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xcbmluZGV4IGQ3OTE3ZGNlM2FiYWMuLjU4NDA1NDczNmNlOTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcXG5AQCAtNDQ5LDYgKzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXFxuIFxcdHJldHVybiByZWFkX251bShwYXRoKTtcXG4gfVxcbiBcXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbit7XFxuK1xcdGNoYXIgcGF0aFtQQVRIX01BWF07XFxuK1xcbitcXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcXFwicmVzdl9odWdlcGFnZXNcXFwiKTtcXG4rXFxuK1xcdHJldHVybiByZWFkX251bShwYXRoKTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgX19odWdldGxiX3NldHVwKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZyZWUgPSBodWdldGxiX2ZyZWVfcGFnZXMoc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbkBAIC05OCw2ICs5OCw3IEBAIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTtcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3NhdmVfc2V0dGluZ3Modm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcXG5pbmRleCBmOTQ1NDllZmNjNmZmLi42YWE0MmYwNjQyNzlkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xcbkBAIC0xNSwxMyArMTUsMjAgQEBcXG4gICpcXG4gICogIFRvdWNoaW5nIHRoZSBmaXJzdCBwYWdlIGFmdGVyIHRocmVhZDMncyBhbGxvY2F0aW9uIHdpbGwgcmFpc2UgYSBTSUdCVVNcXG4gICpcXG4rICogIFdlIHNldHVwIGEgMm5kIHRlc3Qgd2hlcmUgd2UgY3JlYXRlIGEgY2hpbGQgcHJvY2VzcywgdGhlbiB1bm1hcCB0aGUgcGFnZSBpblxcbisgKiAgdGhlIHBhcmVudCB3aGlsZSB0aGUgY2hpbGQgd2FpdHMgYW5kIHZlcmlmeSB0aGF0IHRoZXJlIGlzIG5vIHVuZGVyZmxvd1xcbisgKiAgb2YgdGhlIHJlc2VydmVkIGNvdW50LlxcbisgKlxcbiAgKiAgQXV0aG9yOiBCcmVubyBMZWl0YW8gXFx1MDAzY2xlaXRhb0BkZWJpYW4ub3JnXFx1MDAzZVxcbiAgKi9cXG4rI2luY2x1ZGUgXFx1MDAzY2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvbW1hbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwidm1fdXRpbC5oXFxcIlxcbkBAIC04Niw3ICs5Myw3IEBAIGludCBtYWluKHZvaWQpXFxuIFxcdGludCBtYXggPSAxMDtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XFxuLVxcdGtzZnRfc2V0X3BsYW4oMSk7XFxuK1xcdGtzZnRfc2V0X3BsYW4oMyk7XFxuIFxcbiBcXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcXG4gXFx0XFx0a3NmdF9leGl0X3NraXAoXFxcIlRoaXMgdGVzdCBuZWVkcyBvbmUgYW5kIG9ubHkgb25lIHBhZ2UgdG8gZXhlY3V0ZS4gR290ICVsdVxcXFxuXFxcIixcXG5AQCAtMTIwLDUgKzEyNyw4MCBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHR9XFxuIFxcbiBcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIk5vIHVuZXhwZWN0ZWQgaHVnZSBwYWdlIGFsbG9jYXRpb25zXFxcXG5cXFwiKTtcXG4rXFx0aHVnZV9wdHIgPSBtbWFwKE5VTEwsIG1tYXBfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcXG4rXFx0XFx0XFx0TUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTIHwgTUFQX0hVR0VUTEIsIC0xLCAwKTtcXG4rXFxuK1xcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgaHVnZSBwYWdlXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHtcXG4rXFx0XFx0cGlkX3QgcGlkO1xcbitcXHRcXHRpbnQgcGlwZV9mZHNbMl07XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWQgPSAwO1xcbitcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkICE9IDEpXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgbnJfcmVzZXJ2ZWQpO1xcbitcXG4rXFx0XFx0LyogRm9yY2UgdGhlIGZhdWx0IHRvIGVuc3VyZSB0aGUgcmVzZXJ2YXRpb24gaXMgY29uc3VtZWQgKi9cXG4rXFx0XFx0Kmh1Z2VfcHRyID0gMDtcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkICE9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgbnJfcmVzZXJ2ZWQpO1xcbitcXG4rXFx0XFx0aWYgKHBpcGUocGlwZV9mZHMpICE9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwicGlwZSBmYWlsZWRcXFwiKTtcXG4rXFxuK1xcdFxcdHBpZCA9IGZvcmsoKTtcXG4rXFx0XFx0aWYgKHBpZCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiZm9yayBmYWlsZWRcXFwiKTtcXG4rXFxuK1xcdFxcdGlmIChwaWQgPT0gMCkge1xcbitcXHRcXHRcXHQvKiBDaGlsZDogU2ltcGx5IHdhaXQgZm9yIHRoZSBwYXJlbnQgKi9cXG4rXFx0XFx0XFx0Y2hhciBiO1xcbitcXG4rXFx0XFx0XFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xcbitcXHRcXHRcXHRpZiAocmVhZChwaXBlX2Zkc1swXSwgXFx1MDAyNmIsIDEpIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJjaGlsZCByZWFkIGZhaWxlZFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogUGFyZW50ICovXFxuK1xcdFxcdGNsb3NlKHBpcGVfZmRzWzBdKTtcXG4rXFxuK1xcdFxcdC8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqL1xcbitcXHRcXHRpZiAobXVubWFwKGh1Z2VfcHRyLCBtbWFwX3NpemUpICE9IDApIHtcXG4rXFx0XFx0XFx0a2lsbChwaWQsIFNJR0tJTEwpO1xcbitcXHRcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIm11bm1hcCBmYWlsZWRcXFwiKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkID09IFVMT05HX01BWCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcIkFmdGVyIHRoZSBtdW5tYXAsIEh1Z2VQYWdlc19Sc3ZkIHVuZGVyZmxvd2VkIVxcXFxuXFxcIik7XFxuK1xcdFxcdH0gZWxzZSBpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIlVuZGVyZmxvdyBub3QgcHJlc2VudCFcXFxcblxcXCIpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIlVuZXhwZWN0ZWQgSHVnZVBhZ2VzX1JzdmQ9JWxkIGFmdGVyIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIG5yX3Jlc2VydmVkKTtcXG4rXFx0XFx0fVxcbitcXHRcXHQvKiBNYWtlIHRoZSBjaGlsZCBleGl0LCB0aGlzIHNob3VsZCByZXN0b3JlIEh1Z2VQYWdlc19Sc3ZkIHRvIDAgKi9cXG4rXFx0XFx0aWYgKHdyaXRlKHBpcGVfZmRzWzFdLCBcXHUwMDI2bnJfcmVzZXJ2ZWQsIDEpIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRraWxsKHBpZCwgU0lHS0lMTCk7XFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwid3JpdGUgZmFpbGVkXFxcIik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xcbitcXHRcXHRpZiAod2FpdHBpZChwaWQsIE5VTEwsIDApIFxcdTAwM2M9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwid3JpdGUgZmFpbGVkXFxcIik7XFxuK1xcbitcXHRcXHRucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpO1xcbitcXHRcXHRpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIkFmdGVyIHRoZSBjaGlsZCBkaWVzLCBIdWdlUGFnZXNfUnN2ZCBpcyBwcm9wZXJseSBzZXQgdG8gMFxcXFxuXFxcIik7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgdGhlIGNoaWxkIHRlcm1pbmF0aW9uIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIG5yX3Jlc2VydmVkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuIFxcdGtzZnRfZmluaXNoZWQoKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxODozMzo1MS4wNDc5Mzk4MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MDI3MDIyMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZTc2ZjJmNjI1OWVjNTM0NTViMDk0MjI2ZjA4Mjk3ZTY3ZmI4YmFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTg6MzM6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbkBAIC00NDksNiArNDQ5LDE1IEBAIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiBcdHJldHVybiByZWFkX251bShwYXRoKTtcbiB9XG4gXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxuK3tcbitcdGNoYXIgcGF0aFtQQVRIX01BWF07XG4rXG4rXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcInJlc3ZfaHVnZXBhZ2VzXCIpO1xuK1xuK1x0cmV0dXJuIHJlYWRfbnVtKHBhdGgpO1xuK31cbitcbiBzdGF0aWMgYm9vbCBfX2h1Z2V0bGJfc2V0dXAodW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZSA9IGh1Z2V0bGJfZnJlZV9wYWdlcyhzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbkBAIC05OCw2ICs5OCw3IEBAIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbit1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3NhdmVfc2V0dGluZ3Modm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jXG5pbmRleCBmOTQ1NDllZmNjNmZmLi42YWE0MmYwNjQyNzlkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbkBAIC0xNSwxMyArMTUsMjAgQEBcbiAgKlxuICAqICBUb3VjaGluZyB0aGUgZmlyc3QgcGFnZSBhZnRlciB0aHJlYWQzJ3MgYWxsb2NhdGlvbiB3aWxsIHJhaXNlIGEgU0lHQlVTXG4gICpcbisgKiAgV2Ugc2V0dXAgYSAybmQgdGVzdCB3aGVyZSB3ZSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLCB0aGVuIHVubWFwIHRoZSBwYWdlIGluXG4rICogIHRoZSBwYXJlbnQgd2hpbGUgdGhlIGNoaWxkIHdhaXRzIGFuZCB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBubyB1bmRlcmZsb3dcbisgKiAgb2YgdGhlIHJlc2VydmVkIGNvdW50LlxuKyAqXG4gICogIEF1dGhvcjogQnJlbm8gTGVpdGFvIFx1MDAzY2xlaXRhb0BkZWJpYW4ub3JnXHUwMDNlXG4gICovXG4rI2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzaWduYWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidm1fdXRpbC5oXCJcbkBAIC04Niw3ICs5Myw3IEBAIGludCBtYWluKHZvaWQpXG4gXHRpbnQgbWF4ID0gMTA7XG4gXG4gXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuLVx0a3NmdF9zZXRfcGxhbigxKTtcbitcdGtzZnRfc2V0X3BsYW4oMyk7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcbiBcdFx0a3NmdF9leGl0X3NraXAoXCJUaGlzIHRlc3QgbmVlZHMgb25lIGFuZCBvbmx5IG9uZSBwYWdlIHRvIGV4ZWN1dGUuIEdvdCAlbHVcXG5cIixcbkBAIC0xMjAsNSArMTI3LDgwIEBAIGludCBtYWluKHZvaWQpXG4gXHR9XG4gXG4gXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCJObyB1bmV4cGVjdGVkIGh1Z2UgcGFnZSBhbGxvY2F0aW9uc1xcblwiKTtcbitcdGh1Z2VfcHRyID0gbW1hcChOVUxMLCBtbWFwX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4rXHRcdFx0TUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTIHwgTUFQX0hVR0VUTEIsIC0xLCAwKTtcbitcbitcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiRmFpbGVkIHRvIGFsbG9jYXRlIGh1Z2UgcGFnZVxcblwiKTtcbitcbitcdHtcbitcdFx0cGlkX3QgcGlkO1xuK1x0XHRpbnQgcGlwZV9mZHNbMl07XG4rXHRcdHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWQgPSAwO1xuK1xuK1x0XHRucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpO1xuK1x0XHRpZiAobnJfcmVzZXJ2ZWQgIT0gMSlcbitcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCJVbmV4cGVjdGVkIG51bWJlciBvZiByZXNlcnZlZCBwYWdlczogJWx1LCBleHBlY3RlZCAxXFxuXCIsXG4rXHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbitcbitcdFx0LyogRm9yY2UgdGhlIGZhdWx0IHRvIGVuc3VyZSB0aGUgcmVzZXJ2YXRpb24gaXMgY29uc3VtZWQgKi9cbitcdFx0Kmh1Z2VfcHRyID0gMDtcbitcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbitcdFx0aWYgKG5yX3Jlc2VydmVkICE9IDApXG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMFxcblwiLFxuK1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4rXG4rXHRcdGlmIChwaXBlKHBpcGVfZmRzKSAhPSAwKVxuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcInBpcGUgZmFpbGVkXCIpO1xuK1xuK1x0XHRwaWQgPSBmb3JrKCk7XG4rXHRcdGlmIChwaWQgXHUwMDNjIDApXG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiZm9yayBmYWlsZWRcIik7XG4rXG4rXHRcdGlmIChwaWQgPT0gMCkge1xuK1x0XHRcdC8qIENoaWxkOiBTaW1wbHkgd2FpdCBmb3IgdGhlIHBhcmVudCAqL1xuK1x0XHRcdGNoYXIgYjtcbitcbitcdFx0XHRjbG9zZShwaXBlX2Zkc1sxXSk7XG4rXHRcdFx0aWYgKHJlYWQocGlwZV9mZHNbMF0sIFx1MDAyNmIsIDEpIFx1MDAzYyAwKVxuK1x0XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiY2hpbGQgcmVhZCBmYWlsZWRcIik7XG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdH1cbitcbitcdFx0LyogUGFyZW50ICovXG4rXHRcdGNsb3NlKHBpcGVfZmRzWzBdKTtcbitcbitcdFx0LyogRmlyc3QgdW5tYXAsIHRoaXMgd2lsbCBjbG9zZSB0aGUgdm1hICovXG4rXHRcdGlmIChtdW5tYXAoaHVnZV9wdHIsIG1tYXBfc2l6ZSkgIT0gMCkge1xuK1x0XHRcdGtpbGwocGlkLCBTSUdLSUxMKTtcbitcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCJtdW5tYXAgZmFpbGVkXCIpO1xuK1x0XHR9XG4rXG4rXHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4rXHRcdGlmIChucl9yZXNlcnZlZCA9PSBVTE9OR19NQVgpIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCJBZnRlciB0aGUgbXVubWFwLCBIdWdlUGFnZXNfUnN2ZCB1bmRlcmZsb3dlZCFcXG5cIik7XG4rXHRcdH0gZWxzZSBpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xuK1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcIlVuZGVyZmxvdyBub3QgcHJlc2VudCFcXG5cIik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxcblwiLFxuK1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4rXHRcdH1cbitcdFx0LyogTWFrZSB0aGUgY2hpbGQgZXhpdCwgdGhpcyBzaG91bGQgcmVzdG9yZSBIdWdlUGFnZXNfUnN2ZCB0byAwICovXG4rXHRcdGlmICh3cml0ZShwaXBlX2Zkc1sxXSwgXHUwMDI2bnJfcmVzZXJ2ZWQsIDEpIFx1MDAzYyAwKSB7XG4rXHRcdFx0a2lsbChwaWQsIFNJR0tJTEwpO1xuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIndyaXRlIGZhaWxlZFwiKTtcbitcdFx0fVxuK1x0XHRjbG9zZShwaXBlX2Zkc1sxXSk7XG4rXHRcdGlmICh3YWl0cGlkKHBpZCwgTlVMTCwgMCkgXHUwMDNjPSAwKVxuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIndyaXRlIGZhaWxlZFwiKTtcbitcbitcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbitcdFx0aWYgKG5yX3Jlc2VydmVkID09IDApIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCJBZnRlciB0aGUgY2hpbGQgZGllcywgSHVnZVBhZ2VzX1JzdmQgaXMgcHJvcGVybHkgc2V0IHRvIDBcXG5cIik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgdGhlIGNoaWxkIHRlcm1pbmF0aW9uIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXG5cIixcbitcdFx0XHRcdFx0ICAgbnJfcmVzZXJ2ZWQpO1xuK1x0XHR9XG4rXHR9XG4gXHRrc2Z0X2ZpbmlzaGVkKCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTEuMDQ3OTQwOTE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNzAwMDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgdGhyZWUgZmlsZXMgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5OiBgaHVnZXBhZ2Vfc2V0dGluZ3MuY2AsIGBodWdlcGFnZV9zZXR0aW5ncy5oYCwgYW5kIGBodWdldGxiX21hZHZfdnNfbWFwLmNgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGh1Z2V0bGJfbnJfcmVzdl9wYWdlc2AsIHRvIHJlYWQgdGhlIHJlc2VydmVkIGh1Z2VwYWdlIGNvdW50IGZyb20gc3lzZnMuIEFuZCB0aGVyZSdzIGEgbmV3IHRlc3QgY2FzZSB3aXRoaW4gYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AgZGVzaWduZWQgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgc2l0dWF0aW9uIHdpdGggcmVzZXJ2ZWQgY291bnRzIGR1cmluZyBhIHBhcmVudC9jaGlsZCBwcm9jZXNzIGludGVyYWN0aW9uIGludm9sdmluZyB1bm1hcHBpbmcgcGFnZXMuXG5cblRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhpczogYmFzZWQgb24gdGhlIGZpbGVzIHRvdWNoZWQgYW5kIHRoZSBkZXNjcmlwdGlvbnMgcHJvdmlkZWQsIGl0J3MgY2xlYXIgdGhpcyBpcyAqc29sZWx5KiBhYm91dCBpbXByb3ZpbmcgdGhlIHNlbGZ0ZXN0cyB0aGVtc2VsdmVzLiBJdCdzIG5vdCBhbHRlcmluZyBjb3JlIGtlcm5lbCBsb2dpYywgbm9yIGlzIGl0IHRvdWNoaW5nIGRyaXZlcnMgb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbid0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGVuaGFuY2VtZW50cyB0byBvdXIgdGVzdCBzdWl0ZSwgd2hpY2ggaXMgZ3JlYXQsIGJ1dCBpcnJlbGV2YW50IGFzIGZhciBhcyBjaGFuZ2VzIHRoYXQgd291bGQganVzdGlmeSBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uWWVwLCBpdCdzIGFsbCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qYCBkaXJlY3RvcnkuIE5vIGtlcm5lbCBjb2RlIGlzIGJlaW5nIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZSBidXQgYWNjdXJhdGU6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIiBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgdG8gdGhlIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTcuMDc0OTQ0MTU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxODozMzo1Ny4wNzQ5NjM2MzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownttqs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 18:17:57 +0000 UTC FinishedAt: 2026-08-27 18:33:58 +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+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxODozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFlNzZmMmY2MjU5ZWM1MzQ1NWIwOTQyMjZmMDgyOTdlNjdmYjhiYWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxODozMzo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbkBAIC00NDksNiAmIzQzOzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4gXHRyZXR1cm4gcmVhZF9udW0ocGF0aCk7XG4gfVxuIFxuJiM0Mzt1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4mIzQzO3tcbiYjNDM7XHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuJiM0MztcbiYjNDM7XHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcJiMzNDtyZXN2X2h1Z2VwYWdlc1wmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZWFkX251bShwYXRoKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgYm9vbCBfX2h1Z2V0bGJfc2V0dXAodW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZSA9IGh1Z2V0bGJfZnJlZV9wYWdlcyhzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbkBAIC05OCw2ICYjNDM7OTgsNyBAQCB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpO1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4mIzQzO3Vuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfc2F2ZV9zZXR0aW5ncyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbmluZGV4IGY5NDU0OWVmY2M2ZmYuLjZhYTQyZjA2NDI3OWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xuQEAgLTE1LDEzICYjNDM7MTUsMjAgQEBcbiAgKlxuICAqICBUb3VjaGluZyB0aGUgZmlyc3QgcGFnZSBhZnRlciB0aHJlYWQzJiMzOTtzIGFsbG9jYXRpb24gd2lsbCByYWlzZSBhIFNJR0JVU1xuICAqXG4mIzQzOyAqICBXZSBzZXR1cCBhIDJuZCB0ZXN0IHdoZXJlIHdlIGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MsIHRoZW4gdW5tYXAgdGhlIHBhZ2UgaW5cbiYjNDM7ICogIHRoZSBwYXJlbnQgd2hpbGUgdGhlIGNoaWxkIHdhaXRzIGFuZCB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBubyB1bmRlcmZsb3dcbiYjNDM7ICogIG9mIHRoZSByZXNlcnZlZCBjb3VudC5cbiYjNDM7ICpcbiAgKiAgQXV0aG9yOiBCcmVubyBMZWl0YW8gXHUwMDNjbGVpdGFvQGRlYmlhbi5vcmdcdTAwM2VcbiAgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc2lnbmFsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvbW1hbi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3dhaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3VuaXN0ZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7dm1fdXRpbC5oXCYjMzQ7XG5AQCAtODYsNyAmIzQzOzkzLDcgQEAgaW50IG1haW4odm9pZClcbiBcdGludCBtYXggPSAxMDtcbiBcbiBcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XG4tXHRrc2Z0X3NldF9wbGFuKDEpO1xuJiM0MztcdGtzZnRfc2V0X3BsYW4oMyk7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcbiBcdFx0a3NmdF9leGl0X3NraXAoXCYjMzQ7VGhpcyB0ZXN0IG5lZWRzIG9uZSBhbmQgb25seSBvbmUgcGFnZSB0byBleGVjdXRlLiBHb3QgJWx1XFxuXCYjMzQ7LFxuQEAgLTEyMCw1ICYjNDM7MTI3LDgwIEBAIGludCBtYWluKHZvaWQpXG4gXHR9XG4gXG4gXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7Tm8gdW5leHBlY3RlZCBodWdlIHBhZ2UgYWxsb2NhdGlvbnNcXG5cJiMzNDspO1xuJiM0MztcdGh1Z2VfcHRyID0gbW1hcChOVUxMLCBtbWFwX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4mIzQzO1x0XHRcdE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9IVUdFVExCLCAtMSwgMCk7XG4mIzQzO1xuJiM0MztcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtGYWlsZWQgdG8gYWxsb2NhdGUgaHVnZSBwYWdlXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0e1xuJiM0MztcdFx0cGlkX3QgcGlkO1xuJiM0MztcdFx0aW50IHBpcGVfZmRzWzJdO1xuJiM0MztcdFx0dW5zaWduZWQgbG9uZyBucl9yZXNlcnZlZCA9IDA7XG4mIzQzO1xuJiM0MztcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbiYjNDM7XHRcdGlmIChucl9yZXNlcnZlZCAhPSAxKVxuJiM0MztcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7VW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBGb3JjZSB0aGUgZmF1bHQgdG8gZW5zdXJlIHRoZSByZXNlcnZhdGlvbiBpcyBjb25zdW1lZCAqL1xuJiM0MztcdFx0Kmh1Z2VfcHRyID0gMDtcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgIT0gMClcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O1VuZXhwZWN0ZWQgbnVtYmVyIG9mIHJlc2VydmVkIHBhZ2VzOiAlbHUsIGV4cGVjdGVkIDBcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHBpcGUocGlwZV9mZHMpICE9IDApXG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtwaXBlIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdFx0cGlkID0gZm9yaygpO1xuJiM0MztcdFx0aWYgKHBpZCBcdTAwM2MgMClcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O2ZvcmsgZmFpbGVkXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAocGlkID09IDApIHtcbiYjNDM7XHRcdFx0LyogQ2hpbGQ6IFNpbXBseSB3YWl0IGZvciB0aGUgcGFyZW50ICovXG4mIzQzO1x0XHRcdGNoYXIgYjtcbiYjNDM7XG4mIzQzO1x0XHRcdGNsb3NlKHBpcGVfZmRzWzFdKTtcbiYjNDM7XHRcdFx0aWYgKHJlYWQocGlwZV9mZHNbMF0sIFx1MDAyNmIsIDEpIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtjaGlsZCByZWFkIGZhaWxlZFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAwO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIFBhcmVudCAqL1xuJiM0MztcdFx0Y2xvc2UocGlwZV9mZHNbMF0pO1xuJiM0MztcbiYjNDM7XHRcdC8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqL1xuJiM0MztcdFx0aWYgKG11bm1hcChodWdlX3B0ciwgbW1hcF9zaXplKSAhPSAwKSB7XG4mIzQzO1x0XHRcdGtpbGwocGlkLCBTSUdLSUxMKTtcbiYjNDM7XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwmIzM0O211bm1hcCBmYWlsZWRcJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgPT0gVUxPTkdfTUFYKSB7XG4mIzQzO1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcJiMzNDtBZnRlciB0aGUgbXVubWFwLCBIdWdlUGFnZXNfUnN2ZCB1bmRlcmZsb3dlZCFcXG5cJiMzNDspO1xuJiM0MztcdFx0fSBlbHNlIGlmIChucl9yZXNlcnZlZCA9PSAwKSB7XG4mIzQzO1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcJiMzNDtVbmRlcmZsb3cgbm90IHByZXNlbnQhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciBtdW5tYXAsIHNob3VsZCBiZSAwIG9yIC0xLiAgUmVwZWF0IHRoZSB0ZXN0XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdFx0ICAgbnJfcmVzZXJ2ZWQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0LyogTWFrZSB0aGUgY2hpbGQgZXhpdCwgdGhpcyBzaG91bGQgcmVzdG9yZSBIdWdlUGFnZXNfUnN2ZCB0byAwICovXG4mIzQzO1x0XHRpZiAod3JpdGUocGlwZV9mZHNbMV0sIFx1MDAyNm5yX3Jlc2VydmVkLCAxKSBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRraWxsKHBpZCwgU0lHS0lMTCk7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDt3cml0ZSBmYWlsZWRcJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xuJiM0MztcdFx0aWYgKHdhaXRwaWQocGlkLCBOVUxMLCAwKSBcdTAwM2M9IDApXG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDt3cml0ZSBmYWlsZWRcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4mIzQzO1x0XHRpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xuJiM0MztcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7QWZ0ZXIgdGhlIGNoaWxkIGRpZXMsIEh1Z2VQYWdlc19Sc3ZkIGlzIHByb3Blcmx5IHNldCB0byAwXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciB0aGUgY2hpbGQgdGVybWluYXRpb24gbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4gXHRrc2Z0X2ZpbmlzaGVkKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWU3NmYyZjYyNTllYzUzNDU1YjA5NDIyNmYwODI5N2U2N2ZiOGJhZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDE4OjMzOjQ5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jCkBAIC00NDksNiAmIzQzOzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpCiAJcmV0dXJuIHJlYWRfbnVtKHBhdGgpOwogfQogCiYjNDM7dW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKQomIzQzO3sKJiM0MzsJY2hhciBwYXRoW1BBVEhfTUFYXTsKJiM0MzsKJiM0MzsJaHVnZXRsYl9zeXNmc19wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgc2l6ZSwgJiMzNDtyZXN2X2h1Z2VwYWdlcyYjMzQ7KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlYWRfbnVtKHBhdGgpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIF9faHVnZXRsYl9zZXR1cCh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpCiB7CiAJdW5zaWduZWQgbG9uZyBmcmVlID0gaHVnZXRsYl9mcmVlX3BhZ2VzKHNpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmgKaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCkBAIC05OCw2ICYjNDM7OTgsNyBAQCB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTsKIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTsKIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGh1Z2V0bGJfc2F2ZV9zZXR0aW5ncyh2b2lkKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jCmluZGV4IGY5NDU0OWVmY2M2ZmYuLjZhYTQyZjA2NDI3OWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMKQEAgLTE1LDEzICYjNDM7MTUsMjAgQEAKICAqCiAgKiAgVG91Y2hpbmcgdGhlIGZpcnN0IHBhZ2UgYWZ0ZXIgdGhyZWFkMyYjMzk7cyBhbGxvY2F0aW9uIHdpbGwgcmFpc2UgYSBTSUdCVVMKICAqCiYjNDM7ICogIFdlIHNldHVwIGEgMm5kIHRlc3Qgd2hlcmUgd2UgY3JlYXRlIGEgY2hpbGQgcHJvY2VzcywgdGhlbiB1bm1hcCB0aGUgcGFnZSBpbgomIzQzOyAqICB0aGUgcGFyZW50IHdoaWxlIHRoZSBjaGlsZCB3YWl0cyBhbmQgdmVyaWZ5IHRoYXQgdGhlcmUgaXMgbm8gdW5kZXJmbG93CiYjNDM7ICogIG9mIHRoZSByZXNlcnZlZCBjb3VudC4KJiM0MzsgKgogICogIEF1dGhvcjogQnJlbm8gTGVpdGFvICZsdDtsZWl0YW9AZGViaWFuLm9yZyZndDsKICAqLwomIzQzOyNpbmNsdWRlICZsdDtsaW1pdHMuaCZndDsKICNpbmNsdWRlICZsdDtwdGhyZWFkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3NpZ25hbC5oJmd0OwogI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7c3lzL21tYW4uaCZndDsKICNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKIAogI2luY2x1ZGUgJiMzNDt2bV91dGlsLmgmIzM0OwpAQCAtODYsNyAmIzQzOzkzLDcgQEAgaW50IG1haW4odm9pZCkKIAlpbnQgbWF4ID0gMTA7CiAKIAlrc2Z0X3ByaW50X2hlYWRlcigpOwotCWtzZnRfc2V0X3BsYW4oMSk7CiYjNDM7CWtzZnRfc2V0X3BsYW4oMyk7CiAKIAlpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSkKIAkJa3NmdF9leGl0X3NraXAoJiMzNDtUaGlzIHRlc3QgbmVlZHMgb25lIGFuZCBvbmx5IG9uZSBwYWdlIHRvIGV4ZWN1dGUuIEdvdCAlbHVcbiYjMzQ7LApAQCAtMTIwLDUgJiM0MzsxMjcsODAgQEAgaW50IG1haW4odm9pZCkKIAl9CiAKIAlrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoJiMzNDtObyB1bmV4cGVjdGVkIGh1Z2UgcGFnZSBhbGxvY2F0aW9uc1xuJiMzNDspOwomIzQzOwlodWdlX3B0ciA9IG1tYXAoTlVMTCwgbW1hcF9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAomIzQzOwkJCU1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9IVUdFVExCLCAtMSwgMCk7CiYjNDM7CiYjNDM7CWlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSkKJiM0MzsJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBodWdlIHBhZ2VcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJewomIzQzOwkJcGlkX3QgcGlkOwomIzQzOwkJaW50IHBpcGVfZmRzWzJdOwomIzQzOwkJdW5zaWduZWQgbG9uZyBucl9yZXNlcnZlZCA9IDA7CiYjNDM7CiYjNDM7CQlucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpOwomIzQzOwkJaWYgKG5yX3Jlc2VydmVkICE9IDEpCiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7VW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxuJiMzNDssCiYjNDM7CQkJCQkgICBucl9yZXNlcnZlZCk7CiYjNDM7CiYjNDM7CQkvKiBGb3JjZSB0aGUgZmF1bHQgdG8gZW5zdXJlIHRoZSByZXNlcnZhdGlvbiBpcyBjb25zdW1lZCAqLwomIzQzOwkJKmh1Z2VfcHRyID0gMDsKJiM0MzsJCW5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7CiYjNDM7CQlpZiAobnJfcmVzZXJ2ZWQgIT0gMCkKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIG51bWJlciBvZiByZXNlcnZlZCBwYWdlczogJWx1LCBleHBlY3RlZCAwXG4mIzM0OywKJiM0MzsJCQkJCSAgIG5yX3Jlc2VydmVkKTsKJiM0MzsKJiM0MzsJCWlmIChwaXBlKHBpcGVfZmRzKSAhPSAwKQomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O3BpcGUgZmFpbGVkJiMzNDspOwomIzQzOwomIzQzOwkJcGlkID0gZm9yaygpOwomIzQzOwkJaWYgKHBpZCAmbHQ7IDApCiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Zm9yayBmYWlsZWQmIzM0Oyk7CiYjNDM7CiYjNDM7CQlpZiAocGlkID09IDApIHsKJiM0MzsJCQkvKiBDaGlsZDogU2ltcGx5IHdhaXQgZm9yIHRoZSBwYXJlbnQgKi8KJiM0MzsJCQljaGFyIGI7CiYjNDM7CiYjNDM7CQkJY2xvc2UocGlwZV9mZHNbMV0pOwomIzQzOwkJCWlmIChyZWFkKHBpcGVfZmRzWzBdLCAmYW1wO2IsIDEpICZsdDsgMCkKJiM0MzsJCQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Y2hpbGQgcmVhZCBmYWlsZWQmIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQkvKiBQYXJlbnQgKi8KJiM0MzsJCWNsb3NlKHBpcGVfZmRzWzBdKTsKJiM0MzsKJiM0MzsJCS8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqLwomIzQzOwkJaWYgKG11bm1hcChodWdlX3B0ciwgbW1hcF9zaXplKSAhPSAwKSB7CiYjNDM7CQkJa2lsbChwaWQsIFNJR0tJTEwpOwomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O211bm1hcCBmYWlsZWQmIzM0Oyk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpOwomIzQzOwkJaWYgKG5yX3Jlc2VydmVkID09IFVMT05HX01BWCkgewomIzQzOwkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgmIzM0O0FmdGVyIHRoZSBtdW5tYXAsIEh1Z2VQYWdlc19Sc3ZkIHVuZGVyZmxvd2VkIVxuJiMzNDspOwomIzQzOwkJfSBlbHNlIGlmIChucl9yZXNlcnZlZCA9PSAwKSB7CiYjNDM7CQkJa3NmdF90ZXN0X3Jlc3VsdF9wYXNzKCYjMzQ7VW5kZXJmbG93IG5vdCBwcmVzZW50IVxuJiMzNDspOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciBtdW5tYXAsIHNob3VsZCBiZSAwIG9yIC0xLiAgUmVwZWF0IHRoZSB0ZXN0XG4mIzM0OywKJiM0MzsJCQkJCSAgIG5yX3Jlc2VydmVkKTsKJiM0MzsJCX0KJiM0MzsJCS8qIE1ha2UgdGhlIGNoaWxkIGV4aXQsIHRoaXMgc2hvdWxkIHJlc3RvcmUgSHVnZVBhZ2VzX1JzdmQgdG8gMCAqLwomIzQzOwkJaWYgKHdyaXRlKHBpcGVfZmRzWzFdLCAmYW1wO25yX3Jlc2VydmVkLCAxKSAmbHQ7IDApIHsKJiM0MzsJCQlraWxsKHBpZCwgU0lHS0lMTCk7CiYjNDM7CQkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7d3JpdGUgZmFpbGVkJiMzNDspOwomIzQzOwkJfQomIzQzOwkJY2xvc2UocGlwZV9mZHNbMV0pOwomIzQzOwkJaWYgKHdhaXRwaWQocGlkLCBOVUxMLCAwKSAmbHQ7PSAwKQomIzQzOwkJCWtzZnRfZXhpdF9mYWlsX21zZygmIzM0O3dyaXRlIGZhaWxlZCYjMzQ7KTsKJiM0MzsKJiM0MzsJCW5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7CiYjNDM7CQlpZiAobnJfcmVzZXJ2ZWQgPT0gMCkgewomIzQzOwkJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O0FmdGVyIHRoZSBjaGlsZCBkaWVzLCBIdWdlUGFnZXNfUnN2ZCBpcyBwcm9wZXJseSBzZXQgdG8gMFxuJiMzNDspOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDtVbmV4cGVjdGVkIEh1Z2VQYWdlc19Sc3ZkPSVsZCBhZnRlciB0aGUgY2hpbGQgdGVybWluYXRpb24gbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxuJiMzNDssCiYjNDM7CQkJCQkgICBucl9yZXNlcnZlZCk7CiYjNDM7CQl9CiYjNDM7CX0KIAlrc2Z0X2ZpbmlzaGVkKCk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjEKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyB0aHJlZSBmaWxlcyB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3Rvcnk6IGBodWdlcGFnZV9zZXR0aW5ncy5jYCwgYGh1Z2VwYWdlX3NldHRpbmdzLmhgLCBhbmQgYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AuIEZyb20gYSBxdWljayBnbGFuY2UsIGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgaHVnZXRsYl9ucl9yZXN2X3BhZ2VzYCwgdG8gcmVhZCB0aGUgcmVzZXJ2ZWQgaHVnZXBhZ2UgY291bnQgZnJvbSBzeXNmcy4gQW5kIHRoZXJlJiMzOTtzIGEgbmV3IHRlc3QgY2FzZSB3aXRoaW4gYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AgZGVzaWduZWQgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgc2l0dWF0aW9uIHdpdGggcmVzZXJ2ZWQgY291bnRzIGR1cmluZyBhIHBhcmVudC9jaGlsZCBwcm9jZXNzIGludGVyYWN0aW9uIGludm9sdmluZyB1bm1hcHBpbmcgcGFnZXMuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRoaXM6IGJhc2VkIG9uIHRoZSBmaWxlcyB0b3VjaGVkIGFuZCB0aGUgZGVzY3JpcHRpb25zIHByb3ZpZGVkLCBpdCYjMzk7cyBjbGVhciB0aGlzIGlzICpzb2xlbHkqIGFib3V0IGltcHJvdmluZyB0aGUgc2VsZnRlc3RzIHRoZW1zZWx2ZXMuIEl0JiMzOTtzIG5vdCBhbHRlcmluZyBjb3JlIGtlcm5lbCBsb2dpYywgbm9yIGlzIGl0IHRvdWNoaW5nIGRyaXZlcnMgb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbiYjMzk7dCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcmVxdWlyZXMgZnV6emluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZW5oYW5jZW1lbnRzIHRvIG91ciB0ZXN0IHN1aXRlLCB3aGljaCBpcyBncmVhdCwgYnV0IGlycmVsZXZhbnQgYXMgZmFyIGFzIGNoYW5nZXMgdGhhdCB3b3VsZCBqdXN0aWZ5IGZ1enppbmcuCgpMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uWWVwLCBpdCYjMzk7cyBhbGwgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vKmAgZGlyZWN0b3J5LiBObyBrZXJuZWwgY29kZSBpcyBiZWluZyBtb2RpZmllZC4KClRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZSBidXQgYWNjdXJhdGU6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4mIzM0OyBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgdG8gdGhlIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDE4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBzZWxmdGVzdHMgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxODozMzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTAuNjUyNDY3NTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQyMjUwNjU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDE4OjMzOjUwLjY1MjQ3NDA1M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk0ODg1NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYWU3NmYyZjYyNTllYzUzNDU1YjA5NDIyNmYwODI5N2U2N2ZiOGJhZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxODozMzo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xcbmluZGV4IGQ3OTE3ZGNlM2FiYWMuLjU4NDA1NDczNmNlOTkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcXG5AQCAtNDQ5LDYgKzQ0OSwxNSBAQCB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXFxuIFxcdHJldHVybiByZWFkX251bShwYXRoKTtcXG4gfVxcbiBcXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbit7XFxuK1xcdGNoYXIgcGF0aFtQQVRIX01BWF07XFxuK1xcbitcXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcXFwicmVzdl9odWdlcGFnZXNcXFwiKTtcXG4rXFxuK1xcdHJldHVybiByZWFkX251bShwYXRoKTtcXG4rfVxcbitcXG4gc3RhdGljIGJvb2wgX19odWdldGxiX3NldHVwKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucilcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZyZWUgPSBodWdldGxiX2ZyZWVfcGFnZXMoc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbkBAIC05OCw2ICs5OCw3IEBAIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7XFxuIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTtcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3NhdmVfc2V0dGluZ3Modm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcXG5pbmRleCBmOTQ1NDllZmNjNmZmLi42YWE0MmYwNjQyNzlkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2V0bGJfbWFkdl92c19tYXAuY1xcbkBAIC0xNSwxMyArMTUsMjAgQEBcXG4gICpcXG4gICogIFRvdWNoaW5nIHRoZSBmaXJzdCBwYWdlIGFmdGVyIHRocmVhZDMncyBhbGxvY2F0aW9uIHdpbGwgcmFpc2UgYSBTSUdCVVNcXG4gICpcXG4rICogIFdlIHNldHVwIGEgMm5kIHRlc3Qgd2hlcmUgd2UgY3JlYXRlIGEgY2hpbGQgcHJvY2VzcywgdGhlbiB1bm1hcCB0aGUgcGFnZSBpblxcbisgKiAgdGhlIHBhcmVudCB3aGlsZSB0aGUgY2hpbGQgd2FpdHMgYW5kIHZlcmlmeSB0aGF0IHRoZXJlIGlzIG5vIHVuZGVyZmxvd1xcbisgKiAgb2YgdGhlIHJlc2VydmVkIGNvdW50LlxcbisgKlxcbiAgKiAgQXV0aG9yOiBCcmVubyBMZWl0YW8gXFx1MDAzY2xlaXRhb0BkZWJpYW4ub3JnXFx1MDAzZVxcbiAgKi9cXG4rI2luY2x1ZGUgXFx1MDAzY2xpbWl0cy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc2lnbmFsLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRpby5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3RkbGliLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvbW1hbi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvd2FpdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjdW5pc3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwidm1fdXRpbC5oXFxcIlxcbkBAIC04Niw3ICs5Myw3IEBAIGludCBtYWluKHZvaWQpXFxuIFxcdGludCBtYXggPSAxMDtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfaGVhZGVyKCk7XFxuLVxcdGtzZnRfc2V0X3BsYW4oMSk7XFxuK1xcdGtzZnRfc2V0X3BsYW4oMyk7XFxuIFxcbiBcXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcXG4gXFx0XFx0a3NmdF9leGl0X3NraXAoXFxcIlRoaXMgdGVzdCBuZWVkcyBvbmUgYW5kIG9ubHkgb25lIHBhZ2UgdG8gZXhlY3V0ZS4gR290ICVsdVxcXFxuXFxcIixcXG5AQCAtMTIwLDUgKzEyNyw4MCBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHR9XFxuIFxcbiBcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIk5vIHVuZXhwZWN0ZWQgaHVnZSBwYWdlIGFsbG9jYXRpb25zXFxcXG5cXFwiKTtcXG4rXFx0aHVnZV9wdHIgPSBtbWFwKE5VTEwsIG1tYXBfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSxcXG4rXFx0XFx0XFx0TUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTIHwgTUFQX0hVR0VUTEIsIC0xLCAwKTtcXG4rXFxuK1xcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgaHVnZSBwYWdlXFxcXG5cXFwiKTtcXG4rXFxuK1xcdHtcXG4rXFx0XFx0cGlkX3QgcGlkO1xcbitcXHRcXHRpbnQgcGlwZV9mZHNbMl07XFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWQgPSAwO1xcbitcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkICE9IDEpXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgbnJfcmVzZXJ2ZWQpO1xcbitcXG4rXFx0XFx0LyogRm9yY2UgdGhlIGZhdWx0IHRvIGVuc3VyZSB0aGUgcmVzZXJ2YXRpb24gaXMgY29uc3VtZWQgKi9cXG4rXFx0XFx0Kmh1Z2VfcHRyID0gMDtcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkICE9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgbnJfcmVzZXJ2ZWQpO1xcbitcXG4rXFx0XFx0aWYgKHBpcGUocGlwZV9mZHMpICE9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwicGlwZSBmYWlsZWRcXFwiKTtcXG4rXFxuK1xcdFxcdHBpZCA9IGZvcmsoKTtcXG4rXFx0XFx0aWYgKHBpZCBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiZm9yayBmYWlsZWRcXFwiKTtcXG4rXFxuK1xcdFxcdGlmIChwaWQgPT0gMCkge1xcbitcXHRcXHRcXHQvKiBDaGlsZDogU2ltcGx5IHdhaXQgZm9yIHRoZSBwYXJlbnQgKi9cXG4rXFx0XFx0XFx0Y2hhciBiO1xcbitcXG4rXFx0XFx0XFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xcbitcXHRcXHRcXHRpZiAocmVhZChwaXBlX2Zkc1swXSwgXFx1MDAyNmIsIDEpIFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJjaGlsZCByZWFkIGZhaWxlZFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0LyogUGFyZW50ICovXFxuK1xcdFxcdGNsb3NlKHBpcGVfZmRzWzBdKTtcXG4rXFxuK1xcdFxcdC8qIEZpcnN0IHVubWFwLCB0aGlzIHdpbGwgY2xvc2UgdGhlIHZtYSAqL1xcbitcXHRcXHRpZiAobXVubWFwKGh1Z2VfcHRyLCBtbWFwX3NpemUpICE9IDApIHtcXG4rXFx0XFx0XFx0a2lsbChwaWQsIFNJR0tJTEwpO1xcbitcXHRcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIm11bm1hcCBmYWlsZWRcXFwiKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcXG4rXFx0XFx0aWYgKG5yX3Jlc2VydmVkID09IFVMT05HX01BWCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXFxcIkFmdGVyIHRoZSBtdW5tYXAsIEh1Z2VQYWdlc19Sc3ZkIHVuZGVyZmxvd2VkIVxcXFxuXFxcIik7XFxuK1xcdFxcdH0gZWxzZSBpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIlVuZGVyZmxvdyBub3QgcHJlc2VudCFcXFxcblxcXCIpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRrc2Z0X2V4aXRfZmFpbF9tc2coXFxcIlVuZXhwZWN0ZWQgSHVnZVBhZ2VzX1JzdmQ9JWxkIGFmdGVyIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIG5yX3Jlc2VydmVkKTtcXG4rXFx0XFx0fVxcbitcXHRcXHQvKiBNYWtlIHRoZSBjaGlsZCBleGl0LCB0aGlzIHNob3VsZCByZXN0b3JlIEh1Z2VQYWdlc19Sc3ZkIHRvIDAgKi9cXG4rXFx0XFx0aWYgKHdyaXRlKHBpcGVfZmRzWzFdLCBcXHUwMDI2bnJfcmVzZXJ2ZWQsIDEpIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRraWxsKHBpZCwgU0lHS0lMTCk7XFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwid3JpdGUgZmFpbGVkXFxcIik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0Y2xvc2UocGlwZV9mZHNbMV0pO1xcbitcXHRcXHRpZiAod2FpdHBpZChwaWQsIE5VTEwsIDApIFxcdTAwM2M9IDApXFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwid3JpdGUgZmFpbGVkXFxcIik7XFxuK1xcbitcXHRcXHRucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpO1xcbitcXHRcXHRpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xcbitcXHRcXHRcXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXFxcIkFmdGVyIHRoZSBjaGlsZCBkaWVzLCBIdWdlUGFnZXNfUnN2ZCBpcyBwcm9wZXJseSBzZXQgdG8gMFxcXFxuXFxcIik7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGtzZnRfZXhpdF9mYWlsX21zZyhcXFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgdGhlIGNoaWxkIHRlcm1pbmF0aW9uIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIG5yX3Jlc2VydmVkKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuIFxcdGtzZnRfZmluaXNoZWQoKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxODozMzo1MS4wNDc5Mzk4MDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MDI3MDIyMjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZTc2ZjJmNjI1OWVjNTM0NTViMDk0MjI2ZjA4Mjk3ZTY3ZmI4YmFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjcgMTg6MzM6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggZDc5MTdkY2UzYWJhYy4uNTg0MDU0NzM2Y2U5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcbkBAIC00NDksNiArNDQ5LDE1IEBAIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiBcdHJldHVybiByZWFkX251bShwYXRoKTtcbiB9XG4gXG4rdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3Jlc3ZfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxuK3tcbitcdGNoYXIgcGF0aFtQQVRIX01BWF07XG4rXG4rXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcInJlc3ZfaHVnZXBhZ2VzXCIpO1xuK1xuK1x0cmV0dXJuIHJlYWRfbnVtKHBhdGgpO1xuK31cbitcbiBzdGF0aWMgYm9vbCBfX2h1Z2V0bGJfc2V0dXAodW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZnJlZSA9IGh1Z2V0bGJfZnJlZV9wYWdlcyhzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1Yi4uNTQ4ZTlkMjg4ZDFkMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhcbkBAIC05OCw2ICs5OCw3IEBAIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbit1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBodWdldGxiX3NhdmVfc2V0dGluZ3Modm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jXG5pbmRleCBmOTQ1NDllZmNjNmZmLi42YWE0MmYwNjQyNzlkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXRsYl9tYWR2X3ZzX21hcC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdldGxiX21hZHZfdnNfbWFwLmNcbkBAIC0xNSwxMyArMTUsMjAgQEBcbiAgKlxuICAqICBUb3VjaGluZyB0aGUgZmlyc3QgcGFnZSBhZnRlciB0aHJlYWQzJ3MgYWxsb2NhdGlvbiB3aWxsIHJhaXNlIGEgU0lHQlVTXG4gICpcbisgKiAgV2Ugc2V0dXAgYSAybmQgdGVzdCB3aGVyZSB3ZSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLCB0aGVuIHVubWFwIHRoZSBwYWdlIGluXG4rICogIHRoZSBwYXJlbnQgd2hpbGUgdGhlIGNoaWxkIHdhaXRzIGFuZCB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBubyB1bmRlcmZsb3dcbisgKiAgb2YgdGhlIHJlc2VydmVkIGNvdW50LlxuKyAqXG4gICogIEF1dGhvcjogQnJlbm8gTGVpdGFvIFx1MDAzY2xlaXRhb0BkZWJpYW4ub3JnXHUwMDNlXG4gICovXG4rI2luY2x1ZGUgXHUwMDNjbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzaWduYWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdGRsaWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9tbWFuLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N5cy93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidm1fdXRpbC5oXCJcbkBAIC04Niw3ICs5Myw3IEBAIGludCBtYWluKHZvaWQpXG4gXHRpbnQgbWF4ID0gMTA7XG4gXG4gXHRrc2Z0X3ByaW50X2hlYWRlcigpO1xuLVx0a3NmdF9zZXRfcGxhbigxKTtcbitcdGtzZnRfc2V0X3BsYW4oMyk7XG4gXG4gXHRpZiAoIWh1Z2V0bGJfc2V0dXBfZGVmYXVsdF9leGFjdCgxKSlcbiBcdFx0a3NmdF9leGl0X3NraXAoXCJUaGlzIHRlc3QgbmVlZHMgb25lIGFuZCBvbmx5IG9uZSBwYWdlIHRvIGV4ZWN1dGUuIEdvdCAlbHVcXG5cIixcbkBAIC0xMjAsNSArMTI3LDgwIEBAIGludCBtYWluKHZvaWQpXG4gXHR9XG4gXG4gXHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCJObyB1bmV4cGVjdGVkIGh1Z2UgcGFnZSBhbGxvY2F0aW9uc1xcblwiKTtcbitcdGh1Z2VfcHRyID0gbW1hcChOVUxMLCBtbWFwX3NpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsXG4rXHRcdFx0TUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTIHwgTUFQX0hVR0VUTEIsIC0xLCAwKTtcbitcbitcdGlmICgodW5zaWduZWQgbG9uZylodWdlX3B0ciA9PSAtMSlcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiRmFpbGVkIHRvIGFsbG9jYXRlIGh1Z2UgcGFnZVxcblwiKTtcbitcbitcdHtcbitcdFx0cGlkX3QgcGlkO1xuK1x0XHRpbnQgcGlwZV9mZHNbMl07XG4rXHRcdHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWQgPSAwO1xuK1xuK1x0XHRucl9yZXNlcnZlZCA9IGh1Z2V0bGJfbnJfcmVzdl9wYWdlcyhkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpO1xuK1x0XHRpZiAobnJfcmVzZXJ2ZWQgIT0gMSlcbitcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCJVbmV4cGVjdGVkIG51bWJlciBvZiByZXNlcnZlZCBwYWdlczogJWx1LCBleHBlY3RlZCAxXFxuXCIsXG4rXHRcdFx0XHRcdCAgIG5yX3Jlc2VydmVkKTtcbitcbitcdFx0LyogRm9yY2UgdGhlIGZhdWx0IHRvIGVuc3VyZSB0aGUgcmVzZXJ2YXRpb24gaXMgY29uc3VtZWQgKi9cbitcdFx0Kmh1Z2VfcHRyID0gMDtcbitcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbitcdFx0aWYgKG5yX3Jlc2VydmVkICE9IDApXG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgcGFnZXM6ICVsdSwgZXhwZWN0ZWQgMFxcblwiLFxuK1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4rXG4rXHRcdGlmIChwaXBlKHBpcGVfZmRzKSAhPSAwKVxuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcInBpcGUgZmFpbGVkXCIpO1xuK1xuK1x0XHRwaWQgPSBmb3JrKCk7XG4rXHRcdGlmIChwaWQgXHUwMDNjIDApXG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiZm9yayBmYWlsZWRcIik7XG4rXG4rXHRcdGlmIChwaWQgPT0gMCkge1xuK1x0XHRcdC8qIENoaWxkOiBTaW1wbHkgd2FpdCBmb3IgdGhlIHBhcmVudCAqL1xuK1x0XHRcdGNoYXIgYjtcbitcbitcdFx0XHRjbG9zZShwaXBlX2Zkc1sxXSk7XG4rXHRcdFx0aWYgKHJlYWQocGlwZV9mZHNbMF0sIFx1MDAyNmIsIDEpIFx1MDAzYyAwKVxuK1x0XHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiY2hpbGQgcmVhZCBmYWlsZWRcIik7XG4rXHRcdFx0cmV0dXJuIDA7XG4rXHRcdH1cbitcbitcdFx0LyogUGFyZW50ICovXG4rXHRcdGNsb3NlKHBpcGVfZmRzWzBdKTtcbitcbitcdFx0LyogRmlyc3QgdW5tYXAsIHRoaXMgd2lsbCBjbG9zZSB0aGUgdm1hICovXG4rXHRcdGlmIChtdW5tYXAoaHVnZV9wdHIsIG1tYXBfc2l6ZSkgIT0gMCkge1xuK1x0XHRcdGtpbGwocGlkLCBTSUdLSUxMKTtcbitcdFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCJtdW5tYXAgZmFpbGVkXCIpO1xuK1x0XHR9XG4rXG4rXHRcdG5yX3Jlc2VydmVkID0gaHVnZXRsYl9ucl9yZXN2X3BhZ2VzKGRlZmF1bHRfaHVnZV9wYWdlX3NpemUoKSk7XG4rXHRcdGlmIChucl9yZXNlcnZlZCA9PSBVTE9OR19NQVgpIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X2ZhaWwoXCJBZnRlciB0aGUgbXVubWFwLCBIdWdlUGFnZXNfUnN2ZCB1bmRlcmZsb3dlZCFcXG5cIik7XG4rXHRcdH0gZWxzZSBpZiAobnJfcmVzZXJ2ZWQgPT0gMCkge1xuK1x0XHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcIlVuZGVyZmxvdyBub3QgcHJlc2VudCFcXG5cIik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgbXVubWFwLCBzaG91bGQgYmUgMCBvciAtMS4gIFJlcGVhdCB0aGUgdGVzdFxcblwiLFxuK1x0XHRcdFx0XHQgICBucl9yZXNlcnZlZCk7XG4rXHRcdH1cbitcdFx0LyogTWFrZSB0aGUgY2hpbGQgZXhpdCwgdGhpcyBzaG91bGQgcmVzdG9yZSBIdWdlUGFnZXNfUnN2ZCB0byAwICovXG4rXHRcdGlmICh3cml0ZShwaXBlX2Zkc1sxXSwgXHUwMDI2bnJfcmVzZXJ2ZWQsIDEpIFx1MDAzYyAwKSB7XG4rXHRcdFx0a2lsbChwaWQsIFNJR0tJTEwpO1xuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIndyaXRlIGZhaWxlZFwiKTtcbitcdFx0fVxuK1x0XHRjbG9zZShwaXBlX2Zkc1sxXSk7XG4rXHRcdGlmICh3YWl0cGlkKHBpZCwgTlVMTCwgMCkgXHUwMDNjPSAwKVxuK1x0XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIndyaXRlIGZhaWxlZFwiKTtcbitcbitcdFx0bnJfcmVzZXJ2ZWQgPSBodWdldGxiX25yX3Jlc3ZfcGFnZXMoZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpKTtcbitcdFx0aWYgKG5yX3Jlc2VydmVkID09IDApIHtcbitcdFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCJBZnRlciB0aGUgY2hpbGQgZGllcywgSHVnZVBhZ2VzX1JzdmQgaXMgcHJvcGVybHkgc2V0IHRvIDBcXG5cIik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiVW5leHBlY3RlZCBIdWdlUGFnZXNfUnN2ZD0lbGQgYWZ0ZXIgdGhlIGNoaWxkIHRlcm1pbmF0aW9uIG11bm1hcCwgc2hvdWxkIGJlIDAgb3IgLTEuICBSZXBlYXQgdGhlIHRlc3RcXG5cIixcbitcdFx0XHRcdFx0ICAgbnJfcmVzZXJ2ZWQpO1xuK1x0XHR9XG4rXHR9XG4gXHRrc2Z0X2ZpbmlzaGVkKCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTEuMDQ3OTQwOTE2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAyNzAwMDY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgdGhyZWUgZmlsZXMgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5OiBgaHVnZXBhZ2Vfc2V0dGluZ3MuY2AsIGBodWdlcGFnZV9zZXR0aW5ncy5oYCwgYW5kIGBodWdldGxiX21hZHZfdnNfbWFwLmNgLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIHRoZXkgYXJlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGh1Z2V0bGJfbnJfcmVzdl9wYWdlc2AsIHRvIHJlYWQgdGhlIHJlc2VydmVkIGh1Z2VwYWdlIGNvdW50IGZyb20gc3lzZnMuIEFuZCB0aGVyZSdzIGEgbmV3IHRlc3QgY2FzZSB3aXRoaW4gYGh1Z2V0bGJfbWFkdl92c19tYXAuY2AgZGVzaWduZWQgdG8gcHJldmVudCBhbiB1bmRlcmZsb3cgc2l0dWF0aW9uIHdpdGggcmVzZXJ2ZWQgY291bnRzIGR1cmluZyBhIHBhcmVudC9jaGlsZCBwcm9jZXNzIGludGVyYWN0aW9uIGludm9sdmluZyB1bm1hcHBpbmcgcGFnZXMuXG5cblRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhpczogYmFzZWQgb24gdGhlIGZpbGVzIHRvdWNoZWQgYW5kIHRoZSBkZXNjcmlwdGlvbnMgcHJvdmlkZWQsIGl0J3MgY2xlYXIgdGhpcyBpcyAqc29sZWx5KiBhYm91dCBpbXByb3ZpbmcgdGhlIHNlbGZ0ZXN0cyB0aGVtc2VsdmVzLiBJdCdzIG5vdCBhbHRlcmluZyBjb3JlIGtlcm5lbCBsb2dpYywgbm9yIGlzIGl0IHRvdWNoaW5nIGRyaXZlcnMgb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzbid0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGVuaGFuY2VtZW50cyB0byBvdXIgdGVzdCBzdWl0ZSwgd2hpY2ggaXMgZ3JlYXQsIGJ1dCBpcnJlbGV2YW50IGFzIGZhciBhcyBjaGFuZ2VzIHRoYXQgd291bGQganVzdGlmeSBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGRpZmYgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLi4uWWVwLCBpdCdzIGFsbCB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qYCBkaXJlY3RvcnkuIE5vIGtlcm5lbCBjb2RlIGlzIGJlaW5nIG1vZGlmaWVkLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTXkgcmVhc29uaW5nIHdpbGwgYmUgY29uY2lzZSBidXQgYWNjdXJhdGU6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgc2VsZnRlc3RzIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIiBUaGF0IHNob3VsZCBiZSBjbGVhciBhbmQgdG8gdGhlIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTg6MzM6NTcuMDc0OTQ0MTU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHNlbGZ0ZXN0cyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxODozMzo1Ny4wNzQ5NjM2MzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownttqs[1] Phase: Running StartedAt: 2026-08-27 18:34:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownttqs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-27 18:34:08 +0000 UTC FinishedAt: 2026-08-27 18:34:13 +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,}