Name: series-workflowc8lk8 Phase: Failed StartedAt: 2026-08-31 14:30:03 +0000 UTC FinishedAt: 2026-08-31 14:54:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8lk8[0] Phase: Succeeded StartedAt: 2026-08-31 14:30:03 +0000 UTC FinishedAt: 2026-08-31 14:53:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8lk8[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 14:30:03 +0000 UTC FinishedAt: 2026-08-31 14:53:56 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTQ6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTQ6NDQ6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCBhOWY3MzBkNDA3YTkyLi44YzJmOTI1NWIzNmQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgJiM0MzsxNzY5LDcgQEAgc3RhdGljIGludCBsb2FkX3dpdGhfb3B0aW9ucyhpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGJvb2wgZmlyc3RfcHJvZ19vbmx5KVxuIFx0XHR9XG4gXG4gXHRcdGlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXHUwMDI2XHUwMDI2IHhkcG1ldGFfaWZpbmRleCkge1xuLVx0XHRcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHBvcywgYnBmX3Byb2dyYW1fX2ZsYWdzKHBvcykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIHhkcG1ldGFfaWZpbmRleCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5jIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuaW5kZXggYjc0OWMwMTc0MmVlMC4uMjc3NzliNGNkZGQwOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbkBAIC03ODc5LDYgJiM0Mzs3ODc5LDE5IEBAIHN0YXRpYyBpbnQgdHJhY2luZ19tdWx0aV9tb2RfZmQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBpbnQgKmJ0Zl9vYmpfZmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbGliYnBmX3NldHVwX3Byb2dfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSlcbiYjNDM7e1xuJiM0MztcdGVudW0gc2VjX2RlZl9mbGFncyBkZWYgPSBjb29raWU7XG4mIzQzO1xuJiM0MztcdGlmIChkZWYgXHUwMDI2IFNFQ19TTEVFUEFCTEUpXG4mIzQzO1x0XHRwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xuJiM0MztcbiYjNDM7XHRpZiAoZGVmIFx1MDAyNiBTRUNfWERQX0ZSQUdTKVxuJiM0MztcdFx0cHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIHRoaXMgaXMgY2FsbGVkIGFzIHByb2ctXHUwMDNlc2VjX2RlZi1cdTAwM2Vwcm9nX3ByZXBhcmVfbG9hZF9mbiBmb3IgbGliYnBmLXN1cHBvcnRlZCBzZWNfZGVmcyAqL1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzICpvcHRzLCBsb25nIGNvb2tpZSlcbkBAIC03ODg5LDEyICYjNDM7NzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiBcdGlmICgoZGVmIFx1MDAyNiBTRUNfRVhQX0FUVEFDSF9PUFQpIFx1MDAyNlx1MDAyNiAha2VybmVsX3N1cHBvcnRzKHByb2ctXHUwMDNlb2JqLCBGRUFUX0VYUF9BVFRBQ0hfVFlQRSkpXG4gXHRcdG9wdHMtXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSAwO1xuIFxuLVx0aWYgKGRlZiBcdTAwMjYgU0VDX1NMRUVQQUJMRSlcbi1cdFx0b3B0cy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTtcbi1cbi1cdGlmIChwcm9nLVx1MDAzZXR5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXHUwMDI2XHUwMDI2IChkZWYgXHUwMDI2IFNFQ19YRFBfRlJBR1MpKVxuLVx0XHRvcHRzLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUztcbi1cbiBcdC8qIHNwZWNpYWwgY2hlY2sgZm9yIHVzZHQgdG8gdXNlIHVwcm9iZV9tdWx0aSBsaW5rICovXG4gXHRpZiAoKGRlZiBcdTAwMjYgU0VDX1VTRFQpIFx1MDAyNlx1MDAyNiBrZXJuZWxfc3VwcG9ydHMocHJvZy1cdTAwM2VvYmosIEZFQVRfVVBST0JFX01VTFRJX0xJTkspKSB7XG4gXHRcdC8qIGZvciBCUEZfVFJBQ0VfVVBST0JFX01VTFRJLCB1c2VyIG1pZ2h0IHdhbnQgdG8gcXVlcnkgZXhwZWN0ZWRfYXR0YWNoX3R5cGVcbkBAIC0xMDA5OSw2ICYjNDM7MTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0c1xuIFx0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfIyNwdHlwZSxcdFx0XHRcdCAgICBcXFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXHRcdFx0XHRcdCAgICBcXFxuIFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXHRcdFx0XHRcdCAgICBcXFxuJiM0MztcdC5wcm9nX3NldHVwX2ZuID0gbGliYnBmX3NldHVwX3Byb2dfZmxhZ3MsXHRcdFx0ICAgIFxcXG4gXHQucHJvZ19wcmVwYXJlX2xvYWRfZm4gPSBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQsXHRcdCAgICBcXFxuIFx0X19WQV9BUkdTX19cdFx0XHRcdFx0XHRcdCAgICBcXFxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG5pbmRleCBlOGMxYTYxOWUzMzBlLi43ZGFkYjkwZTdiNjg5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG5AQCAtNTQzLDggJiM0Mzs1NDMsMTAgQEAgc3RhdGljIHZvaWQgdGVzdF9rcHJvYmVfc2xlZXBhYmxlKHZvaWQpXG4gXHRcdHJldHVybjtcbiBcbiBcdC8qIHNsZWVwYWJsZSBrcHJvYmUgdGVzdCBjYXNlIG5lZWRzIGZsYWdzIHNldCBiZWZvcmUgbG9hZGluZyAqL1xuLVx0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLFxuLVx0XHRCUEZfRl9TTEVFUEFCTEUpLCBcJiMzNDtrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCYjMzQ7KSlcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxuJiM0MztcdFx0XHQgICAgICAgc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbiYjNDM7XHRcdFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSksXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbiBcdGlmICghQVNTRVJUX09LKHRlc3RfYXR0YWNoX2twcm9iZV9zbGVlcGFibGVfX2xvYWQoc2tlbCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbmluZGV4IDk3YjAwYzdlZmU5NDMuLjI1ZWI1OWY0NjBhYmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG5AQCAtMTYsNiAmIzQzOzE2LDkgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobHNtX3NrZWwsIFwmIzM0O2xzbV9za2VsXCYjMzQ7KSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmKSBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuJiM0MztcdFx0ICBCUEZfRl9TTEVFUEFCTEUsIFwmIzM0O3NsZWVwYWJsZSBpbiBwcm9ncmFtIGZsYWdzXCYjMzQ7KTtcbiYjNDM7XG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYyLDcgJiM0MzszNjIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9hcGlfZmFpbHModm9pZClcbiBcdHNsX3NrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcbiBcbiBcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSxcbi1cdFx0XHRcdCAgICAgQlBGX0ZfU0xFRVBBQkxFKTtcbiYjNDM7XHRcdFx0XHQgICAgIGJwZl9wcm9ncmFtX19mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3NsZWVwX3NrZWxfc2V0X2ZsYWdzXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuY1xuaW5kZXggZmNlMjAzNjQwZjhjZi4uYTg5NGIxYWI0NmY0ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG5AQCAtMTgsNiAmIzQzOzE4LDkgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfdXBkYXRlX2ZyYWdzKHZvaWQpXG4gXHRcdHJldHVybjtcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19uZXh0X3Byb2dyYW0ob2JqLCBOVUxMKTtcbiYjNDM7XHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuJiM0MztcdFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcJiMzNDtmcmFncyBpbiBwcm9ncmFtIGZsYWdzXCYjMzQ7KTtcbiYjNDM7XG4gXHRpZiAoYnBmX29iamVjdF9fbG9hZChvYmopKVxuIFx0XHRyZXR1cm47XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbmluZGV4IGE4YWIwNTIxNmMzODUuLmRmZjZiM2U3MjY2ZWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXG5AQCAtMTQ2LDYgJiM0MzsxNDYsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfd2l0aF9kZXZtYXBfZnJhZ3NfaGVscGVycyh2b2lkKVxuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3Rlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLnhkcF9kdW1teV9kbV9mcmFncykgXHUwMDI2IEJQRl9GX1hEUF9IQVNfRlJBR1MsXG4mIzQzO1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwmIzM0O2ZyYWdzIGluIHByb2dyYW0gZmxhZ3NcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG0pIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuJiM0MztcdFx0ICAwLCBcJiMzNDtmcmFncyBub3QgaW4gcHJvZ3JhbSBmbGFnc1wmIzM0Oyk7XG4mIzQzO1xuIFx0ZG1fZmRfZnJhZ3MgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpO1xuIFx0bWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLmRtX3BvcnRzKTtcbiBcdGVyciA9IGJwZl9wcm9nX2dldF9pbmZvX2J5X2ZkKGRtX2ZkX2ZyYWdzLCBcdTAwMjZpbmZvLCBcdTAwMjZsZW4pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbmluZGV4IDVjMzEwNTRhZDRhNGMuLjA0N2RmZGMzMjJhMmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbkBAIC00MDgsMTQgJiM0Mzs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyeFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgcnhfaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0LyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3Jtc1xuIFx0ICogWERQX1JFRElSRUNUIGludG8gYSBkZXZtYXAuXG4gXHQgKi9cbiBcdG5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cdTAwM2VvYmosIFwmIzM0O3JlZGlyZWN0XCYjMzQ7KTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIGJwZl9wcm9ncmFtX19mbGFncyhuZXdfcHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0aWYgKCFBU1NFUlRfT0soeGRwX21ldGFkYXRhX19sb2FkKGJwZl9vYmopLCBcJiMzNDtsb2FkIHNrZWxldG9uXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG5pbmRleCA2ZGIzYjU1NTVhMjJlLi5jNTUwMWIzZmRmNDhmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbkBAIC04NDUsNyAmIzQzOzg0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRwcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cdTAwM2VvYmosIFwmIzM0O3J4XCYjMzQ7KTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCBpZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiYjNDM7XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4gXG4gXHRwcmludGYoXCYjMzQ7bG9hZCBicGYgcHJvZ3JhbS4uLlxcblwmIzM0Oyk7XG4gXHRyZXQgPSB4ZHBfaHdfbWV0YWRhdGFfX2xvYWQoYnBmX29iaik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMTQ6NDQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmMKaW5kZXggYTlmNzMwZDQwN2E5Mi4uOGMyZjkyNTViMzZkNyAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTc2OSw3ICYjNDM7MTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSkKIAkJfQogCiAJCWlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgJmFtcDsmYW1wOyB4ZHBtZXRhX2lmaW5kZXgpIHsKLQkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAJCQlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpOwogCQl9IGVsc2UgewogCQkJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jCmluZGV4IGI3NDljMDE3NDJlZTAuLjI3Nzc5YjRjZGRkMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuYwpAQCAtNzg3OSw2ICYjNDM7Nzg3OSwxOSBAQCBzdGF0aWMgaW50IHRyYWNpbmdfbXVsdGlfbW9kX2ZkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgaW50ICpidGZfb2JqX2ZkKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGxvbmcgY29va2llKQomIzQzO3sKJiM0MzsJZW51bSBzZWNfZGVmX2ZsYWdzIGRlZiA9IGNvb2tpZTsKJiM0MzsKJiM0MzsJaWYgKGRlZiAmYW1wOyBTRUNfU0xFRVBBQkxFKQomIzQzOwkJcHJvZy0mZ3Q7cHJvZ19mbGFncyB8PSBCUEZfRl9TTEVFUEFCTEU7CiYjNDM7CiYjNDM7CWlmIChkZWYgJmFtcDsgU0VDX1hEUF9GUkFHUykKJiM0MzsJCXByb2ctJmd0O3Byb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUzsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyogdGhpcyBpcyBjYWxsZWQgYXMgcHJvZy0mZ3Q7c2VjX2RlZi0mZ3Q7cHJvZ19wcmVwYXJlX2xvYWRfZm4gZm9yIGxpYmJwZi1zdXBwb3J0ZWQgc2VjX2RlZnMgKi8KIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywKIAkJCQkgICAgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0cyAqb3B0cywgbG9uZyBjb29raWUpCkBAIC03ODg5LDEyICYjNDM7NzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywKIAlpZiAoKGRlZiAmYW1wOyBTRUNfRVhQX0FUVEFDSF9PUFQpICZhbXA7JmFtcDsgIWtlcm5lbF9zdXBwb3J0cyhwcm9nLSZndDtvYmosIEZFQVRfRVhQX0FUVEFDSF9UWVBFKSkKIAkJb3B0cy0mZ3Q7ZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSAwOwogCi0JaWYgKGRlZiAmYW1wOyBTRUNfU0xFRVBBQkxFKQotCQlvcHRzLSZndDtwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTsKLQotCWlmIChwcm9nLSZndDt0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQICZhbXA7JmFtcDsgKGRlZiAmYW1wOyBTRUNfWERQX0ZSQUdTKSkKLQkJb3B0cy0mZ3Q7cHJvZ19mbGFncyB8PSBCUEZfRl9YRFBfSEFTX0ZSQUdTOwotCiAJLyogc3BlY2lhbCBjaGVjayBmb3IgdXNkdCB0byB1c2UgdXByb2JlX211bHRpIGxpbmsgKi8KIAlpZiAoKGRlZiAmYW1wOyBTRUNfVVNEVCkgJmFtcDsmYW1wOyBrZXJuZWxfc3VwcG9ydHMocHJvZy0mZ3Q7b2JqLCBGRUFUX1VQUk9CRV9NVUxUSV9MSU5LKSkgewogCQkvKiBmb3IgQlBGX1RSQUNFX1VQUk9CRV9NVUxUSSwgdXNlciBtaWdodCB3YW50IHRvIHF1ZXJ5IGV4cGVjdGVkX2F0dGFjaF90eXBlCkBAIC0xMDA5OSw2ICYjNDM7MTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0cwogCS5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFXyMjcHR5cGUsCQkJCSAgICBcCiAJLmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsCQkJCQkgICAgXAogCS5jb29raWUgPSAobG9uZykoZmxhZ3MpLAkJCQkJICAgIFwKJiM0MzsJLnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncywJCQkgICAgXAogCS5wcm9nX3ByZXBhcmVfbG9hZF9mbiA9IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZCwJCSAgICBcCiAJX19WQV9BUkdTX18JCQkJCQkJICAgIFwKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKaW5kZXggZThjMWE2MTllMzMwZS4uN2RhZGI5MGU3YjY4OSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKQEAgLTU0Myw4ICYjNDM7NTQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKQogCQlyZXR1cm47CiAKIAkvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi8KLQlpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLAotCQlCUEZfRl9TTEVFUEFCTEUpLCAmIzM0O2twcm9iZV9zbGVlcGFibGVfZmxhZ3MmIzM0OykpCiYjNDM7CWlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoCiYjNDM7CQkJICAgICAgIHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLAomIzQzOwkJCSAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSwKJiM0MzsJCSAgICAgICAmIzM0O2twcm9iZV9zbGVlcGFibGVfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIAogCWlmICghQVNTRVJUX09LKHRlc3RfYXR0YWNoX2twcm9iZV9zbGVlcGFibGVfX2xvYWQoc2tlbCksCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYwppbmRleCA5N2IwMGM3ZWZlOTQzLi4yNWViNTlmNDYwYWJlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMKQEAgLTE2LDYgJiM0MzsxNiw5IEBAIHZvaWQgdGVzdF9rZXJuZWxfZmxhZyh2b2lkKQogCWlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgJiMzNDtsc21fc2tlbCYjMzQ7KSkKIAkJcmV0dXJuOwogCiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtJmd0O3Byb2dzLmJwZikgJmFtcDsgQlBGX0ZfU0xFRVBBQkxFLAomIzQzOwkJICBCUEZfRl9TTEVFUEFCTEUsICYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiYjNDM7CiAJbHNtX3NrZWwtJmd0O2Jzcy0mZ3Q7bW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTsKIAogCXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYwppbmRleCAyZTBkZGVmNzdiYTUxLi5lZDNmZDBhODhkYWI2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMKQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpCiAJc2xfc2tlbC0mZ3Q7YnNzLSZndDt1c2VyX3B0ciA9IHNsX3NrZWw7CiAKIAllcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNsX3NrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLAotCQkJCSAgICAgQlBGX0ZfU0xFRVBBQkxFKTsKJiM0MzsJCQkJICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2xlZXBfc2tlbF9zZXRfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jCmluZGV4IGZjZTIwMzY0MGY4Y2YuLmE4OTRiMWFiNDZmNGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmMKQEAgLTE4LDYgJiM0MzsxOCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3VwZGF0ZV9mcmFncyh2b2lkKQogCQlyZXR1cm47CiAKIAlwcm9nID0gYnBmX29iamVjdF9fbmV4dF9wcm9ncmFtKG9iaiwgTlVMTCk7CiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgJmFtcDsgQlBGX0ZfWERQX0hBU19GUkFHUywKJiM0MzsJCSAgQlBGX0ZfWERQX0hBU19GUkFHUywgJiMzNDtmcmFncyBpbiBwcm9ncmFtIGZsYWdzJiMzNDspOwomIzQzOwogCWlmIChicGZfb2JqZWN0X19sb2FkKG9iaikpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmMKaW5kZXggYThhYjA1MjE2YzM4NS4uZGZmNmIzZTcyNjZlZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jCkBAIC0xNDYsNiAmIzQzOzE0NiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3hkcF93aXRoX2Rldm1hcF9mcmFnc19oZWxwZXJzKHZvaWQpCiAJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7dGVzdF94ZHBfd2l0aF9kZXZtYXBfaGVscGVyc19fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKIAkJcmV0dXJuOwogCiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MueGRwX2R1bW15X2RtX2ZyYWdzKSAmYW1wOyBCUEZfRl9YRFBfSEFTX0ZSQUdTLAomIzQzOwkJICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCAmIzM0O2ZyYWdzIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MueGRwX2R1bW15X2RtKSAmYW1wOyBCUEZfRl9YRFBfSEFTX0ZSQUdTLAomIzQzOwkJICAwLCAmIzM0O2ZyYWdzIG5vdCBpbiBwcm9ncmFtIGZsYWdzJiMzNDspOwomIzQzOwogCWRtX2ZkX2ZyYWdzID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLnhkcF9kdW1teV9kbV9mcmFncyk7CiAJbWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5kbV9wb3J0cyk7CiAJZXJyID0gYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoZG1fZmRfZnJhZ3MsICZhbXA7aW5mbywgJmFtcDtsZW4pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwppbmRleCA1YzMxMDU0YWQ0YTRjLi4wNDdkZmRjMzIyYTJmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwpAQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZCkKIAogCXByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLSZndDtvYmosICYjMzQ7cngmIzM0Oyk7CiAJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwogCiAJLyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3JtcwogCSAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLgogCSAqLwogCW5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai0mZ3Q7b2JqLCAmIzM0O3JlZGlyZWN0JiMzNDspOwogCWJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlpZiAoIUFTU0VSVF9PSyh4ZHBfbWV0YWRhdGFfX2xvYWQoYnBmX29iaiksICYjMzQ7bG9hZCBza2VsZXRvbiYjMzQ7KSkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMKaW5kZXggNmRiM2I1NTU1YTIyZS4uYzU1MDFiM2ZkZjQ4ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYwpAQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotJmd0O29iaiwgJiMzNDtyeCYjMzQ7KTsKIAlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwlicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlwcmludGYoJiMzNDtsb2FkIGJwZiBwcm9ncmFtLi4uXG4mIzM0Oyk7CiAJcmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzMwCgkJCQkJCQlvdXRwdXQ6IDczCgkJCQkJCQl0aG91Z2h0czogODQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBwYXRjaCBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSBub3Qgc29tZXRoaW5nIHdlIG5lZWQgdG8gZmxhZyBmb3IgU3l6a2FsbGVyIGZ1enppbmcuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgYWxsIHR1Y2tlZCBhd2F5IGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIGBicGZ0b29sYCwgYGxpYmJwZmAsIGFuZCBhIHNsZXcgb2YgQlBGIHNlbGYtdGVzdHMuIFRoYXQgc2NyZWFtcyAmIzM0O3VzZXJzcGFjZSB0b29saW5nJiMzNDsgdG8gbWUsIG5vdCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LgoKSSYjMzk7bSBtYWtpbmcgc3VyZSB0byBiZSB0aG9yb3VnaCwgaG93ZXZlci4gVGhlIGZhY3QgdGhhdCBpdCAqdG91Y2hlcyogYW55dGhpbmcgQlBGLXJlbGF0ZWQgd2FycmFudHMgYSBjbG9zZXIgbG9vaywgZXZlbiBpZiBpdCYjMzk7cyBub3Qga2VybmVsLXNwYWNlIGNvZGUuIFRoZSBCUEYgc3Vic3lzdGVtIGlzIHByZXR0eSBzZW5zaXRpdmUsIHNvIEkmIzM5O20gZG91YmxlLWNoZWNraW5nLgoKTGV0IG1lIHJlZnJlc2ggbXlzZWxmIG9uIHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgdGhhdCBwYXRjaGVzIG1vZGlmeWluZyB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLCBldGMuLCBhcmUgdXN1YWxseSBhICYjMzQ7bm8tZ28mIzM0Oy4gVGhlIGtleSBpczogZG9lcyB0aGlzIHBhdGNoIGFmZmVjdCAqcmVhY2hhYmxlLCBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyo/IElmIGl0IGRvZXNuJiMzOTt0LCB3ZSBjYW4gc2tpcCBpdC4KCkFscmlnaHQsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGZpbGUgbGlzdC4gSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGxpa2UgYGtlcm5lbC9gLCBgbmV0L2AsIGBkcml2ZXJzL2AsIGBmcy9gLCBgYXJjaC9gLCBvciBgaW5jbHVkZS9gLiBBbGwgdGhlIGZpbGVzIGFyZSBkZWZpbml0aXZlbHkgdW5kZXIgYHRvb2xzL2AuIE5vbmUgb2YgdGhlIGxpc3RlZCBmaWxlcyBhcmUgcGFydCBvZiBgdm1saW51eGAgb3IgYXJlIGtlcm5lbCBtb2R1bGVzLiBTeXprYWxsZXImIzM5O3MgcHJpbWFyeSBmb2N1cyBpcyBmdXp6aW5nIHRoZSBrZXJuZWwgdmlhIHN5c3RlbSBjYWxscywgYW5kIHRoaXMgZG9lc24mIzM5O3Qgc2VlbSB0byBpbXBhY3QgdGhhdC4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluLiBOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjbGVhcjogdGhpcyBwYXRjaCBpcyBjb25maW5lZCB0byB1c2Vyc3BhY2UgdG9vbHMsIHNwZWNpZmljYWxseSBgbGliYnBmYCwgYGJwZnRvb2xgLCBhbmQgQlBGIHNlbGYtdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSwgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUga2VybmVsIGl0c2VsZi4gTm8gbmVlZCB0byBmbGFnIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIGxpYnJhcmllcywgdG9vbHMsIGFuZCBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvIChicGZ0b29sLCBsaWJicGYsIGFuZCBCUEYgc2VsZnRlc3RzKSBhbmQgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxNDo0NDozMC45ODE3MjM1NTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM0Njk3NzY4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBsaWJyYXJpZXMsIHRvb2xzLCBhbmQgc2VsZnRlc3RzIHVuZGVyIHRvb2xzLyAoYnBmdG9vbCwgbGliYnBmLCBhbmQgQlBGIHNlbGZ0ZXN0cykgYW5kIG1ha2VzIG5vIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTQ6NDQ6MzAuOTgxNzI5MjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NTE3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE0OjQ0OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbmluZGV4IGE5ZjczMGQ0MDdhOTIuLjhjMmY5MjU1YjM2ZDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuQEAgLTE3NjksNyArMTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcXHUwMDI2XFx1MDAyNiB4ZHBtZXRhX2lmaW5kZXgpIHtcXG4tXFx0XFx0XFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIHhkcG1ldGFfaWZpbmRleCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXFxuaW5kZXggYjc0OWMwMTc0MmVlMC4uMjc3NzliNGNkZGQwOSAxMDA2NDRcXG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbkBAIC03ODc5LDYgKzc4NzksMTkgQEAgc3RhdGljIGludCB0cmFjaW5nX211bHRpX21vZF9mZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGludCAqYnRmX29ial9mZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgbGliYnBmX3NldHVwX3Byb2dfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSlcXG4re1xcbitcXHRlbnVtIHNlY19kZWZfZmxhZ3MgZGVmID0gY29va2llO1xcbitcXG4rXFx0aWYgKGRlZiBcXHUwMDI2IFNFQ19TTEVFUEFCTEUpXFxuK1xcdFxcdHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xcbitcXG4rXFx0aWYgKGRlZiBcXHUwMDI2IFNFQ19YRFBfRlJBR1MpXFxuK1xcdFxcdHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUztcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKiB0aGlzIGlzIGNhbGxlZCBhcyBwcm9nLVxcdTAwM2VzZWNfZGVmLVxcdTAwM2Vwcm9nX3ByZXBhcmVfbG9hZF9mbiBmb3IgbGliYnBmLXN1cHBvcnRlZCBzZWNfZGVmcyAqL1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzICpvcHRzLCBsb25nIGNvb2tpZSlcXG5AQCAtNzg4OSwxMiArNzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4gXFx0aWYgKChkZWYgXFx1MDAyNiBTRUNfRVhQX0FUVEFDSF9PUFQpIFxcdTAwMjZcXHUwMDI2ICFrZXJuZWxfc3VwcG9ydHMocHJvZy1cXHUwMDNlb2JqLCBGRUFUX0VYUF9BVFRBQ0hfVFlQRSkpXFxuIFxcdFxcdG9wdHMtXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gMDtcXG4gXFxuLVxcdGlmIChkZWYgXFx1MDAyNiBTRUNfU0xFRVBBQkxFKVxcbi1cXHRcXHRvcHRzLVxcdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTtcXG4tXFxuLVxcdGlmIChwcm9nLVxcdTAwM2V0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQIFxcdTAwMjZcXHUwMDI2IChkZWYgXFx1MDAyNiBTRUNfWERQX0ZSQUdTKSlcXG4tXFx0XFx0b3B0cy1cXHUwMDNlcHJvZ19mbGFncyB8PSBCUEZfRl9YRFBfSEFTX0ZSQUdTO1xcbi1cXG4gXFx0Lyogc3BlY2lhbCBjaGVjayBmb3IgdXNkdCB0byB1c2UgdXByb2JlX211bHRpIGxpbmsgKi9cXG4gXFx0aWYgKChkZWYgXFx1MDAyNiBTRUNfVVNEVCkgXFx1MDAyNlxcdTAwMjYga2VybmVsX3N1cHBvcnRzKHByb2ctXFx1MDAzZW9iaiwgRkVBVF9VUFJPQkVfTVVMVElfTElOSykpIHtcXG4gXFx0XFx0LyogZm9yIEJQRl9UUkFDRV9VUFJPQkVfTVVMVEksIHVzZXIgbWlnaHQgd2FudCB0byBxdWVyeSBleHBlY3RlZF9hdHRhY2hfdHlwZVxcbkBAIC0xMDA5OSw2ICsxMDEwNiw3IEBAIGludCBicGZfcHJvZ3JhbV9fY2xvbmUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzXFxuIFxcdC5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFXyMjcHR5cGUsXFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4gXFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXFx0XFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4gXFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXFx0XFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4rXFx0LnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyxcXHRcXHRcXHQgICAgXFxcXFxcbiBcXHQucHJvZ19wcmVwYXJlX2xvYWRfZm4gPSBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQsXFx0XFx0ICAgIFxcXFxcXG4gXFx0X19WQV9BUkdTX19cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcXFxcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG5pbmRleCBlOGMxYTYxOWUzMzBlLi43ZGFkYjkwZTdiNjg5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG5AQCAtNTQzLDggKzU0MywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Lyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovXFxuLVxcdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXFxuLVxcdFxcdEJQRl9GX1NMRUVQQUJMRSksIFxcXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXFxcIikpXFxuK1xcdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoXFxuK1xcdFxcdFxcdCAgICAgICBza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcXG4rXFx0XFx0XFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpLFxcbitcXHRcXHQgICAgICAgXFxcImtwcm9iZV9zbGVlcGFibGVfZmxhZ3NcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4gXFx0aWYgKCFBU1NFUlRfT0sodGVzdF9hdHRhY2hfa3Byb2JlX3NsZWVwYWJsZV9fbG9hZChza2VsKSxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcXG5pbmRleCA5N2IwMGM3ZWZlOTQzLi4yNWViNTlmNDYwYWJlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuQEAgLTE2LDYgKzE2LDkgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXFxuIFxcdGlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgXFxcImxzbV9za2VsXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXFx1MDAzZXByb2dzLmJwZikgXFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXFxuK1xcdFxcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcXFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcXFwiKTtcXG4rXFxuIFxcdGxzbV9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZW1vbml0b3JlZF90aWQgPSBzeXNfZ2V0dGlkKCk7XFxuIFxcbiBcXHRyZXQgPSB0ZXN0X2tlcm5lbF9mbGFnX19hdHRhY2gobHNtX3NrZWwpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcXG5AQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxcbiBcXHRzbF9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcXG4gXFxuIFxcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdFxcdCAgICAgQlBGX0ZfU0xFRVBBQkxFKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwic2xlZXBfc2tlbF9zZXRfZmxhZ3NcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXFxuaW5kZXggZmNlMjAzNjQwZjhjZi4uYTg5NGIxYWI0NmY0ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcXG5AQCAtMTgsNiArMTgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3hkcF91cGRhdGVfZnJhZ3Modm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX25leHRfcHJvZ3JhbShvYmosIE5VTEwpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFxcdTAwMjYgQlBGX0ZfWERQX0hBU19GUkFHUyxcXG4rXFx0XFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcXFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXG4gXFx0aWYgKGJwZl9vYmplY3RfX2xvYWQob2JqKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcXG5pbmRleCBhOGFiMDUyMTZjMzg1Li5kZmY2YjNlNzI2NmVlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXFxuQEAgLTE0Niw2ICsxNDYsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfd2l0aF9kZXZtYXBfZnJhZ3NfaGVscGVycyh2b2lkKVxcbiBcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcInRlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpIFxcdTAwMjYgQlBGX0ZfWERQX0hBU19GUkFHUyxcXG4rXFx0XFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcXFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHNrZWwtXFx1MDAzZXByb2dzLnhkcF9kdW1teV9kbSkgXFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxcbitcXHRcXHQgIDAsIFxcXCJmcmFncyBub3QgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXG4gXFx0ZG1fZmRfZnJhZ3MgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MueGRwX2R1bW15X2RtX2ZyYWdzKTtcXG4gXFx0bWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5kbV9wb3J0cyk7XFxuIFxcdGVyciA9IGJwZl9wcm9nX2dldF9pbmZvX2J5X2ZkKGRtX2ZkX2ZyYWdzLCBcXHUwMDI2aW5mbywgXFx1MDAyNmxlbik7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5pbmRleCA1YzMxMDU0YWQ0YTRjLi4wNDdkZmRjMzIyYTJmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5AQCAtNDA4LDE0ICs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHQvKiBNYWtlIHN1cmUgd2UgY2FuIGxvYWQgYSBkZXYtYm91bmQgcHJvZ3JhbSB0aGF0IHBlcmZvcm1zXFxuIFxcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxcbiBcXHQgKi9cXG4gXFx0bmV3X3Byb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVxcdTAwM2VvYmosIFxcXCJyZWRpcmVjdFxcXCIpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXFxcImxvYWQgc2tlbGV0b25cXFwiKSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xcbmluZGV4IDZkYjNiNTU1NWEyMmUuLmM1NTAxYjNmZGY0OGYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCBpZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHRwcmludGYoXFxcImxvYWQgYnBmIHByb2dyYW0uLi5cXFxcblxcXCIpO1xcbiBcXHRyZXQgPSB4ZHBfaHdfbWV0YWRhdGFfX2xvYWQoYnBmX29iaik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjQ0OjMxLjQ1Njk1Mjk4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTUyOTk0NTM1OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBsaWJyYXJpZXMsIHRvb2xzLCBhbmQgc2VsZnRlc3RzIHVuZGVyIHRvb2xzLyAoYnBmdG9vbCwgbGliYnBmLCBhbmQgQlBGIHNlbGZ0ZXN0cykgYW5kIG1ha2VzIG5vIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWY3ZDRiZWMzYzMyOGM3ZjA1OTA0MDFlYzI3YmEyMzQxY2Y3YWQ1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDE0OjQ0OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCBhOWY3MzBkNDA3YTkyLi44YzJmOTI1NWIzNmQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4rXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuYyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbmluZGV4IGI3NDljMDE3NDJlZTAuLjI3Nzc5YjRjZGRkMDkgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5AQCAtNzg3OSw2ICs3ODc5LDE5IEBAIHN0YXRpYyBpbnQgdHJhY2luZ19tdWx0aV9tb2RfZmQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBpbnQgKmJ0Zl9vYmpfZmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGxvbmcgY29va2llKVxuK3tcbitcdGVudW0gc2VjX2RlZl9mbGFncyBkZWYgPSBjb29raWU7XG4rXG4rXHRpZiAoZGVmIFx1MDAyNiBTRUNfU0xFRVBBQkxFKVxuK1x0XHRwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xuK1xuK1x0aWYgKGRlZiBcdTAwMjYgU0VDX1hEUF9GUkFHUylcbitcdFx0cHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogdGhpcyBpcyBjYWxsZWQgYXMgcHJvZy1cdTAwM2VzZWNfZGVmLVx1MDAzZXByb2dfcHJlcGFyZV9sb2FkX2ZuIGZvciBsaWJicGYtc3VwcG9ydGVkIHNlY19kZWZzICovXG4gc3RhdGljIGludCBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBicGZfcHJvZ19sb2FkX29wdHMgKm9wdHMsIGxvbmcgY29va2llKVxuQEAgLTc4ODksMTIgKzc5MDIsNiBAQCBzdGF0aWMgaW50IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4gXHRpZiAoKGRlZiBcdTAwMjYgU0VDX0VYUF9BVFRBQ0hfT1BUKSBcdTAwMjZcdTAwMjYgIWtlcm5lbF9zdXBwb3J0cyhwcm9nLVx1MDAzZW9iaiwgRkVBVF9FWFBfQVRUQUNIX1RZUEUpKVxuIFx0XHRvcHRzLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gMDtcbiBcbi1cdGlmIChkZWYgXHUwMDI2IFNFQ19TTEVFUEFCTEUpXG4tXHRcdG9wdHMtXHUwMDNlcHJvZ19mbGFncyB8PSBCUEZfRl9TTEVFUEFCTEU7XG4tXG4tXHRpZiAocHJvZy1cdTAwM2V0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQIFx1MDAyNlx1MDAyNiAoZGVmIFx1MDAyNiBTRUNfWERQX0ZSQUdTKSlcbi1cdFx0b3B0cy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4tXG4gXHQvKiBzcGVjaWFsIGNoZWNrIGZvciB1c2R0IHRvIHVzZSB1cHJvYmVfbXVsdGkgbGluayAqL1xuIFx0aWYgKChkZWYgXHUwMDI2IFNFQ19VU0RUKSBcdTAwMjZcdTAwMjYga2VybmVsX3N1cHBvcnRzKHByb2ctXHUwMDNlb2JqLCBGRUFUX1VQUk9CRV9NVUxUSV9MSU5LKSkge1xuIFx0XHQvKiBmb3IgQlBGX1RSQUNFX1VQUk9CRV9NVUxUSSwgdXNlciBtaWdodCB3YW50IHRvIHF1ZXJ5IGV4cGVjdGVkX2F0dGFjaF90eXBlXG5AQCAtMTAwOTksNiArMTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0c1xuIFx0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfIyNwdHlwZSxcdFx0XHRcdCAgICBcXFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXHRcdFx0XHRcdCAgICBcXFxuIFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXHRcdFx0XHRcdCAgICBcXFxuK1x0LnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyxcdFx0XHQgICAgXFxcbiBcdC5wcm9nX3ByZXBhcmVfbG9hZF9mbiA9IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZCxcdFx0ICAgIFxcXG4gXHRfX1ZBX0FSR1NfX1x0XHRcdFx0XHRcdFx0ICAgIFxcXG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbmluZGV4IGU4YzFhNjE5ZTMzMGUuLjdkYWRiOTBlN2I2ODkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbkBAIC01NDMsOCArNTQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi9cbi1cdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbi1cdFx0QlBGX0ZfU0xFRVBBQkxFKSwgXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCIpKVxuK1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncyhcbitcdFx0XHQgICAgICAgc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbitcdFx0XHQgICAgICAgYnBmX3Byb2dyYW1fX2ZsYWdzKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSxcbitcdFx0ICAgICAgIFwia3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wiKSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuIFx0aWYgKCFBU1NFUlRfT0sodGVzdF9hdHRhY2hfa3Byb2JlX3NsZWVwYWJsZV9fbG9hZChza2VsKSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xuaW5kZXggOTdiMDBjN2VmZTk0My4uMjVlYjU5ZjQ2MGFiZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbkBAIC0xNiw2ICsxNiw5IEBAIHZvaWQgdGVzdF9rZXJuZWxfZmxhZyh2b2lkKVxuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxzbV9za2VsLCBcImxzbV9za2VsXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZikgXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcbitcdFx0ICBCUEZfRl9TTEVFUEFCTEUsIFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcIik7XG4rXG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxuIFx0c2xfc2tlbC1cdTAwM2Vic3MtXHUwMDNldXNlcl9wdHIgPSBzbF9za2VsO1xuIFxuIFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLFxuLVx0XHRcdFx0ICAgICBCUEZfRl9TTEVFUEFCTEUpO1xuK1x0XHRcdFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG5pbmRleCBmY2UyMDM2NDBmOGNmLi5hODk0YjFhYjQ2ZjRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcbkBAIC0xOCw2ICsxOCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3VwZGF0ZV9mcmFncyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwcm9nID0gYnBmX29iamVjdF9fbmV4dF9wcm9ncmFtKG9iaiwgTlVMTCk7XG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1wiKTtcbitcbiBcdGlmIChicGZfb2JqZWN0X19sb2FkKG9iaikpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guY1xuaW5kZXggYThhYjA1MjE2YzM4NS4uZGZmNmIzZTcyNjZlZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbkBAIC0xNDYsNiArMTQ2LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3dpdGhfZGV2bWFwX2ZyYWdzX2hlbHBlcnModm9pZClcbiBcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInRlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcIikpXG4gXHRcdHJldHVybjtcbiBcbitcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1wiKTtcbitcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG0pIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIDAsIFwiZnJhZ3Mgbm90IGluIHByb2dyYW0gZmxhZ3NcIik7XG4rXG4gXHRkbV9mZF9mcmFncyA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnhkcF9kdW1teV9kbV9mcmFncyk7XG4gXHRtYXBfZmQgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuZG1fcG9ydHMpO1xuIFx0ZXJyID0gYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoZG1fZmRfZnJhZ3MsIFx1MDAyNmluZm8sIFx1MDAyNmxlbik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuaW5kZXggNWMzMTA1NGFkNGE0Yy4uMDQ3ZGZkYzMyMmEyZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuQEAgLTQwOCwxNCArNDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCJyeFwiKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJlZGlyZWN0XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KG5ld19wcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4rXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCJsb2FkIHNrZWxldG9uXCIpKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbmluZGV4IDZkYjNiNTU1NWEyMmUuLmM1NTAxYjNmZGY0OGYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJ4XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcblwiKTtcbiBcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjQ0OjMxLjQ1Njk1NDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1Mjk5NDUxNDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIHBhdGNoIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgbm90IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZsYWcgZm9yIFN5emthbGxlciBmdXp6aW5nLiBUaGUgZmlsZXMgYWZmZWN0ZWQgYXJlIGFsbCB0dWNrZWQgYXdheSBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IOKAkyBgYnBmdG9vbGAsIGBsaWJicGZgLCBhbmQgYSBzbGV3IG9mIEJQRiBzZWxmLXRlc3RzLiBUaGF0IHNjcmVhbXMgXCJ1c2Vyc3BhY2UgdG9vbGluZ1wiIHRvIG1lLCBub3QgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eS5cblxuSSdtIG1ha2luZyBzdXJlIHRvIGJlIHRob3JvdWdoLCBob3dldmVyLiBUaGUgZmFjdCB0aGF0IGl0ICp0b3VjaGVzKiBhbnl0aGluZyBCUEYtcmVsYXRlZCB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBldmVuIGlmIGl0J3Mgbm90IGtlcm5lbC1zcGFjZSBjb2RlLiBUaGUgQlBGIHN1YnN5c3RlbSBpcyBwcmV0dHkgc2Vuc2l0aXZlLCBzbyBJJ20gZG91YmxlLWNoZWNraW5nLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGZ1enppbmcgY3JpdGVyaWEuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSB0aGF0IHBhdGNoZXMgbW9kaWZ5aW5nIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIGV0Yy4sIGFyZSB1c3VhbGx5IGEgXCJuby1nb1wiLiBUaGUga2V5IGlzOiBkb2VzIHRoaXMgcGF0Y2ggYWZmZWN0ICpyZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzKj8gSWYgaXQgZG9lc24ndCwgd2UgY2FuIHNraXAgaXQuXG5cbkFscmlnaHQsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGZpbGUgbGlzdC4gSSBkb24ndCBzZWUgYW55dGhpbmcgbGlrZSBga2VybmVsL2AsIGBuZXQvYCwgYGRyaXZlcnMvYCwgYGZzL2AsIGBhcmNoL2AsIG9yIGBpbmNsdWRlL2AuIEFsbCB0aGUgZmlsZXMgYXJlIGRlZmluaXRpdmVseSB1bmRlciBgdG9vbHMvYC4gTm9uZSBvZiB0aGUgbGlzdGVkIGZpbGVzIGFyZSBwYXJ0IG9mIGB2bWxpbnV4YCBvciBhcmUga2VybmVsIG1vZHVsZXMuIFN5emthbGxlcidzIHByaW1hcnkgZm9jdXMgaXMgZnV6emluZyB0aGUga2VybmVsIHZpYSBzeXN0ZW0gY2FsbHMsIGFuZCB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBpbXBhY3QgdGhhdC5cblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluLiBOb3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyB3aWxsIGJlIGNsZWFyOiB0aGlzIHBhdGNoIGlzIGNvbmZpbmVkIHRvIHVzZXJzcGFjZSB0b29scywgc3BlY2lmaWNhbGx5IGBsaWJicGZgLCBgYnBmdG9vbGAsIGFuZCBCUEYgc2VsZi10ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5LCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIE5vIG5lZWQgdG8gZmxhZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMzMCwiT3V0cHV0VG9rZW5zIjo3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjUzOjQ0LjQ1MTQ3MTMwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIGxpYnJhcmllcywgdG9vbHMsIGFuZCBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvIChicGZ0b29sLCBsaWJicGYsIGFuZCBCUEYgc2VsZnRlc3RzKSBhbmQgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxNDo1Mzo0NC40NTE0OTA0NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowc8lk8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 14:30:03 +0000 UTC FinishedAt: 2026-08-31 14:53:46 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTQ6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMTQ6NDQ6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCBhOWY3MzBkNDA3YTkyLi44YzJmOTI1NWIzNmQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgJiM0MzsxNzY5LDcgQEAgc3RhdGljIGludCBsb2FkX3dpdGhfb3B0aW9ucyhpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGJvb2wgZmlyc3RfcHJvZ19vbmx5KVxuIFx0XHR9XG4gXG4gXHRcdGlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXHUwMDI2XHUwMDI2IHhkcG1ldGFfaWZpbmRleCkge1xuLVx0XHRcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHBvcywgYnBmX3Byb2dyYW1fX2ZsYWdzKHBvcykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIHhkcG1ldGFfaWZpbmRleCk7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTtcbmRpZmYgLS1naXQgYS90b29scy9saWIvYnBmL2xpYmJwZi5jIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xuaW5kZXggYjc0OWMwMTc0MmVlMC4uMjc3NzliNGNkZGQwOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbkBAIC03ODc5LDYgJiM0Mzs3ODc5LDE5IEBAIHN0YXRpYyBpbnQgdHJhY2luZ19tdWx0aV9tb2RfZmQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBpbnQgKmJ0Zl9vYmpfZmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbGliYnBmX3NldHVwX3Byb2dfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSlcbiYjNDM7e1xuJiM0MztcdGVudW0gc2VjX2RlZl9mbGFncyBkZWYgPSBjb29raWU7XG4mIzQzO1xuJiM0MztcdGlmIChkZWYgXHUwMDI2IFNFQ19TTEVFUEFCTEUpXG4mIzQzO1x0XHRwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xuJiM0MztcbiYjNDM7XHRpZiAoZGVmIFx1MDAyNiBTRUNfWERQX0ZSQUdTKVxuJiM0MztcdFx0cHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIHRoaXMgaXMgY2FsbGVkIGFzIHByb2ctXHUwMDNlc2VjX2RlZi1cdTAwM2Vwcm9nX3ByZXBhcmVfbG9hZF9mbiBmb3IgbGliYnBmLXN1cHBvcnRlZCBzZWNfZGVmcyAqL1xuIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzICpvcHRzLCBsb25nIGNvb2tpZSlcbkBAIC03ODg5LDEyICYjNDM7NzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcbiBcdGlmICgoZGVmIFx1MDAyNiBTRUNfRVhQX0FUVEFDSF9PUFQpIFx1MDAyNlx1MDAyNiAha2VybmVsX3N1cHBvcnRzKHByb2ctXHUwMDNlb2JqLCBGRUFUX0VYUF9BVFRBQ0hfVFlQRSkpXG4gXHRcdG9wdHMtXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSAwO1xuIFxuLVx0aWYgKGRlZiBcdTAwMjYgU0VDX1NMRUVQQUJMRSlcbi1cdFx0b3B0cy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTtcbi1cbi1cdGlmIChwcm9nLVx1MDAzZXR5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgXHUwMDI2XHUwMDI2IChkZWYgXHUwMDI2IFNFQ19YRFBfRlJBR1MpKVxuLVx0XHRvcHRzLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUztcbi1cbiBcdC8qIHNwZWNpYWwgY2hlY2sgZm9yIHVzZHQgdG8gdXNlIHVwcm9iZV9tdWx0aSBsaW5rICovXG4gXHRpZiAoKGRlZiBcdTAwMjYgU0VDX1VTRFQpIFx1MDAyNlx1MDAyNiBrZXJuZWxfc3VwcG9ydHMocHJvZy1cdTAwM2VvYmosIEZFQVRfVVBST0JFX01VTFRJX0xJTkspKSB7XG4gXHRcdC8qIGZvciBCUEZfVFJBQ0VfVVBST0JFX01VTFRJLCB1c2VyIG1pZ2h0IHdhbnQgdG8gcXVlcnkgZXhwZWN0ZWRfYXR0YWNoX3R5cGVcbkBAIC0xMDA5OSw2ICYjNDM7MTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0c1xuIFx0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfIyNwdHlwZSxcdFx0XHRcdCAgICBcXFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXHRcdFx0XHRcdCAgICBcXFxuIFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXHRcdFx0XHRcdCAgICBcXFxuJiM0MztcdC5wcm9nX3NldHVwX2ZuID0gbGliYnBmX3NldHVwX3Byb2dfZmxhZ3MsXHRcdFx0ICAgIFxcXG4gXHQucHJvZ19wcmVwYXJlX2xvYWRfZm4gPSBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQsXHRcdCAgICBcXFxuIFx0X19WQV9BUkdTX19cdFx0XHRcdFx0XHRcdCAgICBcXFxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG5pbmRleCBlOGMxYTYxOWUzMzBlLi43ZGFkYjkwZTdiNjg5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXG5AQCAtNTQzLDggJiM0Mzs1NDMsMTAgQEAgc3RhdGljIHZvaWQgdGVzdF9rcHJvYmVfc2xlZXBhYmxlKHZvaWQpXG4gXHRcdHJldHVybjtcbiBcbiBcdC8qIHNsZWVwYWJsZSBrcHJvYmUgdGVzdCBjYXNlIG5lZWRzIGZsYWdzIHNldCBiZWZvcmUgbG9hZGluZyAqL1xuLVx0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLFxuLVx0XHRCUEZfRl9TTEVFUEFCTEUpLCBcJiMzNDtrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCYjMzQ7KSlcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKFxuJiM0MztcdFx0XHQgICAgICAgc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbiYjNDM7XHRcdFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSksXG4mIzQzO1x0XHQgICAgICAgXCYjMzQ7a3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wmIzM0OykpXG4gXHRcdGdvdG8gY2xlYW51cDtcbiBcbiBcdGlmICghQVNTRVJUX09LKHRlc3RfYXR0YWNoX2twcm9iZV9zbGVlcGFibGVfX2xvYWQoc2tlbCksXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbmluZGV4IDk3YjAwYzdlZmU5NDMuLjI1ZWI1OWY0NjBhYmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXG5AQCAtMTYsNiAmIzQzOzE2LDkgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobHNtX3NrZWwsIFwmIzM0O2xzbV9za2VsXCYjMzQ7KSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXHUwMDNlcHJvZ3MuYnBmKSBcdTAwMjYgQlBGX0ZfU0xFRVBBQkxFLFxuJiM0MztcdFx0ICBCUEZfRl9TTEVFUEFCTEUsIFwmIzM0O3NsZWVwYWJsZSBpbiBwcm9ncmFtIGZsYWdzXCYjMzQ7KTtcbiYjNDM7XG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYyLDcgJiM0MzszNjIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2F0dGFjaF9hcGlfZmFpbHModm9pZClcbiBcdHNsX3NrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcbiBcbiBcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSxcbi1cdFx0XHRcdCAgICAgQlBGX0ZfU0xFRVBBQkxFKTtcbiYjNDM7XHRcdFx0XHQgICAgIGJwZl9wcm9ncmFtX19mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlKSB8IEJQRl9GX1NMRUVQQUJMRSk7XG4gXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3NsZWVwX3NrZWxfc2V0X2ZsYWdzXCYjMzQ7KSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuY1xuaW5kZXggZmNlMjAzNjQwZjhjZi4uYTg5NGIxYWI0NmY0ZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG5AQCAtMTgsNiAmIzQzOzE4LDkgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfdXBkYXRlX2ZyYWdzKHZvaWQpXG4gXHRcdHJldHVybjtcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19uZXh0X3Byb2dyYW0ob2JqLCBOVUxMKTtcbiYjNDM7XHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuJiM0MztcdFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcJiMzNDtmcmFncyBpbiBwcm9ncmFtIGZsYWdzXCYjMzQ7KTtcbiYjNDM7XG4gXHRpZiAoYnBmX29iamVjdF9fbG9hZChvYmopKVxuIFx0XHRyZXR1cm47XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbmluZGV4IGE4YWIwNTIxNmMzODUuLmRmZjZiM2U3MjY2ZWUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXG5AQCAtMTQ2LDYgJiM0MzsxNDYsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfd2l0aF9kZXZtYXBfZnJhZ3NfaGVscGVycyh2b2lkKVxuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O3Rlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVx1MDAzZXByb2dzLnhkcF9kdW1teV9kbV9mcmFncykgXHUwMDI2IEJQRl9GX1hEUF9IQVNfRlJBR1MsXG4mIzQzO1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwmIzM0O2ZyYWdzIGluIHByb2dyYW0gZmxhZ3NcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG0pIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuJiM0MztcdFx0ICAwLCBcJiMzNDtmcmFncyBub3QgaW4gcHJvZ3JhbSBmbGFnc1wmIzM0Oyk7XG4mIzQzO1xuIFx0ZG1fZmRfZnJhZ3MgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpO1xuIFx0bWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLmRtX3BvcnRzKTtcbiBcdGVyciA9IGJwZl9wcm9nX2dldF9pbmZvX2J5X2ZkKGRtX2ZkX2ZyYWdzLCBcdTAwMjZpbmZvLCBcdTAwMjZsZW4pO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbmluZGV4IDVjMzEwNTRhZDRhNGMuLjA0N2RmZGMzMjJhMmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcbkBAIC00MDgsMTQgJiM0Mzs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcJiMzNDtyeFwmIzM0Oyk7XG4gXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgcnhfaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4mIzQzO1x0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0LyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3Jtc1xuIFx0ICogWERQX1JFRElSRUNUIGludG8gYSBkZXZtYXAuXG4gXHQgKi9cbiBcdG5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cdTAwM2VvYmosIFwmIzM0O3JlZGlyZWN0XCYjMzQ7KTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7XG4tXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuJiM0MztcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIGJwZl9wcm9ncmFtX19mbGFncyhuZXdfcHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0aWYgKCFBU1NFUlRfT0soeGRwX21ldGFkYXRhX19sb2FkKGJwZl9vYmopLCBcJiMzNDtsb2FkIHNrZWxldG9uXCYjMzQ7KSlcbiBcdFx0Z290byBvdXQ7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG5pbmRleCA2ZGIzYjU1NTVhMjJlLi5jNTUwMWIzZmRmNDhmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbkBAIC04NDUsNyAmIzQzOzg0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRwcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai1cdTAwM2VvYmosIFwmIzM0O3J4XCYjMzQ7KTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCBpZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiYjNDM7XHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4gXG4gXHRwcmludGYoXCYjMzQ7bG9hZCBicGYgcHJvZ3JhbS4uLlxcblwmIzM0Oyk7XG4gXHRyZXQgPSB4ZHBfaHdfbWV0YWRhdGFfX2xvYWQoYnBmX29iaik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTQ6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMTQ6NDQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy9icGYvYnBmdG9vbC9wcm9nLmMgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmMKaW5kZXggYTlmNzMwZDQwN2E5Mi4uOGMyZjkyNTViMzZkNyAxMDA2NDQKLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYwpAQCAtMTc2OSw3ICYjNDM7MTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSkKIAkJfQogCiAJCWlmIChwcm9nX3R5cGUgPT0gQlBGX1BST0dfVFlQRV9YRFAgJmFtcDsmYW1wOyB4ZHBtZXRhX2lmaW5kZXgpIHsKLQkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwkJCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAJCQlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpOwogCQl9IGVsc2UgewogCQkJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHBvcywgb2ZmbG9hZF9pZmluZGV4KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jCmluZGV4IGI3NDljMDE3NDJlZTAuLjI3Nzc5YjRjZGRkMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbGliL2JwZi9saWJicGYuYwpAQCAtNzg3OSw2ICYjNDM7Nzg3OSwxOSBAQCBzdGF0aWMgaW50IHRyYWNpbmdfbXVsdGlfbW9kX2ZkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgaW50ICpidGZfb2JqX2ZkKQogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGxvbmcgY29va2llKQomIzQzO3sKJiM0MzsJZW51bSBzZWNfZGVmX2ZsYWdzIGRlZiA9IGNvb2tpZTsKJiM0MzsKJiM0MzsJaWYgKGRlZiAmYW1wOyBTRUNfU0xFRVBBQkxFKQomIzQzOwkJcHJvZy0mZ3Q7cHJvZ19mbGFncyB8PSBCUEZfRl9TTEVFUEFCTEU7CiYjNDM7CiYjNDM7CWlmIChkZWYgJmFtcDsgU0VDX1hEUF9GUkFHUykKJiM0MzsJCXByb2ctJmd0O3Byb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUzsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyogdGhpcyBpcyBjYWxsZWQgYXMgcHJvZy0mZ3Q7c2VjX2RlZi0mZ3Q7cHJvZ19wcmVwYXJlX2xvYWRfZm4gZm9yIGxpYmJwZi1zdXBwb3J0ZWQgc2VjX2RlZnMgKi8KIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywKIAkJCQkgICAgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0cyAqb3B0cywgbG9uZyBjb29raWUpCkBAIC03ODg5LDEyICYjNDM7NzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywKIAlpZiAoKGRlZiAmYW1wOyBTRUNfRVhQX0FUVEFDSF9PUFQpICZhbXA7JmFtcDsgIWtlcm5lbF9zdXBwb3J0cyhwcm9nLSZndDtvYmosIEZFQVRfRVhQX0FUVEFDSF9UWVBFKSkKIAkJb3B0cy0mZ3Q7ZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPSAwOwogCi0JaWYgKGRlZiAmYW1wOyBTRUNfU0xFRVBBQkxFKQotCQlvcHRzLSZndDtwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTsKLQotCWlmIChwcm9nLSZndDt0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQICZhbXA7JmFtcDsgKGRlZiAmYW1wOyBTRUNfWERQX0ZSQUdTKSkKLQkJb3B0cy0mZ3Q7cHJvZ19mbGFncyB8PSBCUEZfRl9YRFBfSEFTX0ZSQUdTOwotCiAJLyogc3BlY2lhbCBjaGVjayBmb3IgdXNkdCB0byB1c2UgdXByb2JlX211bHRpIGxpbmsgKi8KIAlpZiAoKGRlZiAmYW1wOyBTRUNfVVNEVCkgJmFtcDsmYW1wOyBrZXJuZWxfc3VwcG9ydHMocHJvZy0mZ3Q7b2JqLCBGRUFUX1VQUk9CRV9NVUxUSV9MSU5LKSkgewogCQkvKiBmb3IgQlBGX1RSQUNFX1VQUk9CRV9NVUxUSSwgdXNlciBtaWdodCB3YW50IHRvIHF1ZXJ5IGV4cGVjdGVkX2F0dGFjaF90eXBlCkBAIC0xMDA5OSw2ICYjNDM7MTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0cwogCS5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFXyMjcHR5cGUsCQkJCSAgICBcCiAJLmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsCQkJCQkgICAgXAogCS5jb29raWUgPSAobG9uZykoZmxhZ3MpLAkJCQkJICAgIFwKJiM0MzsJLnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncywJCQkgICAgXAogCS5wcm9nX3ByZXBhcmVfbG9hZF9mbiA9IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZCwJCSAgICBcCiAJX19WQV9BUkdTX18JCQkJCQkJICAgIFwKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKaW5kZXggZThjMWE2MTllMzMwZS4uN2RhZGI5MGU3YjY4OSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmMKQEAgLTU0Myw4ICYjNDM7NTQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKQogCQlyZXR1cm47CiAKIAkvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi8KLQlpZiAoIUFTU0VSVF9PSyhicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLAotCQlCUEZfRl9TTEVFUEFCTEUpLCAmIzM0O2twcm9iZV9zbGVlcGFibGVfZmxhZ3MmIzM0OykpCiYjNDM7CWlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoCiYjNDM7CQkJICAgICAgIHNrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfc2xlZXBhYmxlLAomIzQzOwkJCSAgICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSwKJiM0MzsJCSAgICAgICAmIzM0O2twcm9iZV9zbGVlcGFibGVfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIAogCWlmICghQVNTRVJUX09LKHRlc3RfYXR0YWNoX2twcm9iZV9zbGVlcGFibGVfX2xvYWQoc2tlbCksCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYwppbmRleCA5N2IwMGM3ZWZlOTQzLi4yNWViNTlmNDYwYWJlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmMKQEAgLTE2LDYgJiM0MzsxNiw5IEBAIHZvaWQgdGVzdF9rZXJuZWxfZmxhZyh2b2lkKQogCWlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgJiMzNDtsc21fc2tlbCYjMzQ7KSkKIAkJcmV0dXJuOwogCiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtJmd0O3Byb2dzLmJwZikgJmFtcDsgQlBGX0ZfU0xFRVBBQkxFLAomIzQzOwkJICBCUEZfRl9TTEVFUEFCTEUsICYjMzQ7c2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiYjNDM7CiAJbHNtX3NrZWwtJmd0O2Jzcy0mZ3Q7bW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTsKIAogCXJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYwppbmRleCAyZTBkZGVmNzdiYTUxLi5lZDNmZDBhODhkYWI2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmMKQEAgLTM2Miw3ICYjNDM7MzYyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdHRhY2hfYXBpX2ZhaWxzKHZvaWQpCiAJc2xfc2tlbC0mZ3Q7YnNzLSZndDt1c2VyX3B0ciA9IHNsX3NrZWw7CiAKIAllcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHNsX3NrZWwtJmd0O3Byb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLAotCQkJCSAgICAgQlBGX0ZfU0xFRVBBQkxFKTsKJiM0MzsJCQkJICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC0mZ3Q7cHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTsKIAlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7c2xlZXBfc2tlbF9zZXRfZmxhZ3MmIzM0OykpCiAJCWdvdG8gY2xlYW51cDsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jCmluZGV4IGZjZTIwMzY0MGY4Y2YuLmE4OTRiMWFiNDZmNGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9hZGp1c3RfZnJhZ3MuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmMKQEAgLTE4LDYgJiM0MzsxOCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3VwZGF0ZV9mcmFncyh2b2lkKQogCQlyZXR1cm47CiAKIAlwcm9nID0gYnBmX29iamVjdF9fbmV4dF9wcm9ncmFtKG9iaiwgTlVMTCk7CiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgJmFtcDsgQlBGX0ZfWERQX0hBU19GUkFHUywKJiM0MzsJCSAgQlBGX0ZfWERQX0hBU19GUkFHUywgJiMzNDtmcmFncyBpbiBwcm9ncmFtIGZsYWdzJiMzNDspOwomIzQzOwogCWlmIChicGZfb2JqZWN0X19sb2FkKG9iaikpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmMKaW5kZXggYThhYjA1MjE2YzM4NS4uZGZmNmIzZTcyNjZlZSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jCkBAIC0xNDYsNiAmIzQzOzE0NiwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3hkcF93aXRoX2Rldm1hcF9mcmFnc19oZWxwZXJzKHZvaWQpCiAJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7dGVzdF94ZHBfd2l0aF9kZXZtYXBfaGVscGVyc19fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKIAkJcmV0dXJuOwogCiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MueGRwX2R1bW15X2RtX2ZyYWdzKSAmYW1wOyBCUEZfRl9YRFBfSEFTX0ZSQUdTLAomIzQzOwkJICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCAmIzM0O2ZyYWdzIGluIHByb2dyYW0gZmxhZ3MmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC0mZ3Q7cHJvZ3MueGRwX2R1bW15X2RtKSAmYW1wOyBCUEZfRl9YRFBfSEFTX0ZSQUdTLAomIzQzOwkJICAwLCAmIzM0O2ZyYWdzIG5vdCBpbiBwcm9ncmFtIGZsYWdzJiMzNDspOwomIzQzOwogCWRtX2ZkX2ZyYWdzID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtJmd0O3Byb2dzLnhkcF9kdW1teV9kbV9mcmFncyk7CiAJbWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC0mZ3Q7bWFwcy5kbV9wb3J0cyk7CiAJZXJyID0gYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoZG1fZmRfZnJhZ3MsICZhbXA7aW5mbywgJmFtcDtsZW4pOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwppbmRleCA1YzMxMDU0YWQ0YTRjLi4wNDdkZmRjMzIyYTJmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuYwpAQCAtNDA4LDE0ICYjNDM7NDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZCkKIAogCXByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLSZndDtvYmosICYjMzQ7cngmIzM0Oyk7CiAJYnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIHJ4X2lmaW5kZXgpOwotCWJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwogCiAJLyogTWFrZSBzdXJlIHdlIGNhbiBsb2FkIGEgZGV2LWJvdW5kIHByb2dyYW0gdGhhdCBwZXJmb3JtcwogCSAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLgogCSAqLwogCW5ld19wcm9nID0gYnBmX29iamVjdF9fZmluZF9wcm9ncmFtX2J5X25hbWUoYnBmX29iai0mZ3Q7b2JqLCAmIzM0O3JlZGlyZWN0JiMzNDspOwogCWJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChuZXdfcHJvZywgcnhfaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTsKJiM0MzsJYnBmX3Byb2dyYW1fX3NldF9mbGFncyhuZXdfcHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKG5ld19wcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlpZiAoIUFTU0VSVF9PSyh4ZHBfbWV0YWRhdGFfX2xvYWQoYnBmX29iaiksICYjMzQ7bG9hZCBza2VsZXRvbiYjMzQ7KSkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMKaW5kZXggNmRiM2I1NTU1YTIyZS4uYzU1MDFiM2ZkZjQ4ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYwpAQCAtODQ1LDcgJiM0Mzs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotJmd0O29iaiwgJiMzNDtyeCYjMzQ7KTsKIAlicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocHJvZywgaWZpbmRleCk7Ci0JYnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpOwomIzQzOwlicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7CiAKIAlwcmludGYoJiMzNDtsb2FkIGJwZiBwcm9ncmFtLi4uXG4mIzM0Oyk7CiAJcmV0ID0geGRwX2h3X21ldGFkYXRhX19sb2FkKGJwZl9vYmopOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxNDo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzMwCgkJCQkJCQlvdXRwdXQ6IDczCgkJCQkJCQl0aG91Z2h0czogODQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBwYXRjaCBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSBub3Qgc29tZXRoaW5nIHdlIG5lZWQgdG8gZmxhZyBmb3IgU3l6a2FsbGVyIGZ1enppbmcuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgYWxsIHR1Y2tlZCBhd2F5IGluIHRoZSBgdG9vbHMvYCBkaXJlY3Rvcnkg4oCTIGBicGZ0b29sYCwgYGxpYmJwZmAsIGFuZCBhIHNsZXcgb2YgQlBGIHNlbGYtdGVzdHMuIFRoYXQgc2NyZWFtcyAmIzM0O3VzZXJzcGFjZSB0b29saW5nJiMzNDsgdG8gbWUsIG5vdCBjb3JlIGtlcm5lbCBmdW5jdGlvbmFsaXR5LgoKSSYjMzk7bSBtYWtpbmcgc3VyZSB0byBiZSB0aG9yb3VnaCwgaG93ZXZlci4gVGhlIGZhY3QgdGhhdCBpdCAqdG91Y2hlcyogYW55dGhpbmcgQlBGLXJlbGF0ZWQgd2FycmFudHMgYSBjbG9zZXIgbG9vaywgZXZlbiBpZiBpdCYjMzk7cyBub3Qga2VybmVsLXNwYWNlIGNvZGUuIFRoZSBCUEYgc3Vic3lzdGVtIGlzIHByZXR0eSBzZW5zaXRpdmUsIHNvIEkmIzM5O20gZG91YmxlLWNoZWNraW5nLgoKTGV0IG1lIHJlZnJlc2ggbXlzZWxmIG9uIHRoZSBmdXp6aW5nIGNyaXRlcmlhLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZnkgdGhhdCBwYXRjaGVzIG1vZGlmeWluZyB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLCBldGMuLCBhcmUgdXN1YWxseSBhICYjMzQ7bm8tZ28mIzM0Oy4gVGhlIGtleSBpczogZG9lcyB0aGlzIHBhdGNoIGFmZmVjdCAqcmVhY2hhYmxlLCBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyo/IElmIGl0IGRvZXNuJiMzOTt0LCB3ZSBjYW4gc2tpcCBpdC4KCkFscmlnaHQsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGZpbGUgbGlzdC4gSSBkb24mIzM5O3Qgc2VlIGFueXRoaW5nIGxpa2UgYGtlcm5lbC9gLCBgbmV0L2AsIGBkcml2ZXJzL2AsIGBmcy9gLCBgYXJjaC9gLCBvciBgaW5jbHVkZS9gLiBBbGwgdGhlIGZpbGVzIGFyZSBkZWZpbml0aXZlbHkgdW5kZXIgYHRvb2xzL2AuIE5vbmUgb2YgdGhlIGxpc3RlZCBmaWxlcyBhcmUgcGFydCBvZiBgdm1saW51eGAgb3IgYXJlIGtlcm5lbCBtb2R1bGVzLiBTeXprYWxsZXImIzM5O3MgcHJpbWFyeSBmb2N1cyBpcyBmdXp6aW5nIHRoZSBrZXJuZWwgdmlhIHN5c3RlbSBjYWxscywgYW5kIHRoaXMgZG9lc24mIzM5O3Qgc2VlbSB0byBpbXBhY3QgdGhhdC4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluLiBOb3csIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBNeSByZWFzb25pbmcgd2lsbCBiZSBjbGVhcjogdGhpcyBwYXRjaCBpcyBjb25maW5lZCB0byB1c2Vyc3BhY2UgdG9vbHMsIHNwZWNpZmljYWxseSBgbGliYnBmYCwgYGJwZnRvb2xgLCBhbmQgQlBGIHNlbGYtdGVzdHMgaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSwgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbW9kaWZpY2F0aW9ucyB0byB0aGUga2VybmVsIGl0c2VsZi4gTm8gbmVlZCB0byBmbGFnIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIGxpYnJhcmllcywgdG9vbHMsIGFuZCBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvIChicGZ0b29sLCBsaWJicGYsIGFuZCBCUEYgc2VsZnRlc3RzKSBhbmQgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE0OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxNDo0NDozMC45ODE3MjM1NTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM0Njk3NzY4ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBsaWJyYXJpZXMsIHRvb2xzLCBhbmQgc2VsZnRlc3RzIHVuZGVyIHRvb2xzLyAoYnBmdG9vbCwgbGliYnBmLCBhbmQgQlBGIHNlbGZ0ZXN0cykgYW5kIG1ha2VzIG5vIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTQ6NDQ6MzAuOTgxNzI5MjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQ1NTE3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZjdkNGJlYzNjMzI4YzdmMDU5MDQwMWVjMjdiYTIzNDFjZjdhZDVhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE0OjQ0OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuYyBiL3Rvb2xzL2JwZi9icGZ0b29sL3Byb2cuY1xcbmluZGV4IGE5ZjczMGQ0MDdhOTIuLjhjMmY5MjU1YjM2ZDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuKysrIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXFxuQEAgLTE3NjksNyArMTc2OSw3IEBAIHN0YXRpYyBpbnQgbG9hZF93aXRoX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBib29sIGZpcnN0X3Byb2dfb25seSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcXHUwMDI2XFx1MDAyNiB4ZHBtZXRhX2lmaW5kZXgpIHtcXG4tXFx0XFx0XFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuK1xcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocG9zLCBicGZfcHJvZ3JhbV9fZmxhZ3MocG9zKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIHhkcG1ldGFfaWZpbmRleCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYi9icGYvbGliYnBmLmMgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXFxuaW5kZXggYjc0OWMwMTc0MmVlMC4uMjc3NzliNGNkZGQwOSAxMDA2NDRcXG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXFxuKysrIGIvdG9vbHMvbGliL2JwZi9saWJicGYuY1xcbkBAIC03ODc5LDYgKzc4NzksMTkgQEAgc3RhdGljIGludCB0cmFjaW5nX211bHRpX21vZF9mZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGludCAqYnRmX29ial9mZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgbGliYnBmX3NldHVwX3Byb2dfZmxhZ3Moc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBsb25nIGNvb2tpZSlcXG4re1xcbitcXHRlbnVtIHNlY19kZWZfZmxhZ3MgZGVmID0gY29va2llO1xcbitcXG4rXFx0aWYgKGRlZiBcXHUwMDI2IFNFQ19TTEVFUEFCTEUpXFxuK1xcdFxcdHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xcbitcXG4rXFx0aWYgKGRlZiBcXHUwMDI2IFNFQ19YRFBfRlJBR1MpXFxuK1xcdFxcdHByb2ctXFx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfWERQX0hBU19GUkFHUztcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKiB0aGlzIGlzIGNhbGxlZCBhcyBwcm9nLVxcdTAwM2VzZWNfZGVmLVxcdTAwM2Vwcm9nX3ByZXBhcmVfbG9hZF9mbiBmb3IgbGliYnBmLXN1cHBvcnRlZCBzZWNfZGVmcyAqL1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzICpvcHRzLCBsb25nIGNvb2tpZSlcXG5AQCAtNzg4OSwxMiArNzkwMiw2IEBAIHN0YXRpYyBpbnQgbGliYnBmX3ByZXBhcmVfcHJvZ19sb2FkKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZyxcXG4gXFx0aWYgKChkZWYgXFx1MDAyNiBTRUNfRVhQX0FUVEFDSF9PUFQpIFxcdTAwMjZcXHUwMDI2ICFrZXJuZWxfc3VwcG9ydHMocHJvZy1cXHUwMDNlb2JqLCBGRUFUX0VYUF9BVFRBQ0hfVFlQRSkpXFxuIFxcdFxcdG9wdHMtXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gMDtcXG4gXFxuLVxcdGlmIChkZWYgXFx1MDAyNiBTRUNfU0xFRVBBQkxFKVxcbi1cXHRcXHRvcHRzLVxcdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1NMRUVQQUJMRTtcXG4tXFxuLVxcdGlmIChwcm9nLVxcdTAwM2V0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQIFxcdTAwMjZcXHUwMDI2IChkZWYgXFx1MDAyNiBTRUNfWERQX0ZSQUdTKSlcXG4tXFx0XFx0b3B0cy1cXHUwMDNlcHJvZ19mbGFncyB8PSBCUEZfRl9YRFBfSEFTX0ZSQUdTO1xcbi1cXG4gXFx0Lyogc3BlY2lhbCBjaGVjayBmb3IgdXNkdCB0byB1c2UgdXByb2JlX211bHRpIGxpbmsgKi9cXG4gXFx0aWYgKChkZWYgXFx1MDAyNiBTRUNfVVNEVCkgXFx1MDAyNlxcdTAwMjYga2VybmVsX3N1cHBvcnRzKHByb2ctXFx1MDAzZW9iaiwgRkVBVF9VUFJPQkVfTVVMVElfTElOSykpIHtcXG4gXFx0XFx0LyogZm9yIEJQRl9UUkFDRV9VUFJPQkVfTVVMVEksIHVzZXIgbWlnaHQgd2FudCB0byBxdWVyeSBleHBlY3RlZF9hdHRhY2hfdHlwZVxcbkBAIC0xMDA5OSw2ICsxMDEwNiw3IEBAIGludCBicGZfcHJvZ3JhbV9fY2xvbmUoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfbG9hZF9vcHRzXFxuIFxcdC5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFXyMjcHR5cGUsXFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4gXFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXFx0XFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4gXFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXFx0XFx0XFx0XFx0XFx0ICAgIFxcXFxcXG4rXFx0LnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyxcXHRcXHRcXHQgICAgXFxcXFxcbiBcXHQucHJvZ19wcmVwYXJlX2xvYWRfZm4gPSBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQsXFx0XFx0ICAgIFxcXFxcXG4gXFx0X19WQV9BUkdTX19cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcXFxcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG5pbmRleCBlOGMxYTYxOWUzMzBlLi43ZGFkYjkwZTdiNjg5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcXG5AQCAtNTQzLDggKzU0MywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2twcm9iZV9zbGVlcGFibGUodm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Lyogc2xlZXBhYmxlIGtwcm9iZSB0ZXN0IGNhc2UgbmVlZHMgZmxhZ3Mgc2V0IGJlZm9yZSBsb2FkaW5nICovXFxuLVxcdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUsXFxuLVxcdFxcdEJQRl9GX1NMRUVQQUJMRSksIFxcXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXFxcIikpXFxuK1xcdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MoXFxuK1xcdFxcdFxcdCAgICAgICBza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcXG4rXFx0XFx0XFx0ICAgICAgIGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpLFxcbitcXHRcXHQgICAgICAgXFxcImtwcm9iZV9zbGVlcGFibGVfZmxhZ3NcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG4gXFx0aWYgKCFBU1NFUlRfT0sodGVzdF9hdHRhY2hfa3Byb2JlX3NsZWVwYWJsZV9fbG9hZChza2VsKSxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcXG5pbmRleCA5N2IwMGM3ZWZlOTQzLi4yNWViNTlmNDYwYWJlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jXFxuQEAgLTE2LDYgKzE2LDkgQEAgdm9pZCB0ZXN0X2tlcm5lbF9mbGFnKHZvaWQpXFxuIFxcdGlmICghQVNTRVJUX09LX1BUUihsc21fc2tlbCwgXFxcImxzbV9za2VsXFxcIikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3MobHNtX3NrZWwtXFx1MDAzZXByb2dzLmJwZikgXFx1MDAyNiBCUEZfRl9TTEVFUEFCTEUsXFxuK1xcdFxcdCAgQlBGX0ZfU0xFRVBBQkxFLCBcXFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcXFwiKTtcXG4rXFxuIFxcdGxzbV9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZW1vbml0b3JlZF90aWQgPSBzeXNfZ2V0dGlkKCk7XFxuIFxcbiBcXHRyZXQgPSB0ZXN0X2tlcm5lbF9mbGFnX19hdHRhY2gobHNtX3NrZWwpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcXG5AQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxcbiBcXHRzbF9za2VsLVxcdTAwM2Vic3MtXFx1MDAzZXVzZXJfcHRyID0gc2xfc2tlbDtcXG4gXFxuIFxcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUsXFxuLVxcdFxcdFxcdFxcdCAgICAgQlBGX0ZfU0xFRVBBQkxFKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9tdWx0aV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwic2xlZXBfc2tlbF9zZXRfZmxhZ3NcXFwiKSlcXG4gXFx0XFx0Z290byBjbGVhbnVwO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXFxuaW5kZXggZmNlMjAzNjQwZjhjZi4uYTg5NGIxYWI0NmY0ZSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcXG5AQCAtMTgsNiArMTgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3hkcF91cGRhdGVfZnJhZ3Modm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX25leHRfcHJvZ3JhbShvYmosIE5VTEwpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFxcdTAwMjYgQlBGX0ZfWERQX0hBU19GUkFHUyxcXG4rXFx0XFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcXFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXG4gXFx0aWYgKGJwZl9vYmplY3RfX2xvYWQob2JqKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcXG5pbmRleCBhOGFiMDUyMTZjMzg1Li5kZmY2YjNlNzI2NmVlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jXFxuQEAgLTE0Niw2ICsxNDYsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF94ZHBfd2l0aF9kZXZtYXBfZnJhZ3NfaGVscGVycyh2b2lkKVxcbiBcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcInRlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcXFwiKSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0QVNTRVJUX0VRKGJwZl9wcm9ncmFtX19mbGFncyhza2VsLVxcdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpIFxcdTAwMjYgQlBGX0ZfWERQX0hBU19GUkFHUyxcXG4rXFx0XFx0ICBCUEZfRl9YRFBfSEFTX0ZSQUdTLCBcXFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHNrZWwtXFx1MDAzZXByb2dzLnhkcF9kdW1teV9kbSkgXFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxcbitcXHRcXHQgIDAsIFxcXCJmcmFncyBub3QgaW4gcHJvZ3JhbSBmbGFnc1xcXCIpO1xcbitcXG4gXFx0ZG1fZmRfZnJhZ3MgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cXHUwMDNlcHJvZ3MueGRwX2R1bW15X2RtX2ZyYWdzKTtcXG4gXFx0bWFwX2ZkID0gYnBmX21hcF9fZmQoc2tlbC1cXHUwMDNlbWFwcy5kbV9wb3J0cyk7XFxuIFxcdGVyciA9IGJwZl9wcm9nX2dldF9pbmZvX2J5X2ZkKGRtX2ZkX2ZyYWdzLCBcXHUwMDI2aW5mbywgXFx1MDAyNmxlbik7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5pbmRleCA1YzMxMDU0YWQ0YTRjLi4wNDdkZmRjMzIyYTJmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmNcXG5AQCAtNDA4LDE0ICs0MDgsMTQgQEAgdm9pZCB0ZXN0X3hkcF9tZXRhZGF0YSh2b2lkKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHQvKiBNYWtlIHN1cmUgd2UgY2FuIGxvYWQgYSBkZXYtYm91bmQgcHJvZ3JhbSB0aGF0IHBlcmZvcm1zXFxuIFxcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxcbiBcXHQgKi9cXG4gXFx0bmV3X3Byb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVxcdTAwM2VvYmosIFxcXCJyZWRpcmVjdFxcXCIpO1xcbiBcXHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgobmV3X3Byb2csIHJ4X2lmaW5kZXgpO1xcbi1cXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcXG4gXFxuIFxcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXFxcImxvYWQgc2tlbGV0b25cXFwiKSlcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xcbmluZGV4IDZkYjNiNTU1NWEyMmUuLmM1NTAxYjNmZGY0OGYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3hkcF9od19tZXRhZGF0YS5jXFxuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXFx1MDAzZW9iaiwgXFxcInJ4XFxcIik7XFxuIFxcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCBpZmluZGV4KTtcXG4tXFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xcbitcXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKHByb2csIGJwZl9wcm9ncmFtX19mbGFncyhwcm9nKSB8IEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XFxuIFxcbiBcXHRwcmludGYoXFxcImxvYWQgYnBmIHByb2dyYW0uLi5cXFxcblxcXCIpO1xcbiBcXHRyZXQgPSB4ZHBfaHdfbWV0YWRhdGFfX2xvYWQoYnBmX29iaik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjQ0OjMxLjQ1Njk1Mjk4OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTUyOTk0NTM1OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSBsaWJyYXJpZXMsIHRvb2xzLCBhbmQgc2VsZnRlc3RzIHVuZGVyIHRvb2xzLyAoYnBmdG9vbCwgbGliYnBmLCBhbmQgQlBGIHNlbGZ0ZXN0cykgYW5kIG1ha2VzIG5vIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWY3ZDRiZWMzYzMyOGM3ZjA1OTA0MDFlYzI3YmEyMzQxY2Y3YWQ1YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDE0OjQ0OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jIGIvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG5pbmRleCBhOWY3MzBkNDA3YTkyLi44YzJmOTI1NWIzNmQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnBmL2JwZnRvb2wvcHJvZy5jXG4rKysgYi90b29scy9icGYvYnBmdG9vbC9wcm9nLmNcbkBAIC0xNzY5LDcgKzE3NjksNyBAQCBzdGF0aWMgaW50IGxvYWRfd2l0aF9vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndiwgYm9vbCBmaXJzdF9wcm9nX29ubHkpXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2dfdHlwZSA9PSBCUEZfUFJPR19UWVBFX1hEUCBcdTAwMjZcdTAwMjYgeGRwbWV0YV9pZmluZGV4KSB7XG4tXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4rXHRcdFx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwb3MsIGJwZl9wcm9ncmFtX19mbGFncyhwb3MpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcdFx0XHRicGZfcHJvZ3JhbV9fc2V0X2lmaW5kZXgocG9zLCB4ZHBtZXRhX2lmaW5kZXgpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwb3MsIG9mZmxvYWRfaWZpbmRleCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvbGliL2JwZi9saWJicGYuYyBiL3Rvb2xzL2xpYi9icGYvbGliYnBmLmNcbmluZGV4IGI3NDljMDE3NDJlZTAuLjI3Nzc5YjRjZGRkMDkgMTAwNjQ0XG4tLS0gYS90b29scy9saWIvYnBmL2xpYmJwZi5jXG4rKysgYi90b29scy9saWIvYnBmL2xpYmJwZi5jXG5AQCAtNzg3OSw2ICs3ODc5LDE5IEBAIHN0YXRpYyBpbnQgdHJhY2luZ19tdWx0aV9tb2RfZmQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLCBpbnQgKmJ0Zl9vYmpfZmQpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIGludCBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyhzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csIGxvbmcgY29va2llKVxuK3tcbitcdGVudW0gc2VjX2RlZl9mbGFncyBkZWYgPSBjb29raWU7XG4rXG4rXHRpZiAoZGVmIFx1MDAyNiBTRUNfU0xFRVBBQkxFKVxuK1x0XHRwcm9nLVx1MDAzZXByb2dfZmxhZ3MgfD0gQlBGX0ZfU0xFRVBBQkxFO1xuK1xuK1x0aWYgKGRlZiBcdTAwMjYgU0VDX1hEUF9GUkFHUylcbitcdFx0cHJvZy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gLyogdGhpcyBpcyBjYWxsZWQgYXMgcHJvZy1cdTAwM2VzZWNfZGVmLVx1MDAzZXByb2dfcHJlcGFyZV9sb2FkX2ZuIGZvciBsaWJicGYtc3VwcG9ydGVkIHNlY19kZWZzICovXG4gc3RhdGljIGludCBsaWJicGZfcHJlcGFyZV9wcm9nX2xvYWQoc3RydWN0IGJwZl9wcm9ncmFtICpwcm9nLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBicGZfcHJvZ19sb2FkX29wdHMgKm9wdHMsIGxvbmcgY29va2llKVxuQEAgLTc4ODksMTIgKzc5MDIsNiBAQCBzdGF0aWMgaW50IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZChzdHJ1Y3QgYnBmX3Byb2dyYW0gKnByb2csXG4gXHRpZiAoKGRlZiBcdTAwMjYgU0VDX0VYUF9BVFRBQ0hfT1BUKSBcdTAwMjZcdTAwMjYgIWtlcm5lbF9zdXBwb3J0cyhwcm9nLVx1MDAzZW9iaiwgRkVBVF9FWFBfQVRUQUNIX1RZUEUpKVxuIFx0XHRvcHRzLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID0gMDtcbiBcbi1cdGlmIChkZWYgXHUwMDI2IFNFQ19TTEVFUEFCTEUpXG4tXHRcdG9wdHMtXHUwMDNlcHJvZ19mbGFncyB8PSBCUEZfRl9TTEVFUEFCTEU7XG4tXG4tXHRpZiAocHJvZy1cdTAwM2V0eXBlID09IEJQRl9QUk9HX1RZUEVfWERQIFx1MDAyNlx1MDAyNiAoZGVmIFx1MDAyNiBTRUNfWERQX0ZSQUdTKSlcbi1cdFx0b3B0cy1cdTAwM2Vwcm9nX2ZsYWdzIHw9IEJQRl9GX1hEUF9IQVNfRlJBR1M7XG4tXG4gXHQvKiBzcGVjaWFsIGNoZWNrIGZvciB1c2R0IHRvIHVzZSB1cHJvYmVfbXVsdGkgbGluayAqL1xuIFx0aWYgKChkZWYgXHUwMDI2IFNFQ19VU0RUKSBcdTAwMjZcdTAwMjYga2VybmVsX3N1cHBvcnRzKHByb2ctXHUwMDNlb2JqLCBGRUFUX1VQUk9CRV9NVUxUSV9MSU5LKSkge1xuIFx0XHQvKiBmb3IgQlBGX1RSQUNFX1VQUk9CRV9NVUxUSSwgdXNlciBtaWdodCB3YW50IHRvIHF1ZXJ5IGV4cGVjdGVkX2F0dGFjaF90eXBlXG5AQCAtMTAwOTksNiArMTAxMDYsNyBAQCBpbnQgYnBmX3Byb2dyYW1fX2Nsb25lKHN0cnVjdCBicGZfcHJvZ3JhbSAqcHJvZywgY29uc3Qgc3RydWN0IGJwZl9wcm9nX2xvYWRfb3B0c1xuIFx0LnByb2dfdHlwZSA9IEJQRl9QUk9HX1RZUEVfIyNwdHlwZSxcdFx0XHRcdCAgICBcXFxuIFx0LmV4cGVjdGVkX2F0dGFjaF90eXBlID0gYXR5cGUsXHRcdFx0XHRcdCAgICBcXFxuIFx0LmNvb2tpZSA9IChsb25nKShmbGFncyksXHRcdFx0XHRcdCAgICBcXFxuK1x0LnByb2dfc2V0dXBfZm4gPSBsaWJicGZfc2V0dXBfcHJvZ19mbGFncyxcdFx0XHQgICAgXFxcbiBcdC5wcm9nX3ByZXBhcmVfbG9hZF9mbiA9IGxpYmJwZl9wcmVwYXJlX3Byb2dfbG9hZCxcdFx0ICAgIFxcXG4gXHRfX1ZBX0FSR1NfX1x0XHRcdFx0XHRcdFx0ICAgIFxcXG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2F0dGFjaF9wcm9iZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbmluZGV4IGU4YzFhNjE5ZTMzMGUuLjdkYWRiOTBlN2I2ODkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9hdHRhY2hfcHJvYmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvYXR0YWNoX3Byb2JlLmNcbkBAIC01NDMsOCArNTQzLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3Rfa3Byb2JlX3NsZWVwYWJsZSh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBzbGVlcGFibGUga3Byb2JlIHRlc3QgY2FzZSBuZWVkcyBmbGFncyBzZXQgYmVmb3JlIGxvYWRpbmcgKi9cbi1cdGlmICghQVNTRVJUX09LKGJwZl9wcm9ncmFtX19zZXRfZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbi1cdFx0QlBGX0ZfU0xFRVBBQkxFKSwgXCJrcHJvYmVfc2xlZXBhYmxlX2ZsYWdzXCIpKVxuK1x0aWYgKCFBU1NFUlRfT0soYnBmX3Byb2dyYW1fX3NldF9mbGFncyhcbitcdFx0XHQgICAgICAgc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX3NsZWVwYWJsZSxcbitcdFx0XHQgICAgICAgYnBmX3Byb2dyYW1fX2ZsYWdzKHNrZWwtXHUwMDNlcHJvZ3MuaGFuZGxlX2twcm9iZV9zbGVlcGFibGUpIHwgQlBGX0ZfU0xFRVBBQkxFKSxcbitcdFx0ICAgICAgIFwia3Byb2JlX3NsZWVwYWJsZV9mbGFnc1wiKSlcbiBcdFx0Z290byBjbGVhbnVwO1xuIFxuIFx0aWYgKCFBU1NFUlRfT0sodGVzdF9hdHRhY2hfa3Byb2JlX3NsZWVwYWJsZV9fbG9hZChza2VsKSxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZXJuZWxfZmxhZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2VybmVsX2ZsYWcuY1xuaW5kZXggOTdiMDBjN2VmZTk0My4uMjVlYjU5ZjQ2MGFiZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tlcm5lbF9mbGFnLmNcbkBAIC0xNiw2ICsxNiw5IEBAIHZvaWQgdGVzdF9rZXJuZWxfZmxhZyh2b2lkKVxuIFx0aWYgKCFBU1NFUlRfT0tfUFRSKGxzbV9za2VsLCBcImxzbV9za2VsXCIpKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKGxzbV9za2VsLVx1MDAzZXByb2dzLmJwZikgXHUwMDI2IEJQRl9GX1NMRUVQQUJMRSxcbitcdFx0ICBCUEZfRl9TTEVFUEFCTEUsIFwic2xlZXBhYmxlIGluIHByb2dyYW0gZmxhZ3NcIik7XG4rXG4gXHRsc21fc2tlbC1cdTAwM2Vic3MtXHUwMDNlbW9uaXRvcmVkX3RpZCA9IHN5c19nZXR0aWQoKTtcbiBcbiBcdHJldCA9IHRlc3Rfa2VybmVsX2ZsYWdfX2F0dGFjaChsc21fc2tlbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3Byb2JlX211bHRpX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twcm9iZV9tdWx0aV90ZXN0LmNcbmluZGV4IDJlMGRkZWY3N2JhNTEuLmVkM2ZkMGE4OGRhYjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHJvYmVfbXVsdGlfdGVzdC5jXG5AQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYXR0YWNoX2FwaV9mYWlscyh2b2lkKVxuIFx0c2xfc2tlbC1cdTAwM2Vic3MtXHUwMDNldXNlcl9wdHIgPSBzbF9za2VsO1xuIFxuIFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9mbGFncyhzbF9za2VsLVx1MDAzZXByb2dzLmhhbmRsZV9rcHJvYmVfbXVsdGlfc2xlZXBhYmxlLFxuLVx0XHRcdFx0ICAgICBCUEZfRl9TTEVFUEFCTEUpO1xuK1x0XHRcdFx0ICAgICBicGZfcHJvZ3JhbV9fZmxhZ3Moc2xfc2tlbC1cdTAwM2Vwcm9ncy5oYW5kbGVfa3Byb2JlX211bHRpX3NsZWVwYWJsZSkgfCBCUEZfRl9TTEVFUEFCTEUpO1xuIFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcInNsZWVwX3NrZWxfc2V0X2ZsYWdzXCIpKVxuIFx0XHRnb3RvIGNsZWFudXA7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG5pbmRleCBmY2UyMDM2NDBmOGNmLi5hODk0YjFhYjQ2ZjRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2FkanVzdF9mcmFncy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfYWRqdXN0X2ZyYWdzLmNcbkBAIC0xOCw2ICsxOCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3VwZGF0ZV9mcmFncyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRwcm9nID0gYnBmX29iamVjdF9fbmV4dF9wcm9ncmFtKG9iaiwgTlVMTCk7XG4rXHRBU1NFUlRfRVEoYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1wiKTtcbitcbiBcdGlmIChicGZfb2JqZWN0X19sb2FkKG9iaikpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfZGV2bWFwX2F0dGFjaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX2Rldm1hcF9hdHRhY2guY1xuaW5kZXggYThhYjA1MjE2YzM4NS4uZGZmNmIzZTcyNjZlZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9kZXZtYXBfYXR0YWNoLmNcbkBAIC0xNDYsNiArMTQ2LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfeGRwX3dpdGhfZGV2bWFwX2ZyYWdzX2hlbHBlcnModm9pZClcbiBcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInRlc3RfeGRwX3dpdGhfZGV2bWFwX2hlbHBlcnNfX29wZW5fYW5kX2xvYWRcIikpXG4gXHRcdHJldHVybjtcbiBcbitcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG1fZnJhZ3MpIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIEJQRl9GX1hEUF9IQVNfRlJBR1MsIFwiZnJhZ3MgaW4gcHJvZ3JhbSBmbGFnc1wiKTtcbitcdEFTU0VSVF9FUShicGZfcHJvZ3JhbV9fZmxhZ3Moc2tlbC1cdTAwM2Vwcm9ncy54ZHBfZHVtbXlfZG0pIFx1MDAyNiBCUEZfRl9YRFBfSEFTX0ZSQUdTLFxuK1x0XHQgIDAsIFwiZnJhZ3Mgbm90IGluIHByb2dyYW0gZmxhZ3NcIik7XG4rXG4gXHRkbV9mZF9mcmFncyA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnhkcF9kdW1teV9kbV9mcmFncyk7XG4gXHRtYXBfZmQgPSBicGZfbWFwX19mZChza2VsLVx1MDAzZW1hcHMuZG1fcG9ydHMpO1xuIFx0ZXJyID0gYnBmX3Byb2dfZ2V0X2luZm9fYnlfZmQoZG1fZmRfZnJhZ3MsIFx1MDAyNmluZm8sIFx1MDAyNmxlbik7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMveGRwX21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuaW5kZXggNWMzMTA1NGFkNGE0Yy4uMDQ3ZGZkYzMyMmEyZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3hkcF9tZXRhZGF0YS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy94ZHBfbWV0YWRhdGEuY1xuQEAgLTQwOCwxNCArNDA4LDE0IEBAIHZvaWQgdGVzdF94ZHBfbWV0YWRhdGEodm9pZClcbiBcbiBcdHByb2cgPSBicGZfb2JqZWN0X19maW5kX3Byb2dyYW1fYnlfbmFtZShicGZfb2JqLVx1MDAzZW9iaiwgXCJyeFwiKTtcbiBcdGJwZl9wcm9ncmFtX19zZXRfaWZpbmRleChwcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbitcdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MocHJvZywgYnBmX3Byb2dyYW1fX2ZsYWdzKHByb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdC8qIE1ha2Ugc3VyZSB3ZSBjYW4gbG9hZCBhIGRldi1ib3VuZCBwcm9ncmFtIHRoYXQgcGVyZm9ybXNcbiBcdCAqIFhEUF9SRURJUkVDVCBpbnRvIGEgZGV2bWFwLlxuIFx0ICovXG4gXHRuZXdfcHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJlZGlyZWN0XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KG5ld19wcm9nLCByeF9pZmluZGV4KTtcbi1cdGJwZl9wcm9ncmFtX19zZXRfZmxhZ3MobmV3X3Byb2csIEJQRl9GX1hEUF9ERVZfQk9VTkRfT05MWSk7XG4rXHRicGZfcHJvZ3JhbV9fc2V0X2ZsYWdzKG5ld19wcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MobmV3X3Byb2cpIHwgQlBGX0ZfWERQX0RFVl9CT1VORF9PTkxZKTtcbiBcbiBcdGlmICghQVNTRVJUX09LKHhkcF9tZXRhZGF0YV9fbG9hZChicGZfb2JqKSwgXCJsb2FkIHNrZWxldG9uXCIpKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbmluZGV4IDZkYjNiNTU1NWEyMmUuLmM1NTAxYjNmZGY0OGYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYveGRwX2h3X21ldGFkYXRhLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi94ZHBfaHdfbWV0YWRhdGEuY1xuQEAgLTg0NSw3ICs4NDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0cHJvZyA9IGJwZl9vYmplY3RfX2ZpbmRfcHJvZ3JhbV9ieV9uYW1lKGJwZl9vYmotXHUwMDNlb2JqLCBcInJ4XCIpO1xuIFx0YnBmX3Byb2dyYW1fX3NldF9pZmluZGV4KHByb2csIGlmaW5kZXgpO1xuLVx0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuK1x0YnBmX3Byb2dyYW1fX3NldF9mbGFncyhwcm9nLCBicGZfcHJvZ3JhbV9fZmxhZ3MocHJvZykgfCBCUEZfRl9YRFBfREVWX0JPVU5EX09OTFkpO1xuIFxuIFx0cHJpbnRmKFwibG9hZCBicGYgcHJvZ3JhbS4uLlxcblwiKTtcbiBcdHJldCA9IHhkcF9od19tZXRhZGF0YV9fbG9hZChicGZfb2JqKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjQ0OjMxLjQ1Njk1NDMzOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1Mjk5NDUxNDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBBbmFseXNpczogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIHBhdGNoIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgbm90IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZsYWcgZm9yIFN5emthbGxlciBmdXp6aW5nLiBUaGUgZmlsZXMgYWZmZWN0ZWQgYXJlIGFsbCB0dWNrZWQgYXdheSBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IOKAkyBgYnBmdG9vbGAsIGBsaWJicGZgLCBhbmQgYSBzbGV3IG9mIEJQRiBzZWxmLXRlc3RzLiBUaGF0IHNjcmVhbXMgXCJ1c2Vyc3BhY2UgdG9vbGluZ1wiIHRvIG1lLCBub3QgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eS5cblxuSSdtIG1ha2luZyBzdXJlIHRvIGJlIHRob3JvdWdoLCBob3dldmVyLiBUaGUgZmFjdCB0aGF0IGl0ICp0b3VjaGVzKiBhbnl0aGluZyBCUEYtcmVsYXRlZCB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBldmVuIGlmIGl0J3Mgbm90IGtlcm5lbC1zcGFjZSBjb2RlLiBUaGUgQlBGIHN1YnN5c3RlbSBpcyBwcmV0dHkgc2Vuc2l0aXZlLCBzbyBJJ20gZG91YmxlLWNoZWNraW5nLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGZ1enppbmcgY3JpdGVyaWEuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmeSB0aGF0IHBhdGNoZXMgbW9kaWZ5aW5nIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMsIGV0Yy4sIGFyZSB1c3VhbGx5IGEgXCJuby1nb1wiLiBUaGUga2V5IGlzOiBkb2VzIHRoaXMgcGF0Y2ggYWZmZWN0ICpyZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzKj8gSWYgaXQgZG9lc24ndCwgd2UgY2FuIHNraXAgaXQuXG5cbkFscmlnaHQsIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGZpbGUgbGlzdC4gSSBkb24ndCBzZWUgYW55dGhpbmcgbGlrZSBga2VybmVsL2AsIGBuZXQvYCwgYGRyaXZlcnMvYCwgYGZzL2AsIGBhcmNoL2AsIG9yIGBpbmNsdWRlL2AuIEFsbCB0aGUgZmlsZXMgYXJlIGRlZmluaXRpdmVseSB1bmRlciBgdG9vbHMvYC4gTm9uZSBvZiB0aGUgbGlzdGVkIGZpbGVzIGFyZSBwYXJ0IG9mIGB2bWxpbnV4YCBvciBhcmUga2VybmVsIG1vZHVsZXMuIFN5emthbGxlcidzIHByaW1hcnkgZm9jdXMgaXMgZnV6emluZyB0aGUga2VybmVsIHZpYSBzeXN0ZW0gY2FsbHMsIGFuZCB0aGlzIGRvZXNuJ3Qgc2VlbSB0byBpbXBhY3QgdGhhdC5cblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBiZSBjZXJ0YWluLiBOb3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGBmYWxzZWAuIE15IHJlYXNvbmluZyB3aWxsIGJlIGNsZWFyOiB0aGlzIHBhdGNoIGlzIGNvbmZpbmVkIHRvIHVzZXJzcGFjZSB0b29scywgc3BlY2lmaWNhbGx5IGBsaWJicGZgLCBgYnBmdG9vbGAsIGFuZCBCUEYgc2VsZi10ZXN0cyBpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5LCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIE5vIG5lZWQgdG8gZmxhZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMzMCwiT3V0cHV0VG9rZW5zIjo3MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE0OjUzOjQ0LjQ1MTQ3MTMwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgbGlicmFyaWVzLCB0b29scywgYW5kIHNlbGZ0ZXN0cyB1bmRlciB0b29scy8gKGJwZnRvb2wsIGxpYmJwZiwgYW5kIEJQRiBzZWxmdGVzdHMpIGFuZCBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIGxpYnJhcmllcywgdG9vbHMsIGFuZCBzZWxmdGVzdHMgdW5kZXIgdG9vbHMvIChicGZ0b29sLCBsaWJicGYsIGFuZCBCUEYgc2VsZnRlc3RzKSBhbmQgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxNDo1Mzo0NC40NTE0OTA0NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowc8lk8[1] Phase: Running StartedAt: 2026-08-31 14:53:56 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8lk8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 14:53:56 +0000 UTC FinishedAt: 2026-08-31 14:54:00 +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,}