Name: series-workflowv5psj Phase: Failed StartedAt: 2026-07-20 07:08:39 +0000 UTC FinishedAt: 2026-07-20 07:44:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5psj[0] Phase: Succeeded StartedAt: 2026-07-20 07:08:39 +0000 UTC FinishedAt: 2026-07-20 07:43:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5psj[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 07:08:39 +0000 UTC FinishedAt: 2026-07-20 07:43:57 +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+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2MxZWQ0ZWJmMzQxMzQyNGUyNTAwNjM4NGFhOTVmMmQ3ODJkNWZmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDA3OjQzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQzLi4zYTMwNWQxOTQwMTFkZSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuY1xuQEAgLTQwMDAsMTUgJiM0Mzs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4gXHRcdGkgJiM0Mzs9IHRpcGNfbGlzdF9kdW1wKFx1MDAyNnNrLVx1MDAzZXNrX3JlY2VpdmVfcXVldWUsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG4gXHR9XG4gXG4tXHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKSB7XG4tXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtza19iYWNrbG9nOlxcbiAgaGVhZCBcJiMzNDspO1xuLVx0XHRpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHNrLVx1MDAzZXNrX2JhY2tsb2cuaGVhZCwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX2JhY2tsb2cudGFpbCAhPSBzay1cdTAwM2Vza19iYWNrbG9nLmhlYWQpIHtcbi1cdFx0XHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7ICB0YWlsIFwmIzM0Oyk7XG4tXHRcdFx0aSAmIzQzOz0gdGlwY19za2JfZHVtcChzay1cdTAwM2Vza19iYWNrbG9nLnRhaWwsIGZhbHNlLFxuLVx0XHRcdFx0XHQgICBidWYgJiM0MzsgaSk7XG4tXHRcdH1cbi1cdH1cbiYjNDM7XHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKVxuJiM0MztcdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3NrX2JhY2tsb2c6IGxlbiA9ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgICBSRUFEX09OQ0Uoc2stXHUwMDNlc2tfYmFja2xvZy5sZW4pKTtcbiBcbiBcdHJldHVybiBpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuY1xuaW5kZXggN2QyOTMxNTIxZTBlYjkuLjM5OTUzOGQwYTM2OTZhIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdHJhY2UuY1xuQEAgLTE1OCw0OSAmIzQzOzE1OCwxNSBAQCBpbnQgdGlwY19za2JfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIG1vcmUsIGNoYXIgKmJ1ZilcbiAvKipcbiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZVxuICAqIEBsaXN0OiBsaXN0IG9mIHNrYnMgdG8gYmUgZHVtcGVkXG4tICogQG1vcmU6IGR1bXAgbW9yZT9cbi0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkIFx1MDAyNiB0YWlsIHNrYnNcbi0gKiAgICAgICAgLSB0cnVlOiBkdW1wIHRoZSBmaXJzdCBcdTAwMjYgbGFzdCA1IHNrYnNcbiYjNDM7ICogQG1vcmU6IHVudXNlZDsga2VwdCBmb3IgdHJhY2Vwb2ludCBBQkkgY29tcGF0aWJpbGl0eVxuICAqIEBidWY6IHJldHVybmVkIGJ1ZmZlciBvZiBkdW1wIGRhdGEgaW4gZm9ybWF0XG4gICovXG4gaW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxuIHtcbi1cdGludCBpID0gMDtcbi1cdHNpemVfdCBzeiA9IChtb3JlKSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjtcbi1cdHUzMiBjb3VudCwgbGVuO1xuLVx0c3RydWN0IHNrX2J1ZmYgKmhza2IsICp0c2tiLCAqc2tiLCAqdG1wO1xuLVxuLVx0aWYgKCFsaXN0KSB7XG4tXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYsIHN6LCBcJiMzNDsobnVsbClcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gaTtcbi1cdH1cbiYjNDM7XHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xuIFxuLVx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcbi1cdGkgJiM0Mzs9IHNjbnByaW50ZihidWYsIHN6LCBcJiMzNDtsZW4gPSAlZFxcblwmIzM0OywgbGVuKTtcbiYjNDM7XHRpZiAoIWxpc3QpXG4mIzQzO1x0XHRyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osIFwmIzM0OyhudWxsKVxcblwmIzM0Oyk7XG4gXG4tXHRpZiAoIWxlbilcbi1cdFx0cmV0dXJuIGk7XG4tXG4tXHRpZiAoIW1vcmUpIHtcbi1cdFx0aHNrYiA9IHNrYl9wZWVrKGxpc3QpO1xuLVx0XHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7ICBoZWFkIFwmIzM0Oyk7XG4tXHRcdGkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoaHNrYiwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbi1cdFx0aWYgKGxlbiBcdTAwM2UgMSkge1xuLVx0XHRcdHRza2IgPSBza2JfcGVla190YWlsKGxpc3QpO1xuLVx0XHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgIHRhaWwgXCYjMzQ7KTtcbi1cdFx0XHRpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGNvdW50ID0gMDtcbi1cdFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShsaXN0LCBza2IsIHRtcCkge1xuLVx0XHRcdGNvdW50JiM0MzsmIzQzOztcbi1cdFx0XHRpZiAoY291bnQgPT0gNilcbi1cdFx0XHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgIC5cXG4gIC5cXG5cJiMzNDspO1xuLVx0XHRcdGlmIChjb3VudCBcdTAwM2UgNSBcdTAwMjZcdTAwMjYgY291bnQgXHUwMDNjPSBsZW4gLSA1KVxuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0OyAgIyVkIFwmIzM0OywgY291bnQpO1xuLVx0XHRcdGkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2tiLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xuLVx0XHR9XG4tXHR9XG4tXHRyZXR1cm4gaTtcbiYjNDM7XHRyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osIFwmIzM0O2xlbiA9ICV1XFxuXCYjMzQ7LCBza2JfcXVldWVfbGVuX2xvY2tsZXNzKGxpc3QpKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0cmFjZSBkdW1waW5nIGZ1bmN0aW9ucyAodGlwY19za19kdW1wIGFuZCB0aXBjX2xpc3RfZHVtcCkgd2hpY2ggYXJlIHB1cmVseSBkZWNvcmF0aXZlIGFuZCB1c2VkIGZvciBkZWJ1Z2dpbmcvdHJhY2luZy4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNjMWVkNGViZjM0MTM0MjRlMjUwMDYzODRhYTk1ZjJkNzgyZDVmZmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAwNzo0MzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZDMuLjNhMzA1ZDE5NDAxMWRlIDEwMDY0NAotLS0gYS9uZXQvdGlwYy9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuYwpAQCAtNDAwMCwxNSAmIzQzOzQwMDAsOSBAQCBpbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1ZikKIAkJaSAmIzQzOz0gdGlwY19saXN0X2R1bXAoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKIAl9CiAKLQlpZiAoZHF1ZXVlcyAmYW1wOyBUSVBDX0RVTVBfU0tfQktMR1EpIHsKLQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7c2tfYmFja2xvZzpcbiAgaGVhZCAmIzM0Oyk7Ci0JCWkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2stJmd0O3NrX2JhY2tsb2cuaGVhZCwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKLQkJaWYgKHNrLSZndDtza19iYWNrbG9nLnRhaWwgIT0gc2stJmd0O3NrX2JhY2tsb2cuaGVhZCkgewotCQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7ICB0YWlsICYjMzQ7KTsKLQkJCWkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2stJmd0O3NrX2JhY2tsb2cudGFpbCwgZmFsc2UsCi0JCQkJCSAgIGJ1ZiAmIzQzOyBpKTsKLQkJfQotCX0KJiM0MzsJaWYgKGRxdWV1ZXMgJmFtcDsgVElQQ19EVU1QX1NLX0JLTEdRKQomIzQzOwkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7c2tfYmFja2xvZzogbGVuID0gJWRcbiYjMzQ7LAomIzQzOwkJCQkgICAgICAgUkVBRF9PTkNFKHNrLSZndDtza19iYWNrbG9nLmxlbikpOwogCiAJcmV0dXJuIGk7CiB9CmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuYwppbmRleCA3ZDI5MzE1MjFlMGViOS4uMzk5NTM4ZDBhMzY5NmEgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3RyYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdHJhY2UuYwpAQCAtMTU4LDQ5ICYjNDM7MTU4LDE1IEBAIGludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKQogLyoqCiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZQogICogQGxpc3Q6IGxpc3Qgb2Ygc2ticyB0byBiZSBkdW1wZWQKLSAqIEBtb3JlOiBkdW1wIG1vcmU/Ci0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkICZhbXA7IHRhaWwgc2ticwotICogICAgICAgIC0gdHJ1ZTogZHVtcCB0aGUgZmlyc3QgJmFtcDsgbGFzdCA1IHNrYnMKJiM0MzsgKiBAbW9yZTogdW51c2VkOyBrZXB0IGZvciB0cmFjZXBvaW50IEFCSSBjb21wYXRpYmlsaXR5CiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdAogICovCiBpbnQgdGlwY19saXN0X2R1bXAoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgYm9vbCBtb3JlLCBjaGFyICpidWYpCiB7Ci0JaW50IGkgPSAwOwotCXNpemVfdCBzeiA9IChtb3JlKSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjsKLQl1MzIgY291bnQsIGxlbjsKLQlzdHJ1Y3Qgc2tfYnVmZiAqaHNrYiwgKnRza2IsICpza2IsICp0bXA7Ci0KLQlpZiAoIWxpc3QpIHsKLQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7KG51bGwpXG4mIzM0Oyk7Ci0JCXJldHVybiBpOwotCX0KJiM0MzsJc2l6ZV90IHN6ID0gbW9yZSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjsKIAotCWxlbiA9IHNrYl9xdWV1ZV9sZW4obGlzdCk7Ci0JaSAmIzQzOz0gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7bGVuID0gJWRcbiYjMzQ7LCBsZW4pOwomIzQzOwlpZiAoIWxpc3QpCiYjNDM7CQlyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7KG51bGwpXG4mIzM0Oyk7CiAKLQlpZiAoIWxlbikKLQkJcmV0dXJuIGk7Ci0KLQlpZiAoIW1vcmUpIHsKLQkJaHNrYiA9IHNrYl9wZWVrKGxpc3QpOwotCQlpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgJiMzNDsgIGhlYWQgJiMzNDspOwotCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKGhza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7Ci0JCWlmIChsZW4gJmd0OyAxKSB7Ci0JCQl0c2tiID0gc2tiX3BlZWtfdGFpbChsaXN0KTsKLQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgdGFpbCAmIzM0Oyk7Ci0JCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7Ci0JCX0KLQl9IGVsc2UgewotCQljb3VudCA9IDA7Ci0JCXNrYl9xdWV1ZV93YWxrX3NhZmUobGlzdCwgc2tiLCB0bXApIHsKLQkJCWNvdW50JiM0MzsmIzQzOzsKLQkJCWlmIChjb3VudCA9PSA2KQotCQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgLlxuICAuXG4mIzM0Oyk7Ci0JCQlpZiAoY291bnQgJmd0OyA1ICZhbXA7JmFtcDsgY291bnQgJmx0Oz0gbGVuIC0gNSkKLQkJCQljb250aW51ZTsKLQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgIyVkICYjMzQ7LCBjb3VudCk7Ci0JCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHNrYiwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKLQkJfQotCX0KLQlyZXR1cm4gaTsKJiM0MzsJcmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCAmIzM0O2xlbiA9ICV1XG4mIzM0Oywgc2tiX3F1ZXVlX2xlbl9sb2NrbGVzcyhsaXN0KSk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU2ltcGxpZnlpbmcgVElQQyBTb2NrZXQgYW5kIFNLQiBEdW1wcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0aXBjX3NrX2R1bXBgIGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgYW5kIGB0aXBjX2xpc3RfZHVtcGAgaW4gYG5ldC90aXBjL3RyYWNlLmNgLiBCb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBzY3JlYW0gJiMzNDtkZWJ1Z2dpbmcgYW5kIHRyYWNpbmcmIzM0OyB0byBtZSwgd2hpY2ggaXMgdHlwaWNhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIGR1bXBzIGNvbWUgaW50byBwbGF5LiBJdCBsb29rcyBsaWtlIGB0aXBjX3NrX2R1bXBgIGlzIHNwZWNpZmljYWxseSBmb3Igc29ja2V0IHN0YXRlIGluZm9ybWF0aW9uLCB3aGlsZSBgdGlwY19saXN0X2R1bXBgIGlzIGRlYWxpbmcgd2l0aCBUSVBDJiMzOTtzIHNrYiBsaXN0cyBvciBxdWV1ZXMuCgpUaGUgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHNpbXBsaWZ5aW5nIHRoZSBkdW1waW5nIHJvdXRpbmVzLiBJbnN0ZWFkIG9mIHNob3dpbmcgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGluZGl2aWR1YWwgc2ticywgdGhleSYjMzk7cmUganVzdCBwcmludGluZyB0aGUgb3ZlcmFsbCBsZW5ndGggbm93LiBTbWFydCBtb3ZlOyBpdCBzdHJlYW1saW5lcyB0aGUgb3V0cHV0IGNvbnNpZGVyYWJseS4gV2UmIzM5O3JlIHRhbGtpbmcgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMgaGVyZSwgYWxsIGZvciB0cmFjZSBkYXRhLCB3aGljaCBpcyBjb21wbGV0ZWx5IGZpbmUgaW4gdGhpcyBjb250ZXh0LgoKQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgY29uZmlybSB0aGUgdXNhZ2UgbG9jYXRpb25zIG9mIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLiBBaCwgcmlnaHQsIGB0aXBjX3NrX2R1bXBgIGlzIGluZGVlZCBpbiBgbmV0L3RpcGMvc29ja2V0LmNgLCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpcyBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIFNlZW1zIGFjY3VyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfZHVtcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz0yMzM4PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM3Mi1cdFx0ZWxzZSBpZiAoc2tfcm1lbV9hbGxvY19nZXQoc2spICYjNDM7IHNrYi1cdTAwM2V0cnVlc2l6ZSBcdTAwM2U9IGxpbWl0KSB7XG5uZXQvdGlwYy9zb2NrZXQuYzoyMzczOlx0XHRcdHRyYWNlX3RpcGNfc2tfZHVtcChzaywgc2tiLCBUSVBDX0RVTVBfQUxMLFxubmV0L3RpcGMvc29ja2V0LmMtMjM3NC1cdFx0XHRcdFx0ICAgXCYjMzQ7ZXJyX292ZXJsb2FkMiFcJiMzNDspO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0MzA9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NjMtXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDY0Olx0XHR0cmFjZV90aXBjX3NrX2R1bXAoc2ssIHNrYiwgVElQQ19EVU1QX1NLX0JLTEdRLCBcJiMzNDtlcnJfb3ZlcmxvYWQhXCYjMzQ7KTtcbm5ldC90aXBjL3NvY2tldC5jLTI0NjUtXHRcdC8qIE92ZXJsb2FkID1cdTAwM2UgcmVqZWN0IG1lc3NhZ2UgYmFjayB0byBzZW5kZXIgKi9cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zOTIxPWJvb2wgdGlwY19za19vdmVybGltaXQyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTI5LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MzkzMDogKiB0aXBjX3NrX2R1bXAgLSBkdW1wIFRJUEMgc29ja2V0XG5uZXQvdGlwYy9zb2NrZXQuYy0zOTMxLSAqIEBzazogdGlwYyBzayB0byBiZSBkdW1wZWRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTM5LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6Mzk0MDppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zilcbm5ldC90aXBjL3NvY2tldC5jLTM5NDEte1xuLS1cbm5ldC90aXBjL3RyYWNlLmg9MTMwPWludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oOjEzMTppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oLTEzMi1pbnQgdGlwY19saW5rX2R1bXAoc3RydWN0IHRpcGNfbGluayAqbCwgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG4tLVxubmV0L3RpcGMvdHJhY2UuaD0xODg9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX3NrX2NsYXNzLFxuLS1cbm5ldC90aXBjL3RyYWNlLmgtMjA0LVx0XHRfX2VudHJ5LVx1MDAzZXBvcnRpZCA9IHRpcGNfc29ja19nZXRfcG9ydGlkKHNrKTtcbm5ldC90aXBjL3RyYWNlLmg6MjA1Olx0XHR0aXBjX3NrX2R1bXAoc2ssIGRxdWV1ZXMsIF9fZ2V0X3N0cihidWYpKTtcbm5ldC90aXBjL3RyYWNlLmgtMjA2LVx0XHRpZiAoc2tiKVxuLS1cbm5ldC90aXBjL3RyYWNlLmg9MjE3PURFRklORV9FVkVOVF9DT05ESVRJT04odGlwY19za19jbGFzcywgbmFtZSwgXFxcbi0tXG5uZXQvdGlwYy90cmFjZS5oLTIyMS1cdFRQX0NPTkRJVElPTih0aXBjX3NrX2ZpbHRlcmluZyhzaykpKVxubmV0L3RpcGMvdHJhY2UuaDoyMjI6REVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX2R1bXApO1xubmV0L3RpcGMvdHJhY2UuaC0yMjMtREVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX2NyZWF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBEdW1wcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgdGlwY19za19kdW1wYCBhbmQgYHRpcGNfbGlzdF9kdW1wYCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgZXhjbHVzaXZlbHkgdGllZCB0byB0cmFjaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0cmFjZV90aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19za19jbGFzc2AgZm9yIHRoZSBmb3JtZXIsIGFuZCBnZW5lcmFsIHRyYWNlIGV2ZW50cyBmb3IgdGhlIGxhdHRlci4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2YgdGhlaXIgdXNhZ2UgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgdGlwY19saXN0X2R1bXBgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZSwgc2luY2UgYm90aCBhcmUgdXNlZCB3aXRoIHRyYWNlIGV2ZW50cywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgdXNlZCB3aXRoIHRyYWNlIGV2ZW50cyBtZWFucyB0aGV5IGFyZSBub3QgY29yZSB0byB0aGUgc29ja2V0IG9wZXJhdGlvbnMuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyB0ZWxsaW5nIHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfbGlzdF9kdW1wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2xpbmsuYz0xMTk1PXN0YXRpYyBib29sIGxpbmtfcmV0cmFuc21pdF9mYWlsdXJlKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHN0cnVjdCB0aXBjX2xpbmsgKnIsXG4tLVxubmV0L3RpcGMvbGluay5jLTEyMjQtXG5uZXQvdGlwYy9saW5rLmM6MTIyNTpcdHRyYWNlX3RpcGNfbGlzdF9kdW1wKFx1MDAyNmwtXHUwMDNldHJhbnNtcSwgdHJ1ZSwgXCYjMzQ7cmV0cmFucyBmYWlsdXJlIVwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmMtMTIyNi1cdHRyYWNlX3RpcGNfbGlua19kdW1wKGwsIFRJUENfRFVNUF9OT05FLCBcJiMzNDtyZXRyYW5zIGZhaWx1cmUhXCYjMzQ7KTtcbi0tXG5uZXQvdGlwYy9saW5rLmM9Mjg5Nz1pbnQgdGlwY19saW5rX2R1bXAoc3RydWN0IHRpcGNfbGluayAqbCwgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk1OS1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3RyYW5zbXE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk2MDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bC1cdTAwM2V0cmFuc21xLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xubmV0L3RpcGMvbGluay5jLTI5NjEtXHR9XG4tLVxubmV0L3RpcGMvbGluay5jLTI5NjktXHRcdFx0ICAgICAgIGwtXHUwMDNlYmFja2xvZ1tUSVBDX1NZU1RFTV9JTVBPUlRBTkNFXS5sZW4pO1xubmV0L3RpcGMvbGluay5jOjI5NzA6XHRcdGkgJiM0Mzs9IHRpcGNfbGlzdF9kdW1wKFx1MDAyNmwtXHUwMDNlYmFja2xvZ3EsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk3MS1cdH1cbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk3My1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O2RlZmVyZHE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk3NDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bC1cdTAwM2VkZWZlcmRxLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xubmV0L3RpcGMvbGluay5jLTI5NzUtXHR9XG4tLVxubmV0L3RpcGMvbGluay5jLTI5NzctXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtpbnB1dHE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk3ODpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAobC1cdTAwM2VpbnB1dHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk3OS1cdH1cbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk4MS1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3dha2V1cDogXCYjMzQ7KTtcbm5ldC90aXBjL2xpbmsuYzoyOTgyOlx0XHRpICYjNDM7PSB0aXBjX2xpc3RfZHVtcChcdTAwMjZsLVx1MDAzZXdha2V1cHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk4My1cdH1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9MzA5Nz1pbnQgdGlwY19ub2RlX2R1bXAoc3RydWN0IHRpcGNfbm9kZSAqbiwgYm9vbCBtb3JlLCBjaGFyICpidWYpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTMxMjgtXHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7IGlucHV0cTogXCYjMzQ7KTtcbm5ldC90aXBjL25vZGUuYzozMTI5Olx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bi1cdTAwM2VsaW5rc1swXS5pbnB1dHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9ub2RlLmMtMzEzMC1cbi0tXG5uZXQvdGlwYy9ub2RlLmMtMzEzNy1cdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgaW5wdXRxOiBcJiMzNDspO1xubmV0L3RpcGMvbm9kZS5jOjMxMzg6XHRpICYjNDM7PSB0aXBjX2xpc3RfZHVtcChcdTAwMjZuLVx1MDAzZWxpbmtzWzFdLmlucHV0cSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbm5ldC90aXBjL25vZGUuYy0zMTM5LVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTM5NDA9aW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzk5NC1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3NrX3dyaXRlX3F1ZXVlOiBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6Mzk5NTpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0zOTk2LVx0fVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTM5OTktXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtza19yZWNlaXZlX3F1ZXVlOiBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NDAwMDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbm5ldC90aXBjL3NvY2tldC5jLTQwMDEtXHR9XG4tLVxubmV0L3RpcGMvdHJhY2UuYz01Mz1pbnQgdGlwY19za2JfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIG1vcmUsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvdGlwYy90cmFjZS5jLTE1OC0vKipcbm5ldC90aXBjL3RyYWNlLmM6MTU5OiAqIHRpcGNfbGlzdF9kdW1wIC0gZHVtcCBUSVBDIHNrYiBsaXN0L3F1ZXVlXG5uZXQvdGlwYy90cmFjZS5jLTE2MC0gKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxuLS1cbm5ldC90aXBjL3RyYWNlLmMtMTYzLSAqL1xubmV0L3RpcGMvdHJhY2UuYzoxNjQ6aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxubmV0L3RpcGMvdHJhY2UuYy0xNjUte1xuLS1cbm5ldC90aXBjL3RyYWNlLmg9MTI5PWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcbm5ldC90aXBjL3RyYWNlLmg6MTMwOmludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oLTEzMS1pbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG4tLVxubmV0L3RpcGMvdHJhY2UuaD0xNjM9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX2xpc3RfY2xhc3MsXG4tLVxubmV0L3RpcGMvdHJhY2UuaC0xNzUtXHRcdF9fYXNzaWduX3N0cihoZWFkZXIpO1xubmV0L3RpcGMvdHJhY2UuaDoxNzY6XHRcdHRpcGNfbGlzdF9kdW1wKGxpc3QsIG1vcmUsIF9fZ2V0X3N0cihidWYpKTtcbm5ldC90aXBjL3RyYWNlLmgtMTc3LVx0KSxcbi0tXG5uZXQvdGlwYy90cmFjZS5oPTE4Mz1ERUZJTkVfRVZFTlQodGlwY19saXN0X2NsYXNzLCBuYW1lLCBcXFxuLS1cbm5ldC90aXBjL3RyYWNlLmgtMTg1LVx0VFBfQVJHUyhsaXN0LCBtb3JlLCBoZWFkZXIpKVxubmV0L3RpcGMvdHJhY2UuaDoxODY6REVGSU5FX0xJU1RfRVZFTlQodGlwY19saXN0X2R1bXApO1xubmV0L3RpcGMvdHJhY2UuaC0xODctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5MQoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGUgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXIgdGhlc2UgYHRpcGNfc2tfZHVtcGAgYW5kIGB0aXBjX2xpc3RfZHVtcGAgZnVuY3Rpb25zIGFyZSAqc29sZWx5KiBmb3IgdHJhY2luZyBhbmQgc3RhdGUgZHVtcGluZy4gVGhleSYjMzk7cmUgdXNlZCBieSB0aGUgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSAoYHRyYWNlX3RpcGNfc2tfZHVtcGAsIGV0Yy4pIGFuZCBwcm92aWRlIGluZm9ybWF0aW9uLCBidXQgdGhleSBkb24mIzM5O3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSBjb3JlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIG9mIHRoZSBrZXJuZWwmIzM5O3MgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uLiBHaXZlbiB0aGVpciBzcGVjaWZpYyBwdXJwb3NlLCB0aGVyZSYjMzk7cyBubyBnb29kIHJlYXNvbiB0byBzdWJqZWN0IHRoZW0gdG8gZnV6emluZy4gVGhleSB3b3VsZG4mIzM5O3QgcmV2ZWFsIGFueSBmdW5jdGlvbmFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBvciBwcm9jZXNzIGNvbW11bmljYXRpb24uIFRodXMsIEkmIzM5O2xsIGNvbmZpZGVudGx5IG1hcmsgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgYXMgYGZhbHNlYCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBzaW1wbHkgbm90IHJlbGV2YW50IHRvIHRoYXQgdGVzdGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA3OjQzOjIzLjIwMTYxOTIxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTgzMTAxNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MjMuMjAxNjMwMzE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk0NzM3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjYzFlZDRlYmYzNDEzNDI0ZTI1MDA2Mzg0YWE5NWYyZDc4MmQ1ZmZhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDA3OjQzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkMy4uM2EzMDVkMTk0MDExZGUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvc29ja2V0LmNcXG4rKysgYi9uZXQvdGlwYy9zb2NrZXQuY1xcbkBAIC00MDAwLDE1ICs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuIFxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlLCBmYWxzZSwgYnVmICsgaSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChkcXVldWVzIFxcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKSB7XFxuLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX2JhY2tsb2c6XFxcXG4gIGhlYWQgXFxcIik7XFxuLVxcdFxcdGkgKz0gdGlwY19za2JfZHVtcChzay1cXHUwMDNlc2tfYmFja2xvZy5oZWFkLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdGlmIChzay1cXHUwMDNlc2tfYmFja2xvZy50YWlsICE9IHNrLVxcdTAwM2Vza19iYWNrbG9nLmhlYWQpIHtcXG4tXFx0XFx0XFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwiICB0YWlsIFxcXCIpO1xcbi1cXHRcXHRcXHRpICs9IHRpcGNfc2tiX2R1bXAoc2stXFx1MDAzZXNrX2JhY2tsb2cudGFpbCwgZmFsc2UsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGJ1ZiArIGkpO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4rXFx0aWYgKGRxdWV1ZXMgXFx1MDAyNiBUSVBDX0RVTVBfU0tfQktMR1EpXFxuK1xcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX2JhY2tsb2c6IGxlbiA9ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgUkVBRF9PTkNFKHNrLVxcdTAwM2Vza19iYWNrbG9nLmxlbikpO1xcbiBcXG4gXFx0cmV0dXJuIGk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdHJhY2UuYyBiL25ldC90aXBjL3RyYWNlLmNcXG5pbmRleCA3ZDI5MzE1MjFlMGViOS4uMzk5NTM4ZDBhMzY5NmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xcbisrKyBiL25ldC90aXBjL3RyYWNlLmNcXG5AQCAtMTU4LDQ5ICsxNTgsMTUgQEAgaW50IHRpcGNfc2tiX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBtb3JlLCBjaGFyICpidWYpXFxuIC8qKlxcbiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZVxcbiAgKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxcbi0gKiBAbW9yZTogZHVtcCBtb3JlP1xcbi0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkIFxcdTAwMjYgdGFpbCBza2JzXFxuLSAqICAgICAgICAtIHRydWU6IGR1bXAgdGhlIGZpcnN0IFxcdTAwMjYgbGFzdCA1IHNrYnNcXG4rICogQG1vcmU6IHVudXNlZDsga2VwdCBmb3IgdHJhY2Vwb2ludCBBQkkgY29tcGF0aWJpbGl0eVxcbiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdFxcbiAgKi9cXG4gaW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbiB7XFxuLVxcdGludCBpID0gMDtcXG4tXFx0c2l6ZV90IHN6ID0gKG1vcmUpID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xcbi1cXHR1MzIgY291bnQsIGxlbjtcXG4tXFx0c3RydWN0IHNrX2J1ZmYgKmhza2IsICp0c2tiLCAqc2tiLCAqdG1wO1xcbi1cXG4tXFx0aWYgKCFsaXN0KSB7XFxuLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1Ziwgc3osIFxcXCIobnVsbClcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gaTtcXG4tXFx0fVxcbitcXHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xcbiBcXG4tXFx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcXG4tXFx0aSArPSBzY25wcmludGYoYnVmLCBzeiwgXFxcImxlbiA9ICVkXFxcXG5cXFwiLCBsZW4pO1xcbitcXHRpZiAoIWxpc3QpXFxuK1xcdFxcdHJldHVybiBzY25wcmludGYoYnVmLCBzeiwgXFxcIihudWxsKVxcXFxuXFxcIik7XFxuIFxcbi1cXHRpZiAoIWxlbilcXG4tXFx0XFx0cmV0dXJuIGk7XFxuLVxcbi1cXHRpZiAoIW1vcmUpIHtcXG4tXFx0XFx0aHNrYiA9IHNrYl9wZWVrKGxpc3QpO1xcbi1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIGhlYWQgXFxcIik7XFxuLVxcdFxcdGkgKz0gdGlwY19za2JfZHVtcChoc2tiLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdGlmIChsZW4gXFx1MDAzZSAxKSB7XFxuLVxcdFxcdFxcdHRza2IgPSBza2JfcGVla190YWlsKGxpc3QpO1xcbi1cXHRcXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIHRhaWwgXFxcIik7XFxuLVxcdFxcdFxcdGkgKz0gdGlwY19za2JfZHVtcCh0c2tiLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0Y291bnQgPSAwO1xcbi1cXHRcXHRza2JfcXVldWVfd2Fsa19zYWZlKGxpc3QsIHNrYiwgdG1wKSB7XFxuLVxcdFxcdFxcdGNvdW50Kys7XFxuLVxcdFxcdFxcdGlmIChjb3VudCA9PSA2KVxcbi1cXHRcXHRcXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIC5cXFxcbiAgLlxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlmIChjb3VudCBcXHUwMDNlIDUgXFx1MDAyNlxcdTAwMjYgY291bnQgXFx1MDAzYz0gbGVuIC0gNSlcXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcIiAgIyVkIFxcXCIsIGNvdW50KTtcXG4tXFx0XFx0XFx0aSArPSB0aXBjX3NrYl9kdW1wKHNrYiwgZmFsc2UsIGJ1ZiArIGkpO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGk7XFxuK1xcdHJldHVybiBzY25wcmludGYoYnVmLCBzeiwgXFxcImxlbiA9ICV1XFxcXG5cXFwiLCBza2JfcXVldWVfbGVuX2xvY2tsZXNzKGxpc3QpKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0MzoyNC4wMjIyMzMxNDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMzYyNDcyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzFlZDRlYmYzNDEzNDI0ZTI1MDA2Mzg0YWE5NWYyZDc4MmQ1ZmZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMDc6NDM6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9zb2NrZXQuYyBiL25ldC90aXBjL3NvY2tldC5jXG5pbmRleCBlNTY0MzQxZTAyMTZkMy4uM2EzMDVkMTk0MDExZGUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC00MDAwLDE1ICs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4gXHRcdGkgKz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiArIGkpO1xuIFx0fVxuIFxuLVx0aWYgKGRxdWV1ZXMgXHUwMDI2IFRJUENfRFVNUF9TS19CS0xHUSkge1xuLVx0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwic2tfYmFja2xvZzpcXG4gIGhlYWQgXCIpO1xuLVx0XHRpICs9IHRpcGNfc2tiX2R1bXAoc2stXHUwMDNlc2tfYmFja2xvZy5oZWFkLCBmYWxzZSwgYnVmICsgaSk7XG4tXHRcdGlmIChzay1cdTAwM2Vza19iYWNrbG9nLnRhaWwgIT0gc2stXHUwMDNlc2tfYmFja2xvZy5oZWFkKSB7XG4tXHRcdFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcIiAgdGFpbCBcIik7XG4tXHRcdFx0aSArPSB0aXBjX3NrYl9kdW1wKHNrLVx1MDAzZXNrX2JhY2tsb2cudGFpbCwgZmFsc2UsXG4tXHRcdFx0XHRcdCAgIGJ1ZiArIGkpO1xuLVx0XHR9XG4tXHR9XG4rXHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKVxuK1x0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwic2tfYmFja2xvZzogbGVuID0gJWRcXG5cIixcbitcdFx0XHRcdCAgICAgICBSRUFEX09OQ0Uoc2stXHUwMDNlc2tfYmFja2xvZy5sZW4pKTtcbiBcbiBcdHJldHVybiBpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuY1xuaW5kZXggN2QyOTMxNTIxZTBlYjkuLjM5OTUzOGQwYTM2OTZhIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xuKysrIGIvbmV0L3RpcGMvdHJhY2UuY1xuQEAgLTE1OCw0OSArMTU4LDE1IEBAIGludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxuIC8qKlxuICAqIHRpcGNfbGlzdF9kdW1wIC0gZHVtcCBUSVBDIHNrYiBsaXN0L3F1ZXVlXG4gICogQGxpc3Q6IGxpc3Qgb2Ygc2ticyB0byBiZSBkdW1wZWRcbi0gKiBAbW9yZTogZHVtcCBtb3JlP1xuLSAqICAgICAgICAtIGZhbHNlOiBkdW1wIG9ubHkgdGhlIGhlYWQgXHUwMDI2IHRhaWwgc2tic1xuLSAqICAgICAgICAtIHRydWU6IGR1bXAgdGhlIGZpcnN0IFx1MDAyNiBsYXN0IDUgc2tic1xuKyAqIEBtb3JlOiB1bnVzZWQ7IGtlcHQgZm9yIHRyYWNlcG9pbnQgQUJJIGNvbXBhdGliaWxpdHlcbiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdFxuICAqL1xuIGludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1ZilcbiB7XG4tXHRpbnQgaSA9IDA7XG4tXHRzaXplX3Qgc3ogPSAobW9yZSkgPyBMSVNUX0xNQVggOiBMSVNUX0xNSU47XG4tXHR1MzIgY291bnQsIGxlbjtcbi1cdHN0cnVjdCBza19idWZmICpoc2tiLCAqdHNrYiwgKnNrYiwgKnRtcDtcbi1cbi1cdGlmICghbGlzdCkge1xuLVx0XHRpICs9IHNjbnByaW50ZihidWYsIHN6LCBcIihudWxsKVxcblwiKTtcbi1cdFx0cmV0dXJuIGk7XG4tXHR9XG4rXHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xuIFxuLVx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcbi1cdGkgKz0gc2NucHJpbnRmKGJ1Ziwgc3osIFwibGVuID0gJWRcXG5cIiwgbGVuKTtcbitcdGlmICghbGlzdClcbitcdFx0cmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCBcIihudWxsKVxcblwiKTtcbiBcbi1cdGlmICghbGVuKVxuLVx0XHRyZXR1cm4gaTtcbi1cbi1cdGlmICghbW9yZSkge1xuLVx0XHRoc2tiID0gc2tiX3BlZWsobGlzdCk7XG4tXHRcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXCIgIGhlYWQgXCIpO1xuLVx0XHRpICs9IHRpcGNfc2tiX2R1bXAoaHNrYiwgZmFsc2UsIGJ1ZiArIGkpO1xuLVx0XHRpZiAobGVuIFx1MDAzZSAxKSB7XG4tXHRcdFx0dHNrYiA9IHNrYl9wZWVrX3RhaWwobGlzdCk7XG4tXHRcdFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcIiAgdGFpbCBcIik7XG4tXHRcdFx0aSArPSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgKyBpKTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0Y291bnQgPSAwO1xuLVx0XHRza2JfcXVldWVfd2Fsa19zYWZlKGxpc3QsIHNrYiwgdG1wKSB7XG4tXHRcdFx0Y291bnQrKztcbi1cdFx0XHRpZiAoY291bnQgPT0gNilcbi1cdFx0XHRcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXCIgIC5cXG4gIC5cXG5cIik7XG4tXHRcdFx0aWYgKGNvdW50IFx1MDAzZSA1IFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2M9IGxlbiAtIDUpXG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwiICAjJWQgXCIsIGNvdW50KTtcbi1cdFx0XHRpICs9IHRpcGNfc2tiX2R1bXAoc2tiLCBmYWxzZSwgYnVmICsgaSk7XG4tXHRcdH1cbi1cdH1cbi1cdHJldHVybiBpO1xuK1x0cmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCBcImxlbiA9ICV1XFxuXCIsIHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MobGlzdCkpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA3OjQzOjI0LjAyMjIzNjA4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzkwNTk0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU2ltcGxpZnlpbmcgVElQQyBTb2NrZXQgYW5kIFNLQiBEdW1wcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRpcGNfc2tfZHVtcGAgaW4gYG5ldC90aXBjL3NvY2tldC5jYCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIHNjcmVhbSBcImRlYnVnZ2luZyBhbmQgdHJhY2luZ1wiIHRvIG1lLCB3aGljaCBpcyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgZHVtcHMgY29tZSBpbnRvIHBsYXkuIEl0IGxvb2tzIGxpa2UgYHRpcGNfc2tfZHVtcGAgaXMgc3BlY2lmaWNhbGx5IGZvciBzb2NrZXQgc3RhdGUgaW5mb3JtYXRpb24sIHdoaWxlIGB0aXBjX2xpc3RfZHVtcGAgaXMgZGVhbGluZyB3aXRoIFRJUEMncyBza2IgbGlzdHMgb3IgcXVldWVzLlxuXG5UaGUgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHNpbXBsaWZ5aW5nIHRoZSBkdW1waW5nIHJvdXRpbmVzLiBJbnN0ZWFkIG9mIHNob3dpbmcgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGluZGl2aWR1YWwgc2ticywgdGhleSdyZSBqdXN0IHByaW50aW5nIHRoZSBvdmVyYWxsIGxlbmd0aCBub3cuIFNtYXJ0IG1vdmU7IGl0IHN0cmVhbWxpbmVzIHRoZSBvdXRwdXQgY29uc2lkZXJhYmx5LiBXZSdyZSB0YWxraW5nIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzIGhlcmUsIGFsbCBmb3IgdHJhY2UgZGF0YSwgd2hpY2ggaXMgY29tcGxldGVseSBmaW5lIGluIHRoaXMgY29udGV4dC5cblxuQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgY29uZmlybSB0aGUgdXNhZ2UgbG9jYXRpb25zIG9mIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLiBBaCwgcmlnaHQsIGB0aXBjX3NrX2R1bXBgIGlzIGluZGVlZCBpbiBgbmV0L3RpcGMvc29ja2V0LmNgLCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpcyBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIFNlZW1zIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODEwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MjkuMDYxMjk4Mjk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDYzNDE5NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19kdW1wXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTIzMzg9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzNzItXFx0XFx0ZWxzZSBpZiAoc2tfcm1lbV9hbGxvY19nZXQoc2spICsgc2tiLVxcdTAwM2V0cnVlc2l6ZSBcXHUwMDNlPSBsaW1pdCkge1xcbm5ldC90aXBjL3NvY2tldC5jOjIzNzM6XFx0XFx0XFx0dHJhY2VfdGlwY19za19kdW1wKHNrLCBza2IsIFRJUENfRFVNUF9BTEwsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM3NC1cXHRcXHRcXHRcXHRcXHQgICBcXFwiZXJyX292ZXJsb2FkMiFcXFwiKTtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MzA9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ2My1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDY0OlxcdFxcdHRyYWNlX3RpcGNfc2tfZHVtcChzaywgc2tiLCBUSVBDX0RVTVBfU0tfQktMR1EsIFxcXCJlcnJfb3ZlcmxvYWQhXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjQ2NS1cXHRcXHQvKiBPdmVybG9hZCA9XFx1MDAzZSByZWplY3QgbWVzc2FnZSBiYWNrIHRvIHNlbmRlciAqL1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzkyMT1ib29sIHRpcGNfc2tfb3ZlcmxpbWl0MihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTI5LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjM5MzA6ICogdGlwY19za19kdW1wIC0gZHVtcCBUSVBDIHNvY2tldFxcbm5ldC90aXBjL3NvY2tldC5jLTM5MzEtICogQHNrOiB0aXBjIHNrIHRvIGJlIGR1bXBlZFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzkzOS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzozOTQwOmludCB0aXBjX3NrX2R1bXAoc3RydWN0IHNvY2sgKnNrLCB1MTYgZHF1ZXVlcywgY2hhciAqYnVmKVxcbm5ldC90aXBjL3NvY2tldC5jLTM5NDEte1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0xMzA9aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcXG5uZXQvdGlwYy90cmFjZS5oOjEzMTppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XFxubmV0L3RpcGMvdHJhY2UuaC0xMzItaW50IHRpcGNfbGlua19kdW1wKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHUxNiBkcXVldWVzLCBjaGFyICpidWYpO1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0xODg9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX3NrX2NsYXNzLFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuaC0yMDQtXFx0XFx0X19lbnRyeS1cXHUwMDNlcG9ydGlkID0gdGlwY19zb2NrX2dldF9wb3J0aWQoc2spO1xcbm5ldC90aXBjL3RyYWNlLmg6MjA1OlxcdFxcdHRpcGNfc2tfZHVtcChzaywgZHF1ZXVlcywgX19nZXRfc3RyKGJ1ZikpO1xcbm5ldC90aXBjL3RyYWNlLmgtMjA2LVxcdFxcdGlmIChza2IpXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oPTIxNz1ERUZJTkVfRVZFTlRfQ09ORElUSU9OKHRpcGNfc2tfY2xhc3MsIG5hbWUsIFxcXFxcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmgtMjIxLVxcdFRQX0NPTkRJVElPTih0aXBjX3NrX2ZpbHRlcmluZyhzaykpKVxcbm5ldC90aXBjL3RyYWNlLmg6MjIyOkRFRklORV9TS19FVkVOVF9GSUxURVIodGlwY19za19kdW1wKTtcXG5uZXQvdGlwYy90cmFjZS5oLTIyMy1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfY3JlYXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MzQuMjA3NjUwNDA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5Mjg0NTU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVElQQyBTb2NrZXQgRHVtcHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGV5J3JlIGV4Y2x1c2l2ZWx5IHRpZWQgdG8gdHJhY2luZywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHJhY2VfdGlwY19za19kdW1wYCBhbmQgYHRpcGNfc2tfY2xhc3NgIGZvciB0aGUgZm9ybWVyLCBhbmQgZ2VuZXJhbCB0cmFjZSBldmVudHMgZm9yIHRoZSBsYXR0ZXIuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2YgdGhlaXIgdXNhZ2UgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgdGlwY19saXN0X2R1bXBgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLCBzaW5jZSBib3RoIGFyZSB1c2VkIHdpdGggdHJhY2UgZXZlbnRzLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSB1c2VkIHdpdGggdHJhY2UgZXZlbnRzIG1lYW5zIHRoZXkgYXJlIG5vdCBjb3JlIHRvIHRoZSBzb2NrZXQgb3BlcmF0aW9ucy4gTGV0J3MgZGVsdmUgaW50byB0aGF0IG9uZSBhbmQgc2VlIHdoYXQgaXQncyB0ZWxsaW5nIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQ0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MzcuNjAwNDk5NzQ2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjQyMDA0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19saXN0X2R1bXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvbGluay5jPTExOTU9c3RhdGljIGJvb2wgbGlua19yZXRyYW5zbWl0X2ZhaWx1cmUoc3RydWN0IHRpcGNfbGluayAqbCwgc3RydWN0IHRpcGNfbGluayAqcixcXG4tLVxcbm5ldC90aXBjL2xpbmsuYy0xMjI0LVxcbm5ldC90aXBjL2xpbmsuYzoxMjI1OlxcdHRyYWNlX3RpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V0cmFuc21xLCB0cnVlLCBcXFwicmV0cmFucyBmYWlsdXJlIVxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYy0xMjI2LVxcdHRyYWNlX3RpcGNfbGlua19kdW1wKGwsIFRJUENfRFVNUF9OT05FLCBcXFwicmV0cmFucyBmYWlsdXJlIVxcXCIpO1xcbi0tXFxubmV0L3RpcGMvbGluay5jPTI4OTc9aW50IHRpcGNfbGlua19kdW1wKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuLS1cXG5uZXQvdGlwYy9saW5rLmMtMjk1OS1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJ0cmFuc21xOiBcXFwiKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk2MDpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V0cmFuc21xLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5NjEtXFx0fVxcbi0tXFxubmV0L3RpcGMvbGluay5jLTI5NjktXFx0XFx0XFx0ICAgICAgIGwtXFx1MDAzZWJhY2tsb2dbVElQQ19TWVNURU1fSU1QT1JUQU5DRV0ubGVuKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk3MDpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2ViYWNrbG9ncSwgZmFsc2UsIGJ1ZiArIGkpO1xcbm5ldC90aXBjL2xpbmsuYy0yOTcxLVxcdH1cXG4tLVxcbm5ldC90aXBjL2xpbmsuYy0yOTczLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcImRlZmVyZHE6IFxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYzoyOTc0OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNmwtXFx1MDAzZWRlZmVyZHEsIGZhbHNlLCBidWYgKyBpKTtcXG5uZXQvdGlwYy9saW5rLmMtMjk3NS1cXHR9XFxuLS1cXG5uZXQvdGlwYy9saW5rLmMtMjk3Ny1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJpbnB1dHE6IFxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYzoyOTc4OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAobC1cXHUwMDNlaW5wdXRxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5NzktXFx0fVxcbi0tXFxubmV0L3RpcGMvbGluay5jLTI5ODEtXFx0XFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwid2FrZXVwOiBcXFwiKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk4MjpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V3YWtldXBxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5ODMtXFx0fVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTMwOTc9aW50IHRpcGNfbm9kZV9kdW1wKHN0cnVjdCB0aXBjX25vZGUgKm4sIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTMxMjgtXFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwiIGlucHV0cTogXFxcIik7XFxubmV0L3RpcGMvbm9kZS5jOjMxMjk6XFx0aSArPSB0aXBjX2xpc3RfZHVtcChcXHUwMDI2bi1cXHUwMDNlbGlua3NbMF0uaW5wdXRxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbm9kZS5jLTMxMzAtXFxuLS1cXG5uZXQvdGlwYy9ub2RlLmMtMzEzNy1cXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgaW5wdXRxOiBcXFwiKTtcXG5uZXQvdGlwYy9ub2RlLmM6MzEzODpcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZuLVxcdTAwM2VsaW5rc1sxXS5pbnB1dHEsIGZhbHNlLCBidWYgKyBpKTtcXG5uZXQvdGlwYy9ub2RlLmMtMzEzOS1cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTM5NDA9aW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTk0LVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX3dyaXRlX3F1ZXVlOiBcXFwiKTtcXG5uZXQvdGlwYy9zb2NrZXQuYzozOTk1OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiArIGkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTM5OTYtXFx0fVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzk5OS1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJza19yZWNlaXZlX3F1ZXVlOiBcXFwiKTtcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MDAwOlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvc29ja2V0LmMtNDAwMS1cXHR9XFxuLS1cXG5uZXQvdGlwYy90cmFjZS5jPTUzPWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbi0tXFxubmV0L3RpcGMvdHJhY2UuYy0xNTgtLyoqXFxubmV0L3RpcGMvdHJhY2UuYzoxNTk6ICogdGlwY19saXN0X2R1bXAgLSBkdW1wIFRJUEMgc2tiIGxpc3QvcXVldWVcXG5uZXQvdGlwYy90cmFjZS5jLTE2MC0gKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuYy0xNjMtICovXFxubmV0L3RpcGMvdHJhY2UuYzoxNjQ6aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbm5ldC90aXBjL3RyYWNlLmMtMTY1LXtcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmg9MTI5PWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcXG5uZXQvdGlwYy90cmFjZS5oOjEzMDppbnQgdGlwY19saXN0X2R1bXAoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgYm9vbCBtb3JlLCBjaGFyICpidWYpO1xcbm5ldC90aXBjL3RyYWNlLmgtMTMxLWludCB0aXBjX3NrX2R1bXAoc3RydWN0IHNvY2sgKnNrLCB1MTYgZHF1ZXVlcywgY2hhciAqYnVmKTtcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmg9MTYzPURFQ0xBUkVfRVZFTlRfQ0xBU1ModGlwY19saXN0X2NsYXNzLFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuaC0xNzUtXFx0XFx0X19hc3NpZ25fc3RyKGhlYWRlcik7XFxubmV0L3RpcGMvdHJhY2UuaDoxNzY6XFx0XFx0dGlwY19saXN0X2R1bXAobGlzdCwgbW9yZSwgX19nZXRfc3RyKGJ1ZikpO1xcbm5ldC90aXBjL3RyYWNlLmgtMTc3LVxcdCksXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oPTE4Mz1ERUZJTkVfRVZFTlQodGlwY19saXN0X2NsYXNzLCBuYW1lLCBcXFxcXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oLTE4NS1cXHRUUF9BUkdTKGxpc3QsIG1vcmUsIGhlYWRlcikpXFxubmV0L3RpcGMvdHJhY2UuaDoxODY6REVGSU5FX0xJU1RfRVZFTlQodGlwY19saXN0X2R1bXApO1xcbm5ldC90aXBjL3RyYWNlLmgtMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0Mzo0Mi4zMjQ3MjA0MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU5OTMzMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhlIGNvZGUgYW5kIGl0J3MgY2xlYXIgdGhlc2UgYHRpcGNfc2tfZHVtcGAgYW5kIGB0aXBjX2xpc3RfZHVtcGAgZnVuY3Rpb25zIGFyZSAqc29sZWx5KiBmb3IgdHJhY2luZyBhbmQgc3RhdGUgZHVtcGluZy4gVGhleSdyZSB1c2VkIGJ5IHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIChgdHJhY2VfdGlwY19za19kdW1wYCwgZXRjLikgYW5kIHByb3ZpZGUgaW5mb3JtYXRpb24sIGJ1dCB0aGV5IGRvbid0IGFjdHVhbGx5IG1vZGlmeSB0aGUgY29yZSBsb2dpYyBvciBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBvZiB0aGUga2VybmVsJ3MgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBmdW5jdGlvbmFsaXR5LiBUaGF0J3MgYSBrZXkgZGlzdGluY3Rpb24uIEdpdmVuIHRoZWlyIHNwZWNpZmljIHB1cnBvc2UsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gc3ViamVjdCB0aGVtIHRvIGZ1enppbmcuIFRoZXkgd291bGRuJ3QgcmV2ZWFsIGFueSBmdW5jdGlvbmFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBvciBwcm9jZXNzIGNvbW11bmljYXRpb24uIFRodXMsIEknbGwgY29uZmlkZW50bHkgbWFyayB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBhcyBgZmFsc2VgIGZvciB0aGVzZSBmdW5jdGlvbnMuIFRoZXkncmUgc2ltcGx5IG5vdCByZWxldmFudCB0byB0aGF0IHRlc3Rpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5OTEsIk91dHB1dFRva2VucyI6NzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0Mzo0Ni4zODQ2NTY5NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5psj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 07:08:39 +0000 UTC FinishedAt: 2026-07-20 07:43:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2MxZWQ0ZWJmMzQxMzQyNGUyNTAwNjM4NGFhOTVmMmQ3ODJkNWZmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDA3OjQzOjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcbmluZGV4IGU1NjQzNDFlMDIxNmQzLi4zYTMwNWQxOTQwMTFkZSAxMDA2NDRcbi0tLSBhL25ldC90aXBjL3NvY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuY1xuQEAgLTQwMDAsMTUgJiM0Mzs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4gXHRcdGkgJiM0Mzs9IHRpcGNfbGlzdF9kdW1wKFx1MDAyNnNrLVx1MDAzZXNrX3JlY2VpdmVfcXVldWUsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG4gXHR9XG4gXG4tXHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKSB7XG4tXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtza19iYWNrbG9nOlxcbiAgaGVhZCBcJiMzNDspO1xuLVx0XHRpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHNrLVx1MDAzZXNrX2JhY2tsb2cuaGVhZCwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbi1cdFx0aWYgKHNrLVx1MDAzZXNrX2JhY2tsb2cudGFpbCAhPSBzay1cdTAwM2Vza19iYWNrbG9nLmhlYWQpIHtcbi1cdFx0XHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7ICB0YWlsIFwmIzM0Oyk7XG4tXHRcdFx0aSAmIzQzOz0gdGlwY19za2JfZHVtcChzay1cdTAwM2Vza19iYWNrbG9nLnRhaWwsIGZhbHNlLFxuLVx0XHRcdFx0XHQgICBidWYgJiM0MzsgaSk7XG4tXHRcdH1cbi1cdH1cbiYjNDM7XHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKVxuJiM0MztcdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3NrX2JhY2tsb2c6IGxlbiA9ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCAgICAgICBSRUFEX09OQ0Uoc2stXHUwMDNlc2tfYmFja2xvZy5sZW4pKTtcbiBcbiBcdHJldHVybiBpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuY1xuaW5kZXggN2QyOTMxNTIxZTBlYjkuLjM5OTUzOGQwYTM2OTZhIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdHJhY2UuY1xuQEAgLTE1OCw0OSAmIzQzOzE1OCwxNSBAQCBpbnQgdGlwY19za2JfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIG1vcmUsIGNoYXIgKmJ1ZilcbiAvKipcbiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZVxuICAqIEBsaXN0OiBsaXN0IG9mIHNrYnMgdG8gYmUgZHVtcGVkXG4tICogQG1vcmU6IGR1bXAgbW9yZT9cbi0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkIFx1MDAyNiB0YWlsIHNrYnNcbi0gKiAgICAgICAgLSB0cnVlOiBkdW1wIHRoZSBmaXJzdCBcdTAwMjYgbGFzdCA1IHNrYnNcbiYjNDM7ICogQG1vcmU6IHVudXNlZDsga2VwdCBmb3IgdHJhY2Vwb2ludCBBQkkgY29tcGF0aWJpbGl0eVxuICAqIEBidWY6IHJldHVybmVkIGJ1ZmZlciBvZiBkdW1wIGRhdGEgaW4gZm9ybWF0XG4gICovXG4gaW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxuIHtcbi1cdGludCBpID0gMDtcbi1cdHNpemVfdCBzeiA9IChtb3JlKSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjtcbi1cdHUzMiBjb3VudCwgbGVuO1xuLVx0c3RydWN0IHNrX2J1ZmYgKmhza2IsICp0c2tiLCAqc2tiLCAqdG1wO1xuLVxuLVx0aWYgKCFsaXN0KSB7XG4tXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYsIHN6LCBcJiMzNDsobnVsbClcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gaTtcbi1cdH1cbiYjNDM7XHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xuIFxuLVx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcbi1cdGkgJiM0Mzs9IHNjbnByaW50ZihidWYsIHN6LCBcJiMzNDtsZW4gPSAlZFxcblwmIzM0OywgbGVuKTtcbiYjNDM7XHRpZiAoIWxpc3QpXG4mIzQzO1x0XHRyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osIFwmIzM0OyhudWxsKVxcblwmIzM0Oyk7XG4gXG4tXHRpZiAoIWxlbilcbi1cdFx0cmV0dXJuIGk7XG4tXG4tXHRpZiAoIW1vcmUpIHtcbi1cdFx0aHNrYiA9IHNrYl9wZWVrKGxpc3QpO1xuLVx0XHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7ICBoZWFkIFwmIzM0Oyk7XG4tXHRcdGkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoaHNrYiwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbi1cdFx0aWYgKGxlbiBcdTAwM2UgMSkge1xuLVx0XHRcdHRza2IgPSBza2JfcGVla190YWlsKGxpc3QpO1xuLVx0XHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgIHRhaWwgXCYjMzQ7KTtcbi1cdFx0XHRpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG4tXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdGNvdW50ID0gMDtcbi1cdFx0c2tiX3F1ZXVlX3dhbGtfc2FmZShsaXN0LCBza2IsIHRtcCkge1xuLVx0XHRcdGNvdW50JiM0MzsmIzQzOztcbi1cdFx0XHRpZiAoY291bnQgPT0gNilcbi1cdFx0XHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgIC5cXG4gIC5cXG5cJiMzNDspO1xuLVx0XHRcdGlmIChjb3VudCBcdTAwM2UgNSBcdTAwMjZcdTAwMjYgY291bnQgXHUwMDNjPSBsZW4gLSA1KVxuLVx0XHRcdFx0Y29udGludWU7XG4tXHRcdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0OyAgIyVkIFwmIzM0OywgY291bnQpO1xuLVx0XHRcdGkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2tiLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xuLVx0XHR9XG4tXHR9XG4tXHRyZXR1cm4gaTtcbiYjNDM7XHRyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osIFwmIzM0O2xlbiA9ICV1XFxuXCYjMzQ7LCBza2JfcXVldWVfbGVuX2xvY2tsZXNzKGxpc3QpKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0cmFjZSBkdW1waW5nIGZ1bmN0aW9ucyAodGlwY19za19kdW1wIGFuZCB0aXBjX2xpc3RfZHVtcCkgd2hpY2ggYXJlIHB1cmVseSBkZWNvcmF0aXZlIGFuZCB1c2VkIGZvciBkZWJ1Z2dpbmcvdHJhY2luZy4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwgZXhlY3V0aW9uIGZsb3cgb2YgdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNjMWVkNGViZjM0MTM0MjRlMjUwMDYzODRhYTk1ZjJkNzgyZDVmZmEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAwNzo0MzoyMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZTU2NDM0MWUwMjE2ZDMuLjNhMzA1ZDE5NDAxMWRlIDEwMDY0NAotLS0gYS9uZXQvdGlwYy9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdGlwYy9zb2NrZXQuYwpAQCAtNDAwMCwxNSAmIzQzOzQwMDAsOSBAQCBpbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1ZikKIAkJaSAmIzQzOz0gdGlwY19saXN0X2R1bXAoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKIAl9CiAKLQlpZiAoZHF1ZXVlcyAmYW1wOyBUSVBDX0RVTVBfU0tfQktMR1EpIHsKLQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7c2tfYmFja2xvZzpcbiAgaGVhZCAmIzM0Oyk7Ci0JCWkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2stJmd0O3NrX2JhY2tsb2cuaGVhZCwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKLQkJaWYgKHNrLSZndDtza19iYWNrbG9nLnRhaWwgIT0gc2stJmd0O3NrX2JhY2tsb2cuaGVhZCkgewotCQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7ICB0YWlsICYjMzQ7KTsKLQkJCWkgJiM0Mzs9IHRpcGNfc2tiX2R1bXAoc2stJmd0O3NrX2JhY2tsb2cudGFpbCwgZmFsc2UsCi0JCQkJCSAgIGJ1ZiAmIzQzOyBpKTsKLQkJfQotCX0KJiM0MzsJaWYgKGRxdWV1ZXMgJmFtcDsgVElQQ19EVU1QX1NLX0JLTEdRKQomIzQzOwkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksICYjMzQ7c2tfYmFja2xvZzogbGVuID0gJWRcbiYjMzQ7LAomIzQzOwkJCQkgICAgICAgUkVBRF9PTkNFKHNrLSZndDtza19iYWNrbG9nLmxlbikpOwogCiAJcmV0dXJuIGk7CiB9CmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuYwppbmRleCA3ZDI5MzE1MjFlMGViOS4uMzk5NTM4ZDBhMzY5NmEgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3RyYWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3RpcGMvdHJhY2UuYwpAQCAtMTU4LDQ5ICYjNDM7MTU4LDE1IEBAIGludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKQogLyoqCiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZQogICogQGxpc3Q6IGxpc3Qgb2Ygc2ticyB0byBiZSBkdW1wZWQKLSAqIEBtb3JlOiBkdW1wIG1vcmU/Ci0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkICZhbXA7IHRhaWwgc2ticwotICogICAgICAgIC0gdHJ1ZTogZHVtcCB0aGUgZmlyc3QgJmFtcDsgbGFzdCA1IHNrYnMKJiM0MzsgKiBAbW9yZTogdW51c2VkOyBrZXB0IGZvciB0cmFjZXBvaW50IEFCSSBjb21wYXRpYmlsaXR5CiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdAogICovCiBpbnQgdGlwY19saXN0X2R1bXAoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgYm9vbCBtb3JlLCBjaGFyICpidWYpCiB7Ci0JaW50IGkgPSAwOwotCXNpemVfdCBzeiA9IChtb3JlKSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjsKLQl1MzIgY291bnQsIGxlbjsKLQlzdHJ1Y3Qgc2tfYnVmZiAqaHNrYiwgKnRza2IsICpza2IsICp0bXA7Ci0KLQlpZiAoIWxpc3QpIHsKLQkJaSAmIzQzOz0gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7KG51bGwpXG4mIzM0Oyk7Ci0JCXJldHVybiBpOwotCX0KJiM0MzsJc2l6ZV90IHN6ID0gbW9yZSA/IExJU1RfTE1BWCA6IExJU1RfTE1JTjsKIAotCWxlbiA9IHNrYl9xdWV1ZV9sZW4obGlzdCk7Ci0JaSAmIzQzOz0gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7bGVuID0gJWRcbiYjMzQ7LCBsZW4pOwomIzQzOwlpZiAoIWxpc3QpCiYjNDM7CQlyZXR1cm4gc2NucHJpbnRmKGJ1Ziwgc3osICYjMzQ7KG51bGwpXG4mIzM0Oyk7CiAKLQlpZiAoIWxlbikKLQkJcmV0dXJuIGk7Ci0KLQlpZiAoIW1vcmUpIHsKLQkJaHNrYiA9IHNrYl9wZWVrKGxpc3QpOwotCQlpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgJiMzNDsgIGhlYWQgJiMzNDspOwotCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKGhza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7Ci0JCWlmIChsZW4gJmd0OyAxKSB7Ci0JCQl0c2tiID0gc2tiX3BlZWtfdGFpbChsaXN0KTsKLQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgdGFpbCAmIzM0Oyk7Ci0JCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgJiM0MzsgaSk7Ci0JCX0KLQl9IGVsc2UgewotCQljb3VudCA9IDA7Ci0JCXNrYl9xdWV1ZV93YWxrX3NhZmUobGlzdCwgc2tiLCB0bXApIHsKLQkJCWNvdW50JiM0MzsmIzQzOzsKLQkJCWlmIChjb3VudCA9PSA2KQotCQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgLlxuICAuXG4mIzM0Oyk7Ci0JCQlpZiAoY291bnQgJmd0OyA1ICZhbXA7JmFtcDsgY291bnQgJmx0Oz0gbGVuIC0gNSkKLQkJCQljb250aW51ZTsKLQkJCWkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCAmIzM0OyAgIyVkICYjMzQ7LCBjb3VudCk7Ci0JCQlpICYjNDM7PSB0aXBjX3NrYl9kdW1wKHNrYiwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTsKLQkJfQotCX0KLQlyZXR1cm4gaTsKJiM0MzsJcmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCAmIzM0O2xlbiA9ICV1XG4mIzM0Oywgc2tiX3F1ZXVlX2xlbl9sb2NrbGVzcyhsaXN0KSk7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqU2ltcGxpZnlpbmcgVElQQyBTb2NrZXQgYW5kIFNLQiBEdW1wcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGB0aXBjX3NrX2R1bXBgIGluIGBuZXQvdGlwYy9zb2NrZXQuY2AgYW5kIGB0aXBjX2xpc3RfZHVtcGAgaW4gYG5ldC90aXBjL3RyYWNlLmNgLiBCb3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBzY3JlYW0gJiMzNDtkZWJ1Z2dpbmcgYW5kIHRyYWNpbmcmIzM0OyB0byBtZSwgd2hpY2ggaXMgdHlwaWNhbGx5IHdoZXJlIHRoZXNlIHNvcnRzIG9mIGR1bXBzIGNvbWUgaW50byBwbGF5LiBJdCBsb29rcyBsaWtlIGB0aXBjX3NrX2R1bXBgIGlzIHNwZWNpZmljYWxseSBmb3Igc29ja2V0IHN0YXRlIGluZm9ybWF0aW9uLCB3aGlsZSBgdGlwY19saXN0X2R1bXBgIGlzIGRlYWxpbmcgd2l0aCBUSVBDJiMzOTtzIHNrYiBsaXN0cyBvciBxdWV1ZXMuCgpUaGUgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHNpbXBsaWZ5aW5nIHRoZSBkdW1waW5nIHJvdXRpbmVzLiBJbnN0ZWFkIG9mIHNob3dpbmcgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGluZGl2aWR1YWwgc2ticywgdGhleSYjMzk7cmUganVzdCBwcmludGluZyB0aGUgb3ZlcmFsbCBsZW5ndGggbm93LiBTbWFydCBtb3ZlOyBpdCBzdHJlYW1saW5lcyB0aGUgb3V0cHV0IGNvbnNpZGVyYWJseS4gV2UmIzM5O3JlIHRhbGtpbmcgcHVyZWx5IGNvc21ldGljIGNoYW5nZXMgaGVyZSwgYWxsIGZvciB0cmFjZSBkYXRhLCB3aGljaCBpcyBjb21wbGV0ZWx5IGZpbmUgaW4gdGhpcyBjb250ZXh0LgoKQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgY29uZmlybSB0aGUgdXNhZ2UgbG9jYXRpb25zIG9mIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLiBBaCwgcmlnaHQsIGB0aXBjX3NrX2R1bXBgIGlzIGluZGVlZCBpbiBgbmV0L3RpcGMvc29ja2V0LmNgLCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpcyBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIFNlZW1zIGFjY3VyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfc2tfZHVtcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9zb2NrZXQuYz0yMzM4PXN0YXRpYyB2b2lkIHRpcGNfc2tfZmlsdGVyX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMjM3Mi1cdFx0ZWxzZSBpZiAoc2tfcm1lbV9hbGxvY19nZXQoc2spICYjNDM7IHNrYi1cdTAwM2V0cnVlc2l6ZSBcdTAwM2U9IGxpbWl0KSB7XG5uZXQvdGlwYy9zb2NrZXQuYzoyMzczOlx0XHRcdHRyYWNlX3RpcGNfc2tfZHVtcChzaywgc2tiLCBUSVBDX0RVTVBfQUxMLFxubmV0L3RpcGMvc29ja2V0LmMtMjM3NC1cdFx0XHRcdFx0ICAgXCYjMzQ7ZXJyX292ZXJsb2FkMiFcJiMzNDspO1xuLS1cbm5ldC90aXBjL3NvY2tldC5jPTI0MzA9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTI0NjMtXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDY0Olx0XHR0cmFjZV90aXBjX3NrX2R1bXAoc2ssIHNrYiwgVElQQ19EVU1QX1NLX0JLTEdRLCBcJiMzNDtlcnJfb3ZlcmxvYWQhXCYjMzQ7KTtcbm5ldC90aXBjL3NvY2tldC5jLTI0NjUtXHRcdC8qIE92ZXJsb2FkID1cdTAwM2UgcmVqZWN0IG1lc3NhZ2UgYmFjayB0byBzZW5kZXIgKi9cbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zOTIxPWJvb2wgdGlwY19za19vdmVybGltaXQyKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTI5LS8qKlxubmV0L3RpcGMvc29ja2V0LmM6MzkzMDogKiB0aXBjX3NrX2R1bXAgLSBkdW1wIFRJUEMgc29ja2V0XG5uZXQvdGlwYy9zb2NrZXQuYy0zOTMxLSAqIEBzazogdGlwYyBzayB0byBiZSBkdW1wZWRcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTM5LSAqL1xubmV0L3RpcGMvc29ja2V0LmM6Mzk0MDppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zilcbm5ldC90aXBjL3NvY2tldC5jLTM5NDEte1xuLS1cbm5ldC90aXBjL3RyYWNlLmg9MTMwPWludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oOjEzMTppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oLTEzMi1pbnQgdGlwY19saW5rX2R1bXAoc3RydWN0IHRpcGNfbGluayAqbCwgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG4tLVxubmV0L3RpcGMvdHJhY2UuaD0xODg9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX3NrX2NsYXNzLFxuLS1cbm5ldC90aXBjL3RyYWNlLmgtMjA0LVx0XHRfX2VudHJ5LVx1MDAzZXBvcnRpZCA9IHRpcGNfc29ja19nZXRfcG9ydGlkKHNrKTtcbm5ldC90aXBjL3RyYWNlLmg6MjA1Olx0XHR0aXBjX3NrX2R1bXAoc2ssIGRxdWV1ZXMsIF9fZ2V0X3N0cihidWYpKTtcbm5ldC90aXBjL3RyYWNlLmgtMjA2LVx0XHRpZiAoc2tiKVxuLS1cbm5ldC90aXBjL3RyYWNlLmg9MjE3PURFRklORV9FVkVOVF9DT05ESVRJT04odGlwY19za19jbGFzcywgbmFtZSwgXFxcbi0tXG5uZXQvdGlwYy90cmFjZS5oLTIyMS1cdFRQX0NPTkRJVElPTih0aXBjX3NrX2ZpbHRlcmluZyhzaykpKVxubmV0L3RpcGMvdHJhY2UuaDoyMjI6REVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX2R1bXApO1xubmV0L3RpcGMvdHJhY2UuaC0yMjMtREVGSU5FX1NLX0VWRU5UX0ZJTFRFUih0aXBjX3NrX2NyZWF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0NAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUSVBDIFNvY2tldCBEdW1wcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgdGlwY19za19kdW1wYCBhbmQgYHRpcGNfbGlzdF9kdW1wYCwgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgZXhjbHVzaXZlbHkgdGllZCB0byB0cmFjaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIGB0cmFjZV90aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19za19jbGFzc2AgZm9yIHRoZSBmb3JtZXIsIGFuZCBnZW5lcmFsIHRyYWNlIGV2ZW50cyBmb3IgdGhlIGxhdHRlci4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2YgdGhlaXIgdXNhZ2UgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgdGlwY19saXN0X2R1bXBgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZSwgc2luY2UgYm90aCBhcmUgdXNlZCB3aXRoIHRyYWNlIGV2ZW50cywgYW5kIHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgdXNlZCB3aXRoIHRyYWNlIGV2ZW50cyBtZWFucyB0aGV5IGFyZSBub3QgY29yZSB0byB0aGUgc29ja2V0IG9wZXJhdGlvbnMuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyB0ZWxsaW5nIHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDA3OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfbGlzdF9kdW1wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL2xpbmsuYz0xMTk1PXN0YXRpYyBib29sIGxpbmtfcmV0cmFuc21pdF9mYWlsdXJlKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHN0cnVjdCB0aXBjX2xpbmsgKnIsXG4tLVxubmV0L3RpcGMvbGluay5jLTEyMjQtXG5uZXQvdGlwYy9saW5rLmM6MTIyNTpcdHRyYWNlX3RpcGNfbGlzdF9kdW1wKFx1MDAyNmwtXHUwMDNldHJhbnNtcSwgdHJ1ZSwgXCYjMzQ7cmV0cmFucyBmYWlsdXJlIVwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmMtMTIyNi1cdHRyYWNlX3RpcGNfbGlua19kdW1wKGwsIFRJUENfRFVNUF9OT05FLCBcJiMzNDtyZXRyYW5zIGZhaWx1cmUhXCYjMzQ7KTtcbi0tXG5uZXQvdGlwYy9saW5rLmM9Mjg5Nz1pbnQgdGlwY19saW5rX2R1bXAoc3RydWN0IHRpcGNfbGluayAqbCwgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk1OS1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3RyYW5zbXE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk2MDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bC1cdTAwM2V0cmFuc21xLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xubmV0L3RpcGMvbGluay5jLTI5NjEtXHR9XG4tLVxubmV0L3RpcGMvbGluay5jLTI5NjktXHRcdFx0ICAgICAgIGwtXHUwMDNlYmFja2xvZ1tUSVBDX1NZU1RFTV9JTVBPUlRBTkNFXS5sZW4pO1xubmV0L3RpcGMvbGluay5jOjI5NzA6XHRcdGkgJiM0Mzs9IHRpcGNfbGlzdF9kdW1wKFx1MDAyNmwtXHUwMDNlYmFja2xvZ3EsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk3MS1cdH1cbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk3My1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O2RlZmVyZHE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk3NDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bC1cdTAwM2VkZWZlcmRxLCBmYWxzZSwgYnVmICYjNDM7IGkpO1xubmV0L3RpcGMvbGluay5jLTI5NzUtXHR9XG4tLVxubmV0L3RpcGMvbGluay5jLTI5NzctXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtpbnB1dHE6IFwmIzM0Oyk7XG5uZXQvdGlwYy9saW5rLmM6Mjk3ODpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAobC1cdTAwM2VpbnB1dHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk3OS1cdH1cbi0tXG5uZXQvdGlwYy9saW5rLmMtMjk4MS1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3dha2V1cDogXCYjMzQ7KTtcbm5ldC90aXBjL2xpbmsuYzoyOTgyOlx0XHRpICYjNDM7PSB0aXBjX2xpc3RfZHVtcChcdTAwMjZsLVx1MDAzZXdha2V1cHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9saW5rLmMtMjk4My1cdH1cbi0tXG5uZXQvdGlwYy9ub2RlLmM9MzA5Nz1pbnQgdGlwY19ub2RlX2R1bXAoc3RydWN0IHRpcGNfbm9kZSAqbiwgYm9vbCBtb3JlLCBjaGFyICpidWYpXG4tLVxubmV0L3RpcGMvbm9kZS5jLTMxMjgtXHRpICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGksIHN6IC0gaSwgXCYjMzQ7IGlucHV0cTogXCYjMzQ7KTtcbm5ldC90aXBjL25vZGUuYzozMTI5Olx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2bi1cdTAwM2VsaW5rc1swXS5pbnB1dHEsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9ub2RlLmMtMzEzMC1cbi0tXG5uZXQvdGlwYy9ub2RlLmMtMzEzNy1cdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDsgaW5wdXRxOiBcJiMzNDspO1xubmV0L3RpcGMvbm9kZS5jOjMxMzg6XHRpICYjNDM7PSB0aXBjX2xpc3RfZHVtcChcdTAwMjZuLVx1MDAzZWxpbmtzWzFdLmlucHV0cSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbm5ldC90aXBjL25vZGUuYy0zMTM5LVxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTM5NDA9aW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzk5NC1cdFx0aSAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBpLCBzeiAtIGksIFwmIzM0O3NrX3dyaXRlX3F1ZXVlOiBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6Mzk5NTpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfd3JpdGVfcXVldWUsIGZhbHNlLCBidWYgJiM0MzsgaSk7XG5uZXQvdGlwYy9zb2NrZXQuYy0zOTk2LVx0fVxuLS1cbm5ldC90aXBjL3NvY2tldC5jLTM5OTktXHRcdGkgJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgaSwgc3ogLSBpLCBcJiMzNDtza19yZWNlaXZlX3F1ZXVlOiBcJiMzNDspO1xubmV0L3RpcGMvc29ja2V0LmM6NDAwMDpcdFx0aSAmIzQzOz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiAmIzQzOyBpKTtcbm5ldC90aXBjL3NvY2tldC5jLTQwMDEtXHR9XG4tLVxubmV0L3RpcGMvdHJhY2UuYz01Mz1pbnQgdGlwY19za2JfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIG1vcmUsIGNoYXIgKmJ1Zilcbi0tXG5uZXQvdGlwYy90cmFjZS5jLTE1OC0vKipcbm5ldC90aXBjL3RyYWNlLmM6MTU5OiAqIHRpcGNfbGlzdF9kdW1wIC0gZHVtcCBUSVBDIHNrYiBsaXN0L3F1ZXVlXG5uZXQvdGlwYy90cmFjZS5jLTE2MC0gKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxuLS1cbm5ldC90aXBjL3RyYWNlLmMtMTYzLSAqL1xubmV0L3RpcGMvdHJhY2UuYzoxNjQ6aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxubmV0L3RpcGMvdHJhY2UuYy0xNjUte1xuLS1cbm5ldC90aXBjL3RyYWNlLmg9MTI5PWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcbm5ldC90aXBjL3RyYWNlLmg6MTMwOmludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1Zik7XG5uZXQvdGlwYy90cmFjZS5oLTEzMS1pbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XG4tLVxubmV0L3RpcGMvdHJhY2UuaD0xNjM9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX2xpc3RfY2xhc3MsXG4tLVxubmV0L3RpcGMvdHJhY2UuaC0xNzUtXHRcdF9fYXNzaWduX3N0cihoZWFkZXIpO1xubmV0L3RpcGMvdHJhY2UuaDoxNzY6XHRcdHRpcGNfbGlzdF9kdW1wKGxpc3QsIG1vcmUsIF9fZ2V0X3N0cihidWYpKTtcbm5ldC90aXBjL3RyYWNlLmgtMTc3LVx0KSxcbi0tXG5uZXQvdGlwYy90cmFjZS5oPTE4Mz1ERUZJTkVfRVZFTlQodGlwY19saXN0X2NsYXNzLCBuYW1lLCBcXFxuLS1cbm5ldC90aXBjL3RyYWNlLmgtMTg1LVx0VFBfQVJHUyhsaXN0LCBtb3JlLCBoZWFkZXIpKVxubmV0L3RpcGMvdHJhY2UuaDoxODY6REVGSU5FX0xJU1RfRVZFTlQodGlwY19saXN0X2R1bXApO1xubmV0L3RpcGMvdHJhY2UuaC0xODctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDc6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk5MQoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGUgY29kZSBhbmQgaXQmIzM5O3MgY2xlYXIgdGhlc2UgYHRpcGNfc2tfZHVtcGAgYW5kIGB0aXBjX2xpc3RfZHVtcGAgZnVuY3Rpb25zIGFyZSAqc29sZWx5KiBmb3IgdHJhY2luZyBhbmQgc3RhdGUgZHVtcGluZy4gVGhleSYjMzk7cmUgdXNlZCBieSB0aGUgdHJhY2luZyBpbmZyYXN0cnVjdHVyZSAoYHRyYWNlX3RpcGNfc2tfZHVtcGAsIGV0Yy4pIGFuZCBwcm92aWRlIGluZm9ybWF0aW9uLCBidXQgdGhleSBkb24mIzM5O3QgYWN0dWFsbHkgbW9kaWZ5IHRoZSBjb3JlIGxvZ2ljIG9yIGZ1bmN0aW9uYWwgZXhlY3V0aW9uIG9mIHRoZSBrZXJuZWwmIzM5O3MgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uLiBHaXZlbiB0aGVpciBzcGVjaWZpYyBwdXJwb3NlLCB0aGVyZSYjMzk7cyBubyBnb29kIHJlYXNvbiB0byBzdWJqZWN0IHRoZW0gdG8gZnV6emluZy4gVGhleSB3b3VsZG4mIzM5O3QgcmV2ZWFsIGFueSBmdW5jdGlvbmFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBvciBwcm9jZXNzIGNvbW11bmljYXRpb24uIFRodXMsIEkmIzM5O2xsIGNvbmZpZGVudGx5IG1hcmsgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgYXMgYGZhbHNlYCBmb3IgdGhlc2UgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBzaW1wbHkgbm90IHJlbGV2YW50IHRvIHRoYXQgdGVzdGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwNzo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA3OjQzOjIzLjIwMTYxOTIxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTgzMTAxNjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MjMuMjAxNjMwMzE2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTk0NzM3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjYzFlZDRlYmYzNDEzNDI0ZTI1MDA2Mzg0YWE5NWYyZDc4MmQ1ZmZhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDA3OjQzOjIxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmNcXG5pbmRleCBlNTY0MzQxZTAyMTZkMy4uM2EzMDVkMTk0MDExZGUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvc29ja2V0LmNcXG4rKysgYi9uZXQvdGlwYy9zb2NrZXQuY1xcbkBAIC00MDAwLDE1ICs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuIFxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlLCBmYWxzZSwgYnVmICsgaSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChkcXVldWVzIFxcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKSB7XFxuLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX2JhY2tsb2c6XFxcXG4gIGhlYWQgXFxcIik7XFxuLVxcdFxcdGkgKz0gdGlwY19za2JfZHVtcChzay1cXHUwMDNlc2tfYmFja2xvZy5oZWFkLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdGlmIChzay1cXHUwMDNlc2tfYmFja2xvZy50YWlsICE9IHNrLVxcdTAwM2Vza19iYWNrbG9nLmhlYWQpIHtcXG4tXFx0XFx0XFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwiICB0YWlsIFxcXCIpO1xcbi1cXHRcXHRcXHRpICs9IHRpcGNfc2tiX2R1bXAoc2stXFx1MDAzZXNrX2JhY2tsb2cudGFpbCwgZmFsc2UsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGJ1ZiArIGkpO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4rXFx0aWYgKGRxdWV1ZXMgXFx1MDAyNiBUSVBDX0RVTVBfU0tfQktMR1EpXFxuK1xcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX2JhY2tsb2c6IGxlbiA9ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgUkVBRF9PTkNFKHNrLVxcdTAwM2Vza19iYWNrbG9nLmxlbikpO1xcbiBcXG4gXFx0cmV0dXJuIGk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdHJhY2UuYyBiL25ldC90aXBjL3RyYWNlLmNcXG5pbmRleCA3ZDI5MzE1MjFlMGViOS4uMzk5NTM4ZDBhMzY5NmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xcbisrKyBiL25ldC90aXBjL3RyYWNlLmNcXG5AQCAtMTU4LDQ5ICsxNTgsMTUgQEAgaW50IHRpcGNfc2tiX2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBtb3JlLCBjaGFyICpidWYpXFxuIC8qKlxcbiAgKiB0aXBjX2xpc3RfZHVtcCAtIGR1bXAgVElQQyBza2IgbGlzdC9xdWV1ZVxcbiAgKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxcbi0gKiBAbW9yZTogZHVtcCBtb3JlP1xcbi0gKiAgICAgICAgLSBmYWxzZTogZHVtcCBvbmx5IHRoZSBoZWFkIFxcdTAwMjYgdGFpbCBza2JzXFxuLSAqICAgICAgICAtIHRydWU6IGR1bXAgdGhlIGZpcnN0IFxcdTAwMjYgbGFzdCA1IHNrYnNcXG4rICogQG1vcmU6IHVudXNlZDsga2VwdCBmb3IgdHJhY2Vwb2ludCBBQkkgY29tcGF0aWJpbGl0eVxcbiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdFxcbiAgKi9cXG4gaW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbiB7XFxuLVxcdGludCBpID0gMDtcXG4tXFx0c2l6ZV90IHN6ID0gKG1vcmUpID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xcbi1cXHR1MzIgY291bnQsIGxlbjtcXG4tXFx0c3RydWN0IHNrX2J1ZmYgKmhza2IsICp0c2tiLCAqc2tiLCAqdG1wO1xcbi1cXG4tXFx0aWYgKCFsaXN0KSB7XFxuLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1Ziwgc3osIFxcXCIobnVsbClcXFxcblxcXCIpO1xcbi1cXHRcXHRyZXR1cm4gaTtcXG4tXFx0fVxcbitcXHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xcbiBcXG4tXFx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcXG4tXFx0aSArPSBzY25wcmludGYoYnVmLCBzeiwgXFxcImxlbiA9ICVkXFxcXG5cXFwiLCBsZW4pO1xcbitcXHRpZiAoIWxpc3QpXFxuK1xcdFxcdHJldHVybiBzY25wcmludGYoYnVmLCBzeiwgXFxcIihudWxsKVxcXFxuXFxcIik7XFxuIFxcbi1cXHRpZiAoIWxlbilcXG4tXFx0XFx0cmV0dXJuIGk7XFxuLVxcbi1cXHRpZiAoIW1vcmUpIHtcXG4tXFx0XFx0aHNrYiA9IHNrYl9wZWVrKGxpc3QpO1xcbi1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIGhlYWQgXFxcIik7XFxuLVxcdFxcdGkgKz0gdGlwY19za2JfZHVtcChoc2tiLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdGlmIChsZW4gXFx1MDAzZSAxKSB7XFxuLVxcdFxcdFxcdHRza2IgPSBza2JfcGVla190YWlsKGxpc3QpO1xcbi1cXHRcXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIHRhaWwgXFxcIik7XFxuLVxcdFxcdFxcdGkgKz0gdGlwY19za2JfZHVtcCh0c2tiLCBmYWxzZSwgYnVmICsgaSk7XFxuLVxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0Y291bnQgPSAwO1xcbi1cXHRcXHRza2JfcXVldWVfd2Fsa19zYWZlKGxpc3QsIHNrYiwgdG1wKSB7XFxuLVxcdFxcdFxcdGNvdW50Kys7XFxuLVxcdFxcdFxcdGlmIChjb3VudCA9PSA2KVxcbi1cXHRcXHRcXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgIC5cXFxcbiAgLlxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdGlmIChjb3VudCBcXHUwMDNlIDUgXFx1MDAyNlxcdTAwMjYgY291bnQgXFx1MDAzYz0gbGVuIC0gNSlcXG4tXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcIiAgIyVkIFxcXCIsIGNvdW50KTtcXG4tXFx0XFx0XFx0aSArPSB0aXBjX3NrYl9kdW1wKHNrYiwgZmFsc2UsIGJ1ZiArIGkpO1xcbi1cXHRcXHR9XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGk7XFxuK1xcdHJldHVybiBzY25wcmludGYoYnVmLCBzeiwgXFxcImxlbiA9ICV1XFxcXG5cXFwiLCBza2JfcXVldWVfbGVuX2xvY2tsZXNzKGxpc3QpKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0MzoyNC4wMjIyMzMxNDFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMzYyNDcyNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjYzFlZDRlYmYzNDEzNDI0ZTI1MDA2Mzg0YWE5NWYyZDc4MmQ1ZmZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMDc6NDM6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy9zb2NrZXQuYyBiL25ldC90aXBjL3NvY2tldC5jXG5pbmRleCBlNTY0MzQxZTAyMTZkMy4uM2EzMDVkMTk0MDExZGUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy9zb2NrZXQuY1xuKysrIGIvbmV0L3RpcGMvc29ja2V0LmNcbkBAIC00MDAwLDE1ICs0MDAwLDkgQEAgaW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXG4gXHRcdGkgKz0gdGlwY19saXN0X2R1bXAoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiArIGkpO1xuIFx0fVxuIFxuLVx0aWYgKGRxdWV1ZXMgXHUwMDI2IFRJUENfRFVNUF9TS19CS0xHUSkge1xuLVx0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwic2tfYmFja2xvZzpcXG4gIGhlYWQgXCIpO1xuLVx0XHRpICs9IHRpcGNfc2tiX2R1bXAoc2stXHUwMDNlc2tfYmFja2xvZy5oZWFkLCBmYWxzZSwgYnVmICsgaSk7XG4tXHRcdGlmIChzay1cdTAwM2Vza19iYWNrbG9nLnRhaWwgIT0gc2stXHUwMDNlc2tfYmFja2xvZy5oZWFkKSB7XG4tXHRcdFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcIiAgdGFpbCBcIik7XG4tXHRcdFx0aSArPSB0aXBjX3NrYl9kdW1wKHNrLVx1MDAzZXNrX2JhY2tsb2cudGFpbCwgZmFsc2UsXG4tXHRcdFx0XHRcdCAgIGJ1ZiArIGkpO1xuLVx0XHR9XG4tXHR9XG4rXHRpZiAoZHF1ZXVlcyBcdTAwMjYgVElQQ19EVU1QX1NLX0JLTEdRKVxuK1x0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwic2tfYmFja2xvZzogbGVuID0gJWRcXG5cIixcbitcdFx0XHRcdCAgICAgICBSRUFEX09OQ0Uoc2stXHUwMDNlc2tfYmFja2xvZy5sZW4pKTtcbiBcbiBcdHJldHVybiBpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy90cmFjZS5jIGIvbmV0L3RpcGMvdHJhY2UuY1xuaW5kZXggN2QyOTMxNTIxZTBlYjkuLjM5OTUzOGQwYTM2OTZhIDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdHJhY2UuY1xuKysrIGIvbmV0L3RpcGMvdHJhY2UuY1xuQEAgLTE1OCw0OSArMTU4LDE1IEBAIGludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxuIC8qKlxuICAqIHRpcGNfbGlzdF9kdW1wIC0gZHVtcCBUSVBDIHNrYiBsaXN0L3F1ZXVlXG4gICogQGxpc3Q6IGxpc3Qgb2Ygc2ticyB0byBiZSBkdW1wZWRcbi0gKiBAbW9yZTogZHVtcCBtb3JlP1xuLSAqICAgICAgICAtIGZhbHNlOiBkdW1wIG9ubHkgdGhlIGhlYWQgXHUwMDI2IHRhaWwgc2tic1xuLSAqICAgICAgICAtIHRydWU6IGR1bXAgdGhlIGZpcnN0IFx1MDAyNiBsYXN0IDUgc2tic1xuKyAqIEBtb3JlOiB1bnVzZWQ7IGtlcHQgZm9yIHRyYWNlcG9pbnQgQUJJIGNvbXBhdGliaWxpdHlcbiAgKiBAYnVmOiByZXR1cm5lZCBidWZmZXIgb2YgZHVtcCBkYXRhIGluIGZvcm1hdFxuICAqL1xuIGludCB0aXBjX2xpc3RfZHVtcChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBib29sIG1vcmUsIGNoYXIgKmJ1ZilcbiB7XG4tXHRpbnQgaSA9IDA7XG4tXHRzaXplX3Qgc3ogPSAobW9yZSkgPyBMSVNUX0xNQVggOiBMSVNUX0xNSU47XG4tXHR1MzIgY291bnQsIGxlbjtcbi1cdHN0cnVjdCBza19idWZmICpoc2tiLCAqdHNrYiwgKnNrYiwgKnRtcDtcbi1cbi1cdGlmICghbGlzdCkge1xuLVx0XHRpICs9IHNjbnByaW50ZihidWYsIHN6LCBcIihudWxsKVxcblwiKTtcbi1cdFx0cmV0dXJuIGk7XG4tXHR9XG4rXHRzaXplX3Qgc3ogPSBtb3JlID8gTElTVF9MTUFYIDogTElTVF9MTUlOO1xuIFxuLVx0bGVuID0gc2tiX3F1ZXVlX2xlbihsaXN0KTtcbi1cdGkgKz0gc2NucHJpbnRmKGJ1Ziwgc3osIFwibGVuID0gJWRcXG5cIiwgbGVuKTtcbitcdGlmICghbGlzdClcbitcdFx0cmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCBcIihudWxsKVxcblwiKTtcbiBcbi1cdGlmICghbGVuKVxuLVx0XHRyZXR1cm4gaTtcbi1cbi1cdGlmICghbW9yZSkge1xuLVx0XHRoc2tiID0gc2tiX3BlZWsobGlzdCk7XG4tXHRcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXCIgIGhlYWQgXCIpO1xuLVx0XHRpICs9IHRpcGNfc2tiX2R1bXAoaHNrYiwgZmFsc2UsIGJ1ZiArIGkpO1xuLVx0XHRpZiAobGVuIFx1MDAzZSAxKSB7XG4tXHRcdFx0dHNrYiA9IHNrYl9wZWVrX3RhaWwobGlzdCk7XG4tXHRcdFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcIiAgdGFpbCBcIik7XG4tXHRcdFx0aSArPSB0aXBjX3NrYl9kdW1wKHRza2IsIGZhbHNlLCBidWYgKyBpKTtcbi1cdFx0fVxuLVx0fSBlbHNlIHtcbi1cdFx0Y291bnQgPSAwO1xuLVx0XHRza2JfcXVldWVfd2Fsa19zYWZlKGxpc3QsIHNrYiwgdG1wKSB7XG4tXHRcdFx0Y291bnQrKztcbi1cdFx0XHRpZiAoY291bnQgPT0gNilcbi1cdFx0XHRcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXCIgIC5cXG4gIC5cXG5cIik7XG4tXHRcdFx0aWYgKGNvdW50IFx1MDAzZSA1IFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2M9IGxlbiAtIDUpXG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFwiICAjJWQgXCIsIGNvdW50KTtcbi1cdFx0XHRpICs9IHRpcGNfc2tiX2R1bXAoc2tiLCBmYWxzZSwgYnVmICsgaSk7XG4tXHRcdH1cbi1cdH1cbi1cdHJldHVybiBpO1xuK1x0cmV0dXJuIHNjbnByaW50ZihidWYsIHN6LCBcImxlbiA9ICV1XFxuXCIsIHNrYl9xdWV1ZV9sZW5fbG9ja2xlc3MobGlzdCkpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDA3OjQzOjI0LjAyMjIzNjA4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzkwNTk0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU2ltcGxpZnlpbmcgVElQQyBTb2NrZXQgYW5kIFNLQiBEdW1wcyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRpcGNfc2tfZHVtcGAgaW4gYG5ldC90aXBjL3NvY2tldC5jYCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIHNjcmVhbSBcImRlYnVnZ2luZyBhbmQgdHJhY2luZ1wiIHRvIG1lLCB3aGljaCBpcyB0eXBpY2FsbHkgd2hlcmUgdGhlc2Ugc29ydHMgb2YgZHVtcHMgY29tZSBpbnRvIHBsYXkuIEl0IGxvb2tzIGxpa2UgYHRpcGNfc2tfZHVtcGAgaXMgc3BlY2lmaWNhbGx5IGZvciBzb2NrZXQgc3RhdGUgaW5mb3JtYXRpb24sIHdoaWxlIGB0aXBjX2xpc3RfZHVtcGAgaXMgZGVhbGluZyB3aXRoIFRJUEMncyBza2IgbGlzdHMgb3IgcXVldWVzLlxuXG5UaGUgbWVhdCBvZiB0aGlzIHNlZW1zIHRvIGJlIHNpbXBsaWZ5aW5nIHRoZSBkdW1waW5nIHJvdXRpbmVzLiBJbnN0ZWFkIG9mIHNob3dpbmcgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGluZGl2aWR1YWwgc2ticywgdGhleSdyZSBqdXN0IHByaW50aW5nIHRoZSBvdmVyYWxsIGxlbmd0aCBub3cuIFNtYXJ0IG1vdmU7IGl0IHN0cmVhbWxpbmVzIHRoZSBvdXRwdXQgY29uc2lkZXJhYmx5LiBXZSdyZSB0YWxraW5nIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2VzIGhlcmUsIGFsbCBmb3IgdHJhY2UgZGF0YSwgd2hpY2ggaXMgY29tcGxldGVseSBmaW5lIGluIHRoaXMgY29udGV4dC5cblxuQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgY29uZmlybSB0aGUgdXNhZ2UgbG9jYXRpb25zIG9mIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLiBBaCwgcmlnaHQsIGB0aXBjX3NrX2R1bXBgIGlzIGluZGVlZCBpbiBgbmV0L3RpcGMvc29ja2V0LmNgLCBhbmQgYHRpcGNfbGlzdF9kdW1wYCBpcyBpbiBgbmV0L3RpcGMvdHJhY2UuY2AuIFNlZW1zIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODEwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MjkuMDYxMjk4Mjk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDYzNDE5NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19za19kdW1wXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3NvY2tldC5jPTIzMzg9c3RhdGljIHZvaWQgdGlwY19za19maWx0ZXJfcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jLTIzNzItXFx0XFx0ZWxzZSBpZiAoc2tfcm1lbV9hbGxvY19nZXQoc2spICsgc2tiLVxcdTAwM2V0cnVlc2l6ZSBcXHUwMDNlPSBsaW1pdCkge1xcbm5ldC90aXBjL3NvY2tldC5jOjIzNzM6XFx0XFx0XFx0dHJhY2VfdGlwY19za19kdW1wKHNrLCBza2IsIFRJUENfRFVNUF9BTEwsXFxubmV0L3RpcGMvc29ja2V0LmMtMjM3NC1cXHRcXHRcXHRcXHRcXHQgICBcXFwiZXJyX292ZXJsb2FkMiFcXFwiKTtcXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTI0MzA9c3RhdGljIHZvaWQgdGlwY19za19lbnF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmlucHV0cSwgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMjQ2My1cXG5uZXQvdGlwYy9zb2NrZXQuYzoyNDY0OlxcdFxcdHRyYWNlX3RpcGNfc2tfZHVtcChzaywgc2tiLCBUSVBDX0RVTVBfU0tfQktMR1EsIFxcXCJlcnJfb3ZlcmxvYWQhXFxcIik7XFxubmV0L3RpcGMvc29ja2V0LmMtMjQ2NS1cXHRcXHQvKiBPdmVybG9hZCA9XFx1MDAzZSByZWplY3QgbWVzc2FnZSBiYWNrIHRvIHNlbmRlciAqL1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzkyMT1ib29sIHRpcGNfc2tfb3ZlcmxpbWl0MihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTI5LS8qKlxcbm5ldC90aXBjL3NvY2tldC5jOjM5MzA6ICogdGlwY19za19kdW1wIC0gZHVtcCBUSVBDIHNvY2tldFxcbm5ldC90aXBjL3NvY2tldC5jLTM5MzEtICogQHNrOiB0aXBjIHNrIHRvIGJlIGR1bXBlZFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzkzOS0gKi9cXG5uZXQvdGlwYy9zb2NrZXQuYzozOTQwOmludCB0aXBjX3NrX2R1bXAoc3RydWN0IHNvY2sgKnNrLCB1MTYgZHF1ZXVlcywgY2hhciAqYnVmKVxcbm5ldC90aXBjL3NvY2tldC5jLTM5NDEte1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0xMzA9aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcXG5uZXQvdGlwYy90cmFjZS5oOjEzMTppbnQgdGlwY19za19kdW1wKHN0cnVjdCBzb2NrICpzaywgdTE2IGRxdWV1ZXMsIGNoYXIgKmJ1Zik7XFxubmV0L3RpcGMvdHJhY2UuaC0xMzItaW50IHRpcGNfbGlua19kdW1wKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHUxNiBkcXVldWVzLCBjaGFyICpidWYpO1xcbi0tXFxubmV0L3RpcGMvdHJhY2UuaD0xODg9REVDTEFSRV9FVkVOVF9DTEFTUyh0aXBjX3NrX2NsYXNzLFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuaC0yMDQtXFx0XFx0X19lbnRyeS1cXHUwMDNlcG9ydGlkID0gdGlwY19zb2NrX2dldF9wb3J0aWQoc2spO1xcbm5ldC90aXBjL3RyYWNlLmg6MjA1OlxcdFxcdHRpcGNfc2tfZHVtcChzaywgZHF1ZXVlcywgX19nZXRfc3RyKGJ1ZikpO1xcbm5ldC90aXBjL3RyYWNlLmgtMjA2LVxcdFxcdGlmIChza2IpXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oPTIxNz1ERUZJTkVfRVZFTlRfQ09ORElUSU9OKHRpcGNfc2tfY2xhc3MsIG5hbWUsIFxcXFxcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmgtMjIxLVxcdFRQX0NPTkRJVElPTih0aXBjX3NrX2ZpbHRlcmluZyhzaykpKVxcbm5ldC90aXBjL3RyYWNlLmg6MjIyOkRFRklORV9TS19FVkVOVF9GSUxURVIodGlwY19za19kdW1wKTtcXG5uZXQvdGlwYy90cmFjZS5oLTIyMy1ERUZJTkVfU0tfRVZFTlRfRklMVEVSKHRpcGNfc2tfY3JlYXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MzQuMjA3NjUwNDA5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5Mjg0NTU0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVElQQyBTb2NrZXQgRHVtcHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGV5J3JlIGV4Y2x1c2l2ZWx5IHRpZWQgdG8gdHJhY2luZywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgdHJhY2VfdGlwY19za19kdW1wYCBhbmQgYHRpcGNfc2tfY2xhc3NgIGZvciB0aGUgZm9ybWVyLCBhbmQgZ2VuZXJhbCB0cmFjZSBldmVudHMgZm9yIHRoZSBsYXR0ZXIuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIG5hcnJvd3MgZG93biB0aGUgc2NvcGUgb2YgdGhlaXIgdXNhZ2UgY29uc2lkZXJhYmx5LiBHaXZlbiB0aGF0LCBJIHdhbnQgdG8gemVybyBpbiBvbiBgdGlwY19saXN0X2R1bXBgIGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLCBzaW5jZSBib3RoIGFyZSB1c2VkIHdpdGggdHJhY2UgZXZlbnRzLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSB1c2VkIHdpdGggdHJhY2UgZXZlbnRzIG1lYW5zIHRoZXkgYXJlIG5vdCBjb3JlIHRvIHRoZSBzb2NrZXQgb3BlcmF0aW9ucy4gTGV0J3MgZGVsdmUgaW50byB0aGF0IG9uZSBhbmQgc2VlIHdoYXQgaXQncyB0ZWxsaW5nIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQ0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDc6NDM6MzcuNjAwNDk5NzQ2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjQyMDA0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY19saXN0X2R1bXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvbGluay5jPTExOTU9c3RhdGljIGJvb2wgbGlua19yZXRyYW5zbWl0X2ZhaWx1cmUoc3RydWN0IHRpcGNfbGluayAqbCwgc3RydWN0IHRpcGNfbGluayAqcixcXG4tLVxcbm5ldC90aXBjL2xpbmsuYy0xMjI0LVxcbm5ldC90aXBjL2xpbmsuYzoxMjI1OlxcdHRyYWNlX3RpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V0cmFuc21xLCB0cnVlLCBcXFwicmV0cmFucyBmYWlsdXJlIVxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYy0xMjI2LVxcdHRyYWNlX3RpcGNfbGlua19kdW1wKGwsIFRJUENfRFVNUF9OT05FLCBcXFwicmV0cmFucyBmYWlsdXJlIVxcXCIpO1xcbi0tXFxubmV0L3RpcGMvbGluay5jPTI4OTc9aW50IHRpcGNfbGlua19kdW1wKHN0cnVjdCB0aXBjX2xpbmsgKmwsIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuLS1cXG5uZXQvdGlwYy9saW5rLmMtMjk1OS1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJ0cmFuc21xOiBcXFwiKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk2MDpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V0cmFuc21xLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5NjEtXFx0fVxcbi0tXFxubmV0L3RpcGMvbGluay5jLTI5NjktXFx0XFx0XFx0ICAgICAgIGwtXFx1MDAzZWJhY2tsb2dbVElQQ19TWVNURU1fSU1QT1JUQU5DRV0ubGVuKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk3MDpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2ViYWNrbG9ncSwgZmFsc2UsIGJ1ZiArIGkpO1xcbm5ldC90aXBjL2xpbmsuYy0yOTcxLVxcdH1cXG4tLVxcbm5ldC90aXBjL2xpbmsuYy0yOTczLVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcImRlZmVyZHE6IFxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYzoyOTc0OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNmwtXFx1MDAzZWRlZmVyZHEsIGZhbHNlLCBidWYgKyBpKTtcXG5uZXQvdGlwYy9saW5rLmMtMjk3NS1cXHR9XFxuLS1cXG5uZXQvdGlwYy9saW5rLmMtMjk3Ny1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJpbnB1dHE6IFxcXCIpO1xcbm5ldC90aXBjL2xpbmsuYzoyOTc4OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAobC1cXHUwMDNlaW5wdXRxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5NzktXFx0fVxcbi0tXFxubmV0L3RpcGMvbGluay5jLTI5ODEtXFx0XFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwid2FrZXVwOiBcXFwiKTtcXG5uZXQvdGlwYy9saW5rLmM6Mjk4MjpcXHRcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZsLVxcdTAwM2V3YWtldXBxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbGluay5jLTI5ODMtXFx0fVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jPTMwOTc9aW50IHRpcGNfbm9kZV9kdW1wKHN0cnVjdCB0aXBjX25vZGUgKm4sIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbi0tXFxubmV0L3RpcGMvbm9kZS5jLTMxMjgtXFx0aSArPSBzY25wcmludGYoYnVmICsgaSwgc3ogLSBpLCBcXFwiIGlucHV0cTogXFxcIik7XFxubmV0L3RpcGMvbm9kZS5jOjMxMjk6XFx0aSArPSB0aXBjX2xpc3RfZHVtcChcXHUwMDI2bi1cXHUwMDNlbGlua3NbMF0uaW5wdXRxLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvbm9kZS5jLTMxMzAtXFxuLS1cXG5uZXQvdGlwYy9ub2RlLmMtMzEzNy1cXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCIgaW5wdXRxOiBcXFwiKTtcXG5uZXQvdGlwYy9ub2RlLmM6MzEzODpcXHRpICs9IHRpcGNfbGlzdF9kdW1wKFxcdTAwMjZuLVxcdTAwM2VsaW5rc1sxXS5pbnB1dHEsIGZhbHNlLCBidWYgKyBpKTtcXG5uZXQvdGlwYy9ub2RlLmMtMzEzOS1cXG4tLVxcbm5ldC90aXBjL3NvY2tldC5jPTM5NDA9aW50IHRpcGNfc2tfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHUxNiBkcXVldWVzLCBjaGFyICpidWYpXFxuLS1cXG5uZXQvdGlwYy9zb2NrZXQuYy0zOTk0LVxcdFxcdGkgKz0gc2NucHJpbnRmKGJ1ZiArIGksIHN6IC0gaSwgXFxcInNrX3dyaXRlX3F1ZXVlOiBcXFwiKTtcXG5uZXQvdGlwYy9zb2NrZXQuYzozOTk1OlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza193cml0ZV9xdWV1ZSwgZmFsc2UsIGJ1ZiArIGkpO1xcbm5ldC90aXBjL3NvY2tldC5jLTM5OTYtXFx0fVxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzk5OS1cXHRcXHRpICs9IHNjbnByaW50ZihidWYgKyBpLCBzeiAtIGksIFxcXCJza19yZWNlaXZlX3F1ZXVlOiBcXFwiKTtcXG5uZXQvdGlwYy9zb2NrZXQuYzo0MDAwOlxcdFxcdGkgKz0gdGlwY19saXN0X2R1bXAoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlLCBmYWxzZSwgYnVmICsgaSk7XFxubmV0L3RpcGMvc29ja2V0LmMtNDAwMS1cXHR9XFxuLS1cXG5uZXQvdGlwYy90cmFjZS5jPTUzPWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbi0tXFxubmV0L3RpcGMvdHJhY2UuYy0xNTgtLyoqXFxubmV0L3RpcGMvdHJhY2UuYzoxNTk6ICogdGlwY19saXN0X2R1bXAgLSBkdW1wIFRJUEMgc2tiIGxpc3QvcXVldWVcXG5uZXQvdGlwYy90cmFjZS5jLTE2MC0gKiBAbGlzdDogbGlzdCBvZiBza2JzIHRvIGJlIGR1bXBlZFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuYy0xNjMtICovXFxubmV0L3RpcGMvdHJhY2UuYzoxNjQ6aW50IHRpcGNfbGlzdF9kdW1wKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIGJvb2wgbW9yZSwgY2hhciAqYnVmKVxcbm5ldC90aXBjL3RyYWNlLmMtMTY1LXtcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmg9MTI5PWludCB0aXBjX3NrYl9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgbW9yZSwgY2hhciAqYnVmKTtcXG5uZXQvdGlwYy90cmFjZS5oOjEzMDppbnQgdGlwY19saXN0X2R1bXAoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgYm9vbCBtb3JlLCBjaGFyICpidWYpO1xcbm5ldC90aXBjL3RyYWNlLmgtMTMxLWludCB0aXBjX3NrX2R1bXAoc3RydWN0IHNvY2sgKnNrLCB1MTYgZHF1ZXVlcywgY2hhciAqYnVmKTtcXG4tLVxcbm5ldC90aXBjL3RyYWNlLmg9MTYzPURFQ0xBUkVfRVZFTlRfQ0xBU1ModGlwY19saXN0X2NsYXNzLFxcbi0tXFxubmV0L3RpcGMvdHJhY2UuaC0xNzUtXFx0XFx0X19hc3NpZ25fc3RyKGhlYWRlcik7XFxubmV0L3RpcGMvdHJhY2UuaDoxNzY6XFx0XFx0dGlwY19saXN0X2R1bXAobGlzdCwgbW9yZSwgX19nZXRfc3RyKGJ1ZikpO1xcbm5ldC90aXBjL3RyYWNlLmgtMTc3LVxcdCksXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oPTE4Mz1ERUZJTkVfRVZFTlQodGlwY19saXN0X2NsYXNzLCBuYW1lLCBcXFxcXFxuLS1cXG5uZXQvdGlwYy90cmFjZS5oLTE4NS1cXHRUUF9BUkdTKGxpc3QsIG1vcmUsIGhlYWRlcikpXFxubmV0L3RpcGMvdHJhY2UuaDoxODY6REVGSU5FX0xJU1RfRVZFTlQodGlwY19saXN0X2R1bXApO1xcbm5ldC90aXBjL3RyYWNlLmgtMTg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0Mzo0Mi4zMjQ3MjA0MjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU5OTMzMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGB0aXBjX3NrX2R1bXBgIGFuZCBgdGlwY19saXN0X2R1bXBgIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhlIGNvZGUgYW5kIGl0J3MgY2xlYXIgdGhlc2UgYHRpcGNfc2tfZHVtcGAgYW5kIGB0aXBjX2xpc3RfZHVtcGAgZnVuY3Rpb25zIGFyZSAqc29sZWx5KiBmb3IgdHJhY2luZyBhbmQgc3RhdGUgZHVtcGluZy4gVGhleSdyZSB1c2VkIGJ5IHRoZSB0cmFjaW5nIGluZnJhc3RydWN0dXJlIChgdHJhY2VfdGlwY19za19kdW1wYCwgZXRjLikgYW5kIHByb3ZpZGUgaW5mb3JtYXRpb24sIGJ1dCB0aGV5IGRvbid0IGFjdHVhbGx5IG1vZGlmeSB0aGUgY29yZSBsb2dpYyBvciBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBvZiB0aGUga2VybmVsJ3MgVElQQyAoVHJhbnNwYXJlbnQgSW50ZXItUHJvY2VzcyBDb21tdW5pY2F0aW9uKSBmdW5jdGlvbmFsaXR5LiBUaGF0J3MgYSBrZXkgZGlzdGluY3Rpb24uIEdpdmVuIHRoZWlyIHNwZWNpZmljIHB1cnBvc2UsIHRoZXJlJ3Mgbm8gZ29vZCByZWFzb24gdG8gc3ViamVjdCB0aGVtIHRvIGZ1enppbmcuIFRoZXkgd291bGRuJ3QgcmV2ZWFsIGFueSBmdW5jdGlvbmFsIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgbmV0d29yayBwcm90b2NvbCBvciBwcm9jZXNzIGNvbW11bmljYXRpb24uIFRodXMsIEknbGwgY29uZmlkZW50bHkgbWFyayB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBhcyBgZmFsc2VgIGZvciB0aGVzZSBmdW5jdGlvbnMuIFRoZXkncmUgc2ltcGx5IG5vdCByZWxldmFudCB0byB0aGF0IHRlc3Rpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5OTEsIk91dHB1dFRva2VucyI6NzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwNzo0Mzo0Ni4zODQ2NTY5NTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdHJhY2UgZHVtcGluZyBmdW5jdGlvbnMgKHRpcGNfc2tfZHVtcCBhbmQgdGlwY19saXN0X2R1bXApIHdoaWNoIGFyZSBwdXJlbHkgZGVjb3JhdGl2ZSBhbmQgdXNlZCBmb3IgZGVidWdnaW5nL3RyYWNpbmcuIEl0IGRvZXMgbm90IGFsdGVyIGFueSBmdW5jdGlvbmFsIGV4ZWN1dGlvbiBmbG93IG9mIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRyYWNlIGR1bXBpbmcgZnVuY3Rpb25zICh0aXBjX3NrX2R1bXAgYW5kIHRpcGNfbGlzdF9kdW1wKSB3aGljaCBhcmUgcHVyZWx5IGRlY29yYXRpdmUgYW5kIHVzZWQgZm9yIGRlYnVnZ2luZy90cmFjaW5nLiBJdCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdyBvZiB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowv5psj[1] Phase: Running StartedAt: 2026-07-20 07:43:57 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowv5psj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-20 07:43:57 +0000 UTC FinishedAt: 2026-07-20 07:44:02 +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,}