Name: series-workflow96g4f Phase: Failed StartedAt: 2026-09-01 04:01:11 +0000 UTC FinishedAt: 2026-09-01 04:32:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96g4f[0] Phase: Succeeded StartedAt: 2026-09-01 04:01:11 +0000 UTC FinishedAt: 2026-09-01 04:32:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96g4f[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 04:01:11 +0000 UTC FinishedAt: 2026-09-01 04:32:47 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwNDozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDA0OjMyOjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcbmluZGV4IGUyODg4NGNlM2FiMzkuLjEzOTQ2NTA1NGY4NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcbkBAIC0yLDggJiM0MzsyLDcgQEBcbiBcbiAvKiBUZXN0IGhhcmR3YXJlIGNoZWNrc3VtIG9mZmxvYWQ6IFJ4ICYjNDM7IFR4LCBJUHY0ICYjNDM7IElQdjYsIFRDUCAmIzQzOyBVRFAuXG4gICpcbi0gKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLiBGb3IgdGhpcyByZWFzb24gaXRcbi0gKiBpcyBub3QgaW50ZWdyYXRlZCBpbiBrc2VsZnRlc3RzLlxuJiM0MzsgKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLlxuICAqXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcbiAgKlxuQEAgLTYyMCw2ICYjNDM7NjE5LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfdGNwKHZvaWQgKnRoLCBpbnQgbGVuKVxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCp0Y3BoKSB8fCB0Y3BoLVx1MDAzZWRlc3QgIT0gaHRvbnMoY2ZnX3BvcnRfZHN0KSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuJiM0MztcdGlmICh0Y3BoLVx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHRjcGgtXHUwMDNlc291cmNlKSwgdGNwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY0Nyw2ICYjNDM7NjQ5LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfdWRwKHZvaWQgKnRoLCBpbnQgbGVuKVxuIFx0XHRyZXR1cm4gcmVjdl92ZXJpZnlfcGFja2V0X3VkcF9lbmNhcCh1ZHBoICYjNDM7IDEsXG4gXHRcdFx0XHRcdFx0ICAgIGxlbiAtIHNpemVvZigqdWRwaCkpO1xuIFxuJiM0MztcdGlmICghY2ZnX3plcm9fc3VtIFx1MDAyNlx1MDAyNiB1ZHBoLVx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHVkcGgtXHUwMDNlc291cmNlKSwgdWRwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY1OSw2ICYjNDM7NjY0LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2NCh2b2lkICpuaCwgaW50IGxlbilcbiBcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqaXBoKSB8fCBpcGgtXHUwMDNlcHJvdG9jb2wgIT0gcHJvdG8pXG4gXHRcdHJldHVybiAtMTtcbiBcbiYjNDM7XHRpZiAoaXBoLVx1MDAzZXNhZGRyICE9IGNmZ19zYWRkcjQuc2luX2FkZHIuc19hZGRyKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdGlwX2xlbiA9IG50b2hzKGlwaC1cdTAwM2V0b3RfbGVuKTtcbiBcdGlmIChpcF9sZW4gXHUwMDNlIGxlbiB8fCBpcF9sZW4gXHUwMDNjIHNpemVvZigqaXBoKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTY4MCw2ICYjNDM7Njg4LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2Nih2b2lkICpuaCwgaW50IGxlbilcbiBcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqaXA2aCkgfHwgaXA2aC1cdTAwM2VuZXh0aGRyICE9IHByb3RvKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKG1lbWNtcChcdTAwMjZpcDZoLVx1MDAzZXNhZGRyLCBcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXHUwMDNlc2FkZHIpKSlcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRwYXlsb2FkX2xlbiA9IG50b2hzKGlwNmgtXHUwMDNlcGF5bG9hZF9sZW4pO1xuIFx0aWYgKHBheWxvYWRfbGVuIFx1MDAzZSBsZW4gLSBzaXplb2YoKmlwNmgpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtOTQwLDYgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxuIFx0XHRcdGNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjtcbiBcdFx0XHRidWYgPSBidWlsZF9wYWNrZXQoX2J1Ziwgc2l6ZW9mKF9idWYpLCBcdTAwMjZsZW4pO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogYXZvaWQgYnVyc3RpbmcgKi9cbiYjNDM7XHRcdHVzbGVlcCgyMCk7XG4gXHR9XG4gXG4gXHRpZiAoY2xvc2UoZmQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwNDozMjozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKaW5kZXggZTI4ODg0Y2UzYWIzOS4uMTM5NDY1MDU0Zjg1YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKQEAgLTIsOCAmIzQzOzIsNyBAQAogCiAvKiBUZXN0IGhhcmR3YXJlIGNoZWNrc3VtIG9mZmxvYWQ6IFJ4ICYjNDM7IFR4LCBJUHY0ICYjNDM7IElQdjYsIFRDUCAmIzQzOyBVRFAuCiAgKgotICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy4gRm9yIHRoaXMgcmVhc29uIGl0Ci0gKiBpcyBub3QgaW50ZWdyYXRlZCBpbiBrc2VsZnRlc3RzLgomIzQzOyAqIFRoZSB0ZXN0IHJ1bnMgb24gdHdvIG1hY2hpbmVzIHRvIGV4ZXJjaXNlIHRoZSBOSUMuCiAgKgogICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSkKICAqCkBAIC02MjAsNiAmIzQzOzYxOSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3RjcCh2b2lkICp0aCwgaW50IGxlbikKIAlpZiAobGVuICZsdDsgc2l6ZW9mKCp0Y3BoKSB8fCB0Y3BoLSZndDtkZXN0ICE9IGh0b25zKGNmZ19wb3J0X2RzdCkpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAodGNwaC0mZ3Q7c291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJcmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModGNwaC0mZ3Q7c291cmNlKSwgdGNwaC0mZ3Q7Y2hlY2spOwogfQogCkBAIC02NDcsNiAmIzQzOzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbikKIAkJcmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCAmIzQzOyAxLAogCQkJCQkJICAgIGxlbiAtIHNpemVvZigqdWRwaCkpOwogCiYjNDM7CWlmICghY2ZnX3plcm9fc3VtICZhbXA7JmFtcDsgdWRwaC0mZ3Q7c291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJcmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModWRwaC0mZ3Q7c291cmNlKSwgdWRwaC0mZ3Q7Y2hlY2spOwogfQogCkBAIC02NTksNiAmIzQzOzY2NCw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X2lwdjQodm9pZCAqbmgsIGludCBsZW4pCiAJaWYgKGxlbiAmbHQ7IHNpemVvZigqaXBoKSB8fCBpcGgtJmd0O3Byb3RvY29sICE9IHByb3RvKQogCQlyZXR1cm4gLTE7CiAKJiM0MzsJaWYgKGlwaC0mZ3Q7c2FkZHIgIT0gY2ZnX3NhZGRyNC5zaW5fYWRkci5zX2FkZHIpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaXBfbGVuID0gbnRvaHMoaXBoLSZndDt0b3RfbGVuKTsKIAlpZiAoaXBfbGVuICZndDsgbGVuIHx8IGlwX2xlbiAmbHQ7IHNpemVvZigqaXBoKSkKIAkJcmV0dXJuIC0xOwpAQCAtNjgwLDYgJiM0Mzs2ODgsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY2KHZvaWQgKm5oLCBpbnQgbGVuKQogCWlmIChsZW4gJmx0OyBzaXplb2YoKmlwNmgpIHx8IGlwNmgtJmd0O25leHRoZHIgIT0gcHJvdG8pCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAobWVtY21wKCZhbXA7aXA2aC0mZ3Q7c2FkZHIsICZhbXA7Y2ZnX3NhZGRyNi5zaW42X2FkZHIsIHNpemVvZihpcDZoLSZndDtzYWRkcikpKQomIzQzOwkJcmV0dXJuIC0xOwomIzQzOwogCXBheWxvYWRfbGVuID0gbnRvaHMoaXA2aC0mZ3Q7cGF5bG9hZF9sZW4pOwogCWlmIChwYXlsb2FkX2xlbiAmZ3Q7IGxlbiAtIHNpemVvZigqaXA2aCkpCiAJCXJldHVybiAtMTsKQEAgLTk0MCw2ICYjNDM7OTUxLDkgQEAgc3RhdGljIHZvaWQgZG9fdHgodm9pZCkKIAkJCWNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjsKIAkJCWJ1ZiA9IGJ1aWxkX3BhY2tldChfYnVmLCBzaXplb2YoX2J1ZiksICZhbXA7bGVuKTsKIAkJfQomIzQzOwomIzQzOwkJLyogYXZvaWQgYnVyc3RpbmcgKi8KJiM0MzsJCXVzbGVlcCgyMCk7CiAJfQogCiAJaWYgKGNsb3NlKGZkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDQ6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NgoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcm9iYWJseSogbm90IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIGJ1dCB3ZSBuZWVkIHRvIGJlIHJpZ29yb3VzLiBJdCYjMzk7cyBpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgZGlyZWN0b3J5LCB3aGljaCBnZW5lcmFsbHkgcG9pbnRzIHRvIHVzZXJzcGFjZSB0ZXN0IGNvZGUuIFRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHRvdWNoIGFueSBrZXJuZWwgY29kZT8gTm8sIGl0JiMzOTtzIGV4cGxpY2l0bHkgY29uZmluZWQgdG8gYGNzdW0uY2Agd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZmFsbHMgdW5kZXIgdGhlICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgY2F0ZWdvcnksIHNwZWNpZmljYWxseTogbW9kaWZpY2F0aW9ucyByZXN0cmljdGVkIHRvIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIG9yICpzb2xlbHkqIHRvb2xzL3NlbGZ0ZXN0cy4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hhdCB3ZSBoYXZlIGhlcmUuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0ICphbnkqIG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhpcyBjb21taXQuIExldCYjMzk7cyBtYWtlIHN1cmUgd2l0aCBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgaWYgcmVxdWlyZWQuIFdhaXQsIHRoZSBwcm92aWRlZCBkaWZmICppcyogdGhlIGVudGlyZSBjb21taXQuIFRoYXQmIzM5O3MgY29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzYuIFRoaXMgY29uZmlybXMgdGhhdCBvbmx5IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY2AgaXMgYmVpbmcgbW9kaWZpZWQuCgpCYXNlZCBvbiB0aGlzLCBpdCYjMzk7cyBjbGVhcjogY2hhbmdlcyB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYCBhcmUgZm9yICp1c2Vyc3BhY2UqIHRlc3QgdG9vbHMuIFRoZXkgZG9uJiMzOTt0IGludHJvZHVjZSBvciBjaGFuZ2UgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGRyaXZlcnMsIHRoZXJlZm9yZSBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLgoKTm93LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYC4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2AgbGlzdHMgYXJlIGdvaW5nIHRvIGJlIGVtcHR5LiBUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGNsZWFybHkgc3RhdGU6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBjb250YWlucyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC4mIzM0OyBGaW5hbGx5LCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLgoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozMS4zMTk4NjM4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTcxMTEyNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzEuMzE5ODY5NDQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDEwMTIyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDEgMDQ6MzI6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xcbmluZGV4IGUyODg4NGNlM2FiMzkuLjEzOTQ2NTA1NGY4NWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xcbkBAIC0yLDggKzIsNyBAQFxcbiBcXG4gLyogVGVzdCBoYXJkd2FyZSBjaGVja3N1bSBvZmZsb2FkOiBSeCArIFR4LCBJUHY0ICsgSVB2NiwgVENQICsgVURQLlxcbiAgKlxcbi0gKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLiBGb3IgdGhpcyByZWFzb24gaXRcXG4tICogaXMgbm90IGludGVncmF0ZWQgaW4ga3NlbGZ0ZXN0cy5cXG4rICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy5cXG4gICpcXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcXG4gICpcXG5AQCAtNjIwLDYgKzYxOSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3RjcCh2b2lkICp0aCwgaW50IGxlbilcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqdGNwaCkgfHwgdGNwaC1cXHUwMDNlZGVzdCAhPSBodG9ucyhjZmdfcG9ydF9kc3QpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRpZiAodGNwaC1cXHUwMDNlc291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHRjcGgtXFx1MDAzZXNvdXJjZSksIHRjcGgtXFx1MDAzZWNoZWNrKTtcXG4gfVxcbiBcXG5AQCAtNjQ3LDYgKzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbilcXG4gXFx0XFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCArIDEsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBsZW4gLSBzaXplb2YoKnVkcGgpKTtcXG4gXFxuK1xcdGlmICghY2ZnX3plcm9fc3VtIFxcdTAwMjZcXHUwMDI2IHVkcGgtXFx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxcbitcXHRcXHRyZXR1cm4gLTE7XFxuK1xcbiBcXHRyZXR1cm4gcmVjdl92ZXJpZnlfY3N1bSh0aCwgbGVuLCBudG9ocyh1ZHBoLVxcdTAwM2Vzb3VyY2UpLCB1ZHBoLVxcdTAwM2VjaGVjayk7XFxuIH1cXG4gXFxuQEAgLTY1OSw2ICs2NjQsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY0KHZvaWQgKm5oLCBpbnQgbGVuKVxcbiBcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCppcGgpIHx8IGlwaC1cXHUwMDNlcHJvdG9jb2wgIT0gcHJvdG8pXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFxuK1xcdGlmIChpcGgtXFx1MDAzZXNhZGRyICE9IGNmZ19zYWRkcjQuc2luX2FkZHIuc19hZGRyKVxcbitcXHRcXHRyZXR1cm4gLTE7XFxuK1xcbiBcXHRpcF9sZW4gPSBudG9ocyhpcGgtXFx1MDAzZXRvdF9sZW4pO1xcbiBcXHRpZiAoaXBfbGVuIFxcdTAwM2UgbGVuIHx8IGlwX2xlbiBcXHUwMDNjIHNpemVvZigqaXBoKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC02ODAsNiArNjg4LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2Nih2b2lkICpuaCwgaW50IGxlbilcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqaXA2aCkgfHwgaXA2aC1cXHUwMDNlbmV4dGhkciAhPSBwcm90bylcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4rXFx0aWYgKG1lbWNtcChcXHUwMDI2aXA2aC1cXHUwMDNlc2FkZHIsIFxcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXFx1MDAzZXNhZGRyKSkpXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdHBheWxvYWRfbGVuID0gbnRvaHMoaXA2aC1cXHUwMDNlcGF5bG9hZF9sZW4pO1xcbiBcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZSBsZW4gLSBzaXplb2YoKmlwNmgpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuQEAgLTk0MCw2ICs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxcbiBcXHRcXHRcXHRjZmdfcGF5bG9hZF9sZW4gPSByYW5kKCkgJSBNQVhfUEFZTE9BRF9MRU47XFxuIFxcdFxcdFxcdGJ1ZiA9IGJ1aWxkX3BhY2tldChfYnVmLCBzaXplb2YoX2J1ZiksIFxcdTAwMjZsZW4pO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBhdm9pZCBidXJzdGluZyAqL1xcbitcXHRcXHR1c2xlZXAoMjApO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2xvc2UoZmQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozMS44MjE0MjY2NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0Njk1Mzg1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDA0OjMyOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuaW5kZXggZTI4ODg0Y2UzYWIzOS4uMTM5NDY1MDU0Zjg1YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuQEAgLTIsOCArMiw3IEBAXG4gXG4gLyogVGVzdCBoYXJkd2FyZSBjaGVja3N1bSBvZmZsb2FkOiBSeCArIFR4LCBJUHY0ICsgSVB2NiwgVENQICsgVURQLlxuICAqXG4tICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy4gRm9yIHRoaXMgcmVhc29uIGl0XG4tICogaXMgbm90IGludGVncmF0ZWQgaW4ga3NlbGZ0ZXN0cy5cbisgKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLlxuICAqXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcbiAgKlxuQEAgLTYyMCw2ICs2MTksOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF90Y3Aodm9pZCAqdGgsIGludCBsZW4pXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnRjcGgpIHx8IHRjcGgtXHUwMDNlZGVzdCAhPSBodG9ucyhjZmdfcG9ydF9kc3QpKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4rXHRpZiAodGNwaC1cdTAwM2Vzb3VyY2UgIT0gaHRvbnMoY2ZnX3BvcnRfc3JjKSlcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModGNwaC1cdTAwM2Vzb3VyY2UpLCB0Y3BoLVx1MDAzZWNoZWNrKTtcbiB9XG4gXG5AQCAtNjQ3LDYgKzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbilcbiBcdFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCArIDEsXG4gXHRcdFx0XHRcdFx0ICAgIGxlbiAtIHNpemVvZigqdWRwaCkpO1xuIFxuK1x0aWYgKCFjZmdfemVyb19zdW0gXHUwMDI2XHUwMDI2IHVkcGgtXHUwMDNlc291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpXG4rXHRcdHJldHVybiAtMTtcbitcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHVkcGgtXHUwMDNlc291cmNlKSwgdWRwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY1OSw2ICs2NjQsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY0KHZvaWQgKm5oLCBpbnQgbGVuKVxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpIHx8IGlwaC1cdTAwM2Vwcm90b2NvbCAhPSBwcm90bylcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKGlwaC1cdTAwM2VzYWRkciAhPSBjZmdfc2FkZHI0LnNpbl9hZGRyLnNfYWRkcilcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0aXBfbGVuID0gbnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pO1xuIFx0aWYgKGlwX2xlbiBcdTAwM2UgbGVuIHx8IGlwX2xlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtNjgwLDYgKzY4OCw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X2lwdjYodm9pZCAqbmgsIGludCBsZW4pXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmlwNmgpIHx8IGlwNmgtXHUwMDNlbmV4dGhkciAhPSBwcm90bylcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKG1lbWNtcChcdTAwMjZpcDZoLVx1MDAzZXNhZGRyLCBcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXHUwMDNlc2FkZHIpKSlcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0cGF5bG9hZF9sZW4gPSBudG9ocyhpcDZoLVx1MDAzZXBheWxvYWRfbGVuKTtcbiBcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2UgbGVuIC0gc2l6ZW9mKCppcDZoKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTk0MCw2ICs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxuIFx0XHRcdGNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjtcbiBcdFx0XHRidWYgPSBidWlsZF9wYWNrZXQoX2J1Ziwgc2l6ZW9mKF9idWYpLCBcdTAwMjZsZW4pO1xuIFx0XHR9XG4rXG4rXHRcdC8qIGF2b2lkIGJ1cnN0aW5nICovXG4rXHRcdHVzbGVlcCgyMCk7XG4gXHR9XG4gXG4gXHRpZiAoY2xvc2UoZmQpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzEuODIxNDI4MjY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ2OTUxMjE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyAqcHJvYmFibHkqIG5vdCBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byBiZSByaWdvcm91cy4gSXQncyBpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgZGlyZWN0b3J5LCB3aGljaCBnZW5lcmFsbHkgcG9pbnRzIHRvIHVzZXJzcGFjZSB0ZXN0IGNvZGUuIFRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHRvdWNoIGFueSBrZXJuZWwgY29kZT8gTm8sIGl0J3MgZXhwbGljaXRseSBjb25maW5lZCB0byBgY3N1bS5jYCB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuXG5cbk5vdywgbGV0J3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZmFsbHMgdW5kZXIgdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY2F0ZWdvcnksIHNwZWNpZmljYWxseTogbW9kaWZpY2F0aW9ucyByZXN0cmljdGVkIHRvIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIG9yICpzb2xlbHkqIHRvb2xzL3NlbGZ0ZXN0cy4gVGhhdCdzIHByZWNpc2VseSB3aGF0IHdlIGhhdmUgaGVyZS4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIEknbGwgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0ICphbnkqIG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhpcyBjb21taXQuIExldCdzIG1ha2Ugc3VyZSB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBpZiByZXF1aXJlZC4gV2FpdCwgdGhlIHByb3ZpZGVkIGRpZmYgKmlzKiB0aGUgZW50aXJlIGNvbW1pdC4gVGhhdCdzIGNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2LiBUaGlzIGNvbmZpcm1zIHRoYXQgb25seSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNgIGlzIGJlaW5nIG1vZGlmaWVkLlxuXG5CYXNlZCBvbiB0aGlzLCBpdCdzIGNsZWFyOiBjaGFuZ2VzIHRvIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8uLi5gIGFyZSBmb3IgKnVzZXJzcGFjZSogdGVzdCB0b29scy4gVGhleSBkb24ndCBpbnRyb2R1Y2Ugb3IgY2hhbmdlIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLCB0aGVyZWZvcmUgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cblxuTm93LCBsZXQncyBwcmVwYXJlIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYCBsaXN0cyBhcmUgZ29pbmcgdG8gYmUgZW1wdHkuIFRoZSBgUmVhc29uaW5nYCBzaG91bGQgY2xlYXJseSBzdGF0ZTogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGNvbnRhaW5zIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiIEZpbmFsbHksIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuXG5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2LCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzYuMjkwOTQzMDg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozNi4yOTA5NjczMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow96g4f[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 04:01:11 +0000 UTC FinishedAt: 2026-09-01 04:32:37 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwNDozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDA0OjMyOjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcbmluZGV4IGUyODg4NGNlM2FiMzkuLjEzOTQ2NTA1NGY4NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcbkBAIC0yLDggJiM0MzsyLDcgQEBcbiBcbiAvKiBUZXN0IGhhcmR3YXJlIGNoZWNrc3VtIG9mZmxvYWQ6IFJ4ICYjNDM7IFR4LCBJUHY0ICYjNDM7IElQdjYsIFRDUCAmIzQzOyBVRFAuXG4gICpcbi0gKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLiBGb3IgdGhpcyByZWFzb24gaXRcbi0gKiBpcyBub3QgaW50ZWdyYXRlZCBpbiBrc2VsZnRlc3RzLlxuJiM0MzsgKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLlxuICAqXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcbiAgKlxuQEAgLTYyMCw2ICYjNDM7NjE5LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfdGNwKHZvaWQgKnRoLCBpbnQgbGVuKVxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCp0Y3BoKSB8fCB0Y3BoLVx1MDAzZWRlc3QgIT0gaHRvbnMoY2ZnX3BvcnRfZHN0KSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuJiM0MztcdGlmICh0Y3BoLVx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHRjcGgtXHUwMDNlc291cmNlKSwgdGNwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY0Nyw2ICYjNDM7NjQ5LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfdWRwKHZvaWQgKnRoLCBpbnQgbGVuKVxuIFx0XHRyZXR1cm4gcmVjdl92ZXJpZnlfcGFja2V0X3VkcF9lbmNhcCh1ZHBoICYjNDM7IDEsXG4gXHRcdFx0XHRcdFx0ICAgIGxlbiAtIHNpemVvZigqdWRwaCkpO1xuIFxuJiM0MztcdGlmICghY2ZnX3plcm9fc3VtIFx1MDAyNlx1MDAyNiB1ZHBoLVx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHVkcGgtXHUwMDNlc291cmNlKSwgdWRwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY1OSw2ICYjNDM7NjY0LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2NCh2b2lkICpuaCwgaW50IGxlbilcbiBcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqaXBoKSB8fCBpcGgtXHUwMDNlcHJvdG9jb2wgIT0gcHJvdG8pXG4gXHRcdHJldHVybiAtMTtcbiBcbiYjNDM7XHRpZiAoaXBoLVx1MDAzZXNhZGRyICE9IGNmZ19zYWRkcjQuc2luX2FkZHIuc19hZGRyKVxuJiM0MztcdFx0cmV0dXJuIC0xO1xuJiM0MztcbiBcdGlwX2xlbiA9IG50b2hzKGlwaC1cdTAwM2V0b3RfbGVuKTtcbiBcdGlmIChpcF9sZW4gXHUwMDNlIGxlbiB8fCBpcF9sZW4gXHUwMDNjIHNpemVvZigqaXBoKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTY4MCw2ICYjNDM7Njg4LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2Nih2b2lkICpuaCwgaW50IGxlbilcbiBcdGlmIChsZW4gXHUwMDNjIHNpemVvZigqaXA2aCkgfHwgaXA2aC1cdTAwM2VuZXh0aGRyICE9IHByb3RvKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKG1lbWNtcChcdTAwMjZpcDZoLVx1MDAzZXNhZGRyLCBcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXHUwMDNlc2FkZHIpKSlcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRwYXlsb2FkX2xlbiA9IG50b2hzKGlwNmgtXHUwMDNlcGF5bG9hZF9sZW4pO1xuIFx0aWYgKHBheWxvYWRfbGVuIFx1MDAzZSBsZW4gLSBzaXplb2YoKmlwNmgpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtOTQwLDYgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxuIFx0XHRcdGNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjtcbiBcdFx0XHRidWYgPSBidWlsZF9wYWNrZXQoX2J1Ziwgc2l6ZW9mKF9idWYpLCBcdTAwMjZsZW4pO1xuIFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0LyogYXZvaWQgYnVyc3RpbmcgKi9cbiYjNDM7XHRcdHVzbGVlcCgyMCk7XG4gXHR9XG4gXG4gXHRpZiAoY2xvc2UoZmQpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwNDozMjozMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKaW5kZXggZTI4ODg0Y2UzYWIzOS4uMTM5NDY1MDU0Zjg1YSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMKQEAgLTIsOCAmIzQzOzIsNyBAQAogCiAvKiBUZXN0IGhhcmR3YXJlIGNoZWNrc3VtIG9mZmxvYWQ6IFJ4ICYjNDM7IFR4LCBJUHY0ICYjNDM7IElQdjYsIFRDUCAmIzQzOyBVRFAuCiAgKgotICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy4gRm9yIHRoaXMgcmVhc29uIGl0Ci0gKiBpcyBub3QgaW50ZWdyYXRlZCBpbiBrc2VsZnRlc3RzLgomIzQzOyAqIFRoZSB0ZXN0IHJ1bnMgb24gdHdvIG1hY2hpbmVzIHRvIGV4ZXJjaXNlIHRoZSBOSUMuCiAgKgogICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSkKICAqCkBAIC02MjAsNiAmIzQzOzYxOSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3RjcCh2b2lkICp0aCwgaW50IGxlbikKIAlpZiAobGVuICZsdDsgc2l6ZW9mKCp0Y3BoKSB8fCB0Y3BoLSZndDtkZXN0ICE9IGh0b25zKGNmZ19wb3J0X2RzdCkpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAodGNwaC0mZ3Q7c291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJcmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModGNwaC0mZ3Q7c291cmNlKSwgdGNwaC0mZ3Q7Y2hlY2spOwogfQogCkBAIC02NDcsNiAmIzQzOzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbikKIAkJcmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCAmIzQzOyAxLAogCQkJCQkJICAgIGxlbiAtIHNpemVvZigqdWRwaCkpOwogCiYjNDM7CWlmICghY2ZnX3plcm9fc3VtICZhbXA7JmFtcDsgdWRwaC0mZ3Q7c291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJcmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModWRwaC0mZ3Q7c291cmNlKSwgdWRwaC0mZ3Q7Y2hlY2spOwogfQogCkBAIC02NTksNiAmIzQzOzY2NCw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X2lwdjQodm9pZCAqbmgsIGludCBsZW4pCiAJaWYgKGxlbiAmbHQ7IHNpemVvZigqaXBoKSB8fCBpcGgtJmd0O3Byb3RvY29sICE9IHByb3RvKQogCQlyZXR1cm4gLTE7CiAKJiM0MzsJaWYgKGlwaC0mZ3Q7c2FkZHIgIT0gY2ZnX3NhZGRyNC5zaW5fYWRkci5zX2FkZHIpCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaXBfbGVuID0gbnRvaHMoaXBoLSZndDt0b3RfbGVuKTsKIAlpZiAoaXBfbGVuICZndDsgbGVuIHx8IGlwX2xlbiAmbHQ7IHNpemVvZigqaXBoKSkKIAkJcmV0dXJuIC0xOwpAQCAtNjgwLDYgJiM0Mzs2ODgsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY2KHZvaWQgKm5oLCBpbnQgbGVuKQogCWlmIChsZW4gJmx0OyBzaXplb2YoKmlwNmgpIHx8IGlwNmgtJmd0O25leHRoZHIgIT0gcHJvdG8pCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAobWVtY21wKCZhbXA7aXA2aC0mZ3Q7c2FkZHIsICZhbXA7Y2ZnX3NhZGRyNi5zaW42X2FkZHIsIHNpemVvZihpcDZoLSZndDtzYWRkcikpKQomIzQzOwkJcmV0dXJuIC0xOwomIzQzOwogCXBheWxvYWRfbGVuID0gbnRvaHMoaXA2aC0mZ3Q7cGF5bG9hZF9sZW4pOwogCWlmIChwYXlsb2FkX2xlbiAmZ3Q7IGxlbiAtIHNpemVvZigqaXA2aCkpCiAJCXJldHVybiAtMTsKQEAgLTk0MCw2ICYjNDM7OTUxLDkgQEAgc3RhdGljIHZvaWQgZG9fdHgodm9pZCkKIAkJCWNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjsKIAkJCWJ1ZiA9IGJ1aWxkX3BhY2tldChfYnVmLCBzaXplb2YoX2J1ZiksICZhbXA7bGVuKTsKIAkJfQomIzQzOwomIzQzOwkJLyogYXZvaWQgYnVyc3RpbmcgKi8KJiM0MzsJCXVzbGVlcCgyMCk7CiAJfQogCiAJaWYgKGNsb3NlKGZkKSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDQ6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NgoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzICpwcm9iYWJseSogbm90IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIGJ1dCB3ZSBuZWVkIHRvIGJlIHJpZ29yb3VzLiBJdCYjMzk7cyBpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgZGlyZWN0b3J5LCB3aGljaCBnZW5lcmFsbHkgcG9pbnRzIHRvIHVzZXJzcGFjZSB0ZXN0IGNvZGUuIFRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHRvdWNoIGFueSBrZXJuZWwgY29kZT8gTm8sIGl0JiMzOTtzIGV4cGxpY2l0bHkgY29uZmluZWQgdG8gYGNzdW0uY2Agd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZmFsbHMgdW5kZXIgdGhlICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgY2F0ZWdvcnksIHNwZWNpZmljYWxseTogbW9kaWZpY2F0aW9ucyByZXN0cmljdGVkIHRvIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIG9yICpzb2xlbHkqIHRvb2xzL3NlbGZ0ZXN0cy4gVGhhdCYjMzk7cyBwcmVjaXNlbHkgd2hhdCB3ZSBoYXZlIGhlcmUuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLCBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0ICphbnkqIG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhpcyBjb21taXQuIExldCYjMzk7cyBtYWtlIHN1cmUgd2l0aCBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgaWYgcmVxdWlyZWQuIFdhaXQsIHRoZSBwcm92aWRlZCBkaWZmICppcyogdGhlIGVudGlyZSBjb21taXQuIFRoYXQmIzM5O3MgY29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzYuIFRoaXMgY29uZmlybXMgdGhhdCBvbmx5IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY2AgaXMgYmVpbmcgbW9kaWZpZWQuCgpCYXNlZCBvbiB0aGlzLCBpdCYjMzk7cyBjbGVhcjogY2hhbmdlcyB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLi4uYCBhcmUgZm9yICp1c2Vyc3BhY2UqIHRlc3QgdG9vbHMuIFRoZXkgZG9uJiMzOTt0IGludHJvZHVjZSBvciBjaGFuZ2UgYW55IGNvcmUga2VybmVsIGxvZ2ljIG9yIGRyaXZlcnMsIHRoZXJlZm9yZSBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLgoKTm93LCBsZXQmIzM5O3MgcHJlcGFyZSB0aGUgcGFyYW1ldGVycyBmb3IgYHNldC1yZXN1bHRzYC4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2AgbGlzdHMgYXJlIGdvaW5nIHRvIGJlIGVtcHR5LiBUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGNsZWFybHkgc3RhdGU6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBjb250YWlucyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC4mIzM0OyBGaW5hbGx5LCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLgoKQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDQ6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA0OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozMS4zMTk4NjM4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTcxMTEyNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzEuMzE5ODY5NDQ2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDEwMTIyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDEgMDQ6MzI6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xcbmluZGV4IGUyODg4NGNlM2FiMzkuLjEzOTQ2NTA1NGY4NWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xcbkBAIC0yLDggKzIsNyBAQFxcbiBcXG4gLyogVGVzdCBoYXJkd2FyZSBjaGVja3N1bSBvZmZsb2FkOiBSeCArIFR4LCBJUHY0ICsgSVB2NiwgVENQICsgVURQLlxcbiAgKlxcbi0gKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLiBGb3IgdGhpcyByZWFzb24gaXRcXG4tICogaXMgbm90IGludGVncmF0ZWQgaW4ga3NlbGZ0ZXN0cy5cXG4rICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy5cXG4gICpcXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcXG4gICpcXG5AQCAtNjIwLDYgKzYxOSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3RjcCh2b2lkICp0aCwgaW50IGxlbilcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqdGNwaCkgfHwgdGNwaC1cXHUwMDNlZGVzdCAhPSBodG9ucyhjZmdfcG9ydF9kc3QpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRpZiAodGNwaC1cXHUwMDNlc291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHRjcGgtXFx1MDAzZXNvdXJjZSksIHRjcGgtXFx1MDAzZWNoZWNrKTtcXG4gfVxcbiBcXG5AQCAtNjQ3LDYgKzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbilcXG4gXFx0XFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCArIDEsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBsZW4gLSBzaXplb2YoKnVkcGgpKTtcXG4gXFxuK1xcdGlmICghY2ZnX3plcm9fc3VtIFxcdTAwMjZcXHUwMDI2IHVkcGgtXFx1MDAzZXNvdXJjZSAhPSBodG9ucyhjZmdfcG9ydF9zcmMpKVxcbitcXHRcXHRyZXR1cm4gLTE7XFxuK1xcbiBcXHRyZXR1cm4gcmVjdl92ZXJpZnlfY3N1bSh0aCwgbGVuLCBudG9ocyh1ZHBoLVxcdTAwM2Vzb3VyY2UpLCB1ZHBoLVxcdTAwM2VjaGVjayk7XFxuIH1cXG4gXFxuQEAgLTY1OSw2ICs2NjQsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY0KHZvaWQgKm5oLCBpbnQgbGVuKVxcbiBcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCppcGgpIHx8IGlwaC1cXHUwMDNlcHJvdG9jb2wgIT0gcHJvdG8pXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFxuK1xcdGlmIChpcGgtXFx1MDAzZXNhZGRyICE9IGNmZ19zYWRkcjQuc2luX2FkZHIuc19hZGRyKVxcbitcXHRcXHRyZXR1cm4gLTE7XFxuK1xcbiBcXHRpcF9sZW4gPSBudG9ocyhpcGgtXFx1MDAzZXRvdF9sZW4pO1xcbiBcXHRpZiAoaXBfbGVuIFxcdTAwM2UgbGVuIHx8IGlwX2xlbiBcXHUwMDNjIHNpemVvZigqaXBoKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC02ODAsNiArNjg4LDkgQEAgc3RhdGljIGludCByZWN2X3ZlcmlmeV9wYWNrZXRfaXB2Nih2b2lkICpuaCwgaW50IGxlbilcXG4gXFx0aWYgKGxlbiBcXHUwMDNjIHNpemVvZigqaXA2aCkgfHwgaXA2aC1cXHUwMDNlbmV4dGhkciAhPSBwcm90bylcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4rXFx0aWYgKG1lbWNtcChcXHUwMDI2aXA2aC1cXHUwMDNlc2FkZHIsIFxcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXFx1MDAzZXNhZGRyKSkpXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdHBheWxvYWRfbGVuID0gbnRvaHMoaXA2aC1cXHUwMDNlcGF5bG9hZF9sZW4pO1xcbiBcXHRpZiAocGF5bG9hZF9sZW4gXFx1MDAzZSBsZW4gLSBzaXplb2YoKmlwNmgpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuQEAgLTk0MCw2ICs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxcbiBcXHRcXHRcXHRjZmdfcGF5bG9hZF9sZW4gPSByYW5kKCkgJSBNQVhfUEFZTE9BRF9MRU47XFxuIFxcdFxcdFxcdGJ1ZiA9IGJ1aWxkX3BhY2tldChfYnVmLCBzaXplb2YoX2J1ZiksIFxcdTAwMjZsZW4pO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBhdm9pZCBidXJzdGluZyAqL1xcbitcXHRcXHR1c2xlZXAoMjApO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY2xvc2UoZmQpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozMS44MjE0MjY2NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0Njk1Mzg1NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2Vyc3BhY2Ugc2VsZnRlc3QgdG9vbCAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMpIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIExpbnV4IGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ3N2FiZjFmOTRkYjkzNDA0OTI1OWIwOGViZDc2ZjU4NzlkOWY5NzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxIDA0OjMyOjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuaW5kZXggZTI4ODg0Y2UzYWIzOS4uMTM5NDY1MDU0Zjg1YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uY1xuQEAgLTIsOCArMiw3IEBAXG4gXG4gLyogVGVzdCBoYXJkd2FyZSBjaGVja3N1bSBvZmZsb2FkOiBSeCArIFR4LCBJUHY0ICsgSVB2NiwgVENQICsgVURQLlxuICAqXG4tICogVGhlIHRlc3QgcnVucyBvbiB0d28gbWFjaGluZXMgdG8gZXhlcmNpc2UgdGhlIE5JQy4gRm9yIHRoaXMgcmVhc29uIGl0XG4tICogaXMgbm90IGludGVncmF0ZWQgaW4ga3NlbGZ0ZXN0cy5cbisgKiBUaGUgdGVzdCBydW5zIG9uIHR3byBtYWNoaW5lcyB0byBleGVyY2lzZSB0aGUgTklDLlxuICAqXG4gICogICAgIENNRD0kKCguL2NzdW0gLVs0Nl0gLVt0dV0gLVMgJFNBRERSIC1EICREQUREUiAtW1JUXSAtciAxICRFWFRSQV9BUkdTKSlcbiAgKlxuQEAgLTYyMCw2ICs2MTksOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF90Y3Aodm9pZCAqdGgsIGludCBsZW4pXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKnRjcGgpIHx8IHRjcGgtXHUwMDNlZGVzdCAhPSBodG9ucyhjZmdfcG9ydF9kc3QpKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4rXHRpZiAodGNwaC1cdTAwM2Vzb3VyY2UgIT0gaHRvbnMoY2ZnX3BvcnRfc3JjKSlcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X2NzdW0odGgsIGxlbiwgbnRvaHModGNwaC1cdTAwM2Vzb3VyY2UpLCB0Y3BoLVx1MDAzZWNoZWNrKTtcbiB9XG4gXG5AQCAtNjQ3LDYgKzY0OSw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X3VkcCh2b2lkICp0aCwgaW50IGxlbilcbiBcdFx0cmV0dXJuIHJlY3ZfdmVyaWZ5X3BhY2tldF91ZHBfZW5jYXAodWRwaCArIDEsXG4gXHRcdFx0XHRcdFx0ICAgIGxlbiAtIHNpemVvZigqdWRwaCkpO1xuIFxuK1x0aWYgKCFjZmdfemVyb19zdW0gXHUwMDI2XHUwMDI2IHVkcGgtXHUwMDNlc291cmNlICE9IGh0b25zKGNmZ19wb3J0X3NyYykpXG4rXHRcdHJldHVybiAtMTtcbitcbiBcdHJldHVybiByZWN2X3ZlcmlmeV9jc3VtKHRoLCBsZW4sIG50b2hzKHVkcGgtXHUwMDNlc291cmNlKSwgdWRwaC1cdTAwM2VjaGVjayk7XG4gfVxuIFxuQEAgLTY1OSw2ICs2NjQsOSBAQCBzdGF0aWMgaW50IHJlY3ZfdmVyaWZ5X3BhY2tldF9pcHY0KHZvaWQgKm5oLCBpbnQgbGVuKVxuIFx0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpIHx8IGlwaC1cdTAwM2Vwcm90b2NvbCAhPSBwcm90bylcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKGlwaC1cdTAwM2VzYWRkciAhPSBjZmdfc2FkZHI0LnNpbl9hZGRyLnNfYWRkcilcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0aXBfbGVuID0gbnRvaHMoaXBoLVx1MDAzZXRvdF9sZW4pO1xuIFx0aWYgKGlwX2xlbiBcdTAwM2UgbGVuIHx8IGlwX2xlbiBcdTAwM2Mgc2l6ZW9mKCppcGgpKVxuIFx0XHRyZXR1cm4gLTE7XG5AQCAtNjgwLDYgKzY4OCw5IEBAIHN0YXRpYyBpbnQgcmVjdl92ZXJpZnlfcGFja2V0X2lwdjYodm9pZCAqbmgsIGludCBsZW4pXG4gXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKmlwNmgpIHx8IGlwNmgtXHUwMDNlbmV4dGhkciAhPSBwcm90bylcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKG1lbWNtcChcdTAwMjZpcDZoLVx1MDAzZXNhZGRyLCBcdTAwMjZjZmdfc2FkZHI2LnNpbjZfYWRkciwgc2l6ZW9mKGlwNmgtXHUwMDNlc2FkZHIpKSlcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0cGF5bG9hZF9sZW4gPSBudG9ocyhpcDZoLVx1MDAzZXBheWxvYWRfbGVuKTtcbiBcdGlmIChwYXlsb2FkX2xlbiBcdTAwM2UgbGVuIC0gc2l6ZW9mKCppcDZoKSlcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTk0MCw2ICs5NTEsOSBAQCBzdGF0aWMgdm9pZCBkb190eCh2b2lkKVxuIFx0XHRcdGNmZ19wYXlsb2FkX2xlbiA9IHJhbmQoKSAlIE1BWF9QQVlMT0FEX0xFTjtcbiBcdFx0XHRidWYgPSBidWlsZF9wYWNrZXQoX2J1Ziwgc2l6ZW9mKF9idWYpLCBcdTAwMjZsZW4pO1xuIFx0XHR9XG4rXG4rXHRcdC8qIGF2b2lkIGJ1cnN0aW5nICovXG4rXHRcdHVzbGVlcCgyMCk7XG4gXHR9XG4gXG4gXHRpZiAoY2xvc2UoZmQpKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzEuODIxNDI4MjY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ2OTUxMjE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyAqcHJvYmFibHkqIG5vdCBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLCBidXQgd2UgbmVlZCB0byBiZSByaWdvcm91cy4gSXQncyBpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AgZGlyZWN0b3J5LCB3aGljaCBnZW5lcmFsbHkgcG9pbnRzIHRvIHVzZXJzcGFjZSB0ZXN0IGNvZGUuIFRoZSBxdWVzdGlvbiBpczogZG9lcyB0aGlzIHRvdWNoIGFueSBrZXJuZWwgY29kZT8gTm8sIGl0J3MgZXhwbGljaXRseSBjb25maW5lZCB0byBgY3N1bS5jYCB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnkuXG5cbk5vdywgbGV0J3MgYXBwbHkgdGhlIGNyaXRlcmlhLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgcGF0Y2ggZmFsbHMgdW5kZXIgdGhlIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgY2F0ZWdvcnksIHNwZWNpZmljYWxseTogbW9kaWZpY2F0aW9ucyByZXN0cmljdGVkIHRvIERvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIG9yICpzb2xlbHkqIHRvb2xzL3NlbGZ0ZXN0cy4gVGhhdCdzIHByZWNpc2VseSB3aGF0IHdlIGhhdmUgaGVyZS4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4sIEknbGwgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0ICphbnkqIG90aGVyIGZpbGVzIGNoYW5nZWQgaW4gdGhpcyBjb21taXQuIExldCdzIG1ha2Ugc3VyZSB3aXRoIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCBpZiByZXF1aXJlZC4gV2FpdCwgdGhlIHByb3ZpZGVkIGRpZmYgKmlzKiB0aGUgZW50aXJlIGNvbW1pdC4gVGhhdCdzIGNvbW1pdCA0NzdhYmYxZjk0ZGI5MzQwNDkyNTliMDhlYmQ3NmY1ODc5ZDlmOTc2LiBUaGlzIGNvbmZpcm1zIHRoYXQgb25seSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2xpYi9jc3VtLmNgIGlzIGJlaW5nIG1vZGlmaWVkLlxuXG5CYXNlZCBvbiB0aGlzLCBpdCdzIGNsZWFyOiBjaGFuZ2VzIHRvIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8uLi5gIGFyZSBmb3IgKnVzZXJzcGFjZSogdGVzdCB0b29scy4gVGhleSBkb24ndCBpbnRyb2R1Y2Ugb3IgY2hhbmdlIGFueSBjb3JlIGtlcm5lbCBsb2dpYyBvciBkcml2ZXJzLCB0aGVyZWZvcmUgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cblxuTm93LCBsZXQncyBwcmVwYXJlIHRoZSBwYXJhbWV0ZXJzIGZvciBgc2V0LXJlc3VsdHNgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYCBsaXN0cyBhcmUgZ29pbmcgdG8gYmUgZW1wdHkuIFRoZSBgUmVhc29uaW5nYCBzaG91bGQgY2xlYXJseSBzdGF0ZTogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXJzcGFjZSBzZWxmdGVzdCB0b29sICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbGliL2NzdW0uYykgYW5kIGNvbnRhaW5zIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgTGludXgga2VybmVsLlwiIEZpbmFsbHksIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAuXG5cbkFscmlnaHQsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzU2LCJPdXRwdXRUb2tlbnMiOjcxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDQ6MzI6MzYuMjkwOTQzMDg3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlcnNwYWNlIHNlbGZ0ZXN0IHRvb2wgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9saWIvY3N1bS5jKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwNDozMjozNi4yOTA5NjczMjdaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow96g4f[1] Phase: Running StartedAt: 2026-09-01 04:32:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96g4f[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-01 04:32:47 +0000 UTC FinishedAt: 2026-09-01 04:32:52 +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,}