Name: series-workflowlbzhg Phase: Failed StartedAt: 2026-07-06 07:00:38 +0000 UTC FinishedAt: 2026-07-06 07:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbzhg[0] Phase: Succeeded StartedAt: 2026-07-06 07:00:38 +0000 UTC FinishedAt: 2026-07-06 07:15:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbzhg[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 07:00:38 +0000 UTC FinishedAt: 2026-07-06 07:15:35 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MGM0YTkyZmI2M2Q0ZDMyNDA4ZTA3YTViOGRlMTQ1ZGIwMDNjNWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbiYjNDM7RjpcdGxpYi9yZWZfdHJhY2UuaFxuJiM0MztGOlx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgJiM0Mzs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuJiM0MztcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuQEAgLTAsMCAmIzQzOzEsMjYgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiYjNDM7I2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xuJiM0MztERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXG4mIzQzOy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcdFx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuJiM0MzsjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDQ2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyN1bmRlZiBUUkFDRV9TWVNURU1cbiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4mIzQzOyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4mIzQzO1x0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSAmIzQzOz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vXG4mIzQzO29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCYjNDM7PSBtb2R1bGUvXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZuO1xuJiM0MztcdGNvbnN0IHZvaWQgKm9iajtcbiYjNDM7XHRpbnQgKmZsYWc7XG4mIzQzO1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgcmVmY19jaGs7XG4mIzQzO3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xuJiM0MztcbiYjNDM7Ly9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYXRhICpjaGtfdmFsO1xuJiM0MztcbiYjNDM7XHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGZ1bmNfbmFtZSwgXCYjMzQ7dGVzdF9yZWZjb3VudFwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZyZWZjX2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbiYjNDM7XHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcJiMzNDt0ZXN0X3BlcmNwdVwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChcbiYjNDM7XHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbiYjNDM7XHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4mIzQzO1xuJiM0MztcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cdTAwM2VjYWxsZXIpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCByZWZjO1xuJiM0MztcdGludCBmbGFnX2FkZHIgPSAwO1xuJiM0MztcbiYjNDM7XHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3JlZmNvdW50O1xuJiM0MztcdHJlZmNfY2hrLmZuID0gXCYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcJiMzNDs7XG4mIzQzO1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbiYjNDM7XHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuJiM0MztcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xuJiM0MztcbiYjNDM7XHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuJiM0MztcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2cmVmYywgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnJlZmMpKTtcbiYjNDM7XG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuJiM0MztcdHVucmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuJiM0MztcbiYjNDM7XHRpbnQgZmxhZ19hZGRyID0gMTtcbiYjNDM7XG4mIzQzO1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4mIzQzO1x0cGNwdV9jaGsuZm4gPSBcJiMzNDtwZXJjcHVfcmVmX3B1dF9tYW55XCYjMzQ7O1xuJiM0MztcdHBjcHVfY2hrLm9iaiA9IFx1MDAyNnBjcHVfcmVmO1xuJiM0MztcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4mIzQzO1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4mIzQzO1xuJiM0MztcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4mIzQzO1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbiYjNDM7XHR7fVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZi10cmFjZVwmIzM0OyxcbiYjNDM7XHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwYzRhOTJmYjYzZDRkMzI0MDhlMDdhNWI4ZGUxNDVkYjAwM2M1ZDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vYXRvbWljXyoudHh0CiBGOglhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oCiBGOglpbmNsdWRlLyovYXRvbWljKi5oCiYjNDM7RjoJaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaAogRjoJaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7RjoJbGliL3JlZl90cmFjZS5oCiYjNDM7RjoJbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCiBGOglzY3JpcHRzL2F0b21pYy8KIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBwZXJjcHVfcmVmOwogdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZhbXA7cGVyY3B1X2NvdW50KSkKIAkJdGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTsKLQllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKQomIzQzOwllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKSB7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7CiAJCXJlZi0mZ3Q7ZGF0YS0mZ3Q7cmVsZWFzZShyZWYpOwomIzQzOwl9CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMjYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHJhY2Vwb2ludC1kZWZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaCZndDsKJiM0MzsKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFMKJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqLwomIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopOwomIzQzOwomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopCQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSkJCQlcCiYjNDM7CQkJZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7CVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfQomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbGltaXRzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9ja190eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHIpOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsNDYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyN1bmRlZiBUUkFDRV9TWVNURU0KJiM0MzsjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2UKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKQomIzQzOyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQuaCZndDsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8KJiM0MzsgKiBAY2FsbGVyOiBmdW5jdGlvbiB0aGF0IGNhbGxlZCB0aGUgcmVmY291bnRpbmcKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgRlRSQUNFCiYjNDM7CWRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWhlbHAKJiM0MzsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOwomIzQzOy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzCiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlCmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSAmIzQzOz0gcmVmX3RyYWNlX2t1bml0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpCQkmIzQzOz0gbW9kdWxlLwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7a3VuaXQvdGVzdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC93YWl0X2JpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2thbGxzeW1zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJY29uc3QgY2hhciAqZm47CiYjNDM7CWNvbnN0IHZvaWQgKm9iajsKJiM0MzsJaW50ICpmbGFnOwomIzQzOwlzdHJ1Y3Qga3VuaXQgKnRlc3Q7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSByZWZjX2NoazsKJiM0MztzdHJ1Y3QgZGF0YSBwY3B1X2NoazsKJiM0MzsKJiM0MzsvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXMKJiM0MztzdGF0aWMgdm9pZCBwcm9iZSgKJiM0MzsJICB2b2lkICppZ25vcmUsCiYjNDM7CSAgdW5zaWduZWQgbG9uZyBjYWxsZXIsCiYjNDM7CSAgY29uc3QgY2hhciAqZm4sCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhdGEgKmNoa192YWw7CiYjNDM7CiYjNDM7CWNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07CiYjNDM7CiYjNDM7CXNwcmludF9zeW1ib2xfbm9fb2Zmc2V0KGZ1bmNfbmFtZSwgY2FsbGVyKTsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoZnVuY19uYW1lLCAmIzM0O3Rlc3RfcmVmY291bnQmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3JlZmNfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcChvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsICYjMzQ7dGVzdF9wZXJjcHUmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3BjcHVfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcCgKJiM0MzsJCQlvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLy9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzCiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3RydWN0IGt1bml0ICp0ZXN0ID0gY2hrX3ZhbC0mZ3Q7dGVzdDsKJiM0MzsJaW50ICpmbGFnID0gY2hrX3ZhbC0mZ3Q7ZmxhZzsKJiM0MzsKJiM0MzsJLy9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtJmd0O2NhbGxlcik7CiYjNDM7CiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uCiYjNDM7fQomIzQzOwomIzQzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCByZWZjOwomIzQzOwlpbnQgZmxhZ19hZGRyID0gMDsKJiM0MzsKJiM0MzsJcmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpJmFtcDt0ZXN0X3JlZmNvdW50OwomIzQzOwlyZWZjX2Noay5mbiA9ICYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3QmIzM0OzsKJiM0MzsJcmVmY19jaGsub2JqID0gJmFtcDtyZWZjOwomIzQzOwlyZWZjX2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXJlZmNfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtyZWZjLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuCiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJd2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbgomIzQzOwl1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7CiYjNDM7CiYjNDM7CWludCBmbGFnX2FkZHIgPSAxOwomIzQzOwomIzQzOwlwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZykmYW1wO3Rlc3RfcGVyY3B1OwomIzQzOwlwY3B1X2Noay5mbiA9ICYjMzQ7cGVyY3B1X3JlZl9wdXRfbWFueSYjMzQ7OwomIzQzOwlwY3B1X2Noay5vYmogPSAmYW1wO3BjcHVfcmVmOwomIzQzOwlwY3B1X2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXBjcHVfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KCZhbXA7cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO3BjcHVfcmVmKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW4KJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24KJiM0MzsJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsKJiM0MzsJcGVyY3B1X3JlZl9leGl0KCZhbXA7cGNwdV9yZWYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHUpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLAomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7CiYjNDM7CiYjNDM7TU9EVUxFX0FVVEhPUigmIzM0O0V1Z2VuZSBNYXZpY2sgJmx0O21AbWF2aWNrLmRldiZndDsmIzM0Oyk7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlJiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODEyCgkJCQkJCQlvdXRwdXQ6IDcxCgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhZGRpbmcgYSBuZXcgdHJhY2Vwb2ludCwgYHJlZl90cmFjZV9maW5hbF9wdXRgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YC4gSXQgYWxzbyBpbmNsdWRlcyBhIEtVbml0IHRlc3QgZm9yIHRoaXMgbmV3IHRyYWNlcG9pbnQuIEkgc2VlIHRoZSBkaWZmIHNwYW5zIHF1aXRlIGEgZmV3IGZpbGVzOiBoZWFkZXIgZmlsZXMgZm9yIHRoZSBuZXcgdHJhY2Vwb2ludCwgdGhlIHRyYWNlcG9pbnQgaXRzZWxmLCBhIG5ldyBgLmNgIGZpbGUgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIHVwZGF0ZXMgdG8gYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGZvciB0aGUgbmV3IGNvZGUgYW5kIHRlc3QuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZz8gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246IFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFkZHMgaW5zdHJ1bWVudGF0aW9uLiBJdCBpbnNlcnRzIGEgdHJhY2Vwb2ludCB3aGljaCwgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBwcm92aWRlcyBvYnNlcnZhYmlsaXR5IGJ1dCBkb2VzbiYjMzk7dCBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSBiZWhhdmlvciBvZiB0aGUga2VybmVsIGNvcmUuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzLCB0aGF0IG1vZGlmaWNhdGlvbnMgaW52b2x2aW5nIHRyYWNlcG9pbnRzIGFyZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMmIzM0OyBhbmQgbm90IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIHJlYWxseSB0aGF0IHNpbXBsZS4gS1VuaXQgdGVzdHMsIGJ5IHRoZWlyIG5hdHVyZSwgYXJlIGFsc28gbm90IHBhcnQgb2YgYW55IGZ1enppbmcgY2FtcGFpZ24uIFRoZXkgdmVyaWZ5IGZ1bmN0aW9uYWxpdHksIGJ1dCBhcmUgbm90IGludGVuZGVkIHRvIGJlIGZ1enplZCBhcyBwYXJ0IG9mIGEgZnV6emluZyBjYW1wYWlnbi4gU28sIHVuZGVyIHRoZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMmIzM0OyB1bWJyZWxsYSwgYWRkaW5nIHRyYWNlcG9pbnRzIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBjbG9zZWx5IGF0IHRoZSBkaWZmLCBpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAsIHRoZSBjb2RlIGlzIG9ubHkgYWRkaW5nIHRoZSBgdHJhY2VfcmVmX2ZpbmFsX3B1dCgpYCBjYWxscy4gTm8gY29yZSBsb2dpYywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGZ1enppbmcgd291bGQgdHlwaWNhbGx5IHVuY292ZXIuIEl0JiMzOTtzIHNvbGVseSBmb3IgYWRkaW5nIHRoZSB0cmFjZXBvaW50LgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiAqKldvcnRoRnV6emluZz1mYWxzZSoqLiBUaGlzIGlzIHB1cmVseSBhIHRyYWNlcG9pbnQgYWRkaXRpb24gYW5kIGEgS1VuaXQgdGVzdC4gSSYjMzk7bSBnb2luZyB0byBzZXQgdGhhdCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNC45Mzc2MTgwNTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzA3OTI2Mzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNC45Mzc2MjQ3ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTAzNDI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwYzRhOTJmYjYzZDRkMzI0MDhlMDdhNWI4ZGUxNDVkYjAwM2M1ZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggMTBlODI1MzE4MWQzMjEuLjdjMzg3ZWQ3NDZlZTUxIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtNDIxMCw3ICs0MjEwLDEwIEBAIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XFxuIEY6XFx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxcbiBGOlxcdGluY2x1ZGUvKi9hdG9taWMqLmhcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxuIEY6XFx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuK0Y6XFx0bGliL3JlZl90cmFjZS5oXFxuK0Y6XFx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXFxuIEY6XFx0c2NyaXB0cy9hdG9taWMvXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5pbmRleCBkNzNhMWMwOGMzZTNjMC4uNTU1NDNlY2RmNjBjZmIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5AQCAtNTUsNiArNTUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9nZnAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmNwdV9yZWY7XFxuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xcbkBAIC0zMzEsOCArMzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXFxuIFxcbiBcXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXFx1MDAyNnBlcmNwdV9jb3VudCkpXFxuIFxcdFxcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XFxuLVxcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSlcXG4rXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKSB7XFxuK1xcdFxcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcXG4gXFx0XFx0cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2VyZWxlYXNlKHJlZik7XFxuK1xcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTRlOWZiYTllM2U5ZjRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbkBAIC0wLDAgKzEsMjYgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFxcdTAwM2VcXG4rXFxuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xcbitcXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xcbisvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xcbitleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTtcXG4rXFxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZl90cmFjZV9maW5hbF9wdXQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2Vsc2UgLyogIUNPTkZJR19UUkFDRVBPSU5UUyAqL1xcbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XFxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMClcXG4rI2VuZGlmXFxuK1xcbisjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43YjFmYmYzMjZhMjFjNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5AQCAtMTA3LDYgKzEwNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcXHUwMDNlXFxuIFxcbiBzdHJ1Y3QgbXV0ZXg7XFxuIFxcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxcbiBcXG4gXFx0aWYgKG9sZCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgb2xkID09IGkpIHtcXG4gXFx0XFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XFxuK1xcdFxcdHRyYWNlX3JlZl9maW5hbF9wdXQocik7XFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTYwMzdhMzI1YmUyNjJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcXG5AQCAtMCwwICsxLDQ2IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyN1bmRlZiBUUkFDRV9TWVNURU1cXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXFxuK1xcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxcbisjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFxcdTAwM2VcXG4rXFxuKy8qKlxcbisgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cXG4rICogQGNhbGxlcjogZnVuY3Rpb24gdGhhdCBjYWxsZWQgdGhlIHJlZmNvdW50aW5nXFxuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcXG4rICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpXFxuKyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcXG4rICpcXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbisgKiB3aGljaCB1c2VzIF9SRVRfSVBfIGFuZCBfX2Z1bmNfXyBmb3IgY2FsbGVyIGFuZCBmbiBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcXG4rICovXFxuK1RSQUNFX0VWRU5UKHJlZl90cmFjZV9maW5hbF9wdXQsXFxuK1xcbitcXHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXFxuK1xcbitcXHRUUF9BUkdTKGNhbGxlciwgZm4sIG9iaiksXFxuK1xcbitcXHRUUF9TVFJVQ1RfX2VudHJ5KFxcbitcXHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcXG4rXFx0X19zdHJpbmcoZm4sIGZuKVxcbitcXHRfX2ZpZWxkKGNvbnN0IHZvaWQgKiwgb2JqKVxcbitcXHQpLFxcbitcXG4rXFx0VFBfZmFzdF9hc3NpZ24oXFxuK1xcdF9fZW50cnktXFx1MDAzZWNhbGxlciA9IGNhbGxlcjtcXG4rXFx0X19hc3NpZ25fc3RyKGZuKTtcXG4rXFx0X19lbnRyeS1cXHUwMDNlb2JqID0gb2JqO1xcbitcXHQpLFxcbitcXG4rXFx0VFBfcHJpbnRrKFxcXCJjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFxcXCIsICh2b2lkICopX19lbnRyeS1cXHUwMDNlY2FsbGVyLCBfX2dldF9zdHIoZm4pLCBfX2VudHJ5LVxcdTAwM2VvYmopXFxuKyk7XFxuK1xcbisjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXFxuK1xcbisvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXFxuaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NFxcbi0tLSBhL2xpYi9LY29uZmlnXFxuKysrIGIvbGliL0tjb25maWdcXG5AQCAtNTIsNiArNTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxcbiBcXG4gXFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cXG4gXFxuK2NvbmZpZyBSRUZfVFJBQ0VfS1VOSVRfVEVTVFxcbitcXHRib29sIFxcXCJyZWZfdHJhY2Uga3VuaXQgdGVzdFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbitcXHRkZXBlbmRzIG9uIEtVTklUIFxcdTAwMjZcXHUwMDI2IEZUUkFDRVxcbitcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcXG4rXFx0ICB0cmFjZXBvaW50LlxcbitcXG4rXFx0ICBJZiB1bnN1cmUsIHNheSBOXFxuK1xcbiBjb25maWcgQklUUkVWRVJTRVxcbiBcXHR0cmlzdGF0ZVxcbiBcXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXFxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxcbi0tLSBhL2xpYi9NYWtlZmlsZVxcbisrKyBiL2xpYi9NYWtlZmlsZVxcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XFxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXFxuIFxcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxcbitcXG4rb2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSArPSByZWZfdHJhY2Uub1xcbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNWY3YzE3YzdjNDc1OFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvcmVmX3RyYWNlLmNcXG5AQCAtMCwwICsxLDEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxcbit7XFxuK1xcdHRyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9NYWtlZmlsZSBiL2xpYi90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcXG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcXG4rKysgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5AQCAtNTcsNSArNTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgKz0gdXNlcmNvcHlfa3VuaXQub1xcbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1JBVEVMSU1JVF9LVU5JVF9URVNUKSArPSB0ZXN0X3JhdGVsaW1pdC5vXFxuIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICs9IHV1aWRfa3VuaXQub1xcbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXFxuIFxcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcXHRcXHQrPSBtb2R1bGUvXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbkBAIC0wLDAgKzEsMTM4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYWxsc3ltcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rc3RydWN0IGRhdGEge1xcbitcXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcXG4rXFx0Y29uc3QgY2hhciAqZm47XFxuK1xcdGNvbnN0IHZvaWQgKm9iajtcXG4rXFx0aW50ICpmbGFnO1xcbitcXHRzdHJ1Y3Qga3VuaXQgKnRlc3Q7XFxuK307XFxuK1xcbitzdHJ1Y3QgZGF0YSByZWZjX2NoaztcXG4rc3RydWN0IGRhdGEgcGNwdV9jaGs7XFxuK1xcbisvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXNcXG4rc3RhdGljIHZvaWQgcHJvYmUoXFxuK1xcdCAgdm9pZCAqaWdub3JlLFxcbitcXHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxcbitcXHQgIGNvbnN0IGNoYXIgKmZuLFxcbitcXHQgIGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHRzdHJ1Y3QgZGF0YSAqY2hrX3ZhbDtcXG4rXFxuK1xcdGNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07XFxuK1xcbitcXHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XFxuK1xcbitcXHRpZiAoIXN0cmNtcChmdW5jX25hbWUsIFxcXCJ0ZXN0X3JlZmNvdW50XFxcIikpIHtcXG4rXFx0XFx0Y2hrX3ZhbCA9IFxcdTAwMjZyZWZjX2NoaztcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtXFx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXFx1MDAzZW9iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7XFxuK1xcdH0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsIFxcXCJ0ZXN0X3BlcmNwdVxcXCIpKSB7XFxuK1xcdFxcdGNoa192YWwgPSBcXHUwMDI2cGNwdV9jaGs7XFxuK1xcdFxcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVxcdTAwM2V0ZXN0LCBtZW1jbXAoXFxuK1xcdFxcdFxcdG9iaiwgY2hrX3ZhbC1cXHUwMDNlb2JqLCBzaXplb2Yoc3RydWN0IHBlcmNwdV9yZWYpKSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdC8vbm9uIHRlc3QgZnVuY3Rpb24gb3JpZ2luIHRyYWNlIGV2ZW50c1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXFx1MDAzZXRlc3Q7XFxuK1xcdGludCAqZmxhZyA9IGNoa192YWwtXFx1MDAzZWZsYWc7XFxuK1xcbitcXHQvL2Vuc3VyZSBwYXN0IGZsYWcgd3JpdGVzIGFyZSBkb25lIGJlZm9yZSByZWFkaW5nXFxuK1xcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAxLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cXHUwMDNlY2FsbGVyKTtcXG4rXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uXFxuK31cXG4rXFxuK1xcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0cmVmY291bnRfdCByZWZjO1xcbitcXHRpbnQgZmxhZ19hZGRyID0gMDtcXG4rXFxuK1xcdHJlZmNfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZ0ZXN0X3JlZmNvdW50O1xcbitcXHRyZWZjX2Noay5mbiA9IFxcXCJfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdFxcXCI7XFxuK1xcdHJlZmNfY2hrLm9iaiA9IFxcdTAwMjZyZWZjO1xcbitcXHRyZWZjX2Noay5mbGFnID0gXFx1MDAyNmZsYWdfYWRkcjtcXG4rXFx0cmVmY19jaGsudGVzdCA9IHRlc3Q7XFxuK1xcbitcXHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcXG4rXFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2cmVmYywgMik7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZyZWZjKSk7XFxuK1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cmVmYykpO1xcbitcXG4rXFx0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxcbitcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7XFxuK1xcbitcXHRpbnQgZmxhZ19hZGRyID0gMTtcXG4rXFxuK1xcdHBjcHVfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZ0ZXN0X3BlcmNwdTtcXG4rXFx0cGNwdV9jaGsuZm4gPSBcXFwicGVyY3B1X3JlZl9wdXRfbWFueVxcXCI7XFxuK1xcdHBjcHVfY2hrLm9iaiA9IFxcdTAwMjZwY3B1X3JlZjtcXG4rXFx0cGNwdV9jaGsuZmxhZyA9IFxcdTAwMjZmbGFnX2FkZHI7XFxuK1xcdHBjcHVfY2hrLnRlc3QgPSB0ZXN0O1xcbitcXG4rXFx0aW50ICpmbGFnID0gcGNwdV9jaGsuZmxhZztcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KFxcdTAwMjZwY3B1X3JlZiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxcbitcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xcbitcXHRwZXJjcHVfcmVmX2V4aXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnQpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XFxuK1xcdC5uYW1lID0gXFxcInJlZi10cmFjZVxcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcmVmX3RyYWNlX3Rlc3RfY2FzZXMsXFxuK307XFxuK1xcbitrdW5pdF90ZXN0X3N1aXRlcyhcXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xcbitcXG4rTU9EVUxFX0FVVEhPUihcXFwiRXVnZW5lIE1hdmljayBcXHUwMDNjbUBtYXZpY2suZGV2XFx1MDAzZVxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE1OjE1LjgxNTcyNjQ1NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgyOTgwODEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbmV3IHRyYWNlcG9pbnQgKHJlZl90cmFjZV9maW5hbF9wdXQpIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGM0YTkyZmI2M2Q0ZDMyNDA4ZTA3YTViOGRlMTQ1ZGIwMDNjNWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIxLi43YzM4N2VkNzQ2ZWU1MSAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbitGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZl90cmFjZS5oXG4rRjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmNwdV9yZWY7XG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4rXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbitcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTRlOWZiYTllM2U5ZjRcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsMjYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuK1xuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbitcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XG4rI2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNlbmRpZlxuK1xuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43YjFmYmYzMjZhMjFjNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgKzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IG11dGV4O1xuIFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbitcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsNDYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyN1bmRlZiBUUkFDRV9TWVNURU1cbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4rXG4rLyoqXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4rICogQGNhbGxlcjogZnVuY3Rpb24gdGhhdCBjYWxsZWQgdGhlIHJlZmNvdW50aW5nXG4rICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KVxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuKyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcbisgKlxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9fZnVuY19fIGZvciBjYWxsZXIgYW5kIGZuIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4rICovXG4rVFJBQ0VfRVZFTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCxcbitcbitcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSxcbitcbitcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbitcbitcdFRQX1NUUlVDVF9fZW50cnkoXG4rXHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbitcdF9fc3RyaW5nKGZuLCBmbilcbitcdF9fZmllbGQoY29uc3Qgdm9pZCAqLCBvYmopXG4rXHQpLFxuK1xuK1x0VFBfZmFzdF9hc3NpZ24oXG4rXHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbitcdF9fYXNzaWduX3N0cihmbik7XG4rXHRfX2VudHJ5LVx1MDAzZW9iaiA9IG9iajtcbitcdCksXG4rXG4rXHRUUF9wcmludGsoXCJjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwiLCAodm9pZCAqKV9fZW50cnktXHUwMDNlY2FsbGVyLCBfX2dldF9zdHIoZm4pLCBfX2VudHJ5LVx1MDAzZW9iailcbispO1xuK1xuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGX1RSQUNFX0ggKi9cbitcbisvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWdcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li5jMjliMmNjYjNjMzExNyAxMDA2NDRcbi0tLSBhL2xpYi9LY29uZmlnXG4rKysgYi9saWIvS2NvbmZpZ1xuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcbiBcbiBcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXG4gXG4rY29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4rXHRib29sIFwicmVmX3RyYWNlIGt1bml0IHRlc3RcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXG4rXHRkZXBlbmRzIG9uIEtVTklUIFx1MDAyNlx1MDAyNiBGVFJBQ0VcbitcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4rXHRoZWxwXG4rXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XG4rXHQgIHRyYWNlcG9pbnQuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE5cbitcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuKysrIGIvbGliL01ha2VmaWxlXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXG4gXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcbitcbitvYmotJChDT05GSUdfVFJBQ0VQT0lOVFMpICs9IHJlZl90cmFjZS5vXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4XG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvcmVmX3RyYWNlLmNcbkBAIC0wLDAgKzEsMTIgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuK1xuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuK3tcbitcdHRyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSArNTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgKz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgKz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xuIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICs9IHV1aWRfa3VuaXQub1xuK29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgKz0gcmVmX3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0Kz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5AQCAtMCwwICsxLDEzOCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0X2JpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuK1xuK3N0cnVjdCBkYXRhIHtcbitcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuK1x0Y29uc3QgY2hhciAqZm47XG4rXHRjb25zdCB2b2lkICpvYmo7XG4rXHRpbnQgKmZsYWc7XG4rXHRzdHJ1Y3Qga3VuaXQgKnRlc3Q7XG4rfTtcbitcbitzdHJ1Y3QgZGF0YSByZWZjX2NoaztcbitzdHJ1Y3QgZGF0YSBwY3B1X2NoaztcbitcbisvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXNcbitzdGF0aWMgdm9pZCBwcm9iZShcbitcdCAgdm9pZCAqaWdub3JlLFxuK1x0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdCAgY29uc3QgY2hhciAqZm4sXG4rXHQgIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHRzdHJ1Y3QgZGF0YSAqY2hrX3ZhbDtcbitcbitcdGNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07XG4rXG4rXHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4rXG4rXHRpZiAoIXN0cmNtcChmdW5jX25hbWUsIFwidGVzdF9yZWZjb3VudFwiKSkge1xuK1x0XHRjaGtfdmFsID0gXHUwMDI2cmVmY19jaGs7XG4rXHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbitcdH0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsIFwidGVzdF9wZXJjcHVcIikpIHtcbitcdFx0Y2hrX3ZhbCA9IFx1MDAyNnBjcHVfY2hrO1xuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cdTAwM2V0ZXN0LCBtZW1jbXAoXG4rXHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuK1x0fSBlbHNlIHtcbitcdFx0Ly9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzXG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbitcdGludCAqZmxhZyA9IGNoa192YWwtXHUwMDNlZmxhZztcbitcbitcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAxLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTtcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtXHUwMDNlY2FsbGVyKTtcbitcbitcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uXG4rfVxuK1xuK1xuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHJlZmNvdW50X3QgcmVmYztcbitcdGludCBmbGFnX2FkZHIgPSAwO1xuK1xuK1x0cmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9yZWZjb3VudDtcbitcdHJlZmNfY2hrLmZuID0gXCJfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdFwiO1xuK1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbitcdHJlZmNfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4rXHRyZWZjX2Noay50ZXN0ID0gdGVzdDtcbitcbitcdGludCAqZmxhZyA9IHJlZmNfY2hrLmZsYWc7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuK1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnJlZmMsIDIpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZyZWZjKSk7XG4rXG4rXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbitcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZyZWZjKSk7XG4rXG4rXHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4rXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xuK31cbitcbitzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuK1xuK1x0aW50IGZsYWdfYWRkciA9IDE7XG4rXG4rXHRwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3BlcmNwdTtcbitcdHBjcHVfY2hrLmZuID0gXCJwZXJjcHVfcmVmX3B1dF9tYW55XCI7XG4rXHRwY3B1X2Noay5vYmogPSBcdTAwMjZwY3B1X3JlZjtcbitcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4rXHRwY3B1X2Noay50ZXN0ID0gdGVzdDtcbitcbitcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZwY3B1X3JlZiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xuK1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZwY3B1X3JlZik7XG4rXG4rXHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4rXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNnBjcHVfcmVmKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuK1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbitcdEtVTklUX0NBU0UodGVzdF9wZXJjcHUpLFxuK1x0e31cbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmLXRyYWNlXCIsXG4rXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuK1xuK01PRFVMRV9BVVRIT1IoXCJFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwiKTtcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNS44MTU3Mjk0MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODI5NzYxMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgYWRkaW5nIGEgbmV3IHRyYWNlcG9pbnQsIGByZWZfdHJhY2VfZmluYWxfcHV0YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAuIEl0IGFsc28gaW5jbHVkZXMgYSBLVW5pdCB0ZXN0IGZvciB0aGlzIG5ldyB0cmFjZXBvaW50LiBJIHNlZSB0aGUgZGlmZiBzcGFucyBxdWl0ZSBhIGZldyBmaWxlczogaGVhZGVyIGZpbGVzIGZvciB0aGUgbmV3IHRyYWNlcG9pbnQsIHRoZSB0cmFjZXBvaW50IGl0c2VsZiwgYSBuZXcgYC5jYCBmaWxlIGZvciB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCB1cGRhdGVzIHRvIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBmb3IgdGhlIG5ldyBjb2RlIGFuZCB0ZXN0LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZz8gTGV0J3MgYnJlYWsgaXQgZG93bjogVGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWRkcyBpbnN0cnVtZW50YXRpb24uIEl0IGluc2VydHMgYSB0cmFjZXBvaW50IHdoaWNoLCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIHByb3ZpZGVzIG9ic2VydmFiaWxpdHkgYnV0IGRvZXNuJ3QgZnVuZGFtZW50YWxseSBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlIGtlcm5lbCBjb3JlLlxuXG5UaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzLCB0aGF0IG1vZGlmaWNhdGlvbnMgaW52b2x2aW5nIHRyYWNlcG9pbnRzIGFyZSBcInB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXNcIiBhbmQgbm90IHdvcnRoIGZ1enppbmcuIEl0J3MgcmVhbGx5IHRoYXQgc2ltcGxlLiBLVW5pdCB0ZXN0cywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgYWxzbyBub3QgcGFydCBvZiBhbnkgZnV6emluZyBjYW1wYWlnbi4gVGhleSB2ZXJpZnkgZnVuY3Rpb25hbGl0eSwgYnV0IGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgZnV6emVkIGFzIHBhcnQgb2YgYSBmdXp6aW5nIGNhbXBhaWduLiBTbywgdW5kZXIgdGhlIFwicHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlc1wiIHVtYnJlbGxhLCBhZGRpbmcgdHJhY2Vwb2ludHMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBjbG9zZWx5IGF0IHRoZSBkaWZmLCBpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAsIHRoZSBjb2RlIGlzIG9ubHkgYWRkaW5nIHRoZSBgdHJhY2VfcmVmX2ZpbmFsX3B1dCgpYCBjYWxscy4gTm8gY29yZSBsb2dpYywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGZ1enppbmcgd291bGQgdHlwaWNhbGx5IHVuY292ZXIuIEl0J3Mgc29sZWx5IGZvciBhZGRpbmcgdGhlIHRyYWNlcG9pbnQuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogKipXb3J0aEZ1enppbmc9ZmFsc2UqKi4gVGhpcyBpcyBwdXJlbHkgYSB0cmFjZXBvaW50IGFkZGl0aW9uIGFuZCBhIEtVbml0IHRlc3QuIEknbSBnb2luZyB0byBzZXQgdGhhdCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxMiwiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE1OjI0LjY0NTQ5NDA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbzhg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 07:00:38 +0000 UTC FinishedAt: 2026-07-06 07:15:26 +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+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MGM0YTkyZmI2M2Q0ZDMyNDA4ZTA3YTViOGRlMTQ1ZGIwMDNjNWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbiYjNDM7RjpcdGxpYi9yZWZfdHJhY2UuaFxuJiM0MztGOlx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgJiM0Mzs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuJiM0MztcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuQEAgLTAsMCAmIzQzOzEsMjYgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiYjNDM7I2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xuJiM0MztERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXG4mIzQzOy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcdFx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuJiM0MzsjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDQ2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyN1bmRlZiBUUkFDRV9TWVNURU1cbiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4mIzQzOyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4mIzQzO1x0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSAmIzQzOz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vXG4mIzQzO29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCYjNDM7PSBtb2R1bGUvXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZuO1xuJiM0MztcdGNvbnN0IHZvaWQgKm9iajtcbiYjNDM7XHRpbnQgKmZsYWc7XG4mIzQzO1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgcmVmY19jaGs7XG4mIzQzO3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xuJiM0MztcbiYjNDM7Ly9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYXRhICpjaGtfdmFsO1xuJiM0MztcbiYjNDM7XHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGZ1bmNfbmFtZSwgXCYjMzQ7dGVzdF9yZWZjb3VudFwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZyZWZjX2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbiYjNDM7XHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcJiMzNDt0ZXN0X3BlcmNwdVwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChcbiYjNDM7XHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbiYjNDM7XHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4mIzQzO1xuJiM0MztcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cdTAwM2VjYWxsZXIpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCByZWZjO1xuJiM0MztcdGludCBmbGFnX2FkZHIgPSAwO1xuJiM0MztcbiYjNDM7XHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3JlZmNvdW50O1xuJiM0MztcdHJlZmNfY2hrLmZuID0gXCYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcJiMzNDs7XG4mIzQzO1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbiYjNDM7XHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuJiM0MztcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xuJiM0MztcbiYjNDM7XHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuJiM0MztcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2cmVmYywgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnJlZmMpKTtcbiYjNDM7XG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuJiM0MztcdHVucmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuJiM0MztcbiYjNDM7XHRpbnQgZmxhZ19hZGRyID0gMTtcbiYjNDM7XG4mIzQzO1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4mIzQzO1x0cGNwdV9jaGsuZm4gPSBcJiMzNDtwZXJjcHVfcmVmX3B1dF9tYW55XCYjMzQ7O1xuJiM0MztcdHBjcHVfY2hrLm9iaiA9IFx1MDAyNnBjcHVfcmVmO1xuJiM0MztcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4mIzQzO1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4mIzQzO1xuJiM0MztcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4mIzQzO1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbiYjNDM7XHR7fVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZi10cmFjZVwmIzM0OyxcbiYjNDM7XHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwYzRhOTJmYjYzZDRkMzI0MDhlMDdhNWI4ZGUxNDVkYjAwM2M1ZDgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDA3OjE1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vYXRvbWljXyoudHh0CiBGOglhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oCiBGOglpbmNsdWRlLyovYXRvbWljKi5oCiYjNDM7RjoJaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaAogRjoJaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7RjoJbGliL3JlZl90cmFjZS5oCiYjNDM7RjoJbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCiBGOglzY3JpcHRzL2F0b21pYy8KIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBwZXJjcHVfcmVmOwogdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZhbXA7cGVyY3B1X2NvdW50KSkKIAkJdGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTsKLQllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKQomIzQzOwllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKSB7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7CiAJCXJlZi0mZ3Q7ZGF0YS0mZ3Q7cmVsZWFzZShyZWYpOwomIzQzOwl9CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMjYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHJhY2Vwb2ludC1kZWZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaCZndDsKJiM0MzsKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFMKJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqLwomIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopOwomIzQzOwomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopCQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSkJCQlcCiYjNDM7CQkJZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7CVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfQomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbGltaXRzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9ja190eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHIpOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsNDYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyN1bmRlZiBUUkFDRV9TWVNURU0KJiM0MzsjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2UKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKQomIzQzOyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQuaCZndDsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8KJiM0MzsgKiBAY2FsbGVyOiBmdW5jdGlvbiB0aGF0IGNhbGxlZCB0aGUgcmVmY291bnRpbmcKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgRlRSQUNFCiYjNDM7CWRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWhlbHAKJiM0MzsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOwomIzQzOy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzCiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlCmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSAmIzQzOz0gcmVmX3RyYWNlX2t1bml0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpCQkmIzQzOz0gbW9kdWxlLwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7a3VuaXQvdGVzdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC93YWl0X2JpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2thbGxzeW1zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJY29uc3QgY2hhciAqZm47CiYjNDM7CWNvbnN0IHZvaWQgKm9iajsKJiM0MzsJaW50ICpmbGFnOwomIzQzOwlzdHJ1Y3Qga3VuaXQgKnRlc3Q7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSByZWZjX2NoazsKJiM0MztzdHJ1Y3QgZGF0YSBwY3B1X2NoazsKJiM0MzsKJiM0MzsvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXMKJiM0MztzdGF0aWMgdm9pZCBwcm9iZSgKJiM0MzsJICB2b2lkICppZ25vcmUsCiYjNDM7CSAgdW5zaWduZWQgbG9uZyBjYWxsZXIsCiYjNDM7CSAgY29uc3QgY2hhciAqZm4sCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhdGEgKmNoa192YWw7CiYjNDM7CiYjNDM7CWNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07CiYjNDM7CiYjNDM7CXNwcmludF9zeW1ib2xfbm9fb2Zmc2V0KGZ1bmNfbmFtZSwgY2FsbGVyKTsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoZnVuY19uYW1lLCAmIzM0O3Rlc3RfcmVmY291bnQmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3JlZmNfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcChvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsICYjMzQ7dGVzdF9wZXJjcHUmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3BjcHVfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcCgKJiM0MzsJCQlvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLy9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzCiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3RydWN0IGt1bml0ICp0ZXN0ID0gY2hrX3ZhbC0mZ3Q7dGVzdDsKJiM0MzsJaW50ICpmbGFnID0gY2hrX3ZhbC0mZ3Q7ZmxhZzsKJiM0MzsKJiM0MzsJLy9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtJmd0O2NhbGxlcik7CiYjNDM7CiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uCiYjNDM7fQomIzQzOwomIzQzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCByZWZjOwomIzQzOwlpbnQgZmxhZ19hZGRyID0gMDsKJiM0MzsKJiM0MzsJcmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpJmFtcDt0ZXN0X3JlZmNvdW50OwomIzQzOwlyZWZjX2Noay5mbiA9ICYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3QmIzM0OzsKJiM0MzsJcmVmY19jaGsub2JqID0gJmFtcDtyZWZjOwomIzQzOwlyZWZjX2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXJlZmNfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtyZWZjLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuCiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJd2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbgomIzQzOwl1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7CiYjNDM7CiYjNDM7CWludCBmbGFnX2FkZHIgPSAxOwomIzQzOwomIzQzOwlwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZykmYW1wO3Rlc3RfcGVyY3B1OwomIzQzOwlwY3B1X2Noay5mbiA9ICYjMzQ7cGVyY3B1X3JlZl9wdXRfbWFueSYjMzQ7OwomIzQzOwlwY3B1X2Noay5vYmogPSAmYW1wO3BjcHVfcmVmOwomIzQzOwlwY3B1X2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXBjcHVfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KCZhbXA7cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO3BjcHVfcmVmKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW4KJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24KJiM0MzsJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsKJiM0MzsJcGVyY3B1X3JlZl9leGl0KCZhbXA7cGNwdV9yZWYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHUpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLAomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7CiYjNDM7CiYjNDM7TU9EVUxFX0FVVEhPUigmIzM0O0V1Z2VuZSBNYXZpY2sgJmx0O21AbWF2aWNrLmRldiZndDsmIzM0Oyk7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlJiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODEyCgkJCQkJCQlvdXRwdXQ6IDcxCgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSBhZGRpbmcgYSBuZXcgdHJhY2Vwb2ludCwgYHJlZl90cmFjZV9maW5hbF9wdXRgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YC4gSXQgYWxzbyBpbmNsdWRlcyBhIEtVbml0IHRlc3QgZm9yIHRoaXMgbmV3IHRyYWNlcG9pbnQuIEkgc2VlIHRoZSBkaWZmIHNwYW5zIHF1aXRlIGEgZmV3IGZpbGVzOiBoZWFkZXIgZmlsZXMgZm9yIHRoZSBuZXcgdHJhY2Vwb2ludCwgdGhlIHRyYWNlcG9pbnQgaXRzZWxmLCBhIG5ldyBgLmNgIGZpbGUgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIHVwZGF0ZXMgdG8gYEtjb25maWdgIGFuZCBgTWFrZWZpbGVgIGZvciB0aGUgbmV3IGNvZGUgYW5kIHRlc3QuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZz8gTGV0JiMzOTtzIGJyZWFrIGl0IGRvd246IFRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFkZHMgaW5zdHJ1bWVudGF0aW9uLiBJdCBpbnNlcnRzIGEgdHJhY2Vwb2ludCB3aGljaCwgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBwcm92aWRlcyBvYnNlcnZhYmlsaXR5IGJ1dCBkb2VzbiYjMzk7dCBmdW5kYW1lbnRhbGx5IGFsdGVyIHRoZSBiZWhhdmlvciBvZiB0aGUga2VybmVsIGNvcmUuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzLCB0aGF0IG1vZGlmaWNhdGlvbnMgaW52b2x2aW5nIHRyYWNlcG9pbnRzIGFyZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMmIzM0OyBhbmQgbm90IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIHJlYWxseSB0aGF0IHNpbXBsZS4gS1VuaXQgdGVzdHMsIGJ5IHRoZWlyIG5hdHVyZSwgYXJlIGFsc28gbm90IHBhcnQgb2YgYW55IGZ1enppbmcgY2FtcGFpZ24uIFRoZXkgdmVyaWZ5IGZ1bmN0aW9uYWxpdHksIGJ1dCBhcmUgbm90IGludGVuZGVkIHRvIGJlIGZ1enplZCBhcyBwYXJ0IG9mIGEgZnV6emluZyBjYW1wYWlnbi4gU28sIHVuZGVyIHRoZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMmIzM0OyB1bWJyZWxsYSwgYWRkaW5nIHRyYWNlcG9pbnRzIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBjbG9zZWx5IGF0IHRoZSBkaWZmLCBpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAsIHRoZSBjb2RlIGlzIG9ubHkgYWRkaW5nIHRoZSBgdHJhY2VfcmVmX2ZpbmFsX3B1dCgpYCBjYWxscy4gTm8gY29yZSBsb2dpYywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGZ1enppbmcgd291bGQgdHlwaWNhbGx5IHVuY292ZXIuIEl0JiMzOTtzIHNvbGVseSBmb3IgYWRkaW5nIHRoZSB0cmFjZXBvaW50LgoKVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiAqKldvcnRoRnV6emluZz1mYWxzZSoqLiBUaGlzIGlzIHB1cmVseSBhIHRyYWNlcG9pbnQgYWRkaXRpb24gYW5kIGEgS1VuaXQgdGVzdC4gSSYjMzk7bSBnb2luZyB0byBzZXQgdGhhdCBhbmQgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIG5ldyB0cmFjZXBvaW50IChyZWZfdHJhY2VfZmluYWxfcHV0KSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIGFuZCBhIGNvcnJlc3BvbmRpbmcgS1VuaXQgdGVzdC4gSXQgZG9lcyBub3QgYWx0ZXIgdGhlIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNC45Mzc2MTgwNTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzA3OTI2Mzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNC45Mzc2MjQ3ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NTAzNDI2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwYzRhOTJmYjYzZDRkMzI0MDhlMDdhNWI4ZGUxNDVkYjAwM2M1ZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXFxuaW5kZXggMTBlODI1MzE4MWQzMjEuLjdjMzg3ZWQ3NDZlZTUxIDEwMDY0NFxcbi0tLSBhL01BSU5UQUlORVJTXFxuKysrIGIvTUFJTlRBSU5FUlNcXG5AQCAtNDIxMCw3ICs0MjEwLDEwIEBAIFM6XFx0TWFpbnRhaW5lZFxcbiBGOlxcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XFxuIEY6XFx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxcbiBGOlxcdGluY2x1ZGUvKi9hdG9taWMqLmhcXG4rRjpcXHRpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxuIEY6XFx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuK0Y6XFx0bGliL3JlZl90cmFjZS5oXFxuK0Y6XFx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXFxuIEY6XFx0c2NyaXB0cy9hdG9taWMvXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcXG4gRjpcXHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5pbmRleCBkNzNhMWMwOGMzZTNjMC4uNTU1NDNlY2RmNjBjZmIgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG5AQCAtNTUsNiArNTUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcmN1cGRhdGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9nZnAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmNwdV9yZWY7XFxuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xcbkBAIC0zMzEsOCArMzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXFxuIFxcbiBcXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXFx1MDAyNnBlcmNwdV9jb3VudCkpXFxuIFxcdFxcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XFxuLVxcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSlcXG4rXFx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcXHUwMDI2cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2Vjb3VudCkpKSB7XFxuK1xcdFxcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcXG4gXFx0XFx0cmVmLVxcdTAwM2VkYXRhLVxcdTAwM2VyZWxlYXNlKHJlZik7XFxuK1xcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTRlOWZiYTllM2U5ZjRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbkBAIC0wLDAgKzEsMjYgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4rI2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFxcdTAwM2VcXG4rXFxuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xcbitcXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xcbisvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xcbitleHRlcm4gdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKTtcXG4rXFxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZl90cmFjZV9maW5hbF9wdXQpKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XFx0XFxcXFxcbitcXHR9IHdoaWxlICgwKVxcbitcXG4rI2Vsc2UgLyogIUNPTkZJR19UUkFDRVBPSU5UUyAqL1xcbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XFxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMClcXG4rI2VuZGlmXFxuK1xcbisjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43YjFmYmYzMjZhMjFjNiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5AQCAtMTA3LDYgKzEwNyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9saW1pdHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50X3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9ja190eXBlcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmX3RyYWNlLmhcXHUwMDNlXFxuIFxcbiBzdHJ1Y3QgbXV0ZXg7XFxuIFxcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxcbiBcXG4gXFx0aWYgKG9sZCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgb2xkID09IGkpIHtcXG4gXFx0XFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XFxuK1xcdFxcdHRyYWNlX3JlZl9maW5hbF9wdXQocik7XFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTYwMzdhMzI1YmUyNjJcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcXG5AQCAtMCwwICsxLDQ2IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyN1bmRlZiBUUkFDRV9TWVNURU1cXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXFxuK1xcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxcbisjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFxcdTAwM2VcXG4rXFxuKy8qKlxcbisgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm9cXG4rICogQGNhbGxlcjogZnVuY3Rpb24gdGhhdCBjYWxsZWQgdGhlIHJlZmNvdW50aW5nXFxuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcXG4rICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpXFxuKyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcXG4rICpcXG4rICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbisgKiB3aGljaCB1c2VzIF9SRVRfSVBfIGFuZCBfX2Z1bmNfXyBmb3IgY2FsbGVyIGFuZCBmbiBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxcbisgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWRcXG4rICovXFxuK1RSQUNFX0VWRU5UKHJlZl90cmFjZV9maW5hbF9wdXQsXFxuK1xcbitcXHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXFxuK1xcbitcXHRUUF9BUkdTKGNhbGxlciwgZm4sIG9iaiksXFxuK1xcbitcXHRUUF9TVFJVQ1RfX2VudHJ5KFxcbitcXHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcXG4rXFx0X19zdHJpbmcoZm4sIGZuKVxcbitcXHRfX2ZpZWxkKGNvbnN0IHZvaWQgKiwgb2JqKVxcbitcXHQpLFxcbitcXG4rXFx0VFBfZmFzdF9hc3NpZ24oXFxuK1xcdF9fZW50cnktXFx1MDAzZWNhbGxlciA9IGNhbGxlcjtcXG4rXFx0X19hc3NpZ25fc3RyKGZuKTtcXG4rXFx0X19lbnRyeS1cXHUwMDNlb2JqID0gb2JqO1xcbitcXHQpLFxcbitcXG4rXFx0VFBfcHJpbnRrKFxcXCJjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFxcXCIsICh2b2lkICopX19lbnRyeS1cXHUwMDNlY2FsbGVyLCBfX2dldF9zdHIoZm4pLCBfX2VudHJ5LVxcdTAwM2VvYmopXFxuKyk7XFxuK1xcbisjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXFxuK1xcbisvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2RlZmluZV90cmFjZS5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXFxuaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NFxcbi0tLSBhL2xpYi9LY29uZmlnXFxuKysrIGIvbGliL0tjb25maWdcXG5AQCAtNTIsNiArNTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxcbiBcXG4gXFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cXG4gXFxuK2NvbmZpZyBSRUZfVFJBQ0VfS1VOSVRfVEVTVFxcbitcXHRib29sIFxcXCJyZWZfdHJhY2Uga3VuaXQgdGVzdFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbitcXHRkZXBlbmRzIG9uIEtVTklUIFxcdTAwMjZcXHUwMDI2IEZUUkFDRVxcbitcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbitcXHRoZWxwXFxuK1xcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgS1VuaXQgdGVzdCBzdWl0ZSBmb3IgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcXG4rXFx0ICB0cmFjZXBvaW50LlxcbitcXG4rXFx0ICBJZiB1bnN1cmUsIHNheSBOXFxuK1xcbiBjb25maWcgQklUUkVWRVJTRVxcbiBcXHR0cmlzdGF0ZVxcbiBcXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXFxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxcbi0tLSBhL2xpYi9NYWtlZmlsZVxcbisrKyBiL2xpYi9NYWtlZmlsZVxcbkBAIC0zMzUsMyArMzM1LDUgQEAgQ09OVEVYVF9BTkFMWVNJU190ZXN0X2NvbnRleHQtYW5hbHlzaXMubyA6PSB5XFxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXFxuIFxcbiBzdWJkaXItJChDT05GSUdfRk9SVElGWV9TT1VSQ0UpICs9IHRlc3RfZm9ydGlmeVxcbitcXG4rb2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSArPSByZWZfdHJhY2Uub1xcbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNWY3YzE3YzdjNDc1OFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvcmVmX3RyYWNlLmNcXG5AQCAtMCwwICsxLDEyIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rLy9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxcbit7XFxuK1xcdHRyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9NYWtlZmlsZSBiL2xpYi90ZXN0cy9NYWtlZmlsZVxcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcXG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcXG4rKysgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5AQCAtNTcsNSArNTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgKz0gdXNlcmNvcHlfa3VuaXQub1xcbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1JBVEVMSU1JVF9LVU5JVF9URVNUKSArPSB0ZXN0X3JhdGVsaW1pdC5vXFxuIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICs9IHV1aWRfa3VuaXQub1xcbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXFxuIFxcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcXHRcXHQrPSBtb2R1bGUvXFxuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbkBAIC0wLDAgKzEsMTM4IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2t1bml0L3Rlc3QuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXRfYml0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rYWxsc3ltcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFx1MDAzZVxcbitcXG4rc3RydWN0IGRhdGEge1xcbitcXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcXG4rXFx0Y29uc3QgY2hhciAqZm47XFxuK1xcdGNvbnN0IHZvaWQgKm9iajtcXG4rXFx0aW50ICpmbGFnO1xcbitcXHRzdHJ1Y3Qga3VuaXQgKnRlc3Q7XFxuK307XFxuK1xcbitzdHJ1Y3QgZGF0YSByZWZjX2NoaztcXG4rc3RydWN0IGRhdGEgcGNwdV9jaGs7XFxuK1xcbisvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXNcXG4rc3RhdGljIHZvaWQgcHJvYmUoXFxuK1xcdCAgdm9pZCAqaWdub3JlLFxcbitcXHQgIHVuc2lnbmVkIGxvbmcgY2FsbGVyLFxcbitcXHQgIGNvbnN0IGNoYXIgKmZuLFxcbitcXHQgIGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHRzdHJ1Y3QgZGF0YSAqY2hrX3ZhbDtcXG4rXFxuK1xcdGNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07XFxuK1xcbitcXHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XFxuK1xcbitcXHRpZiAoIXN0cmNtcChmdW5jX25hbWUsIFxcXCJ0ZXN0X3JlZmNvdW50XFxcIikpIHtcXG4rXFx0XFx0Y2hrX3ZhbCA9IFxcdTAwMjZyZWZjX2NoaztcXG4rXFx0XFx0S1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtXFx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXFx1MDAzZW9iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7XFxuK1xcdH0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsIFxcXCJ0ZXN0X3BlcmNwdVxcXCIpKSB7XFxuK1xcdFxcdGNoa192YWwgPSBcXHUwMDI2cGNwdV9jaGs7XFxuK1xcdFxcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVxcdTAwM2V0ZXN0LCBtZW1jbXAoXFxuK1xcdFxcdFxcdG9iaiwgY2hrX3ZhbC1cXHUwMDNlb2JqLCBzaXplb2Yoc3RydWN0IHBlcmNwdV9yZWYpKSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdC8vbm9uIHRlc3QgZnVuY3Rpb24gb3JpZ2luIHRyYWNlIGV2ZW50c1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXFx1MDAzZXRlc3Q7XFxuK1xcdGludCAqZmxhZyA9IGNoa192YWwtXFx1MDAzZWZsYWc7XFxuK1xcbitcXHQvL2Vuc3VyZSBwYXN0IGZsYWcgd3JpdGVzIGFyZSBkb25lIGJlZm9yZSByZWFkaW5nXFxuK1xcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAxLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTtcXG4rXFx0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cXHUwMDNlY2FsbGVyKTtcXG4rXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uXFxuK31cXG4rXFxuK1xcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9yZWZjb3VudChzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0cmVmY291bnRfdCByZWZjO1xcbitcXHRpbnQgZmxhZ19hZGRyID0gMDtcXG4rXFxuK1xcdHJlZmNfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZ0ZXN0X3JlZmNvdW50O1xcbitcXHRyZWZjX2Noay5mbiA9IFxcXCJfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdFxcXCI7XFxuK1xcdHJlZmNfY2hrLm9iaiA9IFxcdTAwMjZyZWZjO1xcbitcXHRyZWZjX2Noay5mbGFnID0gXFx1MDAyNmZsYWdfYWRkcjtcXG4rXFx0cmVmY19jaGsudGVzdCA9IHRlc3Q7XFxuK1xcbitcXHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcXG4rXFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2cmVmYywgMik7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZyZWZjKSk7XFxuK1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cmVmYykpO1xcbitcXG4rXFx0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxcbitcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XFxuK1xcbitzdGF0aWMgdm9pZCB0ZXN0X3BlcmNwdShzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7XFxuK1xcbitcXHRpbnQgZmxhZ19hZGRyID0gMTtcXG4rXFxuK1xcdHBjcHVfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVxcdTAwMjZ0ZXN0X3BlcmNwdTtcXG4rXFx0cGNwdV9jaGsuZm4gPSBcXFwicGVyY3B1X3JlZl9wdXRfbWFueVxcXCI7XFxuK1xcdHBjcHVfY2hrLm9iaiA9IFxcdTAwMjZwY3B1X3JlZjtcXG4rXFx0cGNwdV9jaGsuZmxhZyA9IFxcdTAwMjZmbGFnX2FkZHI7XFxuK1xcdHBjcHVfY2hrLnRlc3QgPSB0ZXN0O1xcbitcXG4rXFx0aW50ICpmbGFnID0gcGNwdV9jaGsuZmxhZztcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KFxcdTAwMjZwY3B1X3JlZiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFx0cGVyY3B1X3JlZl9nZXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcdHBlcmNwdV9yZWZfcHV0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxcbitcXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xcbitcXHRwZXJjcHVfcmVmX2V4aXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xcbitcXHRLVU5JVF9DQVNFKHRlc3RfcmVmY291bnQpLFxcbitcXHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcXG4rXFx0e31cXG4rfTtcXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XFxuK1xcdC5uYW1lID0gXFxcInJlZi10cmFjZVxcXCIsXFxuK1xcdC50ZXN0X2Nhc2VzID0gcmVmX3RyYWNlX3Rlc3RfY2FzZXMsXFxuK307XFxuK1xcbitrdW5pdF90ZXN0X3N1aXRlcyhcXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xcbitcXG4rTU9EVUxFX0FVVEhPUihcXFwiRXVnZW5lIE1hdmljayBcXHUwMDNjbUBtYXZpY2suZGV2XFx1MDAzZVxcXCIpO1xcbitNT0RVTEVfREVTQ1JJUFRJT04oXFxcIktVbml0IHRlc3QgZm9yIHJlZl90cmFjZVxcXCIpO1xcbitNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE1OjE1LjgxNTcyNjQ1NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODgyOTgwODEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgbmV3IHRyYWNlcG9pbnQgKHJlZl90cmFjZV9maW5hbF9wdXQpIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgYW5kIGEgY29ycmVzcG9uZGluZyBLVW5pdCB0ZXN0LiBJdCBkb2VzIG5vdCBhbHRlciB0aGUgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MGM0YTkyZmI2M2Q0ZDMyNDA4ZTA3YTViOGRlMTQ1ZGIwMDNjNWQ4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgNiAwNzoxNToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlNcbmluZGV4IDEwZTgyNTMxODFkMzIxLi43YzM4N2VkNzQ2ZWU1MSAxMDA2NDRcbi0tLSBhL01BSU5UQUlORVJTXG4rKysgYi9NQUlOVEFJTkVSU1xuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlx0TWFpbnRhaW5lZFxuIEY6XHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxuIEY6XHRhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oXG4gRjpcdGluY2x1ZGUvKi9hdG9taWMqLmhcbitGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbitGOlx0bGliL3JlZl90cmFjZS5oXG4rRjpcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuIEY6XHRzY3JpcHRzL2F0b21pYy9cbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMucnNcbiBGOlx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcbkBAIC01NSw2ICs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IHBlcmNwdV9yZWY7XG4gdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7XG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxuIFxuIFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFx1MDAyNnBlcmNwdV9jb3VudCkpXG4gXHRcdHRoaXNfY3B1X3N1YigqcGVyY3B1X2NvdW50LCBucik7XG4tXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpXG4rXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbitcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyZWYpO1xuIFx0XHRyZWYtXHUwMDNlZGF0YS1cdTAwM2VyZWxlYXNlKHJlZik7XG4rXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaCBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNTRlOWZiYTllM2U5ZjRcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsMjYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXG4rI2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC90cmFjZXBvaW50LWRlZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuK1xuKy8qIERlY2xhcmUgdGhlIHRyYWNlcG9pbnQgc28gdHJhY2Vwb2ludF9lbmFibGVkKCkgY2FuIGJlIHVzZWQgKi9cbitERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFDRVBPSU5UU1xuKy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XG4rXG4rI2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuK1x0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGlmICh0cmFjZXBvaW50X2VuYWJsZWQocmVmX3RyYWNlX2ZpbmFsX3B1dCkpXHRcdFx0XFxcbitcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4rXHR9IHdoaWxlICgwKVxuK1xuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbitzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaikgeyB9XG4rI2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iaikgZG8geyB9IHdoaWxlICgwKVxuKyNlbmRpZlxuK1xuKyNlbmRpZiAvKiBfTElOVVhfUkVGX1RSQUNFX0ggKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbmluZGV4IGJhNzY1N2NlZDI4MTdmLi43YjFmYmYzMjZhMjFjNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5AQCAtMTA3LDYgKzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXHUwMDNlXG4gXG4gc3RydWN0IG11dGV4O1xuIFxuQEAgLTM5Myw2ICszOTQsNyBAQCBib29sIF9fcmVmY291bnRfc3ViX2FuZF90ZXN0KGludCBpLCByZWZjb3VudF90ICpyLCBpbnQgKm9sZHApXG4gXG4gXHRpZiAob2xkIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBvbGQgPT0gaSkge1xuIFx0XHRzbXBfYWNxdWlyZV9fYWZ0ZXJfY3RybF9kZXAoKTtcbitcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgKzEsNDYgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKyN1bmRlZiBUUkFDRV9TWVNURU1cbisjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2VcbitcbisjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuKyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4rXG4rLyoqXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4rICogQGNhbGxlcjogZnVuY3Rpb24gdGhhdCBjYWxsZWQgdGhlIHJlZmNvdW50aW5nXG4rICogZnVuY3Rpb24ocmVmY291bnRfc3ViX2FuZF90ZXN0LCBwZXJjcHVfcmVmX3B1dF9tYW55KVxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuKyAqIEBvYmo6IHJlZmNvdW50IG9iamVjdChzdHJ1Y3QgcGVyY3B1X3JlZiwgcmVmY291bnRfdClcbisgKlxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuKyAqIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuKyAqIHdoaWNoIHVzZXMgX1JFVF9JUF8gYW5kIF9fZnVuY19fIGZvciBjYWxsZXIgYW5kIGZuIGFyZ3VtZW50cyByZXNwZWN0aXZlbHksXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4rICovXG4rVFJBQ0VfRVZFTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCxcbitcbitcdFRQX1BST1RPKHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKSxcbitcbitcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbitcbitcdFRQX1NUUlVDVF9fZW50cnkoXG4rXHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbitcdF9fc3RyaW5nKGZuLCBmbilcbitcdF9fZmllbGQoY29uc3Qgdm9pZCAqLCBvYmopXG4rXHQpLFxuK1xuK1x0VFBfZmFzdF9hc3NpZ24oXG4rXHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbitcdF9fYXNzaWduX3N0cihmbik7XG4rXHRfX2VudHJ5LVx1MDAzZW9iaiA9IG9iajtcbitcdCksXG4rXG4rXHRUUF9wcmludGsoXCJjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwiLCAodm9pZCAqKV9fZW50cnktXHUwMDNlY2FsbGVyLCBfX2dldF9zdHIoZm4pLCBfX2VudHJ5LVx1MDAzZW9iailcbispO1xuK1xuKyNlbmRpZiAvKiBfVFJBQ0VfUkVGX1RSQUNFX0ggKi9cbitcbisvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWdcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li5jMjliMmNjYjNjMzExNyAxMDA2NDRcbi0tLSBhL2xpYi9LY29uZmlnXG4rKysgYi9saWIvS2NvbmZpZ1xuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcbiBcbiBcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXG4gXG4rY29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4rXHRib29sIFwicmVmX3RyYWNlIGt1bml0IHRlc3RcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXG4rXHRkZXBlbmRzIG9uIEtVTklUIFx1MDAyNlx1MDAyNiBGVFJBQ0VcbitcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4rXHRoZWxwXG4rXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XG4rXHQgIHRyYWNlcG9pbnQuXG4rXG4rXHQgIElmIHVuc3VyZSwgc2F5IE5cbitcbiBjb25maWcgQklUUkVWRVJTRVxuIFx0dHJpc3RhdGVcbiBcbmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGVcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcbi0tLSBhL2xpYi9NYWtlZmlsZVxuKysrIGIvbGliL01ha2VmaWxlXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vXG4gXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcbitcbitvYmotJChDT05GSUdfVFJBQ0VQT0lOVFMpICs9IHJlZl90cmFjZS5vXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4XG4tLS0gL2Rldi9udWxsXG4rKysgYi9saWIvcmVmX3RyYWNlLmNcbkBAIC0wLDAgKzEsMTIgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UU1xuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuK1xuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXG4rdm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuK3tcbitcdHRyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQoY2FsbGVyLCBmbiwgb2JqKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4rXG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSArNTcsNiBAQCBvYmotJChDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCkgKz0gdXNlcmNvcHlfa3VuaXQub1xuIG9iai0kKENPTkZJR19VVElMX01BQ1JPU19LVU5JVCkgKz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xuIG9iai0kKENPTkZJR19VVUlEX0tVTklUX1RFU1QpICs9IHV1aWRfa3VuaXQub1xuK29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgKz0gcmVmX3RyYWNlX2t1bml0Lm9cbiBcbiBvYmotJChDT05GSUdfVEVTVF9SVU5USU1FX01PRFVMRSlcdFx0Kz0gbW9kdWxlL1xuZGlmZiAtLWdpdCBhL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5AQCAtMCwwICsxLDEzOCBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0X2JpdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuK1xuK3N0cnVjdCBkYXRhIHtcbitcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuK1x0Y29uc3QgY2hhciAqZm47XG4rXHRjb25zdCB2b2lkICpvYmo7XG4rXHRpbnQgKmZsYWc7XG4rXHRzdHJ1Y3Qga3VuaXQgKnRlc3Q7XG4rfTtcbitcbitzdHJ1Y3QgZGF0YSByZWZjX2NoaztcbitzdHJ1Y3QgZGF0YSBwY3B1X2NoaztcbitcbisvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXNcbitzdGF0aWMgdm9pZCBwcm9iZShcbitcdCAgdm9pZCAqaWdub3JlLFxuK1x0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcbitcdCAgY29uc3QgY2hhciAqZm4sXG4rXHQgIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHRzdHJ1Y3QgZGF0YSAqY2hrX3ZhbDtcbitcbitcdGNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07XG4rXG4rXHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4rXG4rXHRpZiAoIXN0cmNtcChmdW5jX25hbWUsIFwidGVzdF9yZWZjb3VudFwiKSkge1xuK1x0XHRjaGtfdmFsID0gXHUwMDI2cmVmY19jaGs7XG4rXHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbitcdH0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsIFwidGVzdF9wZXJjcHVcIikpIHtcbitcdFx0Y2hrX3ZhbCA9IFx1MDAyNnBjcHVfY2hrO1xuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cdTAwM2V0ZXN0LCBtZW1jbXAoXG4rXHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuK1x0fSBlbHNlIHtcbitcdFx0Ly9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzXG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbitcdGludCAqZmxhZyA9IGNoa192YWwtXHUwMDNlZmxhZztcbitcbitcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCAxLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTtcbitcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtXHUwMDNlY2FsbGVyKTtcbitcbitcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uXG4rfVxuK1xuK1xuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHJlZmNvdW50X3QgcmVmYztcbitcdGludCBmbGFnX2FkZHIgPSAwO1xuK1xuK1x0cmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9yZWZjb3VudDtcbitcdHJlZmNfY2hrLmZuID0gXCJfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdFwiO1xuK1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbitcdHJlZmNfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4rXHRyZWZjX2Noay50ZXN0ID0gdGVzdDtcbitcbitcdGludCAqZmxhZyA9IHJlZmNfY2hrLmZsYWc7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuK1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnJlZmMsIDIpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZyZWZjKSk7XG4rXG4rXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbitcbitcdEtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZyZWZjKSk7XG4rXG4rXHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4rXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xuK31cbitcbitzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9XG4rXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KVxuK3tcbitcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuK1xuK1x0aW50IGZsYWdfYWRkciA9IDE7XG4rXG4rXHRwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3BlcmNwdTtcbitcdHBjcHVfY2hrLmZuID0gXCJwZXJjcHVfcmVmX3B1dF9tYW55XCI7XG4rXHRwY3B1X2Noay5vYmogPSBcdTAwMjZwY3B1X3JlZjtcbitcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4rXHRwY3B1X2Noay50ZXN0ID0gdGVzdDtcbitcbitcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4rXG4rXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcdTAwMjZwY3B1X3JlZiwgZHVtbXlfcmVsZWFzZSwgMCwgR0ZQX0tFUk5FTCkpO1xuK1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuK1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXG4rXG4rXHRwZXJjcHVfcmVmX3B1dChcdTAwMjZwY3B1X3JlZik7XG4rXG4rXHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4rXHR1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpO1xuK1x0cGVyY3B1X3JlZl9leGl0KFx1MDAyNnBjcHVfcmVmKTtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIF9fcmVmZGF0YSByZWZfdHJhY2VfdGVzdF9jYXNlc1tdID0ge1xuK1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbitcdEtVTklUX0NBU0UodGVzdF9wZXJjcHUpLFxuK1x0e31cbit9O1xuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfc3VpdGUgcmVmX3RyYWNlX3Rlc3Rfc3VpdGUgPSB7XG4rXHQubmFtZSA9IFwicmVmLXRyYWNlXCIsXG4rXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuK307XG4rXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuK1xuK01PRFVMRV9BVVRIT1IoXCJFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwiKTtcbitNT0RVTEVfREVTQ1JJUFRJT04oXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwNzoxNToxNS44MTU3Mjk0MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODI5NzYxMzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgYWRkaW5nIGEgbmV3IHRyYWNlcG9pbnQsIGByZWZfdHJhY2VfZmluYWxfcHV0YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAuIEl0IGFsc28gaW5jbHVkZXMgYSBLVW5pdCB0ZXN0IGZvciB0aGlzIG5ldyB0cmFjZXBvaW50LiBJIHNlZSB0aGUgZGlmZiBzcGFucyBxdWl0ZSBhIGZldyBmaWxlczogaGVhZGVyIGZpbGVzIGZvciB0aGUgbmV3IHRyYWNlcG9pbnQsIHRoZSB0cmFjZXBvaW50IGl0c2VsZiwgYSBuZXcgYC5jYCBmaWxlIGZvciB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCB1cGRhdGVzIHRvIGBLY29uZmlnYCBhbmQgYE1ha2VmaWxlYCBmb3IgdGhlIG5ldyBjb2RlIGFuZCB0ZXN0LlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqZnVuY3Rpb25hbCogY2hhbmdlIHRoYXQgd2FycmFudHMgZnV6emluZz8gTGV0J3MgYnJlYWsgaXQgZG93bjogVGhlIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWRkcyBpbnN0cnVtZW50YXRpb24uIEl0IGluc2VydHMgYSB0cmFjZXBvaW50IHdoaWNoLCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIHByb3ZpZGVzIG9ic2VydmFiaWxpdHkgYnV0IGRvZXNuJ3QgZnVuZGFtZW50YWxseSBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlIGtlcm5lbCBjb3JlLlxuXG5UaGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzLCB0aGF0IG1vZGlmaWNhdGlvbnMgaW52b2x2aW5nIHRyYWNlcG9pbnRzIGFyZSBcInB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXNcIiBhbmQgbm90IHdvcnRoIGZ1enppbmcuIEl0J3MgcmVhbGx5IHRoYXQgc2ltcGxlLiBLVW5pdCB0ZXN0cywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgYWxzbyBub3QgcGFydCBvZiBhbnkgZnV6emluZyBjYW1wYWlnbi4gVGhleSB2ZXJpZnkgZnVuY3Rpb25hbGl0eSwgYnV0IGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgZnV6emVkIGFzIHBhcnQgb2YgYSBmdXp6aW5nIGNhbXBhaWduLiBTbywgdW5kZXIgdGhlIFwicHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlc1wiIHVtYnJlbGxhLCBhZGRpbmcgdHJhY2Vwb2ludHMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBjbG9zZWx5IGF0IHRoZSBkaWZmLCBpbiBgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGAsIHRoZSBjb2RlIGlzIG9ubHkgYWRkaW5nIHRoZSBgdHJhY2VfcmVmX2ZpbmFsX3B1dCgpYCBjYWxscy4gTm8gY29yZSBsb2dpYywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgbm90aGluZyB0aGF0IHdvdWxkIGltcGFjdCBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGZ1enppbmcgd291bGQgdHlwaWNhbGx5IHVuY292ZXIuIEl0J3Mgc29sZWx5IGZvciBhZGRpbmcgdGhlIHRyYWNlcG9pbnQuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogKipXb3J0aEZ1enppbmc9ZmFsc2UqKi4gVGhpcyBpcyBwdXJlbHkgYSB0cmFjZXBvaW50IGFkZGl0aW9uIGFuZCBhIEtVbml0IHRlc3QuIEknbSBnb2luZyB0byBzZXQgdGhhdCBhbmQgbW92ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxMiwiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA3OjE1OjI0LjY0NTQ5NDA2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBuZXcgdHJhY2Vwb2ludCAocmVmX3RyYWNlX2ZpbmFsX3B1dCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBhbmQgYSBjb3JyZXNwb25kaW5nIEtVbml0IHRlc3QuIEl0IGRvZXMgbm90IGFsdGVyIHRoZSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbzhg[1] Phase: Running StartedAt: 2026-07-06 07:15:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbzhg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-06 07:15:35 +0000 UTC FinishedAt: 2026-07-06 07:15:43 +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,}