Name: series-workflowj6bk6 Phase: Failed StartedAt: 2026-08-13 03:55:17 +0000 UTC FinishedAt: 2026-08-13 03:57:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj6bk6[0] Phase: Succeeded StartedAt: 2026-08-13 03:55:17 +0000 UTC FinishedAt: 2026-08-13 03:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj6bk6[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 03:55:17 +0000 UTC FinishedAt: 2026-08-13 03:56:53 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCAoYHJlZmNvdW50X2ZpbmFsX3B1dGApIGFuZCBpdHMgYXNzb2NpYXRlZCBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDk4ZDc4MGZlYjU0ZmM0NWYwNmE5NjFkN2RhZTcwNGU2MTI3YjQ2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDAzOjU2OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIuLmMzN2U0Y2QwZTRmZjYgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MztGOlx0bGliL3JlZmNvdW50X3RyYWNlLmNcbiYjNDM7RjpcdGxpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYy4uMjQ0OTkyYjJmNzQ2ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICYjNDM7NTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4mIzQzO1x0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgJiM0MzsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0ZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHIpO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZjhkMGJhOTEwZjA1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDMzIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4mIzQzO0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZjb3VudF9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cbiYjNDM7ZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKVx0XHRcdFxcXG4mIzQzO1x0XHRcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1x0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpIFx1MDAyNlx1MDAyNiBjb25kKVx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKTtcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmY291bnQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXG5AQCAtMCwwICYjNDM7MSw1NSBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNXG4mIzQzOyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZmNvdW50XG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4mIzQzOyNkZWZpbmUgX1RSQUNFX1JFRkNPVU5UX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVRcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiByZWZjb3VudF9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuJiM0MzsgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBpcDogcmV0dXJuIGFkZHJlc3Mgb2YgdHJhY2Ugd3JhcHBlciBtYWNybyBjYWxsLFxuJiM0MzsgKiBpbmxpbmluZyBtYXkgY2F1c2UgaXQgdG8gYmUgc29tZXRoaW5nIGVsc2UgdGhvXG4mIzQzOyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcbiYjNDM7ICpcbiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXRcbiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX1RISVNfSVBfIGZvciBjYWxsZXIgYW5kIGlwIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksXG4mIzQzOyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuJiM0MzsgKi9cbiYjNDM7VFJBQ0VfRVZFTlQocmVmY291bnRfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxuJiM0MztcbiYjNDM7XHRUUF9TVFJVQ1RfX2VudHJ5KFxuJiM0MztcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGNhbGxlclx0KVxuJiM0MztcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGlwXHQpXG4mIzQzO1x0XHRfX2ZpZWxkKFx0Y29uc3Qgdm9pZCAqLFx0XHRvYmpcdClcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdFx0X19lbnRyeS1cdTAwM2VpcCA9IGlwO1xuJiM0MztcdFx0X19lbnRyeS1cdTAwM2VvYmogPSBvYmo7XG4mIzQzO1x0KSxcbiYjNDM7XG4mIzQzO1x0VFBfcHJpbnRrKFwmIzM0O2NhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFwmIzM0OyxcbiYjNDM7XHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlcixcbiYjNDM7XHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWlwLFxuJiM0MztcdFx0ICBfX2VudHJ5LVx1MDAzZW9ialxuJiM0MztcdClcbiYjNDM7KTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRkNPVU5UX0ggKi9cbiYjNDM7XG4mIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWdcbmluZGV4IDAwYTk1MDk2MzZjMTguLmVlMTJlOGY5NTE1ODkgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMjQgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuJiM0MztcdGJvb2wgXCYjMzQ7VHJhY2UgZmluYWwgcHV0cyBvbiBtdWx0aXBsZSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbnNcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIFRSQUNFUE9JTlRTIFx1MDAyNlx1MDAyNiBERUJVR19LRVJORUxcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuXG4mIzQzO1xuJiM0MztcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjNDM7XG4mIzQzO2NvbmZpZyBSRUZDT1VOVF9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7cmVmY291bnQgdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBSRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgXHUwMDI2XHUwMDI2IEtVTklUIFx1MDAyNlx1MDAyNiBUUkFDRVBPSU5UU1xuJiM0MztcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZmNvdW50X2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiM0MztcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICYjNDM7MzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XG4gb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXG4gXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSAmIzQzOz0gdGVzdF9mb3J0aWZ5XG4mIzQzO1xuJiM0MztvYmotJChDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUKSAmIzQzOz0gcmVmY291bnRfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcbmluZGV4IGEyMDdhOGYyMmIzY2EuLjhiMTQ4YjU3NjUwMzcgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFJFRkNPVU5UX1dBUk4oc3RyKVx0V0FSTl9PTkNFKDEsIFwmIzM0O3JlZmNvdW50X3Q6IFwmIzM0OyBzdHIgXCYjMzQ7LlxcblwmIzM0OylcbiBcbkBAIC01Niw3ICYjNDM7NTcsMTAgQEAgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpXG4ge1xuIFx0aW50IHZhbCA9IDE7XG4gXG4tXHRyZXR1cm4gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuJiM0MztcdGJvb2wgcmV0ID0gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuJiM0MztcbiYjNDM7XHRkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3JlZmNvdW50X3RyYWNlLmMgYi9saWIvcmVmY291bnRfdHJhY2UuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI0NzZiYjVmMmY2MDNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXG5AQCAtMCwwICYjNDM7MSwxNCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0XHRcdFx0IHVuc2lnbmVkIGxvbmcgaXAsXG4mIzQzO1x0XHRcdFx0IGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHRyYWNlX2NhbGxfX3JlZmNvdW50X2ZpbmFsX3B1dChjYWxsZXIsIGlwLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmY291bnRfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWEuLjFlZjQxYzBiNmEwYzEgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSAmIzQzOz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgJiM0Mzs9IHV1aWRfa3VuaXQub1xuJiM0MztvYmotJChDT05GSUdfUkVGQ09VTlRfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0JiM0Mzs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyN1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDE0MSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvamlmZmllcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmY291bnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaXA7XG4mIzQzO1x0Y29uc3Qgdm9pZCAqb2JqO1xuJiM0MztcdGF0b21pY190IGNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgY2FwdHVyZTtcbiYjNDM7XG4mIzQzO2NvbnN0IHZvaWQgKmNoa19vYmo7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpXHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0dGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjaGtfb2JqID0gXHUwMDI2b2JqO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9leGl0KClcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi9cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHUwMDI2Y2FwdHVyZS5jb3VudCxcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRhdG9taWNfcmVhZF9hY3F1aXJlKFx1MDAyNmNhcHR1cmUuY291bnQpLFx0XHRcdFxcXG4mIzQzO1x0XHRcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQpO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XHRcdFxcXG4mIzQzO1x0XHR0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTtcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSwgMSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5jYWxsZXIpKTtcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpO1x0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBjYXB0dXJlLm9iaiwgXHUwMDI2b2JqKTtcdFx0XHRcXFxuJiM0MztcdH0gd2hpbGUgKDApXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBwcm9iZShcbiYjNDM7XHQgIHZvaWQgKmlnbm9yZSxcbiYjNDM7XHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBpcCxcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdC8vcHJldmVudCBub24gdGVzdCBmdW5jIGZpbmFsX3B1dHMgZnJvbSBjaGFuZ2luZyBjYXB0dXJlZCB2YWx1ZXNcbiYjNDM7XHRpZiAoY2hrX29iaiAhPSBvYmopXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdGNhcHR1cmUuaXAgPSBpcDtcbiYjNDM7XHRjYXB0dXJlLm9iaiA9IG9iajtcbiYjNDM7XG4mIzQzO1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZWZjb3VudF90IG9iajtcbiYjNDM7XG4mIzQzO1x0dGVzdF9pbml0KCk7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHJlZmNvdW50X3Qgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2b2JqLCAyKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuJiM0MztcbiYjNDM7XHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdCgpO1xuJiM0MztcdHBlcmNwdV9yZWZfZXhpdChcdTAwMjZvYmopO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueSksXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZmNvdW50LXRyYWNlXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSk7XG4mIzQzO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0V1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0tVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDM6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ5OGQ3ODBmZWI1NGZjNDVmMDZhOTYxZDdkYWU3MDRlNjEyN2I0NjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwMzo1NjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMTBlODI1MzE4MWQzMi4uYzM3ZTRjZDBlNGZmNiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTQyMTAsNyAmIzQzOzQyMTAsMTAgQEAgUzoJTWFpbnRhaW5lZAogRjoJRG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHQKIEY6CWFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmgKIEY6CWluY2x1ZGUvKi9hdG9taWMqLmgKJiM0MztGOglpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmgKIEY6CWluY2x1ZGUvbGludXgvcmVmY291bnQuaAomIzQzO0Y6CWxpYi9yZWZjb3VudF90cmFjZS5jCiYjNDM7RjoJbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMKIEY6CXNjcmlwdHMvYXRvbWljLwogRjoJcnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnMKIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgKaW5kZXggZDczYTFjMDhjM2UzYy4uMjQ0OTkyYjJmNzQ2ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogc3RydWN0IHBlcmNwdV9yZWY7CiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTsKQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCiAKIAlpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJmFtcDtwZXJjcHVfY291bnQpKQogCQl0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpOwotCWVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgJmFtcDtyZWYtJmd0O2RhdGEtJmd0O2NvdW50KSkpCiYjNDM7CWVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgJmFtcDtyZWYtJmd0O2RhdGEtJmd0O2NvdW50KSkpIHsKJiM0MzsJCWRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpOwogCQlyZWYtJmd0O2RhdGEtJmd0O3JlbGVhc2UocmVmKTsKJiM0MzsJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaApAQCAtMTA3LDYgJiM0MzsxMDcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2tfdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQlkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocik7CiAJCXJldHVybiB0cnVlOwogCX0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjZmOGQwYmE5MTBmMDUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMzMgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0gKJiM0MzsjZGVmaW5lIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZmNvdW50X2ZpbmFsX3B1dCk7CiYjNDM7CiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7CiYjNDM7CiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKQkJCVwKJiM0MzsJCQlkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTsJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZmNvdW50X2ZpbmFsX3B1dCkgJmFtcDsmYW1wOyBjb25kKQkJXAomIzQzOwkJCWRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopOwlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7I2Vsc2UgLyogIUNPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7CiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApCiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZGMyM2FmZjkzYjYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oCkBAIC0wLDAgJiM0MzsxLDU1IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNCiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnQKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpCiYjNDM7I2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90cmFjZXBvaW50LmgmZ3Q7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZjb3VudF9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybwomIzQzOyAqIEBjYWxsZXI6IHJldHVybiBhZGRyZXNzIG9mIHJlZmNvdW50CiYjNDM7ICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KQomIzQzOyAqIEBpcDogcmV0dXJuIGFkZHJlc3Mgb2YgdHJhY2Ugd3JhcHBlciBtYWNybyBjYWxsLAomIzQzOyAqIGlubGluaW5nIG1heSBjYXVzZSBpdCB0byBiZSBzb21ldGhpbmcgZWxzZSB0aG8KJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpCiYjNDM7ICoKJiM0MzsgKiBUcmFjZXBvaW50IGluc3RydW1lbnRhdGlvbiBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dAomIzQzOyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX1RISVNfSVBfIGZvciBjYWxsZXIgYW5kIGlwIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksCiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkCiYjNDM7ICovCiYjNDM7VFJBQ0VfRVZFTlQocmVmY291bnRfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKSwKJiM0MzsKJiM0MzsJVFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLAomIzQzOwomIzQzOwlUUF9TVFJVQ1RfX2VudHJ5KAomIzQzOwkJX19maWVsZCgJdW5zaWduZWQgbG9uZywJCWNhbGxlcgkpCiYjNDM7CQlfX2ZpZWxkKAl1bnNpZ25lZCBsb25nLAkJaXAJKQomIzQzOwkJX19maWVsZCgJY29uc3Qgdm9pZCAqLAkJb2JqCSkKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CQlfX2VudHJ5LSZndDtjYWxsZXIgPSBjYWxsZXI7CiYjNDM7CQlfX2VudHJ5LSZndDtpcCA9IGlwOwomIzQzOwkJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGlwPSVwUyBvYmo9JXAmIzM0OywKJiM0MzsJCSAgKHZvaWQgKilfX2VudHJ5LSZndDtjYWxsZXIsCiYjNDM7CQkgICh2b2lkICopX19lbnRyeS0mZ3Q7aXAsCiYjNDM7CQkgIF9fZW50cnktJmd0O29iagomIzQzOwkpCiYjNDM7KTsKJiM0MzsKJiM0MzsjZW5kaWYgLyogQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCAqLwomIzQzOwomIzQzOyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxOC4uZWUxMmU4Zjk1MTU4OSAxMDA2NDQKLS0tIGEvbGliL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWcKQEAgLTUyLDYgJiM0Mzs1MiwyNCBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUCiAKIAkgIFdoZW4gaW4gZG91YnQsIHNheSBOLgogCiYjNDM7Y29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVAomIzQzOwlib29sICYjMzQ7VHJhY2UgZmluYWwgcHV0cyBvbiBtdWx0aXBsZSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbnMmIzM0OwomIzQzOwlkZXBlbmRzIG9uIFRSQUNFUE9JTlRTICZhbXA7JmFtcDsgREVCVUdfS0VSTkVMCiYjNDM7CWhlbHAKJiM0MzsJICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTi4KJiM0MzsKJiM0Mztjb25maWcgUkVGQ09VTlRfVFJBQ0VfS1VOSVRfVEVTVAomIzQzOwl0cmlzdGF0ZSAmIzM0O3JlZmNvdW50IHRyYWNlIGt1bml0IHRlc3QmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICZhbXA7JmFtcDsgS1VOSVQgJmFtcDsmYW1wOyBUUkFDRVBPSU5UUwomIzQzOwlkZWZhdWx0IEtVTklUX0FMTF9URVNUUwomIzQzOwloZWxwCiYjNDM7CSAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZmNvdW50X2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTi4KJiM0MzsKIGNvbmZpZyBCSVRSRVZFUlNFCiAJdHJpc3RhdGUKIApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGUKQEAgLTMzNSwzICYjNDM7MzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5CiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSAmIzQzOz0gdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8KIAogc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSAmIzQzOz0gdGVzdF9mb3J0aWZ5CiYjNDM7CiYjNDM7b2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgJiM0Mzs9IHJlZmNvdW50X3RyYWNlLm8KZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmMKaW5kZXggYTIwN2E4ZjIyYjNjYS4uOGIxNDhiNTc2NTAzNyAxMDA2NDQKLS0tIGEvbGliL3JlZmNvdW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmMKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9idWcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cikJV0FSTl9PTkNFKDEsICYjMzQ7cmVmY291bnRfdDogJiMzNDsgc3RyICYjMzQ7LlxuJiMzNDspCiAKQEAgLTU2LDcgJiM0Mzs1NywxMCBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcikKIHsKIAlpbnQgdmFsID0gMTsKIAotCXJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsJYm9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsKJiM0MzsJZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQocmV0LCByKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudF90cmFjZS5jIGIvbGliL3JlZmNvdW50X3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjQ3NmJiNWYyZjYwMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZjb3VudF90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDE0IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZmNvdW50LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXMKJiM0Mzt2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwKJiM0MzsJCQkJIHVuc2lnbmVkIGxvbmcgaXAsCiYjNDM7CQkJCSBjb25zdCB2b2lkICpvYmopCiYjNDM7ewomIzQzOwl0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KTsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7CmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGUKaW5kZXggN2U5YzJmYTUyZTM1YS4uMWVmNDFjMGI2YTBjMSAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZjb3VudF90cmFjZV9rdW5pdC5vCiAKIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKQkJJiM0Mzs9IG1vZHVsZS8KZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jCkBAIC0wLDAgJiM0MzsxLDE0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvd2FpdF9iaXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rYWxsc3ltcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9qaWZmaWVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9hdG9taWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZmNvdW50LmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJdW5zaWduZWQgbG9uZyBpcDsKJiM0MzsJY29uc3Qgdm9pZCAqb2JqOwomIzQzOwlhdG9taWNfdCBjb3VudDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBkYXRhIGNhcHR1cmU7CiYjNDM7CiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpCQkJCQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfRkFMU0UoCQkJCQkJXAomIzQzOwkJCXRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCWF0b21pY19zZXRfcmVsZWFzZSgmYW1wO2NhcHR1cmUuY291bnQsIDApOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCWNoa19vYmogPSAmYW1wO29iajsJCQkJCQkJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzOwomIzQzOyNkZWZpbmUgdGVzdF9leGl0KCkJCQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCS8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi8JCQkJCVwKJiM0MzsJCWludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KAkJCQlcCiYjNDM7CQkJJmFtcDtjYXB0dXJlLmNvdW50LAkJCQkJCVwKJiM0MzsJCQlhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksCQkJXAomIzQzOwkJCW1zZWNzX3RvX2ppZmZpZXMoMTAwMDApCQkJCQlcCiYjNDM7CQkpOwkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQl1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7CQlcCiYjNDM7CQl0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTsJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCBub3RpbWVvdXQpOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksIDEpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIF9fa2VybmVsX3RleHRfYWRkcmVzcyhjYXB0dXJlLmNhbGxlcikpOwlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgY2FwdHVyZS5vYmosICZhbXA7b2JqKTsJCQlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcHJvYmUoCiYjNDM7CSAgdm9pZCAqaWdub3JlLAomIzQzOwkgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLAomIzQzOwkgIHVuc2lnbmVkIGxvbmcgaXAsCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJLy9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlcwomIzQzOwlpZiAoY2hrX29iaiAhPSBvYmopCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWNhcHR1cmUuY2FsbGVyID0gY2FsbGVyOwomIzQzOwljYXB0dXJlLmlwID0gaXA7CiYjNDM7CWNhcHR1cmUub2JqID0gb2JqOwomIzQzOwomIzQzOwlhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKCZhbXA7Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnQKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCBvYmo7CiYjNDM7CiYjNDM7CXRlc3RfaW5pdCgpOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtvYmosIDIpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7b2JqKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO29iaikpOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXJlZmNvdW50X3Qgb2JqOwomIzQzOwomIzQzOwl0ZXN0X2luaXQoKTsKJiM0MzsJcmVmY291bnRfc2V0KCZhbXA7b2JqLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO29iaikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKCZhbXA7b2JqKSk7CiYjNDM7CiYjNDM7CXRlc3RfZXhpdCgpOwomIzQzO30KJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwZXJjcHVfcmVmIG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CiYjNDM7CUtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoJmFtcDtvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtvYmopOwomIzQzOwlwZXJjcHVfcmVmX2dldCgmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfcHV0KCZhbXA7b2JqKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYygmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfcHV0KCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJdGVzdF9leGl0KCk7CiYjNDM7CXBlcmNwdV9yZWZfZXhpdCgmYW1wO29iaik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLAomIzQzOwlLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSwKJiM0MzsJe30KJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZmNvdW50LXRyYWNlJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlcwomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZjb3VudF90cmFjZV90ZXN0X3N1aXRlKTsKJiM0MzsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7RXVnZW5lIE1hdmljayAmbHQ7bUBtYXZpY2suZGV2Jmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2UmIzM0Oyk7CiYjNDM7TU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzcKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA2NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIHJ1bGVzLCB0aGlzICpzaG91bGQqIGJlIG1hcmtlZCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQmIzM5O3MgYWRkaW5nIGEgdHJhY2Vwb2ludCwgYHJlZmNvdW50X2ZpbmFsX3B1dGAsIHRvIHRyYWNrIHdoZW4gYSByZWZjb3VudCBvYmplY3QgaXMgY29uc2lkZXJlZCBkZWFkLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIHNldmVyYWwgY29yZSBmaWxlczogYHBlcmNwdS1yZWZjb3VudC5oYCwgYHJlZmNvdW50LmhgLCBhbmQgYHJlZmNvdW50LmNgLCBhbGwgYWltZWQgYXQgaW5zZXJ0aW5nIGNhbGxzIHRvIGVpdGhlciBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0YCBvciBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmRgLiAgSXQmIzM5O3MgYWxzbyBpbnRyb2R1Y2luZyBuZXcgZmlsZXMgZm9yIHRoZSB0cmFjZXBvaW50IGl0c2VsZjogYHJlZmNvdW50X3RyYWNlLmhgLCBgZXZlbnRzL3JlZmNvdW50LmhgLCBgcmVmY291bnRfdHJhY2UuY2AsIGFuZCBhIEtVbml0IHRlc3QgYHJlZmNvdW50X3RyYWNlX2t1bml0LmNgLCBhcyB3ZWxsIGFzIEtjb25maWcgb3B0aW9ucy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gbWFyayBwYXRjaGVzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkgb25seSBjb250YWluIG1vZGlmaWNhdGlvbnMgbGlrZSB0aGlzIOKAkyBhZGRpdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsICpvciogdHJhY2Vwb2ludHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBhY3R1YWxseSAqY2hhbmdlKiBob3cgYW55dGhpbmcgcnVucy4KCkFscmlnaHQsIEkgbmVlZCB0byByZWFsbHkgY29uZmlybSB0aGlzLiBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZzIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBjb2RlIGFsdGVyYXRpb25zLgoKKiAgIGBwZXJjcHVfcmVmX3B1dF9tYW55YDogSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocmVmKTtgIGluc2lkZSBhbiBgaWZgIGJsb2NrIHRoYXQgY2hlY2tzIGlmIHRoZSByZWZjb3VudCBiZWNvbWVzIHplcm8uIEl0JiMzOTtzICpub3QqIGNoYW5naW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVmY291bnQgaXRzZWxmLgoKKiAgIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGA6IEFnYWluLCBvbmx5IGFkZGluZyB0aGUgdHJhY2Vwb2ludCBjYWxsIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocik7YCBhcm91bmQgdGhlIGNvbmRpdGlvbmFsIHJldHVybi4gVGhpcyBkb2VzbiYjMzk7dCBjaGFuZ2Ugd2hlbiBhIHJlZmVyZW5jZSBpcyBjb25zaWRlcmVkIHRvIGJlIGZpbmFsLCBpdCYjMzk7cyBqdXN0IGFkZGluZyBhbiBvYnNlcnZhdGlvbiBwb2ludC4KCiogICBgcmVmY291bnRfZGVjX2lmX29uZWA6IFNpbWlsYXIgcGF0dGVybi4gSXQgYWRkcyBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQocmV0LCByKTtgIGJhc2VkIG9uIHRoZSByZXR1cm4gb2YgYGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlYC4gVGhlIGNvcmUgYXRvbWljIG9wZXJhdGlvbnMgYXJlIHVuY2hhbmdlZC4KClRoZSByZXN0IGlzIGp1c3QgdGhlIHRyYWNlcG9pbnQgaW1wbGVtZW50YXRpb24gYW5kIGl0cyB0ZXN0LiBTbywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBhZGRpdGlvbnMgYXJlICpwdXJlbHkqIGZvciB0cmFjaW5nIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBiZWhhdmlvciBvciBhbHRlciBleGlzdGluZyBleGVjdXRpb24gZmxvdy4gIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IG5vdCB3b3J0aCBmdXp6aW5nLiBNeSBmaW5hbCBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwMzo1NjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6MzEuOTk4MjUxMjUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NzQ1OTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6MzEuOTk4MjU5NTYyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk1NTgxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0OThkNzgwZmViNTRmYzQ1ZjA2YTk2MWQ3ZGFlNzA0ZTYxMjdiNDY5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDAzOjU2OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAxMGU4MjUzMTgxZDMyLi5jMzdlNGNkMGU0ZmY2IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtNDIxMCw3ICs0MjEwLDEwIEBAIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XFxuIEY6XFx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxcbiBGOlxcdGluY2x1ZGUvKi9hdG9taWMqLmhcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rRjpcXHRsaWIvcmVmY291bnRfdHJhY2UuY1xcbitGOlxcdGxpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXFxuIEY6XFx0c2NyaXB0cy9hdG9taWMvXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5pbmRleCBkNzNhMWMwOGMzZTNjLi4yNDQ5OTJiMmY3NDZlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuQEAgLTU1LDYgKzU1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmNwdV9yZWY7XFxuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xcbkBAIC0zMzEsOCArMzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXFxuIFxcbiBcXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXFx1MDAyNnBlcmNwdV9jb3VudCkpXFxuIFxcdFxcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XFxuLVxcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSlcXG4rXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKSB7XFxuK1xcdFxcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xcbiBcXHRcXHRyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZXJlbGVhc2UocmVmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5AQCAtMTA3LDYgKzEwNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBtdXRleDtcXG4gXFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXFxuIFxcbiBcXHRpZiAob2xkIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBvbGQgPT0gaSkge1xcbiBcXHRcXHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHIpO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZjhkMGJhOTEwZjA1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxcbkBAIC0wLDAgKzEsMzMgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxcbisjZGVmaW5lIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuK1xcbisjaWZkZWYgQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXFxuK0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZjb3VudF9maW5hbF9wdXQpO1xcbitcXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cXG4rZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfVEhJU19JUF8sIG9iaik7XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZmNvdW50X2ZpbmFsX3B1dCkgXFx1MDAyNlxcdTAwMjYgY29uZClcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1xcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuKyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXFxuK2V4dGVybiB2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKTtcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNlbmRpZlxcbitcXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcXG5AQCAtMCwwICsxLDU1IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyN1bmRlZiBUUkFDRV9TWVNURU1cXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnRcXG4rXFxuKyNpZiAhZGVmaW5lZChfVFJBQ0VfUkVGQ09VTlRfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4rI2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFxcdTAwM2VcXG4rXFxuKyNpZmRlZiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUXFxuK1xcbisvKipcXG4rICogcmVmY291bnRfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cXG4rICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnRcXG4rICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KVxcbisgKiBAaXA6IHJldHVybiBhZGRyZXNzIG9mIHRyYWNlIHdyYXBwZXIgbWFjcm8gY2FsbCxcXG4rICogaW5saW5pbmcgbWF5IGNhdXNlIGl0IHRvIGJlIHNvbWV0aGluZyBlbHNlIHRob1xcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0XFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9USElTX0lQXyBmb3IgY2FsbGVyIGFuZCBpcCBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcXG4rICovXFxuK1RSQUNFX0VWRU5UKHJlZmNvdW50X2ZpbmFsX3B1dCxcXG4rXFxuK1xcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0XFx0X19maWVsZChcXHR1bnNpZ25lZCBsb25nLFxcdFxcdGNhbGxlclxcdClcXG4rXFx0XFx0X19maWVsZChcXHR1bnNpZ25lZCBsb25nLFxcdFxcdGlwXFx0KVxcbitcXHRcXHRfX2ZpZWxkKFxcdGNvbnN0IHZvaWQgKixcXHRcXHRvYmpcXHQpXFxuK1xcdCksXFxuK1xcbitcXHRUUF9mYXN0X2Fzc2lnbihcXG4rXFx0XFx0X19lbnRyeS1cXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xcbitcXHRcXHRfX2VudHJ5LVxcdTAwM2VpcCA9IGlwO1xcbitcXHRcXHRfX2VudHJ5LVxcdTAwM2VvYmogPSBvYmo7XFxuK1xcdCksXFxuK1xcbitcXHRUUF9wcmludGsoXFxcImNhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFxcXCIsXFxuK1xcdFxcdCAgKHZvaWQgKilfX2VudHJ5LVxcdTAwM2VjYWxsZXIsXFxuK1xcdFxcdCAgKHZvaWQgKilfX2VudHJ5LVxcdTAwM2VpcCxcXG4rXFx0XFx0ICBfX2VudHJ5LVxcdTAwM2VvYmpcXG4rXFx0KVxcbispO1xcbitcXG4rI2VuZGlmIC8qIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgKi9cXG4rXFxuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTguLmVlMTJlOGY5NTE1ODkgMTAwNjQ0XFxuLS0tIGEvbGliL0tjb25maWdcXG4rKysgYi9saWIvS2NvbmZpZ1xcbkBAIC01Miw2ICs1MiwyNCBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUXFxuIFxcbiBcXHQgIFdoZW4gaW4gZG91YnQsIHNheSBOLlxcbiBcXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxcbitcXHRib29sIFxcXCJUcmFjZSBmaW5hbCBwdXRzIG9uIG11bHRpcGxlIHJlZmNvdW50IGltcGxlbWVudGF0aW9uc1xcXCJcXG4rXFx0ZGVwZW5kcyBvbiBUUkFDRVBPSU5UUyBcXHUwMDI2XFx1MDAyNiBERUJVR19LRVJORUxcXG4rXFx0aGVscFxcbitcXHQgIFRyYWNlIHdoZW4gYSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbiBjb25zaWRlcnMgcmVmY291bnRlZCBvYmplY3QgZGVhZC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuK2NvbmZpZyBSRUZDT1VOVF9UUkFDRV9LVU5JVF9URVNUXFxuK1xcdHRyaXN0YXRlIFxcXCJyZWZjb3VudCB0cmFjZSBrdW5pdCB0ZXN0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuK1xcdGRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUIFxcdTAwMjZcXHUwMDI2IEtVTklUIFxcdTAwMjZcXHUwMDI2IFRSQUNFUE9JTlRTXFxuK1xcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuK1xcdGhlbHBcXG4rXFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmY291bnRfZmluYWxfcHV0XFxuK1xcdCAgdHJhY2Vwb2ludC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGNvbmZpZyBCSVRSRVZFUlNFXFxuIFxcdHRyaXN0YXRlXFxuIFxcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcXG5pbmRleCBmMzNhMjRiZjFjMTlhLi5lNzVlODhmMGM4NzA4IDEwMDY0NFxcbi0tLSBhL2xpYi9NYWtlZmlsZVxcbisrKyBiL2xpYi9NYWtlZmlsZVxcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XFxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXFxuIFxcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxcbitcXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgKz0gcmVmY291bnRfdHJhY2Uub1xcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnQuYyBiL2xpYi9yZWZjb3VudC5jXFxuaW5kZXggYTIwN2E4ZjIyYjNjYS4uOGIxNDhiNTc2NTAzNyAxMDA2NDRcXG4tLS0gYS9saWIvcmVmY291bnQuY1xcbisrKyBiL2xpYi9yZWZjb3VudC5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2J1Zy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgUkVGQ09VTlRfV0FSTihzdHIpXFx0V0FSTl9PTkNFKDEsIFxcXCJyZWZjb3VudF90OiBcXFwiIHN0ciBcXFwiLlxcXFxuXFxcIilcXG4gXFxuQEAgLTU2LDcgKzU3LDEwIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxcbiB7XFxuIFxcdGludCB2YWwgPSAxO1xcbiBcXG4tXFx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFxcdTAwMjZyLVxcdTAwM2VyZWZzLCBcXHUwMDI2dmFsLCAwKTtcXG4rXFx0Ym9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZShcXHUwMDI2ci1cXHUwMDNlcmVmcywgXFx1MDAyNnZhbCwgMCk7XFxuK1xcbitcXHRkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnRfdHJhY2UuYyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc2YmI1ZjJmNjAzXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXFxuQEAgLTAsMCArMSwxNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4rXFxuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXFxuK3ZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxcbitcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBpcCxcXG4rXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHR0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9NYWtlZmlsZSBiL2xpYi90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IDdlOWMyZmE1MmUzNWEuLjFlZjQxYzBiNmEwYzEgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cXG4gXFxuIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKVxcdFxcdCs9IG1vZHVsZS9cXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyN1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xcbkBAIC0wLDAgKzEsMTQxIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYWxsc3ltcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0b21pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcXHUwMDNlXFxuK1xcbitzdHJ1Y3QgZGF0YSB7XFxuK1xcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xcbitcXHR1bnNpZ25lZCBsb25nIGlwO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGF0b21pY190IGNvdW50O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcXG4rXFxuK2NvbnN0IHZvaWQgKmNoa19vYmo7XFxuK1xcbisjZGVmaW5lIHRlc3RfaW5pdCgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXRvbWljX3NldF9yZWxlYXNlKFxcdTAwMjZjYXB0dXJlLmNvdW50LCAwKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y2hrX29iaiA9IFxcdTAwMjZvYmo7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rXFxuKyNkZWZpbmUgdGVzdF9leGl0KClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi9cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx1MDAyNmNhcHR1cmUuY291bnQsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRhdG9taWNfcmVhZF9hY3F1aXJlKFxcdTAwMjZjYXB0dXJlLmNvdW50KSxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgbm90aW1lb3V0KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXFx1MDAyNmNhcHR1cmUuY291bnQpLCAxKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgX19rZXJuZWxfdGV4dF9hZGRyZXNzKGNhcHR1cmUuY2FsbGVyKSk7XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpO1xcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcXHUwMDI2b2JqKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH0gd2hpbGUgKDApXFxuK1xcbitzdGF0aWMgdm9pZCBwcm9iZShcXG4rXFx0ICB2b2lkICppZ25vcmUsXFxuK1xcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXFxuK1xcdCAgdW5zaWduZWQgbG9uZyBpcCxcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xcbitcXHRpZiAoY2hrX29iaiAhPSBvYmopXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xcbitcXHRjYXB0dXJlLmlwID0gaXA7XFxuK1xcdGNhcHR1cmUub2JqID0gb2JqO1xcbitcXG4rXFx0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnRcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3Qgb2JqO1xcbitcXG4rXFx0dGVzdF9pbml0KCk7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2b2JqLCAyKTtcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfZGVjX2lmX29uZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0cmVmY291bnRfdCBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFx0cmVmY291bnRfc2V0KFxcdTAwMjZvYmosIDIpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2b2JqKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19pZl9vbmUoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KCk7XFxuK31cXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRzdHJ1Y3QgcGVyY3B1X3JlZiBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFxuK1xcdEtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNm9iaik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2b2JqKTtcXG4rXFxuK1xcdHRlc3RfZXhpdCgpO1xcbitcXHRwZXJjcHVfcmVmX2V4aXQoXFx1MDAyNm9iaik7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksXFxuK1xcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwicmVmY291bnQtdHJhY2VcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IHJlZmNvdW50X3RyYWNlX3Rlc3RfY2FzZXNcXG4rfTtcXG4rXFxuK2t1bml0X3Rlc3Rfc3VpdGVzKFxcdTAwMjZyZWZjb3VudF90cmFjZV90ZXN0X3N1aXRlKTtcXG4rXFxuK01PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBNYXZpY2sgXFx1MDAzY21AbWF2aWNrLmRldlxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwMzo1NjozMi41NDg2NzIwMDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTM3MDI2MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ5OGQ3ODBmZWI1NGZjNDVmMDZhOTYxZDdkYWU3MDRlNjEyN2I0NjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwMzo1NjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIuLmMzN2U0Y2QwZTRmZjYgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcbiBGOlx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxuIEY6XHRpbmNsdWRlLyovYXRvbWljKi5oXG4rRjpcdGluY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZmNvdW50X3RyYWNlLmNcbitGOlx0bGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbiBGOlx0c2NyaXB0cy9hdG9taWMvXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5pbmRleCBkNzNhMWMwOGMzZTNjLi4yNDQ5OTJiMmY3NDZlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgKzU1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcbiBcbiBcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcdTAwMjZwZXJjcHVfY291bnQpKVxuIFx0XHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xuLVx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKVxuK1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4rXHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5pbmRleCBiYTc2NTdjZWQyODE3Li4yMzI5MWEzMWQxYmUyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiArMTA3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxuIFxuIFx0aWYgKG9sZCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgb2xkID09IGkpIHtcbiBcdFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XG4rXHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNmY4ZDBiYTkxMGYwNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG5AQCAtMCwwICsxLDMzIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4rXG4rI2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVRcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZmNvdW50X2ZpbmFsX3B1dCk7XG4rXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cbitleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmY291bnRfZmluYWxfcHV0KSlcdFx0XHRcXFxuK1x0XHRcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1x0XFxcbitcdH0gd2hpbGUgKDApXG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmY291bnRfZmluYWxfcHV0KSBcdTAwMjZcdTAwMjYgY29uZClcdFx0XFxcbitcdFx0XHRkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXG4rI2VuZGlmXG4rXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmY291bnQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXG5AQCAtMCwwICsxLDU1IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjdW5kZWYgVFJBQ0VfU1lTVEVNXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnRcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4rI2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuK1xuKyNpZmRlZiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUXG4rXG4rLyoqXG4rICogcmVmY291bnRfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cbisgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcbisgKiBAaXA6IHJldHVybiBhZGRyZXNzIG9mIHRyYWNlIHdyYXBwZXIgbWFjcm8gY2FsbCxcbisgKiBpbmxpbmluZyBtYXkgY2F1c2UgaXQgdG8gYmUgc29tZXRoaW5nIGVsc2UgdGhvXG4rICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KVxuKyAqXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXRcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9USElTX0lQXyBmb3IgY2FsbGVyIGFuZCBpcCBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxuKyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuKyAqL1xuK1RSQUNFX0VWRU5UKHJlZmNvdW50X2ZpbmFsX3B1dCxcbitcbitcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopLFxuK1xuK1x0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxuK1xuK1x0VFBfU1RSVUNUX19lbnRyeShcbitcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGNhbGxlclx0KVxuK1x0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0aXBcdClcbitcdFx0X19maWVsZChcdGNvbnN0IHZvaWQgKixcdFx0b2JqXHQpXG4rXHQpLFxuK1xuK1x0VFBfZmFzdF9hc3NpZ24oXG4rXHRcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuK1x0XHRfX2VudHJ5LVx1MDAzZWlwID0gaXA7XG4rXHRcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuK1x0KSxcbitcbitcdFRQX3ByaW50ayhcImNhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFwiLFxuK1x0XHQgICh2b2lkICopX19lbnRyeS1cdTAwM2VjYWxsZXIsXG4rXHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWlwLFxuK1x0XHQgIF9fZW50cnktXHUwMDNlb2JqXG4rXHQpXG4rKTtcbitcbisjZW5kaWYgLyogQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCAqL1xuK1xuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqL1xuK1xuKy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xuaW5kZXggMDBhOTUwOTYzNmMxOC4uZWUxMmU4Zjk1MTU4OSAxMDA2NDRcbi0tLSBhL2xpYi9LY29uZmlnXG4rKysgYi9saWIvS2NvbmZpZ1xuQEAgLTUyLDYgKzUyLDI0IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcbiBcbiBcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXG4gXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuK1x0Ym9vbCBcIlRyYWNlIGZpbmFsIHB1dHMgb24gbXVsdGlwbGUgcmVmY291bnQgaW1wbGVtZW50YXRpb25zXCJcbitcdGRlcGVuZHMgb24gVFJBQ0VQT0lOVFMgXHUwMDI2XHUwMDI2IERFQlVHX0tFUk5FTFxuK1x0aGVscFxuK1x0ICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1RcbitcdHRyaXN0YXRlIFwicmVmY291bnQgdHJhY2Uga3VuaXQgdGVzdFwiIGlmICFLVU5JVF9BTExfVEVTVFNcbitcdGRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUIFx1MDAyNlx1MDAyNiBLVU5JVCBcdTAwMjZcdTAwMjYgVFJBQ0VQT0lOVFNcbitcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4rXHRoZWxwXG4rXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZjb3VudF9maW5hbF9wdXRcbitcdCAgdHJhY2Vwb2ludC5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbitcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbisrKyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICszMzUsNSBAQCBDT05URVhUX0FOQUxZU0lTX3Rlc3RfY29udGV4dC1hbmFseXNpcy5vIDo9IHlcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgKz0gdGVzdF9mb3J0aWZ5XG4rXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgKz0gcmVmY291bnRfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcbmluZGV4IGEyMDdhOGYyMmIzY2EuLjhiMTQ4YjU3NjUwMzcgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuKysrIGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnVnLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcdFdBUk5fT05DRSgxLCBcInJlZmNvdW50X3Q6IFwiIHN0ciBcIi5cXG5cIilcbiBcbkBAIC01Niw3ICs1NywxMCBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcilcbiB7XG4gXHRpbnQgdmFsID0gMTtcbiBcbi1cdHJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZShcdTAwMjZyLVx1MDAzZXJlZnMsIFx1MDAyNnZhbCwgMCk7XG4rXHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbitcbitcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dF9jb25kKHJldCwgcik7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJlZmNvdW50X2RlY19pZl9vbmUpO1xuIFxuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudF90cmFjZS5jIGIvbGliL3JlZmNvdW50X3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc2YmI1ZjJmNjAzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvcmVmY291bnRfdHJhY2UuY1xuQEAgLTAsMCArMSwxNCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXHUwMDNlXG4rXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbit2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdFx0XHRcdCB1bnNpZ25lZCBsb25nIGlwLFxuK1x0XHRcdFx0IGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KTtcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhLi4xZWY0MWMwYjZhMGMxIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXG4rKysgYi9saWIvdGVzdHMvTWFrZWZpbGVcbkBAIC01Nyw1ICs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSArPSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1JBVEVMSU1JVF9LVU5JVF9URVNUKSArPSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgKz0gdXVpZF9rdW5pdC5vXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0Kz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNTdlOWU0Y2ZhNDI3XG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmY291bnQuaFx1MDAzZVxuK1xuK3N0cnVjdCBkYXRhIHtcbitcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuK1x0dW5zaWduZWQgbG9uZyBpcDtcbitcdGNvbnN0IHZvaWQgKm9iajtcbitcdGF0b21pY190IGNvdW50O1xuK307XG4rXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcbitcbitjb25zdCB2b2lkICpjaGtfb2JqO1xuK1xuKyNkZWZpbmUgdGVzdF9pbml0KClcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoXHRcdFx0XHRcdFx0XFxcbitcdFx0XHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2hrX29iaiA9IFx1MDAyNm9iajtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK1xuKyNkZWZpbmUgdGVzdF9leGl0KClcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXHRcdFx0XHRcdFxcXG4rXHRcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFx0XHRcdFx0XFxcbitcdFx0XHRcdTAwMjZjYXB0dXJlLmNvdW50LFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0YXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSxcdFx0XHRcXFxuK1x0XHRcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXHRcdFx0XHRcdFxcXG4rXHRcdCk7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XHRcdFxcXG4rXHRcdHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpO1x0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1x0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIF9fa2VybmVsX3RleHRfYWRkcmVzcyhjYXB0dXJlLmNhbGxlcikpO1x0XFxcbitcdFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgX19rZXJuZWxfdGV4dF9hZGRyZXNzKGNhcHR1cmUuaXApKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcdTAwMjZvYmopO1x0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK3N0YXRpYyB2b2lkIHByb2JlKFxuK1x0ICB2b2lkICppZ25vcmUsXG4rXHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxuK1x0ICB1bnNpZ25lZCBsb25nIGlwLFxuK1x0ICBjb25zdCB2b2lkICpvYmopXG4re1xuK1x0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xuK1x0aWYgKGNoa19vYmogIT0gb2JqKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRjYXB0dXJlLmNhbGxlciA9IGNhbGxlcjtcbitcdGNhcHR1cmUuaXAgPSBpcDtcbitcdGNhcHR1cmUub2JqID0gb2JqO1xuK1xuK1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0cmVmY291bnRfdCBvYmo7XG4rXG4rXHR0ZXN0X2luaXQoKTtcbitcdHJlZmNvdW50X3NldChcdTAwMjZvYmosIDIpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbitcbitcdHRlc3RfZXhpdCgpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHJlZmNvdW50X3Qgb2JqO1xuK1xuK1x0dGVzdF9pbml0KCk7XG4rXHRyZWZjb3VudF9zZXQoXHUwMDI2b2JqLCAyKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKFx1MDAyNm9iaikpO1xuK1xuK1x0dGVzdF9leGl0KCk7XG4rfVxuK3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHN0cnVjdCBwZXJjcHVfcmVmIG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1xuK1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbitcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNm9iaik7XG4rXHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhcdTAwMjZvYmopO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcbitcdHRlc3RfZXhpdCgpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNm9iaik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4rXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfc3ViX2FuZF90ZXN0KSxcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbitcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcbitcdHt9XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZmNvdW50X3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmY291bnQtdHJhY2VcIixcbitcdC50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1xuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSk7XG4rXG4rTU9EVUxFX0FVVEhPUihcIkV1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDAzOjU2OjMyLjU0ODY3MzY1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MzcwMDA0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgYmFzZWQgb24gdGhlIHByb21wdCdzIHJ1bGVzLCB0aGlzICpzaG91bGQqIGJlIG1hcmtlZCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQncyBhZGRpbmcgYSB0cmFjZXBvaW50LCBgcmVmY291bnRfZmluYWxfcHV0YCwgdG8gdHJhY2sgd2hlbiBhIHJlZmNvdW50IG9iamVjdCBpcyBjb25zaWRlcmVkIGRlYWQuIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gc2V2ZXJhbCBjb3JlIGZpbGVzOiBgcGVyY3B1LXJlZmNvdW50LmhgLCBgcmVmY291bnQuaGAsIGFuZCBgcmVmY291bnQuY2AsIGFsbCBhaW1lZCBhdCBpbnNlcnRpbmcgY2FsbHMgdG8gZWl0aGVyIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRgIG9yIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZGAuICBJdCdzIGFsc28gaW50cm9kdWNpbmcgbmV3IGZpbGVzIGZvciB0aGUgdHJhY2Vwb2ludCBpdHNlbGY6IGByZWZjb3VudF90cmFjZS5oYCwgYGV2ZW50cy9yZWZjb3VudC5oYCwgYHJlZmNvdW50X3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0IGByZWZjb3VudF90cmFjZV9rdW5pdC5jYCwgYXMgd2VsbCBhcyBLY29uZmlnIG9wdGlvbnMuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gbWFyayBwYXRjaGVzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkgb25seSBjb250YWluIG1vZGlmaWNhdGlvbnMgbGlrZSB0aGlzIOKAkyBhZGRpdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsICpvciogdHJhY2Vwb2ludHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBhbnl0aGluZyBydW5zLlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gcmVhbGx5IGNvbmZpcm0gdGhpcy4gSSdtIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZzIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBjb2RlIGFsdGVyYXRpb25zLlxuXG4qICAgYHBlcmNwdV9yZWZfcHV0X21hbnlgOiBJIHNlZSBpdCdzIGFkZGluZyBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHJlZik7YCBpbnNpZGUgYW4gYGlmYCBibG9jayB0aGF0IGNoZWNrcyBpZiB0aGUgcmVmY291bnQgYmVjb21lcyB6ZXJvLiBJdCdzICpub3QqIGNoYW5naW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVmY291bnQgaXRzZWxmLlxuXG4qICAgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YDogQWdhaW4sIG9ubHkgYWRkaW5nIHRoZSB0cmFjZXBvaW50IGNhbGwgYGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyKTtgIGFyb3VuZCB0aGUgY29uZGl0aW9uYWwgcmV0dXJuLiBUaGlzIGRvZXNuJ3QgY2hhbmdlIHdoZW4gYSByZWZlcmVuY2UgaXMgY29uc2lkZXJlZCB0byBiZSBmaW5hbCwgaXQncyBqdXN0IGFkZGluZyBhbiBvYnNlcnZhdGlvbiBwb2ludC5cblxuKiAgIGByZWZjb3VudF9kZWNfaWZfb25lYDogU2ltaWxhciBwYXR0ZXJuLiBJdCBhZGRzIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO2AgYmFzZWQgb24gdGhlIHJldHVybiBvZiBgYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2VgLiBUaGUgY29yZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgdW5jaGFuZ2VkLlxuXG5UaGUgcmVzdCBpcyBqdXN0IHRoZSB0cmFjZXBvaW50IGltcGxlbWVudGF0aW9uIGFuZCBpdHMgdGVzdC4gU28sIEknbSBjb25maWRlbnQgdGhhdCB0aGVzZSBhZGRpdGlvbnMgYXJlICpwdXJlbHkqIGZvciB0cmFjaW5nIGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGJlaGF2aW9yIG9yIGFsdGVyIGV4aXN0aW5nIGV4ZWN1dGlvbiBmbG93LiAgVGhlcmVmb3JlLCBJJ20gY29uY2x1ZGluZyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBub3Qgd29ydGggZnV6emluZy4gTXkgZmluYWwgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDc3LCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6NDEuMDg1Njc3MDY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6NDEuMDg1NzAwNzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj6bk6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 03:55:17 +0000 UTC FinishedAt: 2026-08-13 03:56:43 +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+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCAoYHJlZmNvdW50X2ZpbmFsX3B1dGApIGFuZCBpdHMgYXNzb2NpYXRlZCBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDk4ZDc4MGZlYjU0ZmM0NWYwNmE5NjFkN2RhZTcwNGU2MTI3YjQ2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDAzOjU2OjMxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIuLmMzN2U0Y2QwZTRmZjYgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG4gRjpcdGluY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MztGOlx0bGliL3JlZmNvdW50X3RyYWNlLmNcbiYjNDM7RjpcdGxpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYy4uMjQ0OTkyYjJmNzQ2ZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICYjNDM7NTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4mIzQzO1x0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgJiM0MzsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0ZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHIpO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZjhkMGJhOTEwZjA1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDMzIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyNpZm5kZWYgX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4mIzQzO0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZjb3VudF9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cbiYjNDM7ZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKVx0XHRcdFxcXG4mIzQzO1x0XHRcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1x0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpIFx1MDAyNlx1MDAyNiBjb25kKVx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKTtcbiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmY291bnQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXG5AQCAtMCwwICYjNDM7MSw1NSBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNXG4mIzQzOyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZmNvdW50XG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4mIzQzOyNkZWZpbmUgX1RSQUNFX1JFRkNPVU5UX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVRcbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiByZWZjb3VudF9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuJiM0MzsgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBpcDogcmV0dXJuIGFkZHJlc3Mgb2YgdHJhY2Ugd3JhcHBlciBtYWNybyBjYWxsLFxuJiM0MzsgKiBpbmxpbmluZyBtYXkgY2F1c2UgaXQgdG8gYmUgc29tZXRoaW5nIGVsc2UgdGhvXG4mIzQzOyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcbiYjNDM7ICpcbiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXRcbiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX1RISVNfSVBfIGZvciBjYWxsZXIgYW5kIGlwIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksXG4mIzQzOyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuJiM0MzsgKi9cbiYjNDM7VFJBQ0VfRVZFTlQocmVmY291bnRfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxuJiM0MztcbiYjNDM7XHRUUF9TVFJVQ1RfX2VudHJ5KFxuJiM0MztcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGNhbGxlclx0KVxuJiM0MztcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGlwXHQpXG4mIzQzO1x0XHRfX2ZpZWxkKFx0Y29uc3Qgdm9pZCAqLFx0XHRvYmpcdClcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdFx0X19lbnRyeS1cdTAwM2VpcCA9IGlwO1xuJiM0MztcdFx0X19lbnRyeS1cdTAwM2VvYmogPSBvYmo7XG4mIzQzO1x0KSxcbiYjNDM7XG4mIzQzO1x0VFBfcHJpbnRrKFwmIzM0O2NhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFwmIzM0OyxcbiYjNDM7XHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlcixcbiYjNDM7XHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWlwLFxuJiM0MztcdFx0ICBfX2VudHJ5LVx1MDAzZW9ialxuJiM0MztcdClcbiYjNDM7KTtcbiYjNDM7XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRkNPVU5UX0ggKi9cbiYjNDM7XG4mIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWdcbmluZGV4IDAwYTk1MDk2MzZjMTguLmVlMTJlOGY5NTE1ODkgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMjQgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuJiM0MztcdGJvb2wgXCYjMzQ7VHJhY2UgZmluYWwgcHV0cyBvbiBtdWx0aXBsZSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbnNcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIFRSQUNFUE9JTlRTIFx1MDAyNlx1MDAyNiBERUJVR19LRVJORUxcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuXG4mIzQzO1xuJiM0MztcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjNDM7XG4mIzQzO2NvbmZpZyBSRUZDT1VOVF9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0dHJpc3RhdGUgXCYjMzQ7cmVmY291bnQgdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBSRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgXHUwMDI2XHUwMDI2IEtVTklUIFx1MDAyNlx1MDAyNiBUUkFDRVBPSU5UU1xuJiM0MztcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0aGVscFxuJiM0MztcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZmNvdW50X2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiM0MztcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICYjNDM7MzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XG4gb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXG4gXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSAmIzQzOz0gdGVzdF9mb3J0aWZ5XG4mIzQzO1xuJiM0MztvYmotJChDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUKSAmIzQzOz0gcmVmY291bnRfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcbmluZGV4IGEyMDdhOGYyMmIzY2EuLjhiMTQ4YjU3NjUwMzcgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgJiM0Mzs3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2J1Zy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcdTAwM2VcbiBcbiAjZGVmaW5lIFJFRkNPVU5UX1dBUk4oc3RyKVx0V0FSTl9PTkNFKDEsIFwmIzM0O3JlZmNvdW50X3Q6IFwmIzM0OyBzdHIgXCYjMzQ7LlxcblwmIzM0OylcbiBcbkBAIC01Niw3ICYjNDM7NTcsMTAgQEAgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpXG4ge1xuIFx0aW50IHZhbCA9IDE7XG4gXG4tXHRyZXR1cm4gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuJiM0MztcdGJvb2wgcmV0ID0gYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2UoXHUwMDI2ci1cdTAwM2VyZWZzLCBcdTAwMjZ2YWwsIDApO1xuJiM0MztcbiYjNDM7XHRkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XG4gXG5kaWZmIC0tZ2l0IGEvbGliL3JlZmNvdW50X3RyYWNlLmMgYi9saWIvcmVmY291bnRfdHJhY2UuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjI0NzZiYjVmMmY2MDNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXG5AQCAtMCwwICYjNDM7MSwxNCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0XHRcdFx0IHVuc2lnbmVkIGxvbmcgaXAsXG4mIzQzO1x0XHRcdFx0IGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHRyYWNlX2NhbGxfX3JlZmNvdW50X2ZpbmFsX3B1dChjYWxsZXIsIGlwLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmY291bnRfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWEuLjFlZjQxYzBiNmEwYzEgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSAmIzQzOz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgJiM0Mzs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgJiM0Mzs9IHV1aWRfa3VuaXQub1xuJiM0MztvYmotJChDT05GSUdfUkVGQ09VTlRfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0JiM0Mzs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyN1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDE0MSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvamlmZmllcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9hdG9taWMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmY291bnQuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaXA7XG4mIzQzO1x0Y29uc3Qgdm9pZCAqb2JqO1xuJiM0MztcdGF0b21pY190IGNvdW50O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgY2FwdHVyZTtcbiYjNDM7XG4mIzQzO2NvbnN0IHZvaWQgKmNoa19vYmo7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpXHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0dGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjaGtfb2JqID0gXHUwMDI2b2JqO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9IHdoaWxlICgwKVxuJiM0MztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGVzdF9leGl0KClcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRkbyB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi9cdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHUwMDI2Y2FwdHVyZS5jb3VudCxcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRhdG9taWNfcmVhZF9hY3F1aXJlKFx1MDAyNmNhcHR1cmUuY291bnQpLFx0XHRcdFxcXG4mIzQzO1x0XHRcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQpO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XHRcdFxcXG4mIzQzO1x0XHR0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTtcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgYXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSwgMSk7XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5jYWxsZXIpKTtcdFxcXG4mIzQzO1x0XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpO1x0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0S1VOSVRfRVhQRUNUX1BUUl9FUSh0ZXN0LCBjYXB0dXJlLm9iaiwgXHUwMDI2b2JqKTtcdFx0XHRcXFxuJiM0MztcdH0gd2hpbGUgKDApXG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBwcm9iZShcbiYjNDM7XHQgIHZvaWQgKmlnbm9yZSxcbiYjNDM7XHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBpcCxcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdC8vcHJldmVudCBub24gdGVzdCBmdW5jIGZpbmFsX3B1dHMgZnJvbSBjaGFuZ2luZyBjYXB0dXJlZCB2YWx1ZXNcbiYjNDM7XHRpZiAoY2hrX29iaiAhPSBvYmopXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xuJiM0MztcdGNhcHR1cmUuaXAgPSBpcDtcbiYjNDM7XHRjYXB0dXJlLm9iaiA9IG9iajtcbiYjNDM7XG4mIzQzO1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4mIzQzO3tcbiYjNDM7XHRyZWZjb3VudF90IG9iajtcbiYjNDM7XG4mIzQzO1x0dGVzdF9pbml0KCk7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNm9iaiwgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHJlZmNvdW50X3Qgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2b2JqLCAyKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKFx1MDAyNm9iaikpO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2V4aXQoKTtcbiYjNDM7fVxuJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHBlcmNwdV9yZWYgb2JqO1xuJiM0MztcbiYjNDM7XHR0ZXN0X2luaXQoKTtcbiYjNDM7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2b2JqKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuJiM0MztcbiYjNDM7XHRwZXJjcHVfcmVmX3B1dChcdTAwMjZvYmopO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4mIzQzO1xuJiM0MztcdHRlc3RfZXhpdCgpO1xuJiM0MztcdHBlcmNwdV9yZWZfZXhpdChcdTAwMjZvYmopO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxuJiM0MztcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1X3JlZl9wdXRfbWFueSksXG4mIzQzO1x0e31cbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZmNvdW50LXRyYWNlXCYjMzQ7LFxuJiM0MztcdC50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSk7XG4mIzQzO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0V1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0tVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDM6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ5OGQ3ODBmZWI1NGZjNDVmMDZhOTYxZDdkYWU3MDRlNjEyN2I0NjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAwMzo1NjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMTBlODI1MzE4MWQzMi4uYzM3ZTRjZDBlNGZmNiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlMKQEAgLTQyMTAsNyAmIzQzOzQyMTAsMTAgQEAgUzoJTWFpbnRhaW5lZAogRjoJRG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHQKIEY6CWFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmgKIEY6CWluY2x1ZGUvKi9hdG9taWMqLmgKJiM0MztGOglpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmgKIEY6CWluY2x1ZGUvbGludXgvcmVmY291bnQuaAomIzQzO0Y6CWxpYi9yZWZjb3VudF90cmFjZS5jCiYjNDM7RjoJbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMKIEY6CXNjcmlwdHMvYXRvbWljLwogRjoJcnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnMKIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgKaW5kZXggZDczYTFjMDhjM2UzYy4uMjQ0OTkyYjJmNzQ2ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogc3RydWN0IHBlcmNwdV9yZWY7CiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTsKQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCiAKIAlpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJmFtcDtwZXJjcHVfY291bnQpKQogCQl0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpOwotCWVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgJmFtcDtyZWYtJmd0O2RhdGEtJmd0O2NvdW50KSkpCiYjNDM7CWVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgJmFtcDtyZWYtJmd0O2RhdGEtJmd0O2NvdW50KSkpIHsKJiM0MzsJCWRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpOwogCQlyZWYtJmd0O2RhdGEtJmd0O3JlbGVhc2UocmVmKTsKJiM0MzsJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaApAQCAtMTA3LDYgJiM0MzsxMDcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2xpbWl0cy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3R5cGVzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2tfdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQlkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocik7CiAJCXJldHVybiB0cnVlOwogCX0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjZmOGQwYmE5MTBmMDUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMzMgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0gKJiM0MzsjZGVmaW5lIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZmNvdW50X2ZpbmFsX3B1dCk7CiYjNDM7CiYjNDM7LyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7CiYjNDM7CiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKQkJCVwKJiM0MzsJCQlkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTsJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzOyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZmNvdW50X2ZpbmFsX3B1dCkgJmFtcDsmYW1wOyBjb25kKQkJXAomIzQzOwkJCWRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopOwlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7I2Vsc2UgLyogIUNPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgKi8KJiM0MztleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7CiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApCiYjNDM7I2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRkNPVU5UX1RSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0ZGMyM2FmZjkzYjYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oCkBAIC0wLDAgJiM0MzsxLDU1IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsjdW5kZWYgVFJBQ0VfU1lTVEVNCiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnQKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpCiYjNDM7I2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90cmFjZXBvaW50LmgmZ3Q7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZjb3VudF9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybwomIzQzOyAqIEBjYWxsZXI6IHJldHVybiBhZGRyZXNzIG9mIHJlZmNvdW50CiYjNDM7ICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KQomIzQzOyAqIEBpcDogcmV0dXJuIGFkZHJlc3Mgb2YgdHJhY2Ugd3JhcHBlciBtYWNybyBjYWxsLAomIzQzOyAqIGlubGluaW5nIG1heSBjYXVzZSBpdCB0byBiZSBzb21ldGhpbmcgZWxzZSB0aG8KJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpCiYjNDM7ICoKJiM0MzsgKiBUcmFjZXBvaW50IGluc3RydW1lbnRhdGlvbiBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dAomIzQzOyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX1RISVNfSVBfIGZvciBjYWxsZXIgYW5kIGlwIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksCiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkCiYjNDM7ICovCiYjNDM7VFJBQ0VfRVZFTlQocmVmY291bnRfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKSwKJiM0MzsKJiM0MzsJVFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLAomIzQzOwomIzQzOwlUUF9TVFJVQ1RfX2VudHJ5KAomIzQzOwkJX19maWVsZCgJdW5zaWduZWQgbG9uZywJCWNhbGxlcgkpCiYjNDM7CQlfX2ZpZWxkKAl1bnNpZ25lZCBsb25nLAkJaXAJKQomIzQzOwkJX19maWVsZCgJY29uc3Qgdm9pZCAqLAkJb2JqCSkKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CQlfX2VudHJ5LSZndDtjYWxsZXIgPSBjYWxsZXI7CiYjNDM7CQlfX2VudHJ5LSZndDtpcCA9IGlwOwomIzQzOwkJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGlwPSVwUyBvYmo9JXAmIzM0OywKJiM0MzsJCSAgKHZvaWQgKilfX2VudHJ5LSZndDtjYWxsZXIsCiYjNDM7CQkgICh2b2lkICopX19lbnRyeS0mZ3Q7aXAsCiYjNDM7CQkgIF9fZW50cnktJmd0O29iagomIzQzOwkpCiYjNDM7KTsKJiM0MzsKJiM0MzsjZW5kaWYgLyogQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCAqLwomIzQzOwomIzQzOyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxOC4uZWUxMmU4Zjk1MTU4OSAxMDA2NDQKLS0tIGEvbGliL0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWcKQEAgLTUyLDYgJiM0Mzs1MiwyNCBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUCiAKIAkgIFdoZW4gaW4gZG91YnQsIHNheSBOLgogCiYjNDM7Y29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVAomIzQzOwlib29sICYjMzQ7VHJhY2UgZmluYWwgcHV0cyBvbiBtdWx0aXBsZSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbnMmIzM0OwomIzQzOwlkZXBlbmRzIG9uIFRSQUNFUE9JTlRTICZhbXA7JmFtcDsgREVCVUdfS0VSTkVMCiYjNDM7CWhlbHAKJiM0MzsJICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTi4KJiM0MzsKJiM0Mztjb25maWcgUkVGQ09VTlRfVFJBQ0VfS1VOSVRfVEVTVAomIzQzOwl0cmlzdGF0ZSAmIzM0O3JlZmNvdW50IHRyYWNlIGt1bml0IHRlc3QmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICZhbXA7JmFtcDsgS1VOSVQgJmFtcDsmYW1wOyBUUkFDRVBPSU5UUwomIzQzOwlkZWZhdWx0IEtVTklUX0FMTF9URVNUUwomIzQzOwloZWxwCiYjNDM7CSAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZmNvdW50X2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTi4KJiM0MzsKIGNvbmZpZyBCSVRSRVZFUlNFCiAJdHJpc3RhdGUKIApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGUKQEAgLTMzNSwzICYjNDM7MzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5CiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSAmIzQzOz0gdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8KIAogc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSAmIzQzOz0gdGVzdF9mb3J0aWZ5CiYjNDM7CiYjNDM7b2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgJiM0Mzs9IHJlZmNvdW50X3RyYWNlLm8KZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmMKaW5kZXggYTIwN2E4ZjIyYjNjYS4uOGIxNDhiNTc2NTAzNyAxMDA2NDQKLS0tIGEvbGliL3JlZmNvdW50LmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZmNvdW50LmMKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc3BpbmxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9idWcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cikJV0FSTl9PTkNFKDEsICYjMzQ7cmVmY291bnRfdDogJiMzNDsgc3RyICYjMzQ7LlxuJiMzNDspCiAKQEAgLTU2LDcgJiM0Mzs1NywxMCBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcikKIHsKIAlpbnQgdmFsID0gMTsKIAotCXJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsJYm9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZSgmYW1wO3ItJmd0O3JlZnMsICZhbXA7dmFsLCAwKTsKJiM0MzsKJiM0MzsJZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQocmV0LCByKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudF90cmFjZS5jIGIvbGliL3JlZmNvdW50X3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjQ3NmJiNWYyZjYwMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZjb3VudF90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDE0IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZmNvdW50LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50X3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXMKJiM0Mzt2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwKJiM0MzsJCQkJIHVuc2lnbmVkIGxvbmcgaXAsCiYjNDM7CQkJCSBjb25zdCB2b2lkICpvYmopCiYjNDM7ewomIzQzOwl0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KTsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7CmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGUKaW5kZXggN2U5YzJmYTUyZTM1YS4uMWVmNDFjMGI2YTBjMSAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICYjNDM7PSByZWZjb3VudF90cmFjZV9rdW5pdC5vCiAKIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKQkJJiM0Mzs9IG1vZHVsZS8KZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyNwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jCkBAIC0wLDAgJiM0MzsxLDE0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtrdW5pdC90ZXN0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvd2FpdF9iaXQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rYWxsc3ltcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9qaWZmaWVzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC90eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9hdG9taWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZmNvdW50LmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJdW5zaWduZWQgbG9uZyBpcDsKJiM0MzsJY29uc3Qgdm9pZCAqb2JqOwomIzQzOwlhdG9taWNfdCBjb3VudDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBkYXRhIGNhcHR1cmU7CiYjNDM7CiYjNDM7Y29uc3Qgdm9pZCAqY2hrX29iajsKJiM0MzsKJiM0MzsjZGVmaW5lIHRlc3RfaW5pdCgpCQkJCQkJCQlcCiYjNDM7CWRvIHsJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfRkFMU0UoCQkJCQkJXAomIzQzOwkJCXRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCWF0b21pY19zZXRfcmVsZWFzZSgmYW1wO2NhcHR1cmUuY291bnQsIDApOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCWNoa19vYmogPSAmYW1wO29iajsJCQkJCQkJXAomIzQzOwl9IHdoaWxlICgwKQomIzQzOwomIzQzOwomIzQzOyNkZWZpbmUgdGVzdF9leGl0KCkJCQkJCQkJCVwKJiM0MzsJZG8gewkJCQkJCQkJCVwKJiM0MzsJCS8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi8JCQkJCVwKJiM0MzsJCWludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KAkJCQlcCiYjNDM7CQkJJmFtcDtjYXB0dXJlLmNvdW50LAkJCQkJCVwKJiM0MzsJCQlhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksCQkJXAomIzQzOwkJCW1zZWNzX3RvX2ppZmZpZXMoMTAwMDApCQkJCQlcCiYjNDM7CQkpOwkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQl1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7CQlcCiYjNDM7CQl0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTsJCQkJXAomIzQzOwkJCQkJCQkJCQlcCiYjNDM7CQlLVU5JVF9BU1NFUlRfVFJVRSh0ZXN0LCBub3RpbWVvdXQpOwkJCQlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBhdG9taWNfcmVhZF9hY3F1aXJlKCZhbXA7Y2FwdHVyZS5jb3VudCksIDEpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIF9fa2VybmVsX3RleHRfYWRkcmVzcyhjYXB0dXJlLmNhbGxlcikpOwlcCiYjNDM7CQlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpOwlcCiYjNDM7CQkJCQkJCQkJCVwKJiM0MzsJCUtVTklUX0VYUEVDVF9QVFJfRVEodGVzdCwgY2FwdHVyZS5vYmosICZhbXA7b2JqKTsJCQlcCiYjNDM7CX0gd2hpbGUgKDApCiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcHJvYmUoCiYjNDM7CSAgdm9pZCAqaWdub3JlLAomIzQzOwkgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLAomIzQzOwkgIHVuc2lnbmVkIGxvbmcgaXAsCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJLy9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlcwomIzQzOwlpZiAoY2hrX29iaiAhPSBvYmopCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWNhcHR1cmUuY2FsbGVyID0gY2FsbGVyOwomIzQzOwljYXB0dXJlLmlwID0gaXA7CiYjNDM7CWNhcHR1cmUub2JqID0gb2JqOwomIzQzOwomIzQzOwlhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKCZhbXA7Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnQKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCBvYmo7CiYjNDM7CiYjNDM7CXRlc3RfaW5pdCgpOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtvYmosIDIpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7b2JqKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO29iaikpOwomIzQzOwomIzQzOwl0ZXN0X2V4aXQoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXJlZmNvdW50X3Qgb2JqOwomIzQzOwomIzQzOwl0ZXN0X2luaXQoKTsKJiM0MzsJcmVmY291bnRfc2V0KCZhbXA7b2JqLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO29iaikpOwomIzQzOwlLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKCZhbXA7b2JqKSk7CiYjNDM7CiYjNDM7CXRlc3RfZXhpdCgpOwomIzQzO30KJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBwZXJjcHVfcmVmIG9iajsKJiM0MzsKJiM0MzsJdGVzdF9pbml0KCk7CiYjNDM7CiYjNDM7CUtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoJmFtcDtvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtvYmopOwomIzQzOwlwZXJjcHVfcmVmX2dldCgmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfcHV0KCZhbXA7b2JqKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtvYmopOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYygmYW1wO29iaik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfcHV0KCZhbXA7b2JqKTsKJiM0MzsKJiM0MzsJdGVzdF9leGl0KCk7CiYjNDM7CXBlcmNwdV9yZWZfZXhpdCgmYW1wO29iaik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLAomIzQzOwlLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSwKJiM0MzsJe30KJiM0Mzt9OwomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZmNvdW50LXRyYWNlJiMzNDssCiYjNDM7CS50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlcwomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZjb3VudF90cmFjZV90ZXN0X3N1aXRlKTsKJiM0MzsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7RXVnZW5lIE1hdmljayAmbHQ7bUBtYXZpY2suZGV2Jmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2UmIzM0Oyk7CiYjNDM7TU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDAzOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NzcKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA2NjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIHJ1bGVzLCB0aGlzICpzaG91bGQqIGJlIG1hcmtlZCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQmIzM5O3MgYWRkaW5nIGEgdHJhY2Vwb2ludCwgYHJlZmNvdW50X2ZpbmFsX3B1dGAsIHRvIHRyYWNrIHdoZW4gYSByZWZjb3VudCBvYmplY3QgaXMgY29uc2lkZXJlZCBkZWFkLiBJIHNlZSBtb2RpZmljYXRpb25zIHRvIHNldmVyYWwgY29yZSBmaWxlczogYHBlcmNwdS1yZWZjb3VudC5oYCwgYHJlZmNvdW50LmhgLCBhbmQgYHJlZmNvdW50LmNgLCBhbGwgYWltZWQgYXQgaW5zZXJ0aW5nIGNhbGxzIHRvIGVpdGhlciBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0YCBvciBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmRgLiAgSXQmIzM5O3MgYWxzbyBpbnRyb2R1Y2luZyBuZXcgZmlsZXMgZm9yIHRoZSB0cmFjZXBvaW50IGl0c2VsZjogYHJlZmNvdW50X3RyYWNlLmhgLCBgZXZlbnRzL3JlZmNvdW50LmhgLCBgcmVmY291bnRfdHJhY2UuY2AsIGFuZCBhIEtVbml0IHRlc3QgYHJlZmNvdW50X3RyYWNlX2t1bml0LmNgLCBhcyB3ZWxsIGFzIEtjb25maWcgb3B0aW9ucy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gbWFyayBwYXRjaGVzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkgb25seSBjb250YWluIG1vZGlmaWNhdGlvbnMgbGlrZSB0aGlzIOKAkyBhZGRpdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsICpvciogdHJhY2Vwb2ludHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2VzbiYjMzk7dCBhY3R1YWxseSAqY2hhbmdlKiBob3cgYW55dGhpbmcgcnVucy4KCkFscmlnaHQsIEkgbmVlZCB0byByZWFsbHkgY29uZmlybSB0aGlzLiBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZzIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBjb2RlIGFsdGVyYXRpb25zLgoKKiAgIGBwZXJjcHVfcmVmX3B1dF9tYW55YDogSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocmVmKTtgIGluc2lkZSBhbiBgaWZgIGJsb2NrIHRoYXQgY2hlY2tzIGlmIHRoZSByZWZjb3VudCBiZWNvbWVzIHplcm8uIEl0JiMzOTtzICpub3QqIGNoYW5naW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVmY291bnQgaXRzZWxmLgoKKiAgIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGA6IEFnYWluLCBvbmx5IGFkZGluZyB0aGUgdHJhY2Vwb2ludCBjYWxsIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocik7YCBhcm91bmQgdGhlIGNvbmRpdGlvbmFsIHJldHVybi4gVGhpcyBkb2VzbiYjMzk7dCBjaGFuZ2Ugd2hlbiBhIHJlZmVyZW5jZSBpcyBjb25zaWRlcmVkIHRvIGJlIGZpbmFsLCBpdCYjMzk7cyBqdXN0IGFkZGluZyBhbiBvYnNlcnZhdGlvbiBwb2ludC4KCiogICBgcmVmY291bnRfZGVjX2lmX29uZWA6IFNpbWlsYXIgcGF0dGVybi4gSXQgYWRkcyBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQocmV0LCByKTtgIGJhc2VkIG9uIHRoZSByZXR1cm4gb2YgYGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlYC4gVGhlIGNvcmUgYXRvbWljIG9wZXJhdGlvbnMgYXJlIHVuY2hhbmdlZC4KClRoZSByZXN0IGlzIGp1c3QgdGhlIHRyYWNlcG9pbnQgaW1wbGVtZW50YXRpb24gYW5kIGl0cyB0ZXN0LiBTbywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGVzZSBhZGRpdGlvbnMgYXJlICpwdXJlbHkqIGZvciB0cmFjaW5nIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbCBiZWhhdmlvciBvciBhbHRlciBleGlzdGluZyBleGVjdXRpb24gZmxvdy4gIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IG5vdCB3b3J0aCBmdXp6aW5nLiBNeSBmaW5hbCBhbnN3ZXIgaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMDM6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAwMzo1NjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6MzEuOTk4MjUxMjUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTA4NzQ1OTkxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6MzEuOTk4MjU5NTYyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk1NTgxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0OThkNzgwZmViNTRmYzQ1ZjA2YTk2MWQ3ZGFlNzA0ZTYxMjdiNDY5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDAzOjU2OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcXG5pbmRleCAxMGU4MjUzMTgxZDMyLi5jMzdlNGNkMGU0ZmY2IDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtNDIxMCw3ICs0MjEwLDEwIEBAIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XFxuIEY6XFx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxcbiBGOlxcdGluY2x1ZGUvKi9hdG9taWMqLmhcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50X3RyYWNlLmhcXG4gRjpcXHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rRjpcXHRsaWIvcmVmY291bnRfdHJhY2UuY1xcbitGOlxcdGxpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jXFxuIEY6XFx0c2NyaXB0cy9hdG9taWMvXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5pbmRleCBkNzNhMWMwOGMzZTNjLi4yNDQ5OTJiMmY3NDZlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuQEAgLTU1LDYgKzU1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmNwdV9yZWY7XFxuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xcbkBAIC0zMzEsOCArMzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXFxuIFxcbiBcXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXFx1MDAyNnBlcmNwdV9jb3VudCkpXFxuIFxcdFxcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XFxuLVxcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSlcXG4rXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKSB7XFxuK1xcdFxcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xcbiBcXHRcXHRyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZXJlbGVhc2UocmVmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuaW5kZXggYmE3NjU3Y2VkMjgxNy4uMjMyOTFhMzFkMWJlMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5AQCAtMTA3LDYgKzEwNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBtdXRleDtcXG4gXFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXFxuIFxcbiBcXHRpZiAob2xkIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBvbGQgPT0gaSkge1xcbiBcXHRcXHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcXG4rXFx0XFx0ZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHIpO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZjhkMGJhOTEwZjA1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxcbkBAIC0wLDAgKzEsMzMgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxcbisjZGVmaW5lIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuK1xcbisjaWZkZWYgQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXFxuK0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZjb3VudF9maW5hbF9wdXQpO1xcbitcXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cXG4rZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZjb3VudF9maW5hbF9wdXQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfVEhJU19JUF8sIG9iaik7XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZmNvdW50X2ZpbmFsX3B1dCkgXFx1MDAyNlxcdTAwMjYgY29uZClcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1xcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuKyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXFxuK2V4dGVybiB2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgdW5zaWduZWQgbG9uZyBpcCwgY29uc3Qgdm9pZCAqb2JqKTtcXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNlbmRpZlxcbitcXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcXG5AQCAtMCwwICsxLDU1IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyN1bmRlZiBUUkFDRV9TWVNURU1cXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnRcXG4rXFxuKyNpZiAhZGVmaW5lZChfVFJBQ0VfUkVGQ09VTlRfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4rI2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFxcdTAwM2VcXG4rXFxuKyNpZmRlZiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUXFxuK1xcbisvKipcXG4rICogcmVmY291bnRfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cXG4rICogQGNhbGxlcjogcmV0dXJuIGFkZHJlc3Mgb2YgcmVmY291bnRcXG4rICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KVxcbisgKiBAaXA6IHJldHVybiBhZGRyZXNzIG9mIHRyYWNlIHdyYXBwZXIgbWFjcm8gY2FsbCxcXG4rICogaW5saW5pbmcgbWF5IGNhdXNlIGl0IHRvIGJlIHNvbWV0aGluZyBlbHNlIHRob1xcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0XFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9USElTX0lQXyBmb3IgY2FsbGVyIGFuZCBpcCBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcXG4rICovXFxuK1RSQUNFX0VWRU5UKHJlZmNvdW50X2ZpbmFsX3B1dCxcXG4rXFxuK1xcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0XFx0X19maWVsZChcXHR1bnNpZ25lZCBsb25nLFxcdFxcdGNhbGxlclxcdClcXG4rXFx0XFx0X19maWVsZChcXHR1bnNpZ25lZCBsb25nLFxcdFxcdGlwXFx0KVxcbitcXHRcXHRfX2ZpZWxkKFxcdGNvbnN0IHZvaWQgKixcXHRcXHRvYmpcXHQpXFxuK1xcdCksXFxuK1xcbitcXHRUUF9mYXN0X2Fzc2lnbihcXG4rXFx0XFx0X19lbnRyeS1cXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xcbitcXHRcXHRfX2VudHJ5LVxcdTAwM2VpcCA9IGlwO1xcbitcXHRcXHRfX2VudHJ5LVxcdTAwM2VvYmogPSBvYmo7XFxuK1xcdCksXFxuK1xcbitcXHRUUF9wcmludGsoXFxcImNhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFxcXCIsXFxuK1xcdFxcdCAgKHZvaWQgKilfX2VudHJ5LVxcdTAwM2VjYWxsZXIsXFxuK1xcdFxcdCAgKHZvaWQgKilfX2VudHJ5LVxcdTAwM2VpcCxcXG4rXFx0XFx0ICBfX2VudHJ5LVxcdTAwM2VvYmpcXG4rXFx0KVxcbispO1xcbitcXG4rI2VuZGlmIC8qIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVQgKi9cXG4rXFxuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTguLmVlMTJlOGY5NTE1ODkgMTAwNjQ0XFxuLS0tIGEvbGliL0tjb25maWdcXG4rKysgYi9saWIvS2NvbmZpZ1xcbkBAIC01Miw2ICs1MiwyNCBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUXFxuIFxcbiBcXHQgIFdoZW4gaW4gZG91YnQsIHNheSBOLlxcbiBcXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxcbitcXHRib29sIFxcXCJUcmFjZSBmaW5hbCBwdXRzIG9uIG11bHRpcGxlIHJlZmNvdW50IGltcGxlbWVudGF0aW9uc1xcXCJcXG4rXFx0ZGVwZW5kcyBvbiBUUkFDRVBPSU5UUyBcXHUwMDI2XFx1MDAyNiBERUJVR19LRVJORUxcXG4rXFx0aGVscFxcbitcXHQgIFRyYWNlIHdoZW4gYSByZWZjb3VudCBpbXBsZW1lbnRhdGlvbiBjb25zaWRlcnMgcmVmY291bnRlZCBvYmplY3QgZGVhZC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuK2NvbmZpZyBSRUZDT1VOVF9UUkFDRV9LVU5JVF9URVNUXFxuK1xcdHRyaXN0YXRlIFxcXCJyZWZjb3VudCB0cmFjZSBrdW5pdCB0ZXN0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuK1xcdGRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUIFxcdTAwMjZcXHUwMDI2IEtVTklUIFxcdTAwMjZcXHUwMDI2IFRSQUNFUE9JTlRTXFxuK1xcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuK1xcdGhlbHBcXG4rXFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmY291bnRfZmluYWxfcHV0XFxuK1xcdCAgdHJhY2Vwb2ludC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGNvbmZpZyBCSVRSRVZFUlNFXFxuIFxcdHRyaXN0YXRlXFxuIFxcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcXG5pbmRleCBmMzNhMjRiZjFjMTlhLi5lNzVlODhmMGM4NzA4IDEwMDY0NFxcbi0tLSBhL2xpYi9NYWtlZmlsZVxcbisrKyBiL2xpYi9NYWtlZmlsZVxcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XFxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXFxuIFxcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxcbitcXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgKz0gcmVmY291bnRfdHJhY2Uub1xcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnQuYyBiL2xpYi9yZWZjb3VudC5jXFxuaW5kZXggYTIwN2E4ZjIyYjNjYS4uOGIxNDhiNTc2NTAzNyAxMDA2NDRcXG4tLS0gYS9saWIvcmVmY291bnQuY1xcbisrKyBiL2xpYi9yZWZjb3VudC5jXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2J1Zy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4gXFxuICNkZWZpbmUgUkVGQ09VTlRfV0FSTihzdHIpXFx0V0FSTl9PTkNFKDEsIFxcXCJyZWZjb3VudF90OiBcXFwiIHN0ciBcXFwiLlxcXFxuXFxcIilcXG4gXFxuQEAgLTU2LDcgKzU3LDEwIEBAIGJvb2wgcmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKVxcbiB7XFxuIFxcdGludCB2YWwgPSAxO1xcbiBcXG4tXFx0cmV0dXJuIGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFxcdTAwMjZyLVxcdTAwM2VyZWZzLCBcXHUwMDI2dmFsLCAwKTtcXG4rXFx0Ym9vbCByZXQgPSBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZShcXHUwMDI2ci1cXHUwMDNlcmVmcywgXFx1MDAyNnZhbCwgMCk7XFxuK1xcbitcXHRkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wocmVmY291bnRfZGVjX2lmX29uZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9saWIvcmVmY291bnRfdHJhY2UuYyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc2YmI1ZjJmNjAzXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2xpYi9yZWZjb3VudF90cmFjZS5jXFxuQEAgLTAsMCArMSwxNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFxcdTAwM2VcXG4rXFxuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXFxuK3ZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxcbitcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBpcCxcXG4rXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHR0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9NYWtlZmlsZSBiL2xpYi90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IDdlOWMyZmE1MmUzNWEuLjFlZjQxYzBiNmEwYzEgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cXG4gXFxuIG9iai0kKENPTkZJR19URVNUX1JVTlRJTUVfTU9EVUxFKVxcdFxcdCs9IG1vZHVsZS9cXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYTU3ZTllNGNmYTQyN1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xcbkBAIC0wLDAgKzEsMTQxIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyX2F0dHJpYnV0ZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYWxsc3ltcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvamlmZmllcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F0b21pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcXHUwMDNlXFxuK1xcbitzdHJ1Y3QgZGF0YSB7XFxuK1xcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xcbitcXHR1bnNpZ25lZCBsb25nIGlwO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGF0b21pY190IGNvdW50O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcXG4rXFxuK2NvbnN0IHZvaWQgKmNoa19vYmo7XFxuK1xcbisjZGVmaW5lIHRlc3RfaW5pdCgpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXRvbWljX3NldF9yZWxlYXNlKFxcdTAwMjZjYXB0dXJlLmNvdW50LCAwKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y2hrX29iaiA9IFxcdTAwMjZvYmo7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rXFxuKyNkZWZpbmUgdGVzdF9leGl0KClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC8qIHdhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24gKi9cXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx1MDAyNmNhcHR1cmUuY291bnQsXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRhdG9taWNfcmVhZF9hY3F1aXJlKFxcdTAwMjZjYXB0dXJlLmNvdW50KSxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjZXBvaW50X3N5bmNocm9uaXplX3VucmVnaXN0ZXIoKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfQVNTRVJUX1RSVUUodGVzdCwgbm90aW1lb3V0KTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXFx1MDAyNmNhcHR1cmUuY291bnQpLCAxKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgX19rZXJuZWxfdGV4dF9hZGRyZXNzKGNhcHR1cmUuY2FsbGVyKSk7XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCBfX2tlcm5lbF90ZXh0X2FkZHJlc3MoY2FwdHVyZS5pcCkpO1xcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcXHUwMDI2b2JqKTtcXHRcXHRcXHRcXFxcXFxuK1xcdH0gd2hpbGUgKDApXFxuK1xcbitzdGF0aWMgdm9pZCBwcm9iZShcXG4rXFx0ICB2b2lkICppZ25vcmUsXFxuK1xcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXFxuK1xcdCAgdW5zaWduZWQgbG9uZyBpcCxcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xcbitcXHRpZiAoY2hrX29iaiAhPSBvYmopXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGNhcHR1cmUuY2FsbGVyID0gY2FsbGVyO1xcbitcXHRjYXB0dXJlLmlwID0gaXA7XFxuK1xcdGNhcHR1cmUub2JqID0gb2JqO1xcbitcXG4rXFx0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcXHUwMDI2Y2FwdHVyZS5jb3VudCk7IC8vaW5jcmVhc2UgY291bnRcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3Qgb2JqO1xcbitcXG4rXFx0dGVzdF9pbml0KCk7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2b2JqLCAyKTtcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnRfZGVjX2lmX29uZShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0cmVmY291bnRfdCBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFx0cmVmY291bnRfc2V0KFxcdTAwMjZvYmosIDIpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2b2JqKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19pZl9vbmUoXFx1MDAyNm9iaikpO1xcbitcXG4rXFx0dGVzdF9leGl0KCk7XFxuK31cXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBrdW5pdCAqdGVzdClcXG4re1xcbitcXHRzdHJ1Y3QgcGVyY3B1X3JlZiBvYmo7XFxuK1xcbitcXHR0ZXN0X2luaXQoKTtcXG4rXFxuK1xcdEtVTklUX0FTU0VSVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNm9iaiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNm9iaik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZvYmopO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNm9iaik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2b2JqKTtcXG4rXFxuK1xcdHRlc3RfZXhpdCgpO1xcbitcXHRwZXJjcHVfcmVmX2V4aXQoXFx1MDAyNm9iaik7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XFxuK1xcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9zdWJfYW5kX3Rlc3QpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfZGVjX2lmX29uZSksXFxuK1xcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcXG4rXFx0Lm5hbWUgPSBcXFwicmVmY291bnQtdHJhY2VcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IHJlZmNvdW50X3RyYWNlX3Rlc3RfY2FzZXNcXG4rfTtcXG4rXFxuK2t1bml0X3Rlc3Rfc3VpdGVzKFxcdTAwMjZyZWZjb3VudF90cmFjZV90ZXN0X3N1aXRlKTtcXG4rXFxuK01PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBNYXZpY2sgXFx1MDAzY21AbWF2aWNrLmRldlxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QwMzo1NjozMi41NDg2NzIwMDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4NTM3MDI2MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ5OGQ3ODBmZWI1NGZjNDVmMDZhOTYxZDdkYWU3MDRlNjEyN2I0NjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAwMzo1NjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIuLmMzN2U0Y2QwZTRmZjYgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcbiBGOlx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxuIEY6XHRpbmNsdWRlLyovYXRvbWljKi5oXG4rRjpcdGluY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZmNvdW50X3RyYWNlLmNcbitGOlx0bGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbiBGOlx0c2NyaXB0cy9hdG9taWMvXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5pbmRleCBkNzNhMWMwOGMzZTNjLi4yNDQ5OTJiMmY3NDZlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgKzU1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcbiBcbiBcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcdTAwMjZwZXJjcHVfY291bnQpKVxuIFx0XHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xuLVx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKVxuK1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4rXHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5pbmRleCBiYTc2NTdjZWQyODE3Li4yMzI5MWEzMWQxYmUyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiArMTA3LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9saW1pdHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxuIFxuIFx0aWYgKG9sZCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgb2xkID09IGkpIHtcbiBcdFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XG4rXHRcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNmY4ZDBiYTkxMGYwNVxuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudF90cmFjZS5oXG5AQCAtMCwwICsxLDMzIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGQ09VTlRfVFJBQ0VfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4rXG4rI2lmZGVmIENPTkZJR19SRUZDT1VOVF9UUkFDRV9GSU5BTF9QVVRcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZmNvdW50X2ZpbmFsX3B1dCk7XG4rXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cbitleHRlcm4gdm9pZCBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXQob2JqKVx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmY291bnRfZmluYWxfcHV0KSlcdFx0XHRcXFxuK1x0XHRcdGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX1RISVNfSVBfLCBvYmopO1x0XFxcbitcdH0gd2hpbGUgKDApXG4rXG4rI2RlZmluZSBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChjb25kLCBvYmopXHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmY291bnRfZmluYWxfcHV0KSBcdTAwMjZcdTAwMjYgY29uZClcdFx0XFxcbitcdFx0XHRkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9USElTX0lQXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopO1xuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNkZWZpbmUgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0X2NvbmQoY29uZCwgb2JqKSBkbyB7IH0gd2hpbGUgKDApXG4rI2VuZGlmXG4rXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZDT1VOVF9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmY291bnQuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZmNvdW50Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNGRjMjNhZmY5M2I2XG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZjb3VudC5oXG5AQCAtMCwwICsxLDU1IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjdW5kZWYgVFJBQ0VfU1lTVEVNXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmY291bnRcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRkNPVU5UX0gpIHx8IGRlZmluZWQoVFJBQ0VfSEVBREVSX01VTFRJX1JFQUQpXG4rI2RlZmluZSBfVFJBQ0VfUkVGQ09VTlRfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuK1xuKyNpZmRlZiBDT05GSUdfUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUXG4rXG4rLyoqXG4rICogcmVmY291bnRfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cbisgKiBAY2FsbGVyOiByZXR1cm4gYWRkcmVzcyBvZiByZWZjb3VudFxuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcbisgKiBAaXA6IHJldHVybiBhZGRyZXNzIG9mIHRyYWNlIHdyYXBwZXIgbWFjcm8gY2FsbCxcbisgKiBpbmxpbmluZyBtYXkgY2F1c2UgaXQgdG8gYmUgc29tZXRoaW5nIGVsc2UgdGhvXG4rICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KVxuKyAqXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBkb19yZWZjb3VudF90cmFjZV9maW5hbF9wdXRcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmY291bnRfdHJhY2UuaFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9USElTX0lQXyBmb3IgY2FsbGVyIGFuZCBpcCBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxuKyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuKyAqL1xuK1RSQUNFX0VWRU5UKHJlZmNvdW50X2ZpbmFsX3B1dCxcbitcbitcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCB1bnNpZ25lZCBsb25nIGlwLCBjb25zdCB2b2lkICpvYmopLFxuK1xuK1x0VFBfQVJHUyhjYWxsZXIsIGlwLCBvYmopLFxuK1xuK1x0VFBfU1RSVUNUX19lbnRyeShcbitcdFx0X19maWVsZChcdHVuc2lnbmVkIGxvbmcsXHRcdGNhbGxlclx0KVxuK1x0XHRfX2ZpZWxkKFx0dW5zaWduZWQgbG9uZyxcdFx0aXBcdClcbitcdFx0X19maWVsZChcdGNvbnN0IHZvaWQgKixcdFx0b2JqXHQpXG4rXHQpLFxuK1xuK1x0VFBfZmFzdF9hc3NpZ24oXG4rXHRcdF9fZW50cnktXHUwMDNlY2FsbGVyID0gY2FsbGVyO1xuK1x0XHRfX2VudHJ5LVx1MDAzZWlwID0gaXA7XG4rXHRcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuK1x0KSxcbitcbitcdFRQX3ByaW50ayhcImNhbGxlcj0lcFMgaXA9JXBTIG9iaj0lcFwiLFxuK1x0XHQgICh2b2lkICopX19lbnRyeS1cdTAwM2VjYWxsZXIsXG4rXHRcdCAgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWlwLFxuK1x0XHQgIF9fZW50cnktXHUwMDNlb2JqXG4rXHQpXG4rKTtcbitcbisjZW5kaWYgLyogQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCAqL1xuK1xuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGQ09VTlRfSCAqL1xuK1xuKy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqL1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXHUwMDNlXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xuaW5kZXggMDBhOTUwOTYzNmMxOC4uZWUxMmU4Zjk1MTU4OSAxMDA2NDRcbi0tLSBhL2xpYi9LY29uZmlnXG4rKysgYi9saWIvS2NvbmZpZ1xuQEAgLTUyLDYgKzUyLDI0IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcbiBcbiBcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXG4gXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVFxuK1x0Ym9vbCBcIlRyYWNlIGZpbmFsIHB1dHMgb24gbXVsdGlwbGUgcmVmY291bnQgaW1wbGVtZW50YXRpb25zXCJcbitcdGRlcGVuZHMgb24gVFJBQ0VQT0lOVFMgXHUwMDI2XHUwMDI2IERFQlVHX0tFUk5FTFxuK1x0aGVscFxuK1x0ICBUcmFjZSB3aGVuIGEgcmVmY291bnQgaW1wbGVtZW50YXRpb24gY29uc2lkZXJzIHJlZmNvdW50ZWQgb2JqZWN0IGRlYWQuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE4uXG4rXG4rY29uZmlnIFJFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1RcbitcdHRyaXN0YXRlIFwicmVmY291bnQgdHJhY2Uga3VuaXQgdGVzdFwiIGlmICFLVU5JVF9BTExfVEVTVFNcbitcdGRlcGVuZHMgb24gUkVGQ09VTlRfVFJBQ0VfRklOQUxfUFVUIFx1MDAyNlx1MDAyNiBLVU5JVCBcdTAwMjZcdTAwMjYgVFJBQ0VQT0lOVFNcbitcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4rXHRoZWxwXG4rXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZjb3VudF9maW5hbF9wdXRcbitcdCAgdHJhY2Vwb2ludC5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbitcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWEuLmU3NWU4OGYwYzg3MDggMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbisrKyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICszMzUsNSBAQCBDT05URVhUX0FOQUxZU0lTX3Rlc3RfY29udGV4dC1hbmFseXNpcy5vIDo9IHlcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgKz0gdGVzdF9mb3J0aWZ5XG4rXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0ZJTkFMX1BVVCkgKz0gcmVmY291bnRfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudC5jIGIvbGliL3JlZmNvdW50LmNcbmluZGV4IGEyMDdhOGYyMmIzY2EuLjhiMTQ4YjU3NjUwMzcgMTAwNjQ0XG4tLS0gYS9saWIvcmVmY291bnQuY1xuKysrIGIvbGliL3JlZmNvdW50LmNcbkBAIC03LDYgKzcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYnVnLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSRUZDT1VOVF9XQVJOKHN0cilcdFdBUk5fT05DRSgxLCBcInJlZmNvdW50X3Q6IFwiIHN0ciBcIi5cXG5cIilcbiBcbkBAIC01Niw3ICs1NywxMCBAQCBib29sIHJlZmNvdW50X2RlY19pZl9vbmUocmVmY291bnRfdCAqcilcbiB7XG4gXHRpbnQgdmFsID0gMTtcbiBcbi1cdHJldHVybiBhdG9taWNfdHJ5X2NtcHhjaGdfcmVsZWFzZShcdTAwMjZyLVx1MDAzZXJlZnMsIFx1MDAyNnZhbCwgMCk7XG4rXHRib29sIHJldCA9IGF0b21pY190cnlfY21weGNoZ19yZWxlYXNlKFx1MDAyNnItXHUwMDNlcmVmcywgXHUwMDI2dmFsLCAwKTtcbitcbitcdGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dF9jb25kKHJldCwgcik7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJlZmNvdW50X2RlY19pZl9vbmUpO1xuIFxuZGlmZiAtLWdpdCBhL2xpYi9yZWZjb3VudF90cmFjZS5jIGIvbGliL3JlZmNvdW50X3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4yNDc2YmI1ZjJmNjAzXG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvcmVmY291bnRfdHJhY2UuY1xuQEAgLTAsMCArMSwxNCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZXZlbnRzL3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90cmFjZS5oXHUwMDNlXG4rXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbit2b2lkIGRvX3JlZmNvdW50X3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdFx0XHRcdCB1bnNpZ25lZCBsb25nIGlwLFxuK1x0XHRcdFx0IGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9jYWxsX19yZWZjb3VudF9maW5hbF9wdXQoY2FsbGVyLCBpcCwgb2JqKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmY291bnRfdHJhY2VfZmluYWxfcHV0KTtcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZmNvdW50X2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhLi4xZWY0MWMwYjZhMGMxIDEwMDY0NFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXG4rKysgYi9saWIvdGVzdHMvTWFrZWZpbGVcbkBAIC01Nyw1ICs1Nyw2IEBAIG9iai0kKENPTkZJR19VU0VSQ09QWV9LVU5JVF9URVNUKSArPSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1JBVEVMSU1JVF9LVU5JVF9URVNUKSArPSB0ZXN0X3JhdGVsaW1pdC5vXG4gb2JqLSQoQ09ORklHX1VVSURfS1VOSVRfVEVTVCkgKz0gdXVpZF9rdW5pdC5vXG4rb2JqLSQoQ09ORklHX1JFRkNPVU5UX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZmNvdW50X3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0Kz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZjb3VudF90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZmNvdW50X3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hNTdlOWU0Y2ZhNDI3XG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvdGVzdHMvcmVmY291bnRfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9qaWZmaWVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYXRvbWljLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmY291bnQuaFx1MDAzZVxuK1xuK3N0cnVjdCBkYXRhIHtcbitcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuK1x0dW5zaWduZWQgbG9uZyBpcDtcbitcdGNvbnN0IHZvaWQgKm9iajtcbitcdGF0b21pY190IGNvdW50O1xuK307XG4rXG4rc3RydWN0IGRhdGEgY2FwdHVyZTtcbitcbitjb25zdCB2b2lkICpjaGtfb2JqO1xuK1xuKyNkZWZpbmUgdGVzdF9pbml0KClcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoXHRcdFx0XHRcdFx0XFxcbitcdFx0XHR0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZjb3VudF9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhdG9taWNfc2V0X3JlbGVhc2UoXHUwMDI2Y2FwdHVyZS5jb3VudCwgMCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0Y2hrX29iaiA9IFx1MDAyNm9iajtcdFx0XHRcdFx0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK1xuKyNkZWZpbmUgdGVzdF9leGl0KClcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHQvKiB3YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uICovXHRcdFx0XHRcdFxcXG4rXHRcdGludCBub3RpbWVvdXQgPSB3YWl0X3Zhcl9ldmVudF90aW1lb3V0KFx0XHRcdFx0XFxcbitcdFx0XHRcdTAwMjZjYXB0dXJlLmNvdW50LFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0YXRvbWljX3JlYWRfYWNxdWlyZShcdTAwMjZjYXB0dXJlLmNvdW50KSxcdFx0XHRcXFxuK1x0XHRcdG1zZWNzX3RvX2ppZmZpZXMoMTAwMDApXHRcdFx0XHRcdFxcXG4rXHRcdCk7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHR1bnJlZ2lzdGVyX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XHRcdFxcXG4rXHRcdHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpO1x0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0FTU0VSVF9UUlVFKHRlc3QsIG5vdGltZW91dCk7XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGF0b21pY19yZWFkX2FjcXVpcmUoXHUwMDI2Y2FwdHVyZS5jb3VudCksIDEpO1x0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIF9fa2VybmVsX3RleHRfYWRkcmVzcyhjYXB0dXJlLmNhbGxlcikpO1x0XFxcbitcdFx0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgX19rZXJuZWxfdGV4dF9hZGRyZXNzKGNhcHR1cmUuaXApKTtcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRLVU5JVF9FWFBFQ1RfUFRSX0VRKHRlc3QsIGNhcHR1cmUub2JqLCBcdTAwMjZvYmopO1x0XHRcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuK3N0YXRpYyB2b2lkIHByb2JlKFxuK1x0ICB2b2lkICppZ25vcmUsXG4rXHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxuK1x0ICB1bnNpZ25lZCBsb25nIGlwLFxuK1x0ICBjb25zdCB2b2lkICpvYmopXG4re1xuK1x0Ly9wcmV2ZW50IG5vbiB0ZXN0IGZ1bmMgZmluYWxfcHV0cyBmcm9tIGNoYW5naW5nIGNhcHR1cmVkIHZhbHVlc1xuK1x0aWYgKGNoa19vYmogIT0gb2JqKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRjYXB0dXJlLmNhbGxlciA9IGNhbGxlcjtcbitcdGNhcHR1cmUuaXAgPSBpcDtcbitcdGNhcHR1cmUub2JqID0gb2JqO1xuK1xuK1x0YXRvbWljX2luY19yZXR1cm5fcmVsZWFzZShcdTAwMjZjYXB0dXJlLmNvdW50KTsgLy9pbmNyZWFzZSBjb3VudFxuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X3N1Yl9hbmRfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4re1xuK1x0cmVmY291bnRfdCBvYmo7XG4rXG4rXHR0ZXN0X2luaXQoKTtcbitcdHJlZmNvdW50X3NldChcdTAwMjZvYmosIDIpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZvYmopKTtcbitcbitcdHRlc3RfZXhpdCgpO1xuK31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50X2RlY19pZl9vbmUoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHJlZmNvdW50X3Qgb2JqO1xuK1xuK1x0dGVzdF9pbml0KCk7XG4rXHRyZWZjb3VudF9zZXQoXHUwMDI2b2JqLCAyKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2b2JqKSk7XG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfaWZfb25lKFx1MDAyNm9iaikpO1xuK1xuK1x0dGVzdF9leGl0KCk7XG4rfVxuK3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbitcbitzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHN0cnVjdCBwZXJjcHVfcmVmIG9iajtcbitcbitcdHRlc3RfaW5pdCgpO1xuK1xuK1x0S1VOSVRfQVNTRVJUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZvYmosIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbitcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNm9iaik7XG4rXHRwZXJjcHVfcmVmX2dldChcdTAwMjZvYmopO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNm9iaik7XG4rXG4rXHRwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhcdTAwMjZvYmopO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2b2JqKTtcbitcbitcdHRlc3RfZXhpdCgpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNm9iaik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSByZWZjb3VudF90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4rXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnRfc3ViX2FuZF90ZXN0KSxcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudF9kZWNfaWZfb25lKSxcbitcdEtVTklUX0NBU0UodGVzdF9wZXJjcHVfcmVmX3B1dF9tYW55KSxcbitcdHt9XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZmNvdW50X3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmY291bnQtdHJhY2VcIixcbitcdC50ZXN0X2Nhc2VzID0gcmVmY291bnRfdHJhY2VfdGVzdF9jYXNlc1xuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmY291bnRfdHJhY2VfdGVzdF9zdWl0ZSk7XG4rXG4rTU9EVUxFX0FVVEhPUihcIkV1Z2VuZSBNYXZpY2sgXHUwMDNjbUBtYXZpY2suZGV2XHUwMDNlXCIpO1xuK01PRFVMRV9ERVNDUklQVElPTihcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVwiKTtcbitNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDAzOjU2OjMyLjU0ODY3MzY1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MzcwMDA0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgYmFzZWQgb24gdGhlIHByb21wdCdzIHJ1bGVzLCB0aGlzICpzaG91bGQqIGJlIG1hcmtlZCBhcyBub3Qgd29ydGggZnV6emluZy4gSXQncyBhZGRpbmcgYSB0cmFjZXBvaW50LCBgcmVmY291bnRfZmluYWxfcHV0YCwgdG8gdHJhY2sgd2hlbiBhIHJlZmNvdW50IG9iamVjdCBpcyBjb25zaWRlcmVkIGRlYWQuIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gc2V2ZXJhbCBjb3JlIGZpbGVzOiBgcGVyY3B1LXJlZmNvdW50LmhgLCBgcmVmY291bnQuaGAsIGFuZCBgcmVmY291bnQuY2AsIGFsbCBhaW1lZCBhdCBpbnNlcnRpbmcgY2FsbHMgdG8gZWl0aGVyIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRgIG9yIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZGAuICBJdCdzIGFsc28gaW50cm9kdWNpbmcgbmV3IGZpbGVzIGZvciB0aGUgdHJhY2Vwb2ludCBpdHNlbGY6IGByZWZjb3VudF90cmFjZS5oYCwgYGV2ZW50cy9yZWZjb3VudC5oYCwgYHJlZmNvdW50X3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0IGByZWZjb3VudF90cmFjZV9rdW5pdC5jYCwgYXMgd2VsbCBhcyBLY29uZmlnIG9wdGlvbnMuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gbWFyayBwYXRjaGVzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkgb25seSBjb250YWluIG1vZGlmaWNhdGlvbnMgbGlrZSB0aGlzIOKAkyBhZGRpdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsICpvciogdHJhY2Vwb2ludHMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGFjdHVhbGx5ICpjaGFuZ2UqIGhvdyBhbnl0aGluZyBydW5zLlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gcmVhbGx5IGNvbmZpcm0gdGhpcy4gSSdtIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZzIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBjb2RlIGFsdGVyYXRpb25zLlxuXG4qICAgYHBlcmNwdV9yZWZfcHV0X21hbnlgOiBJIHNlZSBpdCdzIGFkZGluZyBgZG9fdHJhY2VfcmVmY291bnRfZmluYWxfcHV0KHJlZik7YCBpbnNpZGUgYW4gYGlmYCBibG9jayB0aGF0IGNoZWNrcyBpZiB0aGUgcmVmY291bnQgYmVjb21lcyB6ZXJvLiBJdCdzICpub3QqIGNoYW5naW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVmY291bnQgaXRzZWxmLlxuXG4qICAgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YDogQWdhaW4sIG9ubHkgYWRkaW5nIHRoZSB0cmFjZXBvaW50IGNhbGwgYGRvX3RyYWNlX3JlZmNvdW50X2ZpbmFsX3B1dChyKTtgIGFyb3VuZCB0aGUgY29uZGl0aW9uYWwgcmV0dXJuLiBUaGlzIGRvZXNuJ3QgY2hhbmdlIHdoZW4gYSByZWZlcmVuY2UgaXMgY29uc2lkZXJlZCB0byBiZSBmaW5hbCwgaXQncyBqdXN0IGFkZGluZyBhbiBvYnNlcnZhdGlvbiBwb2ludC5cblxuKiAgIGByZWZjb3VudF9kZWNfaWZfb25lYDogU2ltaWxhciBwYXR0ZXJuLiBJdCBhZGRzIGBkb190cmFjZV9yZWZjb3VudF9maW5hbF9wdXRfY29uZChyZXQsIHIpO2AgYmFzZWQgb24gdGhlIHJldHVybiBvZiBgYXRvbWljX3RyeV9jbXB4Y2hnX3JlbGVhc2VgLiBUaGUgY29yZSBhdG9taWMgb3BlcmF0aW9ucyBhcmUgdW5jaGFuZ2VkLlxuXG5UaGUgcmVzdCBpcyBqdXN0IHRoZSB0cmFjZXBvaW50IGltcGxlbWVudGF0aW9uIGFuZCBpdHMgdGVzdC4gU28sIEknbSBjb25maWRlbnQgdGhhdCB0aGVzZSBhZGRpdGlvbnMgYXJlICpwdXJlbHkqIGZvciB0cmFjaW5nIGFuZCBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsIGJlaGF2aW9yIG9yIGFsdGVyIGV4aXN0aW5nIGV4ZWN1dGlvbiBmbG93LiAgVGhlcmVmb3JlLCBJJ20gY29uY2x1ZGluZyB0aGF0IHRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSBub3Qgd29ydGggZnV6emluZy4gTXkgZmluYWwgYW5zd2VyIGlzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDc3LCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6NDEuMDg1Njc3MDY3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmY291bnRfZmluYWxfcHV0YCkgYW5kIGl0cyBhc3NvY2lhdGVkIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZjb3VudF9maW5hbF9wdXRgKSBhbmQgaXRzIGFzc29jaWF0ZWQgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMDM6NTY6NDEuMDg1NzAwNzE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowj6bk6[1] Phase: Running StartedAt: 2026-08-13 03:56:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowj6bk6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 03:56:53 +0000 UTC FinishedAt: 2026-08-13 03:56:57 +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,}