Name: series-workflow2q6b5 Phase: Failed StartedAt: 2026-08-31 08:10:14 +0000 UTC FinishedAt: 2026-08-31 08:27:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2q6b5[0] Phase: Succeeded StartedAt: 2026-08-31 08:10:14 +0000 UTC FinishedAt: 2026-08-31 08:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2q6b5[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 08:10:14 +0000 UTC FinishedAt: 2026-08-31 08:27:24 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTIyNTIzM2NhZTM1YjBhMzU4YmRlNTY1M2U5MjhlZDkyOWVkMzg3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA4OjI2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdFxuaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG5AQCAtNTM5LDYgJiM0Mzs1MzksMTQgQEAgd2F0ZXJtYXJrW1dNQVJLX01JTl0gdmFsdWUgZm9yIGVhY2ggbG93bWVtIHpvbmUgaW4gdGhlIHN5c3RlbS5cbiBFYWNoIGxvd21lbSB6b25lIGdldHMgYSBudW1iZXIgb2YgcmVzZXJ2ZWQgZnJlZSBwYWdlcyBiYXNlZFxuIHByb3BvcnRpb25hbGx5IG9uIGl0cyBzaXplLlxuIFxuJiM0MztXaGVuIFRyYW5zcGFyZW50IEh1Z2VwYWdlIChUSFApIHN1cHBvcnQgaXMgZW5hYmxlZCB0aHJvdWdoIGdsb2JhbCBvclxuJiM0MztwZXItc2l6ZSBjb250cm9scywgdGhlIGtlcm5lbCBtYXkgcmFpc2UgdGhpcyB2YWx1ZSBhdXRvbWF0aWNhbGx5IHRvXG4mIzQzO2hlbHAga2VlcCBwYWdlYmxvY2tzIGZyZWUgYW5kIHJlZHVjZSBmcmFnbWVudGF0aW9uIGZvciBUSFAgYWxsb2NhdGlvbnMuXG4mIzQzO1RoZSBhdXRvbWF0aWMgcmVjb21tZW5kYXRpb24gY2Fubm90IGV4Y2VlZCA1JSBvZiBsb3cgbWVtb3J5IG9yIDEgR2lCLFxuJiM0Mzt3aGljaGV2ZXIgaXMgbG93ZXIuICBUaGlzIGxpbWl0IGFwcGxpZXMgb25seSB0byB0aGUgYXV0b21hdGljXG4mIzQzO3JlY29tbWVuZGF0aW9uIGFuZCBkb2VzIG5vdCBjb25zdHJhaW4gYSBoaWdoZXIgdmFsdWUgd3JpdHRlbiBieVxuJiM0Mzt1c2Vyc3BhY2UuXG4mIzQzO1xuIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DXG4gYWxsb2NhdGlvbnM7IGlmIHlvdSBzZXQgdGhpcyB0byBsb3dlciB0aGFuIDEwMjRLQiwgeW91ciBzeXN0ZW0gd2lsbFxuIGJlY29tZSBzdWJ0bHkgYnJva2VuLCBhbmQgcHJvbmUgdG8gZGVhZGxvY2sgdW5kZXIgaGlnaCBsb2Fkcy5cbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcbmluZGV4IGY0OWE2NzEwOTMzYjEuLmE4ZmMwNjFkMjQ4OGQgMTAwNjQ0XG4tLS0gYS9tbS9raHVnZXBhZ2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEAgc3RhdGljIERFRklORV9SRUFEX01PU1RMWV9IQVNIVEFCTEUobW1fc2xvdHNfaGFzaCwgTU1fU0xPVFNfSEFTSF9CSVRTKTtcbiBcbiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKm1tX3Nsb3RfY2FjaGUgX19yb19hZnRlcl9pbml0O1xuIFxuJiM0MzsjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcdFx0KFNaXzFHIC8gUEFHRV9TSVpFKVxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlx0MlxuIFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcbkBAIC0zMTIwLDkgJiM0MzszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKVxuIFx0cmVjb21tZW5kZWRfbWluICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMgKiBucl96b25lcyAqXG4gXHRcdFx0ICAgTUlHUkFURV9QQ1BUWVBFUyAqIE1JR1JBVEVfUENQVFlQRVM7XG4gXG4tXHQvKiBkb24mIzM5O3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEb24mIzM5O3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4mIzQzO1x0ICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci5cbiYjNDM7XHQgKi9cbiBcdHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sXG4gXHRcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfYnVmZmVyX3BhZ2VzKCkgLyAyMCk7XG4mIzQzO1x0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4gXHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4gXG4gXHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwODoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMjI1MjMzY2FlMzViMGEzNThiZGU1NjUzZTkyOGVkOTI5ZWQzODdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QKaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdApAQCAtNTM5LDYgJiM0Mzs1MzksMTQgQEAgd2F0ZXJtYXJrW1dNQVJLX01JTl0gdmFsdWUgZm9yIGVhY2ggbG93bWVtIHpvbmUgaW4gdGhlIHN5c3RlbS4KIEVhY2ggbG93bWVtIHpvbmUgZ2V0cyBhIG51bWJlciBvZiByZXNlcnZlZCBmcmVlIHBhZ2VzIGJhc2VkCiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS4KIAomIzQzO1doZW4gVHJhbnNwYXJlbnQgSHVnZXBhZ2UgKFRIUCkgc3VwcG9ydCBpcyBlbmFibGVkIHRocm91Z2ggZ2xvYmFsIG9yCiYjNDM7cGVyLXNpemUgY29udHJvbHMsIHRoZSBrZXJuZWwgbWF5IHJhaXNlIHRoaXMgdmFsdWUgYXV0b21hdGljYWxseSB0bwomIzQzO2hlbHAga2VlcCBwYWdlYmxvY2tzIGZyZWUgYW5kIHJlZHVjZSBmcmFnbWVudGF0aW9uIGZvciBUSFAgYWxsb2NhdGlvbnMuCiYjNDM7VGhlIGF1dG9tYXRpYyByZWNvbW1lbmRhdGlvbiBjYW5ub3QgZXhjZWVkIDUlIG9mIGxvdyBtZW1vcnkgb3IgMSBHaUIsCiYjNDM7d2hpY2hldmVyIGlzIGxvd2VyLiAgVGhpcyBsaW1pdCBhcHBsaWVzIG9ubHkgdG8gdGhlIGF1dG9tYXRpYwomIzQzO3JlY29tbWVuZGF0aW9uIGFuZCBkb2VzIG5vdCBjb25zdHJhaW4gYSBoaWdoZXIgdmFsdWUgd3JpdHRlbiBieQomIzQzO3VzZXJzcGFjZS4KJiM0MzsKIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DCiBhbGxvY2F0aW9uczsgaWYgeW91IHNldCB0aGlzIHRvIGxvd2VyIHRoYW4gMTAyNEtCLCB5b3VyIHN5c3RlbSB3aWxsCiBiZWNvbWUgc3VidGx5IGJyb2tlbiwgYW5kIHByb25lIHRvIGRlYWRsb2NrIHVuZGVyIGhpZ2ggbG9hZHMuCmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmMKaW5kZXggZjQ5YTY3MTA5MzNiMS4uYThmYzA2MWQyNDg4ZCAxMDA2NDQKLS0tIGEvbW0va2h1Z2VwYWdlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2todWdlcGFnZWQuYwpAQCAtMTAxLDYgJiM0MzsxMDEsNyBAQCBzdGF0aWMgREVGSU5FX1JFQURfTU9TVExZX0hBU0hUQUJMRShtbV9zbG90c19oYXNoLCBNTV9TTE9UU19IQVNIX0JJVFMpOwogCiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKm1tX3Nsb3RfY2FjaGUgX19yb19hZnRlcl9pbml0OwogCiYjNDM7I2RlZmluZSBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTCQkoU1pfMUcgLyBQQUdFX1NJWkUpCiAjZGVmaW5lIEtIVUdFUEFHRURfTUlOX01USFBfT1JERVIJMgogCiBzdHJ1Y3QgY29sbGFwc2VfY29udHJvbCB7CkBAIC0zMTIwLDkgJiM0MzszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKQogCXJlY29tbWVuZGVkX21pbiAmIzQzOz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKgogCQkJICAgTUlHUkFURV9QQ1BUWVBFUyAqIE1JR1JBVEVfUENQVFlQRVM7CiAKLQkvKiBkb24mIzM5O3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovCiYjNDM7CS8qCiYjNDM7CSAqIERvbiYjMzk7dCBhbGxvdyB0aGUgVEhQIHJlY29tbWVuZGF0aW9uIHRvIGV4Y2VlZCA1JSBvZiBsb3dtZW0gb3IgYW4KJiM0MzsJICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci4KJiM0MzsJICovCiAJcmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwKIAkJCSAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApOwomIzQzOwlyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTsKIAlyZWNvbW1lbmRlZF9taW4gJmx0OyZsdDs9IChQQUdFX1NISUZULTEwKTsKIAogCWlmIChyZWNvbW1lbmRlZF9taW4gJmd0OyBtaW5fZnJlZV9rYnl0ZXMpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBicmVhayBpdCBkb3duIGZpbGUgYnkgZmlsZSBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgdHdlYWtlZC4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBib3RoIGBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RgIGFuZCBgbW0va2h1Z2VwYWdlZC5jYC4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBtbS9raHVnZXBhZ2VkLmNgIGNoYW5nZSwgb2YgY291cnNlLgoKTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgLiBJIGNhbiBzZWUgYSBuZXcgbGluZSBiZWluZyBhZGRlZDogYHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpO2AgVGhpcyBpcyBpbnRlcmVzdGluZy4gRnJvbSB0aGUgY29udGV4dCwgYW5kIGJ5IHJldmlld2luZyB0aGUgYCNkZWZpbmUgVEhQX01JTl9GUkVFX01BWF9QQUdFUyAoU1pfMUcgLyBQQUdFX1NJWkUpYCwgaXQgc2VlbXMgdG8gYmUgZXN0YWJsaXNoaW5nIGFuIHVwcGVyIGJvdW5kIGZvciBgcmVjb21tZW5kZWRfbWluYCBiYXNlZCBvbiBhIGdpZ2FieXRlIG9mIG1lbW9yeSBkaXZpZGVkIGJ5IHRoZSBwYWdlIHNpemUuIFRoZSBwcmV2aW91cyBjb2RlIGxvZ2ljIGNhbGN1bGF0ZXMgdGhlIGByZWNvbW1lbmRlZF9taW5gIGJhc2VkIG9uIGZyZWUgYnVmZmVyIHBhZ2VzLCBhbmQgdGhpcyBhZGRpdGlvbiBzZXRzIGEgaGFyZCBjZWlsaW5nIG9uIHRoYXQgdmFsdWUuCgpJIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGZ1bmN0aW9uLiBJJiMzOTtsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgZWxzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgaG93IHRoaXMgcGFyYW1ldGVyIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyB1cHBlciBib3VuZCwgYW5kIHdoYXQgaXQmIzM5O3MgcHJldmVudGluZy4gVGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIGl0cyBhbGxvY2F0aW9uIG9mIGh1Z2UgcGFnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTQ4Nz1zdGF0aWMgc3NpemVfdCBlbmFibGVkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNTA3LVx0XHQgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NTA4Olx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9odWdlX21lbW9yeS5jLTUwOS1cdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTcyMj1zdGF0aWMgc3NpemVfdCBhbm9uX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vaHVnZV9tZW1vcnkuYy03NDMtXHRcdCAqL1xubW0vaHVnZV9tZW1vcnkuYzo3NDQ6XHRcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcbm1tL2h1Z2VfbWVtb3J5LmMtNzQ1LVx0fVxuLS1cbm1tL2ludGVybmFsLmg9NjkwPXBtZF90ICptbV9maW5kX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKTtcbi0tXG5tbS9pbnRlcm5hbC5oLTY5NC0gKi9cbm1tL2ludGVybmFsLmg6Njk1OnZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKTtcbm1tL2ludGVybmFsLmgtNjk2LVxuLS1cbm1tL2todWdlcGFnZWQuYz0zMDY5PXN0YXRpYyBpbnQga2h1Z2VwYWdlZCh2b2lkICpub25lKVxuLS1cbm1tL2todWdlcGFnZWQuYy0zMDg5LVxubW0va2h1Z2VwYWdlZC5jOjMwOTA6dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG5tbS9raHVnZXBhZ2VkLmMtMzA5MS17XG4tLVxubW0va2h1Z2VwYWdlZC5jPTMxNDU9aW50IHN0YXJ0X3N0b3Bfa2h1Z2VwYWdlZCh2b2lkKVxuLS1cbm1tL2todWdlcGFnZWQuYy0zMTY3LVx0fVxubW0va2h1Z2VwYWdlZC5jOjMxNjg6XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9raHVnZXBhZ2VkLmMtMzE2OS1cdHJldHVybiAwO1xuLS1cbm1tL2todWdlcGFnZWQuYz0zMTcyPXZvaWQga2h1Z2VwYWdlZF9taW5fZnJlZV9rYnl0ZXNfdXBkYXRlKHZvaWQpXG4tLVxubW0va2h1Z2VwYWdlZC5jLTMxNzUtXHRpZiAoaHVnZXBhZ2VfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBraHVnZXBhZ2VkX3RocmVhZClcbm1tL2todWdlcGFnZWQuYzozMTc2Olx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9raHVnZXBhZ2VkLmMtMzE3Ny19XG4tLVxubW0vc2htZW0uYz01NzY0PXN0YXRpYyBzc2l6ZV90IHRocHNpemVfc2htZW1fZW5hYmxlZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9zaG1lbS5jLTU3ODktXHRcdCAqL1xubW0vc2htZW0uYzo1NzkwOlx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9zaG1lbS5jLTU3OTEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgbW0va2h1Z2VwYWdlZC5jYCB0byB1bmRlcnN0YW5kIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCBhY3R1YWxseSB3b3JrcywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYGtodWdlcGFnZWRgLiBJJiMzOTtsbCBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG1tL2todWdlcGFnZWQuY2AuIExldCYjMzk7cyB6ZXJvIGluIG9uIGxpbmVzIDMwOTAgdGhyb3VnaCAzMTQwIOKAkyB0aGF0IHNob3VsZCBiZSB0aGUgcmlnaHQgYXJlYSB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBsb2dpYy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyB0aGUgbWluaW11bSBhbW91bnQgb2YgZnJlZSBtZW1vcnkgdGhlIHN5c3RlbSBzaG91bGQgc3RyaXZlIHRvIG1haW50YWluLCB3aGljaCBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgZm9yIGh1Z2VwYWdlcyBhbmQgZW5zdXJpbmcgdGhlaXIgYWxsb2NhdGlvbiBkb2VzbiYjMzk7dCBzdGFydmUgdGhlIHN5c3RlbS4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgaXQgY2FsY3VsYXRlcyB0aGUgJiMzNDtyZWNvbW1lbmRlZCYjMzQ7IHZhbHVlIGFuZCB3aGF0IGZhY3RvcnMgYXJlIGNvbnNpZGVyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBwcm9iYWJseSB0YWtlcyBpbnRvIGFjY291bnQgdGhpbmdzIGxpa2UgYXZhaWxhYmxlIG1lbW9yeSwgTlVNQSBub2RlIGNvbmZpZ3VyYXRpb25zIChpZiBhcHBsaWNhYmxlKSwgYW5kIHBvc3NpYmx5IHNvbWUgaGV1cmlzdGljcyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBodWdlcGFnZSB1c2FnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzIG9uIGhvdyB0aGlzIGZ1bmN0aW9uIGltcGFjdHMgc3lzdGVtIHBlcmZvcm1hbmNlIG9yIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O20gYWxzbyBob3BpbmcgaXQgd2lsbCBwcm92aWRlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHR1bmluZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0va2h1Z2VwYWdlZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDkwOlx0dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG4zMDkxOlx0e1xuMzA5MjpcdFx0c3RydWN0IHpvbmUgKnpvbmU7XG4zMDkzOlx0XHRpbnQgbnJfem9uZXMgPSAwO1xuMzA5NDpcdFx0dW5zaWduZWQgbG9uZyByZWNvbW1lbmRlZF9taW47XG4zMDk1Olx0XG4zMDk2Olx0XHRpZiAoIWh1Z2VwYWdlX2VuYWJsZWQoKSkge1xuMzA5NzpcdFx0XHRjYWxjdWxhdGVfbWluX2ZyZWVfa2J5dGVzKCk7XG4zMDk4Olx0XHRcdGdvdG8gdXBkYXRlX3dtYXJrcztcbjMwOTk6XHRcdH1cbjMxMDA6XHRcbjMxMDE6XHRcdGZvcl9lYWNoX3BvcHVsYXRlZF96b25lKHpvbmUpIHtcbjMxMDI6XHRcdFx0LypcbjMxMDM6XHRcdFx0ICogV2UgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZnJhZ21lbnRhdGlvbiBvZlxuMzEwNDpcdFx0XHQgKiBaT05FX01PVkFCTEUgc2luY2UgaXQgb25seSBoYXMgbW92YWJsZSBwYWdlcy5cbjMxMDU6XHRcdFx0ICovXG4zMTA2Olx0XHRcdGlmICh6b25lX2lkeCh6b25lKSBcdTAwM2UgZ2ZwX3pvbmUoR0ZQX1VTRVIpKVxuMzEwNzpcdFx0XHRcdGNvbnRpbnVlO1xuMzEwODpcdFxuMzEwOTpcdFx0XHRucl96b25lcyYjNDM7JiM0Mzs7XG4zMTEwOlx0XHR9XG4zMTExOlx0XG4zMTEyOlx0XHQvKiBFbnN1cmUgMiBwYWdlYmxvY2tzIGFyZSBmcmVlIHRvIGFzc2lzdCBmcmFnbWVudGF0aW9uIGF2b2lkYW5jZSAqL1xuMzExMzpcdFx0cmVjb21tZW5kZWRfbWluID0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKiAyO1xuMzExNDpcdFxuMzExNTpcdFx0LypcbjMxMTY6XHRcdCAqIE1ha2Ugc3VyZSB0aGF0IG9uIGF2ZXJhZ2UgYXQgbGVhc3QgdHdvIHBhZ2VibG9ja3MgYXJlIGFsbW9zdCBmcmVlXG4zMTE3Olx0XHQgKiBvZiBhbm90aGVyIHR5cGUsIG9uZSBmb3IgYSBtaWdyYXRldHlwZSB0byBmYWxsIGJhY2sgdG8gYW5kIGFcbjMxMTg6XHRcdCAqIHNlY29uZCB0byBhdm9pZCBzdWJzZXF1ZW50IGZhbGxiYWNrcyBvZiBvdGhlciB0eXBlcyBUaGVyZSBhcmUgM1xuMzExOTpcdFx0ICogTUlHUkFURV9UWVBFUyB3ZSBjYXJlIGFib3V0LlxuMzEyMDpcdFx0ICovXG4zMTIxOlx0XHRyZWNvbW1lbmRlZF9taW4gJiM0Mzs9IHBhZ2VibG9ja19ucl9wYWdlcyAqIG5yX3pvbmVzICpcbjMxMjI6XHRcdFx0XHQgICBNSUdSQVRFX1BDUFRZUEVTICogTUlHUkFURV9QQ1BUWVBFUztcbjMxMjM6XHRcbjMxMjQ6XHRcdC8qXG4zMTI1Olx0XHQgKiBEb24mIzM5O3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4zMTI2Olx0XHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxuMzEyNzpcdFx0ICovXG4zMTI4Olx0XHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxuMzEyOTpcdFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xuMzEzMDpcdFx0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4zMTMxOlx0XHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4zMTMyOlx0XG4zMTMzOlx0XHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbjMxMzQ6XHRcdFx0aWYgKHVzZXJfbWluX2ZyZWVfa2J5dGVzIFx1MDAzZT0gMClcbjMxMzU6XHRcdFx0XHRwcl9pbmZvX3JhdGVsaW1pdGVkKFwmIzM0O3JhaXNpbmcgbWluX2ZyZWVfa2J5dGVzIGZyb20gJWQgdG8gJWx1IHRvIGhlbHAgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYWxsb2NhdGlvbnNcXG5cJiMzNDssXG4zMTM2Olx0XHRcdFx0XHRcdCAgICBtaW5fZnJlZV9rYnl0ZXMsIHJlY29tbWVuZGVkX21pbik7XG4zMTM3Olx0XG4zMTM4Olx0XHRcdG1pbl9mcmVlX2tieXRlcyA9IHJlY29tbWVuZGVkX21pbjtcbjMxMzk6XHRcdH1cbjMxNDA6XHRcbjMxNDE6XHR1cGRhdGVfd21hcmtzOlxuMzE0MjpcdFx0c2V0dXBfcGVyX3pvbmVfd21hcmtzKCk7XG4zMTQzOlx0fVxuMzE0NDpcdFxuMzE0NTpcdGludCBzdGFydF9zdG9wX2todWdlcGFnZWQodm9pZClcbjMxNDY6XHR7XG4zMTQ3Olx0XHRndWFyZChtdXRleCkoXHUwMDI2a2h1Z2VwYWdlZF9tdXRleCk7XG4zMTQ4Olx0XHRpZiAoaHVnZXBhZ2VfZW5hYmxlZCgpKSB7XG4zMTQ5Olx0XHRcdGlmICgha2h1Z2VwYWdlZF90aHJlYWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk4CgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDE2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggUmV2aWV3OiBUSFAgYG1pbl9mcmVlX2tieXRlc2AgQ2FsY3VsYXRpb24gQ2xhbXAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FwLCBgVEhQX01JTl9GUkVFX01BWF9QQUdFU2AsIG9uIHRoZSBgcmVjb21tZW5kZWRfbWluYCB2YWx1ZSB1c2VkIGluIGNhbGN1bGF0aW5nIGBtaW5fZnJlZV9rYnl0ZXNgIGZvciBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBCZWZvcmUgdGhpcyBwYXRjaCwgYHJlY29tbWVuZGVkX21pbmAgd2FzIGNvbXB1dGVkIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9yczogYHBhZ2VibG9ja19ucl9wYWdlc2AsIGBucl96b25lc2AsIGFuZCBgTUlHUkFURV9QQ1BUWVBFU2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZGVzZXJ2ZXMgZnV6emluZyBhdHRlbnRpb24uCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1hZ25pdHVkZSBvZiBgcmVjb21tZW5kZWRfbWluYCBvbiBhIHR5cGljYWwgc3lzdGVtLiBMZXQmIzM5O3MgY2FsY3VsYXRlOiBvbiBhIHN0YW5kYXJkIHg4Nl82NCBzeXN0ZW0sIHdpdGggYSAyTUIgaHVnZSBwYWdlIHNpemUsIDMgem9uZXMsIGFuZCAzIG1pZ3JhdGlvbiB0eXBlcywgdGhlIGluaXRpYWwgY2FsY3VsYXRpb24gcmVzdWx0cyBpbiByb3VnaGx5IDY2IE1CLgoKVGhlIGNvbmNlcm4sIEkgdGhpbmssIGlzIHJlYWxseSBhYm91dCBleGNlcHRpb25hbGx5IGxhcmdlIHN5c3RlbXMgLS0gMVRCJiM0MzsgUkFNLCBvciBodWdlIG51bWJlcnMgb2Ygem9uZXMvTlVNQSBub2Rlcy4gVGhlIGV4aXN0aW5nIGNhbGN1bGF0aW9uIGNvdWxkIHlpZWxkIHZlcnkgbGFyZ2UgdmFsdWVzLCBwb3RlbnRpYWxseSBleGNlZWRpbmcgdGhlIDFHQiB0aHJlc2hvbGQgdGhhdCYjMzk7cyBiZWluZyBzZXQgaGVyZS4gSXQmIzM5O3MgYSBjYWxjdWxhdGlvbiBiYXNlZCBvbiBgbnJfem9uZXNgIGFuZCBgcGFnZWJsb2NrX25yX3BhZ2VzYC4gRXZlbiB3aXRoIG1hbnkgem9uZXMgKGUuZy4sIGEgdGhvdXNhbmQpLCBpdCBjYW4gYmUgbGFyZ2UsIGJ1dCB0aGUgdXBwZXIgYm91bmQgY29tZXMgaW50byBwbGF5IG9uIHZlcnkgbGFyZ2UgbWVtb3J5IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIGNsYW1wcyBgcmVjb21tZW5kZWRfbWluYCB0byAxR0IuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJcyB0aGlzIHdvcnRoIGZ1enppbmc/IEkgbmVlZCB0byBjb25zaWRlciB0aGUgY3JpdGVyaWEuIEkmIzM5O3ZlIHJlLXJlYWQgdGhlIFdvcnRoRnV6emluZyBydWxlcyBjYXJlZnVsbHkuICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuIElzIHRoaXMgYSBudW1lcmljYWwgY29uc3RhbnQgb3IgZG9lcyBpdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/CgpMZXQmIzM5O3MgZXhhbWluZS4gVGhlIHBhdGNoIGl0c2VsZiBtZXJlbHkgYWRkcyBhIGNhcCBvZiAxR0IgdG8gYSByZWNvbW1lbmRlZCB2YWx1ZS4gSXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgaW50ZXJmYWNlcywgY29tcGxleCBzdGF0ZSBtYWNoaW5lcywgcGFyc2luZywgc3lzY2FsbHMsIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzLgoKSW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCAoZS5nLiwgUUVNVSBvciBzeXprYWxsZXIpLCB3aXRoIDItNEdCIG9mIFJBTSwgdGhpcyAxR0IgY2FwIGlzIGxpa2VseSBub3QgZXZlbiByZWFjaGVkLiBUaGUgY2FsY3VsYXRlZCBgcmVjb21tZW5kZWRfbWluYCBpcyBsaWtlbHkgbXVjaCBsb3dlciAoNjZNQikuIFRoaXMgcGF0Y2ggaXMganVzdCBzZXR0aW5nIGFuIHVwcGVyIGJvdW5kLCBub3QgZnVuZGFtZW50YWxseSBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgZm9yIHR5cGljYWwgc3lzdGVtcyBvciBpbiBmdXp6aW5nIHNjZW5hcmlvcy4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vdCB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaXQmIzM5O3MgYSBwYXJhbWV0ZXIgY2xhbXAgYW5kIGRvZXNuJiMzOTt0IGNoYW5nZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIFRoZSBwYXRjaCYjMzk7cyBlZmZlY3RzIGFyZSBsaW1pdGVkIHRvIHN5c3RlbXMgd2l0aCBtYXNzaXZlIG1lbW9yeS4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIHRoaW5rIHRoaXMgaXMgYSAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LgoKU28sIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCBpdCYjMzk7cyBhIHNpbXBsZSB1cHBlci1ib3VuZCBjbGFtcCBvbiBhIHN5c2N0bCBjYWxjdWxhdGlvbiAoZm9yIGBtaW5fZnJlZV9rYnl0ZXNgKSBmb3IgVEhQLCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgaW50ZXJmYWNlcywgcmVhY2hhYmxlIHN0YXRlIGNoYW5nZXMsIG9yIGZ1enplci1yZWxldmFudCBsb2dpYy4gSSB3aWxsIGFsc28gbWFrZSBzdXJlIHRvIHNldCB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU0Ljg5MTM5MTY2N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDU3NTgxNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1NC44OTEzOTcyMjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTY1MTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEyMjUyMzNjYWUzNWIwYTM1OGJkZTU2NTNlOTI4ZWQ5MjllZDM4N2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDg6MjY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XFxuaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcXG5AQCAtNTM5LDYgKzUzOSwxNCBAQCB3YXRlcm1hcmtbV01BUktfTUlOXSB2YWx1ZSBmb3IgZWFjaCBsb3dtZW0gem9uZSBpbiB0aGUgc3lzdGVtLlxcbiBFYWNoIGxvd21lbSB6b25lIGdldHMgYSBudW1iZXIgb2YgcmVzZXJ2ZWQgZnJlZSBwYWdlcyBiYXNlZFxcbiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS5cXG4gXFxuK1doZW4gVHJhbnNwYXJlbnQgSHVnZXBhZ2UgKFRIUCkgc3VwcG9ydCBpcyBlbmFibGVkIHRocm91Z2ggZ2xvYmFsIG9yXFxuK3Blci1zaXplIGNvbnRyb2xzLCB0aGUga2VybmVsIG1heSByYWlzZSB0aGlzIHZhbHVlIGF1dG9tYXRpY2FsbHkgdG9cXG4raGVscCBrZWVwIHBhZ2VibG9ja3MgZnJlZSBhbmQgcmVkdWNlIGZyYWdtZW50YXRpb24gZm9yIFRIUCBhbGxvY2F0aW9ucy5cXG4rVGhlIGF1dG9tYXRpYyByZWNvbW1lbmRhdGlvbiBjYW5ub3QgZXhjZWVkIDUlIG9mIGxvdyBtZW1vcnkgb3IgMSBHaUIsXFxuK3doaWNoZXZlciBpcyBsb3dlci4gIFRoaXMgbGltaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBhdXRvbWF0aWNcXG4rcmVjb21tZW5kYXRpb24gYW5kIGRvZXMgbm90IGNvbnN0cmFpbiBhIGhpZ2hlciB2YWx1ZSB3cml0dGVuIGJ5XFxuK3VzZXJzcGFjZS5cXG4rXFxuIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DXFxuIGFsbG9jYXRpb25zOyBpZiB5b3Ugc2V0IHRoaXMgdG8gbG93ZXIgdGhhbiAxMDI0S0IsIHlvdXIgc3lzdGVtIHdpbGxcXG4gYmVjb21lIHN1YnRseSBicm9rZW4sIGFuZCBwcm9uZSB0byBkZWFkbG9jayB1bmRlciBoaWdoIGxvYWRzLlxcbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcXG5pbmRleCBmNDlhNjcxMDkzM2IxLi5hOGZjMDYxZDI0ODhkIDEwMDY0NFxcbi0tLSBhL21tL2todWdlcGFnZWQuY1xcbisrKyBiL21tL2todWdlcGFnZWQuY1xcbkBAIC0xMDEsNiArMTAxLDcgQEAgc3RhdGljIERFRklORV9SRUFEX01PU1RMWV9IQVNIVEFCTEUobW1fc2xvdHNfaGFzaCwgTU1fU0xPVFNfSEFTSF9CSVRTKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqbW1fc2xvdF9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuIFxcbisjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcXHRcXHQoU1pfMUcgLyBQQUdFX1NJWkUpXFxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlxcdDJcXG4gXFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcXG5AQCAtMzEyMCw5ICszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKVxcbiBcXHRyZWNvbW1lbmRlZF9taW4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKlxcbiBcXHRcXHRcXHQgICBNSUdSQVRFX1BDUFRZUEVTICogTUlHUkFURV9QQ1BUWVBFUztcXG4gXFxuLVxcdC8qIGRvbid0IGV2ZXIgYWxsb3cgdG8gcmVzZXJ2ZSBtb3JlIHRoYW4gNSUgb2YgdGhlIGxvd21lbSAqL1xcbitcXHQvKlxcbitcXHQgKiBEb24ndCBhbGxvdyB0aGUgVEhQIHJlY29tbWVuZGF0aW9uIHRvIGV4Y2VlZCA1JSBvZiBsb3dtZW0gb3IgYW5cXG4rXFx0ICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci5cXG4rXFx0ICovXFxuIFxcdHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sXFxuIFxcdFxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xcbitcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtcXG4gXFx0cmVjb21tZW5kZWRfbWluIFxcdTAwM2NcXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XFxuIFxcbiBcXHRpZiAocmVjb21tZW5kZWRfbWluIFxcdTAwM2UgbWluX2ZyZWVfa2J5dGVzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU1LjI4NzYyNTQyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg2NjEzMzQwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSAxIEdpQiB1cHBlciBib3VuZCBjbGFtcCAoVEhQX01JTl9GUkVFX01BWF9QQUdFUykgdG8gdGhlIGF1dG9tYXRpYyBtaW5fZnJlZV9rYnl0ZXMgY2FsY3VsYXRpb24gZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBpbiBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCkgYW5kIHVwZGF0ZXMgdGhlIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbGl0eSwgaW50ZXJmYWNlcywgb3IgY29tcGxleCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTIyNTIzM2NhZTM1YjBhMzU4YmRlNTY1M2U5MjhlZDkyOWVkMzg3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA4OjI2OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG5pbmRleCA1YjMxOGQxN2FhNGI0Li5jMGM5MjVlNmY1MDQ3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcbkBAIC01MzksNiArNTM5LDE0IEBAIHdhdGVybWFya1tXTUFSS19NSU5dIHZhbHVlIGZvciBlYWNoIGxvd21lbSB6b25lIGluIHRoZSBzeXN0ZW0uXG4gRWFjaCBsb3dtZW0gem9uZSBnZXRzIGEgbnVtYmVyIG9mIHJlc2VydmVkIGZyZWUgcGFnZXMgYmFzZWRcbiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS5cbiBcbitXaGVuIFRyYW5zcGFyZW50IEh1Z2VwYWdlIChUSFApIHN1cHBvcnQgaXMgZW5hYmxlZCB0aHJvdWdoIGdsb2JhbCBvclxuK3Blci1zaXplIGNvbnRyb2xzLCB0aGUga2VybmVsIG1heSByYWlzZSB0aGlzIHZhbHVlIGF1dG9tYXRpY2FsbHkgdG9cbitoZWxwIGtlZXAgcGFnZWJsb2NrcyBmcmVlIGFuZCByZWR1Y2UgZnJhZ21lbnRhdGlvbiBmb3IgVEhQIGFsbG9jYXRpb25zLlxuK1RoZSBhdXRvbWF0aWMgcmVjb21tZW5kYXRpb24gY2Fubm90IGV4Y2VlZCA1JSBvZiBsb3cgbWVtb3J5IG9yIDEgR2lCLFxuK3doaWNoZXZlciBpcyBsb3dlci4gIFRoaXMgbGltaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBhdXRvbWF0aWNcbityZWNvbW1lbmRhdGlvbiBhbmQgZG9lcyBub3QgY29uc3RyYWluIGEgaGlnaGVyIHZhbHVlIHdyaXR0ZW4gYnlcbit1c2Vyc3BhY2UuXG4rXG4gU29tZSBtaW5pbWFsIGFtb3VudCBvZiBtZW1vcnkgaXMgbmVlZGVkIHRvIHNhdGlzZnkgUEZfTUVNQUxMT0NcbiBhbGxvY2F0aW9uczsgaWYgeW91IHNldCB0aGlzIHRvIGxvd2VyIHRoYW4gMTAyNEtCLCB5b3VyIHN5c3RlbSB3aWxsXG4gYmVjb21lIHN1YnRseSBicm9rZW4sIGFuZCBwcm9uZSB0byBkZWFkbG9jayB1bmRlciBoaWdoIGxvYWRzLlxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xuaW5kZXggZjQ5YTY3MTA5MzNiMS4uYThmYzA2MWQyNDg4ZCAxMDA2NDRcbi0tLSBhL21tL2todWdlcGFnZWQuY1xuKysrIGIvbW0va2h1Z2VwYWdlZC5jXG5AQCAtMTAxLDYgKzEwMSw3IEBAIHN0YXRpYyBERUZJTkVfUkVBRF9NT1NUTFlfSEFTSFRBQkxFKG1tX3Nsb3RzX2hhc2gsIE1NX1NMT1RTX0hBU0hfQklUUyk7XG4gXG4gc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICptbV9zbG90X2NhY2hlIF9fcm9fYWZ0ZXJfaW5pdDtcbiBcbisjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcdFx0KFNaXzFHIC8gUEFHRV9TSVpFKVxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlx0MlxuIFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcbkBAIC0zMTIwLDkgKzMxMjEsMTMgQEAgdm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG4gXHRyZWNvbW1lbmRlZF9taW4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKlxuIFx0XHRcdCAgIE1JR1JBVEVfUENQVFlQRVMgKiBNSUdSQVRFX1BDUFRZUEVTO1xuIFxuLVx0LyogZG9uJ3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovXG4rXHQvKlxuK1x0ICogRG9uJ3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4rXHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxuK1x0ICovXG4gXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxuIFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xuK1x0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4gXHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4gXG4gXHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU1LjI4NzYyNjg0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2NDE2MDQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGl0IGRvd24gZmlsZSBieSBmaWxlIGFuZCBzZWUgd2hhdCdzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYm90aCBgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0YCBhbmQgYG1tL2todWdlcGFnZWQuY2AuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbW0va2h1Z2VwYWdlZC5jYCBjaGFuZ2UsIG9mIGNvdXJzZS5cblxuTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYC4gSSBjYW4gc2VlIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGByZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtgIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEZyb20gdGhlIGNvbnRleHQsIGFuZCBieSByZXZpZXdpbmcgdGhlIGAjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMgKFNaXzFHIC8gUEFHRV9TSVpFKWAsIGl0IHNlZW1zIHRvIGJlIGVzdGFibGlzaGluZyBhbiB1cHBlciBib3VuZCBmb3IgYHJlY29tbWVuZGVkX21pbmAgYmFzZWQgb24gYSBnaWdhYnl0ZSBvZiBtZW1vcnkgZGl2aWRlZCBieSB0aGUgcGFnZSBzaXplLiBUaGUgcHJldmlvdXMgY29kZSBsb2dpYyBjYWxjdWxhdGVzIHRoZSBgcmVjb21tZW5kZWRfbWluYCBiYXNlZCBvbiBmcmVlIGJ1ZmZlciBwYWdlcywgYW5kIHRoaXMgYWRkaXRpb24gc2V0cyBhIGhhcmQgY2VpbGluZyBvbiB0aGF0IHZhbHVlLlxuXG5JIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGZ1bmN0aW9uLiBJJ2xsIHJlYWNoIGZvciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSBlbHNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBob3cgdGhpcyBwYXJhbWV0ZXIgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgdXBwZXIgYm91bmQsIGFuZCB3aGF0IGl0J3MgcHJldmVudGluZy4gVGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIGl0cyBhbGxvY2F0aW9uIG9mIGh1Z2UgcGFnZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1OC45MjkyMzQ1MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2NDA5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz00ODc9c3RhdGljIHNzaXplX3QgZW5hYmxlZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNTA3LVxcdFxcdCAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6NTA4OlxcdFxcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcXG5tbS9odWdlX21lbW9yeS5jLTUwOS1cXHR9XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTcyMj1zdGF0aWMgc3NpemVfdCBhbm9uX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTc0My1cXHRcXHQgKi9cXG5tbS9odWdlX21lbW9yeS5jOjc0NDpcXHRcXHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XFxubW0vaHVnZV9tZW1vcnkuYy03NDUtXFx0fVxcbi0tXFxubW0vaW50ZXJuYWwuaD02OTA9cG1kX3QgKm1tX2ZpbmRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xcbi0tXFxubW0vaW50ZXJuYWwuaC02OTQtICovXFxubW0vaW50ZXJuYWwuaDo2OTU6dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpO1xcbm1tL2ludGVybmFsLmgtNjk2LVxcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTMwNjk9c3RhdGljIGludCBraHVnZXBhZ2VkKHZvaWQgKm5vbmUpXFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMzA4OS1cXG5tbS9raHVnZXBhZ2VkLmM6MzA5MDp2b2lkIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXModm9pZClcXG5tbS9raHVnZXBhZ2VkLmMtMzA5MS17XFxuLS1cXG5tbS9raHVnZXBhZ2VkLmM9MzE0NT1pbnQgc3RhcnRfc3RvcF9raHVnZXBhZ2VkKHZvaWQpXFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMzE2Ny1cXHR9XFxubW0va2h1Z2VwYWdlZC5jOjMxNjg6XFx0c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpO1xcbm1tL2todWdlcGFnZWQuYy0zMTY5LVxcdHJldHVybiAwO1xcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTMxNzI9dm9pZCBraHVnZXBhZ2VkX21pbl9mcmVlX2tieXRlc191cGRhdGUodm9pZClcXG4tLVxcbm1tL2todWdlcGFnZWQuYy0zMTc1LVxcdGlmIChodWdlcGFnZV9lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYga2h1Z2VwYWdlZF90aHJlYWQpXFxubW0va2h1Z2VwYWdlZC5jOjMxNzY6XFx0XFx0c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpO1xcbm1tL2todWdlcGFnZWQuYy0zMTc3LX1cXG4tLVxcbm1tL3NobWVtLmM9NTc2ND1zdGF0aWMgc3NpemVfdCB0aHBzaXplX3NobWVtX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9zaG1lbS5jLTU3ODktXFx0XFx0ICovXFxubW0vc2htZW0uYzo1NzkwOlxcdFxcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcXG5tbS9zaG1lbS5jLTU3OTEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1OC45NzQ4ODMxMTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjYwNDE5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBgbW0va2h1Z2VwYWdlZC5jYCB0byB1bmRlcnN0YW5kIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGFjdHVhbGx5IHdvcmtzLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBga2h1Z2VwYWdlZGAuIEknbGwganVtcCByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBtbS9raHVnZXBhZ2VkLmNgLiBMZXQncyB6ZXJvIGluIG9uIGxpbmVzIDMwOTAgdGhyb3VnaCAzMTQwIOKAkyB0aGF0IHNob3VsZCBiZSB0aGUgcmlnaHQgYXJlYSB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBsb2dpYy4gSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBmcmVlIG1lbW9yeSB0aGUgc3lzdGVtIHNob3VsZCBzdHJpdmUgdG8gbWFpbnRhaW4sIHdoaWNoIGlzIHBhcnRpY3VsYXJseSByZWxldmFudCBmb3IgaHVnZXBhZ2VzIGFuZCBlbnN1cmluZyB0aGVpciBhbGxvY2F0aW9uIGRvZXNuJ3Qgc3RhcnZlIHRoZSBzeXN0ZW0uIEknbSBjdXJpb3VzIHRvIHNlZSBob3cgaXQgY2FsY3VsYXRlcyB0aGUgXCJyZWNvbW1lbmRlZFwiIHZhbHVlIGFuZCB3aGF0IGZhY3RvcnMgYXJlIGNvbnNpZGVyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBwcm9iYWJseSB0YWtlcyBpbnRvIGFjY291bnQgdGhpbmdzIGxpa2UgYXZhaWxhYmxlIG1lbW9yeSwgTlVNQSBub2RlIGNvbmZpZ3VyYXRpb25zIChpZiBhcHBsaWNhYmxlKSwgYW5kIHBvc3NpYmx5IHNvbWUgaGV1cmlzdGljcyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBodWdlcGFnZSB1c2FnZS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgb24gaG93IHRoaXMgZnVuY3Rpb24gaW1wYWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugb3IgaXMgY29uZmlndXJlZC4gSSdtIGFsc28gaG9waW5nIGl0IHdpbGwgcHJvdmlkZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHBvdGVudGlhbCB0dW5pbmcgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI3OjA1LjIzNTMwNDYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9raHVnZXBhZ2VkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzA5MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzA5MDpcXHR2b2lkIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXModm9pZClcXG4zMDkxOlxcdHtcXG4zMDkyOlxcdFxcdHN0cnVjdCB6b25lICp6b25lO1xcbjMwOTM6XFx0XFx0aW50IG5yX3pvbmVzID0gMDtcXG4zMDk0OlxcdFxcdHVuc2lnbmVkIGxvbmcgcmVjb21tZW5kZWRfbWluO1xcbjMwOTU6XFx0XFxuMzA5NjpcXHRcXHRpZiAoIWh1Z2VwYWdlX2VuYWJsZWQoKSkge1xcbjMwOTc6XFx0XFx0XFx0Y2FsY3VsYXRlX21pbl9mcmVlX2tieXRlcygpO1xcbjMwOTg6XFx0XFx0XFx0Z290byB1cGRhdGVfd21hcmtzO1xcbjMwOTk6XFx0XFx0fVxcbjMxMDA6XFx0XFxuMzEwMTpcXHRcXHRmb3JfZWFjaF9wb3B1bGF0ZWRfem9uZSh6b25lKSB7XFxuMzEwMjpcXHRcXHRcXHQvKlxcbjMxMDM6XFx0XFx0XFx0ICogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBmcmFnbWVudGF0aW9uIG9mXFxuMzEwNDpcXHRcXHRcXHQgKiBaT05FX01PVkFCTEUgc2luY2UgaXQgb25seSBoYXMgbW92YWJsZSBwYWdlcy5cXG4zMTA1OlxcdFxcdFxcdCAqL1xcbjMxMDY6XFx0XFx0XFx0aWYgKHpvbmVfaWR4KHpvbmUpIFxcdTAwM2UgZ2ZwX3pvbmUoR0ZQX1VTRVIpKVxcbjMxMDc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzEwODpcXHRcXG4zMTA5OlxcdFxcdFxcdG5yX3pvbmVzKys7XFxuMzExMDpcXHRcXHR9XFxuMzExMTpcXHRcXG4zMTEyOlxcdFxcdC8qIEVuc3VyZSAyIHBhZ2VibG9ja3MgYXJlIGZyZWUgdG8gYXNzaXN0IGZyYWdtZW50YXRpb24gYXZvaWRhbmNlICovXFxuMzExMzpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBwYWdlYmxvY2tfbnJfcGFnZXMgKiBucl96b25lcyAqIDI7XFxuMzExNDpcXHRcXG4zMTE1OlxcdFxcdC8qXFxuMzExNjpcXHRcXHQgKiBNYWtlIHN1cmUgdGhhdCBvbiBhdmVyYWdlIGF0IGxlYXN0IHR3byBwYWdlYmxvY2tzIGFyZSBhbG1vc3QgZnJlZVxcbjMxMTc6XFx0XFx0ICogb2YgYW5vdGhlciB0eXBlLCBvbmUgZm9yIGEgbWlncmF0ZXR5cGUgdG8gZmFsbCBiYWNrIHRvIGFuZCBhXFxuMzExODpcXHRcXHQgKiBzZWNvbmQgdG8gYXZvaWQgc3Vic2VxdWVudCBmYWxsYmFja3Mgb2Ygb3RoZXIgdHlwZXMgVGhlcmUgYXJlIDNcXG4zMTE5OlxcdFxcdCAqIE1JR1JBVEVfVFlQRVMgd2UgY2FyZSBhYm91dC5cXG4zMTIwOlxcdFxcdCAqL1xcbjMxMjE6XFx0XFx0cmVjb21tZW5kZWRfbWluICs9IHBhZ2VibG9ja19ucl9wYWdlcyAqIG5yX3pvbmVzICpcXG4zMTIyOlxcdFxcdFxcdFxcdCAgIE1JR1JBVEVfUENQVFlQRVMgKiBNSUdSQVRFX1BDUFRZUEVTO1xcbjMxMjM6XFx0XFxuMzEyNDpcXHRcXHQvKlxcbjMxMjU6XFx0XFx0ICogRG9uJ3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXFxuMzEyNjpcXHRcXHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxcbjMxMjc6XFx0XFx0ICovXFxuMzEyODpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxcbjMxMjk6XFx0XFx0XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfYnVmZmVyX3BhZ2VzKCkgLyAyMCk7XFxuMzEzMDpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtcXG4zMTMxOlxcdFxcdHJlY29tbWVuZGVkX21pbiBcXHUwMDNjXFx1MDAzYz0gKFBBR0VfU0hJRlQtMTApO1xcbjMxMzI6XFx0XFxuMzEzMzpcXHRcXHRpZiAocmVjb21tZW5kZWRfbWluIFxcdTAwM2UgbWluX2ZyZWVfa2J5dGVzKSB7XFxuMzEzNDpcXHRcXHRcXHRpZiAodXNlcl9taW5fZnJlZV9rYnl0ZXMgXFx1MDAzZT0gMClcXG4zMTM1OlxcdFxcdFxcdFxcdHByX2luZm9fcmF0ZWxpbWl0ZWQoXFxcInJhaXNpbmcgbWluX2ZyZWVfa2J5dGVzIGZyb20gJWQgdG8gJWx1IHRvIGhlbHAgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYWxsb2NhdGlvbnNcXFxcblxcXCIsXFxuMzEzNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgbWluX2ZyZWVfa2J5dGVzLCByZWNvbW1lbmRlZF9taW4pO1xcbjMxMzc6XFx0XFxuMzEzODpcXHRcXHRcXHRtaW5fZnJlZV9rYnl0ZXMgPSByZWNvbW1lbmRlZF9taW47XFxuMzEzOTpcXHRcXHR9XFxuMzE0MDpcXHRcXG4zMTQxOlxcdHVwZGF0ZV93bWFya3M6XFxuMzE0MjpcXHRcXHRzZXR1cF9wZXJfem9uZV93bWFya3MoKTtcXG4zMTQzOlxcdH1cXG4zMTQ0OlxcdFxcbjMxNDU6XFx0aW50IHN0YXJ0X3N0b3Bfa2h1Z2VwYWdlZCh2b2lkKVxcbjMxNDY6XFx0e1xcbjMxNDc6XFx0XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZraHVnZXBhZ2VkX211dGV4KTtcXG4zMTQ4OlxcdFxcdGlmIChodWdlcGFnZV9lbmFibGVkKCkpIHtcXG4zMTQ5OlxcdFxcdFxcdGlmICgha2h1Z2VwYWdlZF90aHJlYWQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MDUuMjM1NDYyNDQ4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODcxMzQ3MzU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBSZXZpZXc6IFRIUCBgbWluX2ZyZWVfa2J5dGVzYCBDYWxjdWxhdGlvbiBDbGFtcCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FwLCBgVEhQX01JTl9GUkVFX01BWF9QQUdFU2AsIG9uIHRoZSBgcmVjb21tZW5kZWRfbWluYCB2YWx1ZSB1c2VkIGluIGNhbGN1bGF0aW5nIGBtaW5fZnJlZV9rYnl0ZXNgIGZvciBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBCZWZvcmUgdGhpcyBwYXRjaCwgYHJlY29tbWVuZGVkX21pbmAgd2FzIGNvbXB1dGVkIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9yczogYHBhZ2VibG9ja19ucl9wYWdlc2AsIGBucl96b25lc2AsIGFuZCBgTUlHUkFURV9QQ1BUWVBFU2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZGVzZXJ2ZXMgZnV6emluZyBhdHRlbnRpb24uXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWFnbml0dWRlIG9mIGByZWNvbW1lbmRlZF9taW5gIG9uIGEgdHlwaWNhbCBzeXN0ZW0uIExldCdzIGNhbGN1bGF0ZTogb24gYSBzdGFuZGFyZCB4ODZfNjQgc3lzdGVtLCB3aXRoIGEgMk1CIGh1Z2UgcGFnZSBzaXplLCAzIHpvbmVzLCBhbmQgMyBtaWdyYXRpb24gdHlwZXMsIHRoZSBpbml0aWFsIGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gcm91Z2hseSA2NiBNQi5cblxuVGhlIGNvbmNlcm4sIEkgdGhpbmssIGlzIHJlYWxseSBhYm91dCBleGNlcHRpb25hbGx5IGxhcmdlIHN5c3RlbXMgLS0gMVRCKyBSQU0sIG9yIGh1Z2UgbnVtYmVycyBvZiB6b25lcy9OVU1BIG5vZGVzLiBUaGUgZXhpc3RpbmcgY2FsY3VsYXRpb24gY291bGQgeWllbGQgdmVyeSBsYXJnZSB2YWx1ZXMsIHBvdGVudGlhbGx5IGV4Y2VlZGluZyB0aGUgMUdCIHRocmVzaG9sZCB0aGF0J3MgYmVpbmcgc2V0IGhlcmUuIEl0J3MgYSBjYWxjdWxhdGlvbiBiYXNlZCBvbiBgbnJfem9uZXNgIGFuZCBgcGFnZWJsb2NrX25yX3BhZ2VzYC4gRXZlbiB3aXRoIG1hbnkgem9uZXMgKGUuZy4sIGEgdGhvdXNhbmQpLCBpdCBjYW4gYmUgbGFyZ2UsIGJ1dCB0aGUgdXBwZXIgYm91bmQgY29tZXMgaW50byBwbGF5IG9uIHZlcnkgbGFyZ2UgbWVtb3J5IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIGNsYW1wcyBgcmVjb21tZW5kZWRfbWluYCB0byAxR0IuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IElzIHRoaXMgd29ydGggZnV6emluZz8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjcml0ZXJpYS4gSSd2ZSByZS1yZWFkIHRoZSBXb3J0aEZ1enppbmcgcnVsZXMgY2FyZWZ1bGx5LiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLiBJcyB0aGlzIGEgbnVtZXJpY2FsIGNvbnN0YW50IG9yIGRvZXMgaXQgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93P1xuXG5MZXQncyBleGFtaW5lLiBUaGUgcGF0Y2ggaXRzZWxmIG1lcmVseSBhZGRzIGEgY2FwIG9mIDFHQiB0byBhIHJlY29tbWVuZGVkIHZhbHVlLiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGludGVyZmFjZXMsIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIHBhcnNpbmcsIHN5c2NhbGxzLCBvciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cblxuSW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCAoZS5nLiwgUUVNVSBvciBzeXprYWxsZXIpLCB3aXRoIDItNEdCIG9mIFJBTSwgdGhpcyAxR0IgY2FwIGlzIGxpa2VseSBub3QgZXZlbiByZWFjaGVkLiBUaGUgY2FsY3VsYXRlZCBgcmVjb21tZW5kZWRfbWluYCBpcyBsaWtlbHkgbXVjaCBsb3dlciAoNjZNQikuIFRoaXMgcGF0Y2ggaXMganVzdCBzZXR0aW5nIGFuIHVwcGVyIGJvdW5kLCBub3QgZnVuZGFtZW50YWxseSBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgZm9yIHR5cGljYWwgc3lzdGVtcyBvciBpbiBmdXp6aW5nIHNjZW5hcmlvcy5cblxuSSdtIGxlYW5pbmcgdG93YXJkcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSB0aGF0IGl0J3MgYSBwYXJhbWV0ZXIgY2xhbXAgYW5kIGRvZXNuJ3QgY2hhbmdlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4gVGhlIHBhdGNoJ3MgZWZmZWN0cyBhcmUgbGltaXRlZCB0byBzeXN0ZW1zIHdpdGggbWFzc2l2ZSBtZW1vcnkuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIHRoaW5rIHRoaXMgaXMgYSBcIkNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLlxuXG5TbywgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IGl0J3MgYSBzaW1wbGUgdXBwZXItYm91bmQgY2xhbXAgb24gYSBzeXNjdGwgY2FsY3VsYXRpb24gKGZvciBgbWluX2ZyZWVfa2J5dGVzYCkgZm9yIFRIUCwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGludGVyZmFjZXMsIHJlYWNoYWJsZSBzdGF0ZSBjaGFuZ2VzLCBvciBmdXp6ZXItcmVsZXZhbnQgbG9naWMuIEkgd2lsbCBhbHNvIG1ha2Ugc3VyZSB0byBzZXQgdGhlIGFwcHJvcHJpYXRlIHZhcmlhYmxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OCwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MTMuOTQ4OTM3OTgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSAxIEdpQiB1cHBlciBib3VuZCBjbGFtcCAoVEhQX01JTl9GUkVFX01BWF9QQUdFUykgdG8gdGhlIGF1dG9tYXRpYyBtaW5fZnJlZV9rYnl0ZXMgY2FsY3VsYXRpb24gZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBpbiBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCkgYW5kIHVwZGF0ZXMgdGhlIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbGl0eSwgaW50ZXJmYWNlcywgb3IgY29tcGxleCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MTMuOTQ4OTYyMzcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2q6b5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 08:10:14 +0000 UTC FinishedAt: 2026-08-31 08:27:14 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTIyNTIzM2NhZTM1YjBhMzU4YmRlNTY1M2U5MjhlZDkyOWVkMzg3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA4OjI2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdFxuaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdFxuJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG5AQCAtNTM5LDYgJiM0Mzs1MzksMTQgQEAgd2F0ZXJtYXJrW1dNQVJLX01JTl0gdmFsdWUgZm9yIGVhY2ggbG93bWVtIHpvbmUgaW4gdGhlIHN5c3RlbS5cbiBFYWNoIGxvd21lbSB6b25lIGdldHMgYSBudW1iZXIgb2YgcmVzZXJ2ZWQgZnJlZSBwYWdlcyBiYXNlZFxuIHByb3BvcnRpb25hbGx5IG9uIGl0cyBzaXplLlxuIFxuJiM0MztXaGVuIFRyYW5zcGFyZW50IEh1Z2VwYWdlIChUSFApIHN1cHBvcnQgaXMgZW5hYmxlZCB0aHJvdWdoIGdsb2JhbCBvclxuJiM0MztwZXItc2l6ZSBjb250cm9scywgdGhlIGtlcm5lbCBtYXkgcmFpc2UgdGhpcyB2YWx1ZSBhdXRvbWF0aWNhbGx5IHRvXG4mIzQzO2hlbHAga2VlcCBwYWdlYmxvY2tzIGZyZWUgYW5kIHJlZHVjZSBmcmFnbWVudGF0aW9uIGZvciBUSFAgYWxsb2NhdGlvbnMuXG4mIzQzO1RoZSBhdXRvbWF0aWMgcmVjb21tZW5kYXRpb24gY2Fubm90IGV4Y2VlZCA1JSBvZiBsb3cgbWVtb3J5IG9yIDEgR2lCLFxuJiM0Mzt3aGljaGV2ZXIgaXMgbG93ZXIuICBUaGlzIGxpbWl0IGFwcGxpZXMgb25seSB0byB0aGUgYXV0b21hdGljXG4mIzQzO3JlY29tbWVuZGF0aW9uIGFuZCBkb2VzIG5vdCBjb25zdHJhaW4gYSBoaWdoZXIgdmFsdWUgd3JpdHRlbiBieVxuJiM0Mzt1c2Vyc3BhY2UuXG4mIzQzO1xuIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DXG4gYWxsb2NhdGlvbnM7IGlmIHlvdSBzZXQgdGhpcyB0byBsb3dlciB0aGFuIDEwMjRLQiwgeW91ciBzeXN0ZW0gd2lsbFxuIGJlY29tZSBzdWJ0bHkgYnJva2VuLCBhbmQgcHJvbmUgdG8gZGVhZGxvY2sgdW5kZXIgaGlnaCBsb2Fkcy5cbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcbmluZGV4IGY0OWE2NzEwOTMzYjEuLmE4ZmMwNjFkMjQ4OGQgMTAwNjQ0XG4tLS0gYS9tbS9raHVnZXBhZ2VkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2todWdlcGFnZWQuY1xuQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEAgc3RhdGljIERFRklORV9SRUFEX01PU1RMWV9IQVNIVEFCTEUobW1fc2xvdHNfaGFzaCwgTU1fU0xPVFNfSEFTSF9CSVRTKTtcbiBcbiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKm1tX3Nsb3RfY2FjaGUgX19yb19hZnRlcl9pbml0O1xuIFxuJiM0MzsjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcdFx0KFNaXzFHIC8gUEFHRV9TSVpFKVxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlx0MlxuIFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcbkBAIC0zMTIwLDkgJiM0MzszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKVxuIFx0cmVjb21tZW5kZWRfbWluICYjNDM7PSBwYWdlYmxvY2tfbnJfcGFnZXMgKiBucl96b25lcyAqXG4gXHRcdFx0ICAgTUlHUkFURV9QQ1BUWVBFUyAqIE1JR1JBVEVfUENQVFlQRVM7XG4gXG4tXHQvKiBkb24mIzM5O3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBEb24mIzM5O3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4mIzQzO1x0ICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci5cbiYjNDM7XHQgKi9cbiBcdHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sXG4gXHRcdFx0ICAgICAgKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfYnVmZmVyX3BhZ2VzKCkgLyAyMCk7XG4mIzQzO1x0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4gXHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4gXG4gXHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwODoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMjI1MjMzY2FlMzViMGEzNThiZGU1NjUzZTkyOGVkOTI5ZWQzODdjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMzEgMDg6MjY6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3QKaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvc3lzY3RsL3ZtLnJzdApAQCAtNTM5LDYgJiM0Mzs1MzksMTQgQEAgd2F0ZXJtYXJrW1dNQVJLX01JTl0gdmFsdWUgZm9yIGVhY2ggbG93bWVtIHpvbmUgaW4gdGhlIHN5c3RlbS4KIEVhY2ggbG93bWVtIHpvbmUgZ2V0cyBhIG51bWJlciBvZiByZXNlcnZlZCBmcmVlIHBhZ2VzIGJhc2VkCiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS4KIAomIzQzO1doZW4gVHJhbnNwYXJlbnQgSHVnZXBhZ2UgKFRIUCkgc3VwcG9ydCBpcyBlbmFibGVkIHRocm91Z2ggZ2xvYmFsIG9yCiYjNDM7cGVyLXNpemUgY29udHJvbHMsIHRoZSBrZXJuZWwgbWF5IHJhaXNlIHRoaXMgdmFsdWUgYXV0b21hdGljYWxseSB0bwomIzQzO2hlbHAga2VlcCBwYWdlYmxvY2tzIGZyZWUgYW5kIHJlZHVjZSBmcmFnbWVudGF0aW9uIGZvciBUSFAgYWxsb2NhdGlvbnMuCiYjNDM7VGhlIGF1dG9tYXRpYyByZWNvbW1lbmRhdGlvbiBjYW5ub3QgZXhjZWVkIDUlIG9mIGxvdyBtZW1vcnkgb3IgMSBHaUIsCiYjNDM7d2hpY2hldmVyIGlzIGxvd2VyLiAgVGhpcyBsaW1pdCBhcHBsaWVzIG9ubHkgdG8gdGhlIGF1dG9tYXRpYwomIzQzO3JlY29tbWVuZGF0aW9uIGFuZCBkb2VzIG5vdCBjb25zdHJhaW4gYSBoaWdoZXIgdmFsdWUgd3JpdHRlbiBieQomIzQzO3VzZXJzcGFjZS4KJiM0MzsKIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DCiBhbGxvY2F0aW9uczsgaWYgeW91IHNldCB0aGlzIHRvIGxvd2VyIHRoYW4gMTAyNEtCLCB5b3VyIHN5c3RlbSB3aWxsCiBiZWNvbWUgc3VidGx5IGJyb2tlbiwgYW5kIHByb25lIHRvIGRlYWRsb2NrIHVuZGVyIGhpZ2ggbG9hZHMuCmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmMKaW5kZXggZjQ5YTY3MTA5MzNiMS4uYThmYzA2MWQyNDg4ZCAxMDA2NDQKLS0tIGEvbW0va2h1Z2VwYWdlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2todWdlcGFnZWQuYwpAQCAtMTAxLDYgJiM0MzsxMDEsNyBAQCBzdGF0aWMgREVGSU5FX1JFQURfTU9TVExZX0hBU0hUQUJMRShtbV9zbG90c19oYXNoLCBNTV9TTE9UU19IQVNIX0JJVFMpOwogCiBzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKm1tX3Nsb3RfY2FjaGUgX19yb19hZnRlcl9pbml0OwogCiYjNDM7I2RlZmluZSBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTCQkoU1pfMUcgLyBQQUdFX1NJWkUpCiAjZGVmaW5lIEtIVUdFUEFHRURfTUlOX01USFBfT1JERVIJMgogCiBzdHJ1Y3QgY29sbGFwc2VfY29udHJvbCB7CkBAIC0zMTIwLDkgJiM0MzszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKQogCXJlY29tbWVuZGVkX21pbiAmIzQzOz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKgogCQkJICAgTUlHUkFURV9QQ1BUWVBFUyAqIE1JR1JBVEVfUENQVFlQRVM7CiAKLQkvKiBkb24mIzM5O3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovCiYjNDM7CS8qCiYjNDM7CSAqIERvbiYjMzk7dCBhbGxvdyB0aGUgVEhQIHJlY29tbWVuZGF0aW9uIHRvIGV4Y2VlZCA1JSBvZiBsb3dtZW0gb3IgYW4KJiM0MzsJICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci4KJiM0MzsJICovCiAJcmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwKIAkJCSAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApOwomIzQzOwlyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTsKIAlyZWNvbW1lbmRlZF9taW4gJmx0OyZsdDs9IChQQUdFX1NISUZULTEwKTsKIAogCWlmIChyZWNvbW1lbmRlZF9taW4gJmd0OyBtaW5fZnJlZV9rYnl0ZXMpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBicmVhayBpdCBkb3duIGZpbGUgYnkgZmlsZSBhbmQgc2VlIHdoYXQmIzM5O3MgYmVpbmcgdHdlYWtlZC4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBib3RoIGBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RgIGFuZCBgbW0va2h1Z2VwYWdlZC5jYC4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBtbS9raHVnZXBhZ2VkLmNgIGNoYW5nZSwgb2YgY291cnNlLgoKTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgLiBJIGNhbiBzZWUgYSBuZXcgbGluZSBiZWluZyBhZGRlZDogYHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpO2AgVGhpcyBpcyBpbnRlcmVzdGluZy4gRnJvbSB0aGUgY29udGV4dCwgYW5kIGJ5IHJldmlld2luZyB0aGUgYCNkZWZpbmUgVEhQX01JTl9GUkVFX01BWF9QQUdFUyAoU1pfMUcgLyBQQUdFX1NJWkUpYCwgaXQgc2VlbXMgdG8gYmUgZXN0YWJsaXNoaW5nIGFuIHVwcGVyIGJvdW5kIGZvciBgcmVjb21tZW5kZWRfbWluYCBiYXNlZCBvbiBhIGdpZ2FieXRlIG9mIG1lbW9yeSBkaXZpZGVkIGJ5IHRoZSBwYWdlIHNpemUuIFRoZSBwcmV2aW91cyBjb2RlIGxvZ2ljIGNhbGN1bGF0ZXMgdGhlIGByZWNvbW1lbmRlZF9taW5gIGJhc2VkIG9uIGZyZWUgYnVmZmVyIHBhZ2VzLCBhbmQgdGhpcyBhZGRpdGlvbiBzZXRzIGEgaGFyZCBjZWlsaW5nIG9uIHRoYXQgdmFsdWUuCgpJIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGZ1bmN0aW9uLiBJJiMzOTtsbCByZWFjaCBmb3IgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIGFuZCBzZWUgd2hlcmUgZWxzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgaG93IHRoaXMgcGFyYW1ldGVyIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyB1cHBlciBib3VuZCwgYW5kIHdoYXQgaXQmIzM5O3MgcHJldmVudGluZy4gVGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIGl0cyBhbGxvY2F0aW9uIG9mIGh1Z2UgcGFnZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9odWdlX21lbW9yeS5jPTQ4Nz1zdGF0aWMgc3NpemVfdCBlbmFibGVkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbm1tL2h1Z2VfbWVtb3J5LmMtNTA3LVx0XHQgKi9cbm1tL2h1Z2VfbWVtb3J5LmM6NTA4Olx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9odWdlX21lbW9yeS5jLTUwOS1cdH1cbi0tXG5tbS9odWdlX21lbW9yeS5jPTcyMj1zdGF0aWMgc3NpemVfdCBhbm9uX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vaHVnZV9tZW1vcnkuYy03NDMtXHRcdCAqL1xubW0vaHVnZV9tZW1vcnkuYzo3NDQ6XHRcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcbm1tL2h1Z2VfbWVtb3J5LmMtNzQ1LVx0fVxuLS1cbm1tL2ludGVybmFsLmg9NjkwPXBtZF90ICptbV9maW5kX3BtZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKTtcbi0tXG5tbS9pbnRlcm5hbC5oLTY5NC0gKi9cbm1tL2ludGVybmFsLmg6Njk1OnZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKTtcbm1tL2ludGVybmFsLmgtNjk2LVxuLS1cbm1tL2todWdlcGFnZWQuYz0zMDY5PXN0YXRpYyBpbnQga2h1Z2VwYWdlZCh2b2lkICpub25lKVxuLS1cbm1tL2todWdlcGFnZWQuYy0zMDg5LVxubW0va2h1Z2VwYWdlZC5jOjMwOTA6dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG5tbS9raHVnZXBhZ2VkLmMtMzA5MS17XG4tLVxubW0va2h1Z2VwYWdlZC5jPTMxNDU9aW50IHN0YXJ0X3N0b3Bfa2h1Z2VwYWdlZCh2b2lkKVxuLS1cbm1tL2todWdlcGFnZWQuYy0zMTY3LVx0fVxubW0va2h1Z2VwYWdlZC5jOjMxNjg6XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9raHVnZXBhZ2VkLmMtMzE2OS1cdHJldHVybiAwO1xuLS1cbm1tL2todWdlcGFnZWQuYz0zMTcyPXZvaWQga2h1Z2VwYWdlZF9taW5fZnJlZV9rYnl0ZXNfdXBkYXRlKHZvaWQpXG4tLVxubW0va2h1Z2VwYWdlZC5jLTMxNzUtXHRpZiAoaHVnZXBhZ2VfZW5hYmxlZCgpIFx1MDAyNlx1MDAyNiBraHVnZXBhZ2VkX3RocmVhZClcbm1tL2todWdlcGFnZWQuYzozMTc2Olx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9raHVnZXBhZ2VkLmMtMzE3Ny19XG4tLVxubW0vc2htZW0uYz01NzY0PXN0YXRpYyBzc2l6ZV90IHRocHNpemVfc2htZW1fZW5hYmxlZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9zaG1lbS5jLTU3ODktXHRcdCAqL1xubW0vc2htZW0uYzo1NzkwOlx0XHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XG5tbS9zaG1lbS5jLTU3OTEtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBgbW0va2h1Z2VwYWdlZC5jYCB0byB1bmRlcnN0YW5kIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCBhY3R1YWxseSB3b3JrcywgZXNwZWNpYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYGtodWdlcGFnZWRgLiBJJiMzOTtsbCBqdW1wIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYG1tL2todWdlcGFnZWQuY2AuIExldCYjMzk7cyB6ZXJvIGluIG9uIGxpbmVzIDMwOTAgdGhyb3VnaCAzMTQwIOKAkyB0aGF0IHNob3VsZCBiZSB0aGUgcmlnaHQgYXJlYSB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBsb2dpYy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBmdW5jdGlvbiB0byBiZSBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyB0aGUgbWluaW11bSBhbW91bnQgb2YgZnJlZSBtZW1vcnkgdGhlIHN5c3RlbSBzaG91bGQgc3RyaXZlIHRvIG1haW50YWluLCB3aGljaCBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgZm9yIGh1Z2VwYWdlcyBhbmQgZW5zdXJpbmcgdGhlaXIgYWxsb2NhdGlvbiBkb2VzbiYjMzk7dCBzdGFydmUgdGhlIHN5c3RlbS4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgaXQgY2FsY3VsYXRlcyB0aGUgJiMzNDtyZWNvbW1lbmRlZCYjMzQ7IHZhbHVlIGFuZCB3aGF0IGZhY3RvcnMgYXJlIGNvbnNpZGVyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBwcm9iYWJseSB0YWtlcyBpbnRvIGFjY291bnQgdGhpbmdzIGxpa2UgYXZhaWxhYmxlIG1lbW9yeSwgTlVNQSBub2RlIGNvbmZpZ3VyYXRpb25zIChpZiBhcHBsaWNhYmxlKSwgYW5kIHBvc3NpYmx5IHNvbWUgaGV1cmlzdGljcyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBodWdlcGFnZSB1c2FnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzIG9uIGhvdyB0aGlzIGZ1bmN0aW9uIGltcGFjdHMgc3lzdGVtIHBlcmZvcm1hbmNlIG9yIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O20gYWxzbyBob3BpbmcgaXQgd2lsbCBwcm92aWRlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgcG90ZW50aWFsIHR1bmluZyBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bW0va2h1Z2VwYWdlZC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzA5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMDkwOlx0dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG4zMDkxOlx0e1xuMzA5MjpcdFx0c3RydWN0IHpvbmUgKnpvbmU7XG4zMDkzOlx0XHRpbnQgbnJfem9uZXMgPSAwO1xuMzA5NDpcdFx0dW5zaWduZWQgbG9uZyByZWNvbW1lbmRlZF9taW47XG4zMDk1Olx0XG4zMDk2Olx0XHRpZiAoIWh1Z2VwYWdlX2VuYWJsZWQoKSkge1xuMzA5NzpcdFx0XHRjYWxjdWxhdGVfbWluX2ZyZWVfa2J5dGVzKCk7XG4zMDk4Olx0XHRcdGdvdG8gdXBkYXRlX3dtYXJrcztcbjMwOTk6XHRcdH1cbjMxMDA6XHRcbjMxMDE6XHRcdGZvcl9lYWNoX3BvcHVsYXRlZF96b25lKHpvbmUpIHtcbjMxMDI6XHRcdFx0LypcbjMxMDM6XHRcdFx0ICogV2UgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZnJhZ21lbnRhdGlvbiBvZlxuMzEwNDpcdFx0XHQgKiBaT05FX01PVkFCTEUgc2luY2UgaXQgb25seSBoYXMgbW92YWJsZSBwYWdlcy5cbjMxMDU6XHRcdFx0ICovXG4zMTA2Olx0XHRcdGlmICh6b25lX2lkeCh6b25lKSBcdTAwM2UgZ2ZwX3pvbmUoR0ZQX1VTRVIpKVxuMzEwNzpcdFx0XHRcdGNvbnRpbnVlO1xuMzEwODpcdFxuMzEwOTpcdFx0XHRucl96b25lcyYjNDM7JiM0Mzs7XG4zMTEwOlx0XHR9XG4zMTExOlx0XG4zMTEyOlx0XHQvKiBFbnN1cmUgMiBwYWdlYmxvY2tzIGFyZSBmcmVlIHRvIGFzc2lzdCBmcmFnbWVudGF0aW9uIGF2b2lkYW5jZSAqL1xuMzExMzpcdFx0cmVjb21tZW5kZWRfbWluID0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKiAyO1xuMzExNDpcdFxuMzExNTpcdFx0LypcbjMxMTY6XHRcdCAqIE1ha2Ugc3VyZSB0aGF0IG9uIGF2ZXJhZ2UgYXQgbGVhc3QgdHdvIHBhZ2VibG9ja3MgYXJlIGFsbW9zdCBmcmVlXG4zMTE3Olx0XHQgKiBvZiBhbm90aGVyIHR5cGUsIG9uZSBmb3IgYSBtaWdyYXRldHlwZSB0byBmYWxsIGJhY2sgdG8gYW5kIGFcbjMxMTg6XHRcdCAqIHNlY29uZCB0byBhdm9pZCBzdWJzZXF1ZW50IGZhbGxiYWNrcyBvZiBvdGhlciB0eXBlcyBUaGVyZSBhcmUgM1xuMzExOTpcdFx0ICogTUlHUkFURV9UWVBFUyB3ZSBjYXJlIGFib3V0LlxuMzEyMDpcdFx0ICovXG4zMTIxOlx0XHRyZWNvbW1lbmRlZF9taW4gJiM0Mzs9IHBhZ2VibG9ja19ucl9wYWdlcyAqIG5yX3pvbmVzICpcbjMxMjI6XHRcdFx0XHQgICBNSUdSQVRFX1BDUFRZUEVTICogTUlHUkFURV9QQ1BUWVBFUztcbjMxMjM6XHRcbjMxMjQ6XHRcdC8qXG4zMTI1Olx0XHQgKiBEb24mIzM5O3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4zMTI2Olx0XHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxuMzEyNzpcdFx0ICovXG4zMTI4Olx0XHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxuMzEyOTpcdFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xuMzEzMDpcdFx0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4zMTMxOlx0XHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4zMTMyOlx0XG4zMTMzOlx0XHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbjMxMzQ6XHRcdFx0aWYgKHVzZXJfbWluX2ZyZWVfa2J5dGVzIFx1MDAzZT0gMClcbjMxMzU6XHRcdFx0XHRwcl9pbmZvX3JhdGVsaW1pdGVkKFwmIzM0O3JhaXNpbmcgbWluX2ZyZWVfa2J5dGVzIGZyb20gJWQgdG8gJWx1IHRvIGhlbHAgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYWxsb2NhdGlvbnNcXG5cJiMzNDssXG4zMTM2Olx0XHRcdFx0XHRcdCAgICBtaW5fZnJlZV9rYnl0ZXMsIHJlY29tbWVuZGVkX21pbik7XG4zMTM3Olx0XG4zMTM4Olx0XHRcdG1pbl9mcmVlX2tieXRlcyA9IHJlY29tbWVuZGVkX21pbjtcbjMxMzk6XHRcdH1cbjMxNDA6XHRcbjMxNDE6XHR1cGRhdGVfd21hcmtzOlxuMzE0MjpcdFx0c2V0dXBfcGVyX3pvbmVfd21hcmtzKCk7XG4zMTQzOlx0fVxuMzE0NDpcdFxuMzE0NTpcdGludCBzdGFydF9zdG9wX2todWdlcGFnZWQodm9pZClcbjMxNDY6XHR7XG4zMTQ3Olx0XHRndWFyZChtdXRleCkoXHUwMDI2a2h1Z2VwYWdlZF9tdXRleCk7XG4zMTQ4Olx0XHRpZiAoaHVnZXBhZ2VfZW5hYmxlZCgpKSB7XG4zMTQ5Olx0XHRcdGlmICgha2h1Z2VwYWdlZF90aHJlYWQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwODoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk4CgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDE2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggUmV2aWV3OiBUSFAgYG1pbl9mcmVlX2tieXRlc2AgQ2FsY3VsYXRpb24gQ2xhbXAqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FwLCBgVEhQX01JTl9GUkVFX01BWF9QQUdFU2AsIG9uIHRoZSBgcmVjb21tZW5kZWRfbWluYCB2YWx1ZSB1c2VkIGluIGNhbGN1bGF0aW5nIGBtaW5fZnJlZV9rYnl0ZXNgIGZvciBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBCZWZvcmUgdGhpcyBwYXRjaCwgYHJlY29tbWVuZGVkX21pbmAgd2FzIGNvbXB1dGVkIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9yczogYHBhZ2VibG9ja19ucl9wYWdlc2AsIGBucl96b25lc2AsIGFuZCBgTUlHUkFURV9QQ1BUWVBFU2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZGVzZXJ2ZXMgZnV6emluZyBhdHRlbnRpb24uCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG1hZ25pdHVkZSBvZiBgcmVjb21tZW5kZWRfbWluYCBvbiBhIHR5cGljYWwgc3lzdGVtLiBMZXQmIzM5O3MgY2FsY3VsYXRlOiBvbiBhIHN0YW5kYXJkIHg4Nl82NCBzeXN0ZW0sIHdpdGggYSAyTUIgaHVnZSBwYWdlIHNpemUsIDMgem9uZXMsIGFuZCAzIG1pZ3JhdGlvbiB0eXBlcywgdGhlIGluaXRpYWwgY2FsY3VsYXRpb24gcmVzdWx0cyBpbiByb3VnaGx5IDY2IE1CLgoKVGhlIGNvbmNlcm4sIEkgdGhpbmssIGlzIHJlYWxseSBhYm91dCBleGNlcHRpb25hbGx5IGxhcmdlIHN5c3RlbXMgLS0gMVRCJiM0MzsgUkFNLCBvciBodWdlIG51bWJlcnMgb2Ygem9uZXMvTlVNQSBub2Rlcy4gVGhlIGV4aXN0aW5nIGNhbGN1bGF0aW9uIGNvdWxkIHlpZWxkIHZlcnkgbGFyZ2UgdmFsdWVzLCBwb3RlbnRpYWxseSBleGNlZWRpbmcgdGhlIDFHQiB0aHJlc2hvbGQgdGhhdCYjMzk7cyBiZWluZyBzZXQgaGVyZS4gSXQmIzM5O3MgYSBjYWxjdWxhdGlvbiBiYXNlZCBvbiBgbnJfem9uZXNgIGFuZCBgcGFnZWJsb2NrX25yX3BhZ2VzYC4gRXZlbiB3aXRoIG1hbnkgem9uZXMgKGUuZy4sIGEgdGhvdXNhbmQpLCBpdCBjYW4gYmUgbGFyZ2UsIGJ1dCB0aGUgdXBwZXIgYm91bmQgY29tZXMgaW50byBwbGF5IG9uIHZlcnkgbGFyZ2UgbWVtb3J5IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIGNsYW1wcyBgcmVjb21tZW5kZWRfbWluYCB0byAxR0IuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJcyB0aGlzIHdvcnRoIGZ1enppbmc/IEkgbmVlZCB0byBjb25zaWRlciB0aGUgY3JpdGVyaWEuIEkmIzM5O3ZlIHJlLXJlYWQgdGhlIFdvcnRoRnV6emluZyBydWxlcyBjYXJlZnVsbHkuICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuIElzIHRoaXMgYSBudW1lcmljYWwgY29uc3RhbnQgb3IgZG9lcyBpdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3c/CgpMZXQmIzM5O3MgZXhhbWluZS4gVGhlIHBhdGNoIGl0c2VsZiBtZXJlbHkgYWRkcyBhIGNhcCBvZiAxR0IgdG8gYSByZWNvbW1lbmRlZCB2YWx1ZS4gSXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgaW50ZXJmYWNlcywgY29tcGxleCBzdGF0ZSBtYWNoaW5lcywgcGFyc2luZywgc3lzY2FsbHMsIG9yIG1lbW9yeSBzYWZldHkgaXNzdWVzLgoKSW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCAoZS5nLiwgUUVNVSBvciBzeXprYWxsZXIpLCB3aXRoIDItNEdCIG9mIFJBTSwgdGhpcyAxR0IgY2FwIGlzIGxpa2VseSBub3QgZXZlbiByZWFjaGVkLiBUaGUgY2FsY3VsYXRlZCBgcmVjb21tZW5kZWRfbWluYCBpcyBsaWtlbHkgbXVjaCBsb3dlciAoNjZNQikuIFRoaXMgcGF0Y2ggaXMganVzdCBzZXR0aW5nIGFuIHVwcGVyIGJvdW5kLCBub3QgZnVuZGFtZW50YWxseSBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgZm9yIHR5cGljYWwgc3lzdGVtcyBvciBpbiBmdXp6aW5nIHNjZW5hcmlvcy4KCkkmIzM5O20gbGVhbmluZyB0b3dhcmRzIG5vdCB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaXQmIzM5O3MgYSBwYXJhbWV0ZXIgY2xhbXAgYW5kIGRvZXNuJiMzOTt0IGNoYW5nZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMuIFRoZSBwYXRjaCYjMzk7cyBlZmZlY3RzIGFyZSBsaW1pdGVkIHRvIHN5c3RlbXMgd2l0aCBtYXNzaXZlIG1lbW9yeS4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIHRoaW5rIHRoaXMgaXMgYSAmIzM0O0NoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyYjMzQ7LgoKU28sIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgdGhhdCBpdCYjMzk7cyBhIHNpbXBsZSB1cHBlci1ib3VuZCBjbGFtcCBvbiBhIHN5c2N0bCBjYWxjdWxhdGlvbiAoZm9yIGBtaW5fZnJlZV9rYnl0ZXNgKSBmb3IgVEhQLCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgaW50ZXJmYWNlcywgcmVhY2hhYmxlIHN0YXRlIGNoYW5nZXMsIG9yIGZ1enplci1yZWxldmFudCBsb2dpYy4gSSB3aWxsIGFsc28gbWFrZSBzdXJlIHRvIHNldCB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA4OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDg6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU0Ljg5MTM5MTY2N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDU3NTgxNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIDEgR2lCIHVwcGVyIGJvdW5kIGNsYW1wIChUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKSB0byB0aGUgYXV0b21hdGljIG1pbl9mcmVlX2tieXRlcyBjYWxjdWxhdGlvbiBmb3IgVHJhbnNwYXJlbnQgSHVnZXBhZ2VzIGluIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKSBhbmQgdXBkYXRlcyB0aGUgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsaXR5LCBpbnRlcmZhY2VzLCBvciBjb21wbGV4IGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1NC44OTEzOTcyMjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTY1MTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEyMjUyMzNjYWUzNWIwYTM1OGJkZTU2NTNlOTI4ZWQ5MjllZDM4N2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDg6MjY6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XFxuaW5kZXggNWIzMThkMTdhYTRiNC4uYzBjOTI1ZTZmNTA0NyAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcXG5AQCAtNTM5LDYgKzUzOSwxNCBAQCB3YXRlcm1hcmtbV01BUktfTUlOXSB2YWx1ZSBmb3IgZWFjaCBsb3dtZW0gem9uZSBpbiB0aGUgc3lzdGVtLlxcbiBFYWNoIGxvd21lbSB6b25lIGdldHMgYSBudW1iZXIgb2YgcmVzZXJ2ZWQgZnJlZSBwYWdlcyBiYXNlZFxcbiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS5cXG4gXFxuK1doZW4gVHJhbnNwYXJlbnQgSHVnZXBhZ2UgKFRIUCkgc3VwcG9ydCBpcyBlbmFibGVkIHRocm91Z2ggZ2xvYmFsIG9yXFxuK3Blci1zaXplIGNvbnRyb2xzLCB0aGUga2VybmVsIG1heSByYWlzZSB0aGlzIHZhbHVlIGF1dG9tYXRpY2FsbHkgdG9cXG4raGVscCBrZWVwIHBhZ2VibG9ja3MgZnJlZSBhbmQgcmVkdWNlIGZyYWdtZW50YXRpb24gZm9yIFRIUCBhbGxvY2F0aW9ucy5cXG4rVGhlIGF1dG9tYXRpYyByZWNvbW1lbmRhdGlvbiBjYW5ub3QgZXhjZWVkIDUlIG9mIGxvdyBtZW1vcnkgb3IgMSBHaUIsXFxuK3doaWNoZXZlciBpcyBsb3dlci4gIFRoaXMgbGltaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBhdXRvbWF0aWNcXG4rcmVjb21tZW5kYXRpb24gYW5kIGRvZXMgbm90IGNvbnN0cmFpbiBhIGhpZ2hlciB2YWx1ZSB3cml0dGVuIGJ5XFxuK3VzZXJzcGFjZS5cXG4rXFxuIFNvbWUgbWluaW1hbCBhbW91bnQgb2YgbWVtb3J5IGlzIG5lZWRlZCB0byBzYXRpc2Z5IFBGX01FTUFMTE9DXFxuIGFsbG9jYXRpb25zOyBpZiB5b3Ugc2V0IHRoaXMgdG8gbG93ZXIgdGhhbiAxMDI0S0IsIHlvdXIgc3lzdGVtIHdpbGxcXG4gYmVjb21lIHN1YnRseSBicm9rZW4sIGFuZCBwcm9uZSB0byBkZWFkbG9jayB1bmRlciBoaWdoIGxvYWRzLlxcbmRpZmYgLS1naXQgYS9tbS9raHVnZXBhZ2VkLmMgYi9tbS9raHVnZXBhZ2VkLmNcXG5pbmRleCBmNDlhNjcxMDkzM2IxLi5hOGZjMDYxZDI0ODhkIDEwMDY0NFxcbi0tLSBhL21tL2todWdlcGFnZWQuY1xcbisrKyBiL21tL2todWdlcGFnZWQuY1xcbkBAIC0xMDEsNiArMTAxLDcgQEAgc3RhdGljIERFRklORV9SRUFEX01PU1RMWV9IQVNIVEFCTEUobW1fc2xvdHNfaGFzaCwgTU1fU0xPVFNfSEFTSF9CSVRTKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqbW1fc2xvdF9jYWNoZSBfX3JvX2FmdGVyX2luaXQ7XFxuIFxcbisjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcXHRcXHQoU1pfMUcgLyBQQUdFX1NJWkUpXFxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlxcdDJcXG4gXFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcXG5AQCAtMzEyMCw5ICszMTIxLDEzIEBAIHZvaWQgc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcyh2b2lkKVxcbiBcXHRyZWNvbW1lbmRlZF9taW4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKlxcbiBcXHRcXHRcXHQgICBNSUdSQVRFX1BDUFRZUEVTICogTUlHUkFURV9QQ1BUWVBFUztcXG4gXFxuLVxcdC8qIGRvbid0IGV2ZXIgYWxsb3cgdG8gcmVzZXJ2ZSBtb3JlIHRoYW4gNSUgb2YgdGhlIGxvd21lbSAqL1xcbitcXHQvKlxcbitcXHQgKiBEb24ndCBhbGxvdyB0aGUgVEhQIHJlY29tbWVuZGF0aW9uIHRvIGV4Y2VlZCA1JSBvZiBsb3dtZW0gb3IgYW5cXG4rXFx0ICogYWJzb2x1dGUgY2FwLCB3aGljaGV2ZXIgaXMgc21hbGxlci5cXG4rXFx0ICovXFxuIFxcdHJlY29tbWVuZGVkX21pbiA9IG1pbihyZWNvbW1lbmRlZF9taW4sXFxuIFxcdFxcdFxcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xcbitcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtcXG4gXFx0cmVjb21tZW5kZWRfbWluIFxcdTAwM2NcXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XFxuIFxcbiBcXHRpZiAocmVjb21tZW5kZWRfbWluIFxcdTAwM2UgbWluX2ZyZWVfa2J5dGVzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU1LjI4NzYyNTQyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTg2NjEzMzQwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSAxIEdpQiB1cHBlciBib3VuZCBjbGFtcCAoVEhQX01JTl9GUkVFX01BWF9QQUdFUykgdG8gdGhlIGF1dG9tYXRpYyBtaW5fZnJlZV9rYnl0ZXMgY2FsY3VsYXRpb24gZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBpbiBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCkgYW5kIHVwZGF0ZXMgdGhlIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbGl0eSwgaW50ZXJmYWNlcywgb3IgY29tcGxleCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTIyNTIzM2NhZTM1YjBhMzU4YmRlNTY1M2U5MjhlZDkyOWVkMzg3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA4OjI2OjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG5pbmRleCA1YjMxOGQxN2FhNGI0Li5jMGM5MjVlNmY1MDQ3IDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3N5c2N0bC92bS5yc3RcbkBAIC01MzksNiArNTM5LDE0IEBAIHdhdGVybWFya1tXTUFSS19NSU5dIHZhbHVlIGZvciBlYWNoIGxvd21lbSB6b25lIGluIHRoZSBzeXN0ZW0uXG4gRWFjaCBsb3dtZW0gem9uZSBnZXRzIGEgbnVtYmVyIG9mIHJlc2VydmVkIGZyZWUgcGFnZXMgYmFzZWRcbiBwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS5cbiBcbitXaGVuIFRyYW5zcGFyZW50IEh1Z2VwYWdlIChUSFApIHN1cHBvcnQgaXMgZW5hYmxlZCB0aHJvdWdoIGdsb2JhbCBvclxuK3Blci1zaXplIGNvbnRyb2xzLCB0aGUga2VybmVsIG1heSByYWlzZSB0aGlzIHZhbHVlIGF1dG9tYXRpY2FsbHkgdG9cbitoZWxwIGtlZXAgcGFnZWJsb2NrcyBmcmVlIGFuZCByZWR1Y2UgZnJhZ21lbnRhdGlvbiBmb3IgVEhQIGFsbG9jYXRpb25zLlxuK1RoZSBhdXRvbWF0aWMgcmVjb21tZW5kYXRpb24gY2Fubm90IGV4Y2VlZCA1JSBvZiBsb3cgbWVtb3J5IG9yIDEgR2lCLFxuK3doaWNoZXZlciBpcyBsb3dlci4gIFRoaXMgbGltaXQgYXBwbGllcyBvbmx5IHRvIHRoZSBhdXRvbWF0aWNcbityZWNvbW1lbmRhdGlvbiBhbmQgZG9lcyBub3QgY29uc3RyYWluIGEgaGlnaGVyIHZhbHVlIHdyaXR0ZW4gYnlcbit1c2Vyc3BhY2UuXG4rXG4gU29tZSBtaW5pbWFsIGFtb3VudCBvZiBtZW1vcnkgaXMgbmVlZGVkIHRvIHNhdGlzZnkgUEZfTUVNQUxMT0NcbiBhbGxvY2F0aW9uczsgaWYgeW91IHNldCB0aGlzIHRvIGxvd2VyIHRoYW4gMTAyNEtCLCB5b3VyIHN5c3RlbSB3aWxsXG4gYmVjb21lIHN1YnRseSBicm9rZW4sIGFuZCBwcm9uZSB0byBkZWFkbG9jayB1bmRlciBoaWdoIGxvYWRzLlxuZGlmZiAtLWdpdCBhL21tL2todWdlcGFnZWQuYyBiL21tL2todWdlcGFnZWQuY1xuaW5kZXggZjQ5YTY3MTA5MzNiMS4uYThmYzA2MWQyNDg4ZCAxMDA2NDRcbi0tLSBhL21tL2todWdlcGFnZWQuY1xuKysrIGIvbW0va2h1Z2VwYWdlZC5jXG5AQCAtMTAxLDYgKzEwMSw3IEBAIHN0YXRpYyBERUZJTkVfUkVBRF9NT1NUTFlfSEFTSFRBQkxFKG1tX3Nsb3RzX2hhc2gsIE1NX1NMT1RTX0hBU0hfQklUUyk7XG4gXG4gc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICptbV9zbG90X2NhY2hlIF9fcm9fYWZ0ZXJfaW5pdDtcbiBcbisjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVNcdFx0KFNaXzFHIC8gUEFHRV9TSVpFKVxuICNkZWZpbmUgS0hVR0VQQUdFRF9NSU5fTVRIUF9PUkRFUlx0MlxuIFxuIHN0cnVjdCBjb2xsYXBzZV9jb250cm9sIHtcbkBAIC0zMTIwLDkgKzMxMjEsMTMgQEAgdm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpXG4gXHRyZWNvbW1lbmRlZF9taW4gKz0gcGFnZWJsb2NrX25yX3BhZ2VzICogbnJfem9uZXMgKlxuIFx0XHRcdCAgIE1JR1JBVEVfUENQVFlQRVMgKiBNSUdSQVRFX1BDUFRZUEVTO1xuIFxuLVx0LyogZG9uJ3QgZXZlciBhbGxvdyB0byByZXNlcnZlIG1vcmUgdGhhbiA1JSBvZiB0aGUgbG93bWVtICovXG4rXHQvKlxuK1x0ICogRG9uJ3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXG4rXHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxuK1x0ICovXG4gXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxuIFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKSBucl9mcmVlX2J1ZmZlcl9wYWdlcygpIC8gMjApO1xuK1x0cmVjb21tZW5kZWRfbWluID0gbWluKHJlY29tbWVuZGVkX21pbiwgVEhQX01JTl9GUkVFX01BWF9QQUdFUyk7XG4gXHRyZWNvbW1lbmRlZF9taW4gXHUwMDNjXHUwMDNjPSAoUEFHRV9TSElGVC0xMCk7XG4gXG4gXHRpZiAocmVjb21tZW5kZWRfbWluIFx1MDAzZSBtaW5fZnJlZV9rYnl0ZXMpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI2OjU1LjI4NzYyNjg0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2NDE2MDQ4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGJyZWFrIGl0IGRvd24gZmlsZSBieSBmaWxlIGFuZCBzZWUgd2hhdCdzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYm90aCBgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvdm0ucnN0YCBhbmQgYG1tL2todWdlcGFnZWQuY2AuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBgbW0va2h1Z2VwYWdlZC5jYCBjaGFuZ2UsIG9mIGNvdXJzZS5cblxuTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYC4gSSBjYW4gc2VlIGEgbmV3IGxpbmUgYmVpbmcgYWRkZWQ6IGByZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtgIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEZyb20gdGhlIGNvbnRleHQsIGFuZCBieSByZXZpZXdpbmcgdGhlIGAjZGVmaW5lIFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMgKFNaXzFHIC8gUEFHRV9TSVpFKWAsIGl0IHNlZW1zIHRvIGJlIGVzdGFibGlzaGluZyBhbiB1cHBlciBib3VuZCBmb3IgYHJlY29tbWVuZGVkX21pbmAgYmFzZWQgb24gYSBnaWdhYnl0ZSBvZiBtZW1vcnkgZGl2aWRlZCBieSB0aGUgcGFnZSBzaXplLiBUaGUgcHJldmlvdXMgY29kZSBsb2dpYyBjYWxjdWxhdGVzIHRoZSBgcmVjb21tZW5kZWRfbWluYCBiYXNlZCBvbiBmcmVlIGJ1ZmZlciBwYWdlcywgYW5kIHRoaXMgYWRkaXRpb24gc2V0cyBhIGhhcmQgY2VpbGluZyBvbiB0aGF0IHZhbHVlLlxuXG5JIHdhbnQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGJyb2FkZXIgaW1wYWN0IG9mIHRoaXMgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGZ1bmN0aW9uLiBJJ2xsIHJlYWNoIGZvciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgYW5kIHNlZSB3aGVyZSBlbHNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBob3cgdGhpcyBwYXJhbWV0ZXIgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgdXBwZXIgYm91bmQsIGFuZCB3aGF0IGl0J3MgcHJldmVudGluZy4gVGhpcyBpcyBsaWtlbHkgcmVsYXRlZCB0byBob3cgdGhlIGtlcm5lbCBtYW5hZ2VzIGl0cyBhbGxvY2F0aW9uIG9mIGh1Z2UgcGFnZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1OC45MjkyMzQ1MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2NDA5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaHVnZV9tZW1vcnkuYz00ODc9c3RhdGljIHNzaXplX3QgZW5hYmxlZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2h1Z2VfbWVtb3J5LmMtNTA3LVxcdFxcdCAqL1xcbm1tL2h1Z2VfbWVtb3J5LmM6NTA4OlxcdFxcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcXG5tbS9odWdlX21lbW9yeS5jLTUwOS1cXHR9XFxuLS1cXG5tbS9odWdlX21lbW9yeS5jPTcyMj1zdGF0aWMgc3NpemVfdCBhbm9uX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9odWdlX21lbW9yeS5jLTc0My1cXHRcXHQgKi9cXG5tbS9odWdlX21lbW9yeS5jOjc0NDpcXHRcXHRzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCk7XFxubW0vaHVnZV9tZW1vcnkuYy03NDUtXFx0fVxcbi0tXFxubW0vaW50ZXJuYWwuaD02OTA9cG1kX3QgKm1tX2ZpbmRfcG1kKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpO1xcbi0tXFxubW0vaW50ZXJuYWwuaC02OTQtICovXFxubW0vaW50ZXJuYWwuaDo2OTU6dm9pZCBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKHZvaWQpO1xcbm1tL2ludGVybmFsLmgtNjk2LVxcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTMwNjk9c3RhdGljIGludCBraHVnZXBhZ2VkKHZvaWQgKm5vbmUpXFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMzA4OS1cXG5tbS9raHVnZXBhZ2VkLmM6MzA5MDp2b2lkIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXModm9pZClcXG5tbS9raHVnZXBhZ2VkLmMtMzA5MS17XFxuLS1cXG5tbS9raHVnZXBhZ2VkLmM9MzE0NT1pbnQgc3RhcnRfc3RvcF9raHVnZXBhZ2VkKHZvaWQpXFxuLS1cXG5tbS9raHVnZXBhZ2VkLmMtMzE2Ny1cXHR9XFxubW0va2h1Z2VwYWdlZC5jOjMxNjg6XFx0c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpO1xcbm1tL2todWdlcGFnZWQuYy0zMTY5LVxcdHJldHVybiAwO1xcbi0tXFxubW0va2h1Z2VwYWdlZC5jPTMxNzI9dm9pZCBraHVnZXBhZ2VkX21pbl9mcmVlX2tieXRlc191cGRhdGUodm9pZClcXG4tLVxcbm1tL2todWdlcGFnZWQuYy0zMTc1LVxcdGlmIChodWdlcGFnZV9lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYga2h1Z2VwYWdlZF90aHJlYWQpXFxubW0va2h1Z2VwYWdlZC5jOjMxNzY6XFx0XFx0c2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpO1xcbm1tL2todWdlcGFnZWQuYy0zMTc3LX1cXG4tLVxcbm1tL3NobWVtLmM9NTc2ND1zdGF0aWMgc3NpemVfdCB0aHBzaXplX3NobWVtX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5tbS9zaG1lbS5jLTU3ODktXFx0XFx0ICovXFxubW0vc2htZW0uYzo1NzkwOlxcdFxcdHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXMoKTtcXG5tbS9zaG1lbS5jLTU3OTEtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwODoyNjo1OC45NzQ4ODMxMTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2MjYwNDE5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBgbW0va2h1Z2VwYWdlZC5jYCB0byB1bmRlcnN0YW5kIGBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgYHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXNgIGFjdHVhbGx5IHdvcmtzLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBga2h1Z2VwYWdlZGAuIEknbGwganVtcCByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBtbS9raHVnZXBhZ2VkLmNgLiBMZXQncyB6ZXJvIGluIG9uIGxpbmVzIDMwOTAgdGhyb3VnaCAzMTQwIOKAkyB0aGF0IHNob3VsZCBiZSB0aGUgcmlnaHQgYXJlYSB0byBmaW5kIHRoZSBkZWZpbml0aW9uIGFuZCBsb2dpYy4gSSdtIGV4cGVjdGluZyB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBmcmVlIG1lbW9yeSB0aGUgc3lzdGVtIHNob3VsZCBzdHJpdmUgdG8gbWFpbnRhaW4sIHdoaWNoIGlzIHBhcnRpY3VsYXJseSByZWxldmFudCBmb3IgaHVnZXBhZ2VzIGFuZCBlbnN1cmluZyB0aGVpciBhbGxvY2F0aW9uIGRvZXNuJ3Qgc3RhcnZlIHRoZSBzeXN0ZW0uIEknbSBjdXJpb3VzIHRvIHNlZSBob3cgaXQgY2FsY3VsYXRlcyB0aGUgXCJyZWNvbW1lbmRlZFwiIHZhbHVlIGFuZCB3aGF0IGZhY3RvcnMgYXJlIGNvbnNpZGVyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCBwcm9iYWJseSB0YWtlcyBpbnRvIGFjY291bnQgdGhpbmdzIGxpa2UgYXZhaWxhYmxlIG1lbW9yeSwgTlVNQSBub2RlIGNvbmZpZ3VyYXRpb25zIChpZiBhcHBsaWNhYmxlKSwgYW5kIHBvc3NpYmx5IHNvbWUgaGV1cmlzdGljcyBvciB0dW5hYmxlIHBhcmFtZXRlcnMgcmVsYXRlZCB0byBodWdlcGFnZSB1c2FnZS4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgY2x1ZXMgb24gaG93IHRoaXMgZnVuY3Rpb24gaW1wYWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugb3IgaXMgY29uZmlndXJlZC4gSSdtIGFsc28gaG9waW5nIGl0IHdpbGwgcHJvdmlkZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHBvdGVudGlhbCB0dW5pbmcgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA4OjI3OjA1LjIzNTMwNDYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9raHVnZXBhZ2VkLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzA5MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzA5MDpcXHR2b2lkIHNldF9yZWNvbW1lbmRlZF9taW5fZnJlZV9rYnl0ZXModm9pZClcXG4zMDkxOlxcdHtcXG4zMDkyOlxcdFxcdHN0cnVjdCB6b25lICp6b25lO1xcbjMwOTM6XFx0XFx0aW50IG5yX3pvbmVzID0gMDtcXG4zMDk0OlxcdFxcdHVuc2lnbmVkIGxvbmcgcmVjb21tZW5kZWRfbWluO1xcbjMwOTU6XFx0XFxuMzA5NjpcXHRcXHRpZiAoIWh1Z2VwYWdlX2VuYWJsZWQoKSkge1xcbjMwOTc6XFx0XFx0XFx0Y2FsY3VsYXRlX21pbl9mcmVlX2tieXRlcygpO1xcbjMwOTg6XFx0XFx0XFx0Z290byB1cGRhdGVfd21hcmtzO1xcbjMwOTk6XFx0XFx0fVxcbjMxMDA6XFx0XFxuMzEwMTpcXHRcXHRmb3JfZWFjaF9wb3B1bGF0ZWRfem9uZSh6b25lKSB7XFxuMzEwMjpcXHRcXHRcXHQvKlxcbjMxMDM6XFx0XFx0XFx0ICogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBmcmFnbWVudGF0aW9uIG9mXFxuMzEwNDpcXHRcXHRcXHQgKiBaT05FX01PVkFCTEUgc2luY2UgaXQgb25seSBoYXMgbW92YWJsZSBwYWdlcy5cXG4zMTA1OlxcdFxcdFxcdCAqL1xcbjMxMDY6XFx0XFx0XFx0aWYgKHpvbmVfaWR4KHpvbmUpIFxcdTAwM2UgZ2ZwX3pvbmUoR0ZQX1VTRVIpKVxcbjMxMDc6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuMzEwODpcXHRcXG4zMTA5OlxcdFxcdFxcdG5yX3pvbmVzKys7XFxuMzExMDpcXHRcXHR9XFxuMzExMTpcXHRcXG4zMTEyOlxcdFxcdC8qIEVuc3VyZSAyIHBhZ2VibG9ja3MgYXJlIGZyZWUgdG8gYXNzaXN0IGZyYWdtZW50YXRpb24gYXZvaWRhbmNlICovXFxuMzExMzpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBwYWdlYmxvY2tfbnJfcGFnZXMgKiBucl96b25lcyAqIDI7XFxuMzExNDpcXHRcXG4zMTE1OlxcdFxcdC8qXFxuMzExNjpcXHRcXHQgKiBNYWtlIHN1cmUgdGhhdCBvbiBhdmVyYWdlIGF0IGxlYXN0IHR3byBwYWdlYmxvY2tzIGFyZSBhbG1vc3QgZnJlZVxcbjMxMTc6XFx0XFx0ICogb2YgYW5vdGhlciB0eXBlLCBvbmUgZm9yIGEgbWlncmF0ZXR5cGUgdG8gZmFsbCBiYWNrIHRvIGFuZCBhXFxuMzExODpcXHRcXHQgKiBzZWNvbmQgdG8gYXZvaWQgc3Vic2VxdWVudCBmYWxsYmFja3Mgb2Ygb3RoZXIgdHlwZXMgVGhlcmUgYXJlIDNcXG4zMTE5OlxcdFxcdCAqIE1JR1JBVEVfVFlQRVMgd2UgY2FyZSBhYm91dC5cXG4zMTIwOlxcdFxcdCAqL1xcbjMxMjE6XFx0XFx0cmVjb21tZW5kZWRfbWluICs9IHBhZ2VibG9ja19ucl9wYWdlcyAqIG5yX3pvbmVzICpcXG4zMTIyOlxcdFxcdFxcdFxcdCAgIE1JR1JBVEVfUENQVFlQRVMgKiBNSUdSQVRFX1BDUFRZUEVTO1xcbjMxMjM6XFx0XFxuMzEyNDpcXHRcXHQvKlxcbjMxMjU6XFx0XFx0ICogRG9uJ3QgYWxsb3cgdGhlIFRIUCByZWNvbW1lbmRhdGlvbiB0byBleGNlZWQgNSUgb2YgbG93bWVtIG9yIGFuXFxuMzEyNjpcXHRcXHQgKiBhYnNvbHV0ZSBjYXAsIHdoaWNoZXZlciBpcyBzbWFsbGVyLlxcbjMxMjc6XFx0XFx0ICovXFxuMzEyODpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLFxcbjMxMjk6XFx0XFx0XFx0XFx0ICAgICAgKHVuc2lnbmVkIGxvbmcpIG5yX2ZyZWVfYnVmZmVyX3BhZ2VzKCkgLyAyMCk7XFxuMzEzMDpcXHRcXHRyZWNvbW1lbmRlZF9taW4gPSBtaW4ocmVjb21tZW5kZWRfbWluLCBUSFBfTUlOX0ZSRUVfTUFYX1BBR0VTKTtcXG4zMTMxOlxcdFxcdHJlY29tbWVuZGVkX21pbiBcXHUwMDNjXFx1MDAzYz0gKFBBR0VfU0hJRlQtMTApO1xcbjMxMzI6XFx0XFxuMzEzMzpcXHRcXHRpZiAocmVjb21tZW5kZWRfbWluIFxcdTAwM2UgbWluX2ZyZWVfa2J5dGVzKSB7XFxuMzEzNDpcXHRcXHRcXHRpZiAodXNlcl9taW5fZnJlZV9rYnl0ZXMgXFx1MDAzZT0gMClcXG4zMTM1OlxcdFxcdFxcdFxcdHByX2luZm9fcmF0ZWxpbWl0ZWQoXFxcInJhaXNpbmcgbWluX2ZyZWVfa2J5dGVzIGZyb20gJWQgdG8gJWx1IHRvIGhlbHAgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYWxsb2NhdGlvbnNcXFxcblxcXCIsXFxuMzEzNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgbWluX2ZyZWVfa2J5dGVzLCByZWNvbW1lbmRlZF9taW4pO1xcbjMxMzc6XFx0XFxuMzEzODpcXHRcXHRcXHRtaW5fZnJlZV9rYnl0ZXMgPSByZWNvbW1lbmRlZF9taW47XFxuMzEzOTpcXHRcXHR9XFxuMzE0MDpcXHRcXG4zMTQxOlxcdHVwZGF0ZV93bWFya3M6XFxuMzE0MjpcXHRcXHRzZXR1cF9wZXJfem9uZV93bWFya3MoKTtcXG4zMTQzOlxcdH1cXG4zMTQ0OlxcdFxcbjMxNDU6XFx0aW50IHN0YXJ0X3N0b3Bfa2h1Z2VwYWdlZCh2b2lkKVxcbjMxNDY6XFx0e1xcbjMxNDc6XFx0XFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZraHVnZXBhZ2VkX211dGV4KTtcXG4zMTQ4OlxcdFxcdGlmIChodWdlcGFnZV9lbmFibGVkKCkpIHtcXG4zMTQ5OlxcdFxcdFxcdGlmICgha2h1Z2VwYWdlZF90aHJlYWQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MDUuMjM1NDYyNDQ4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODcxMzQ3MzU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBSZXZpZXc6IFRIUCBgbWluX2ZyZWVfa2J5dGVzYCBDYWxjdWxhdGlvbiBDbGFtcCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGEgY2FwLCBgVEhQX01JTl9GUkVFX01BWF9QQUdFU2AsIG9uIHRoZSBgcmVjb21tZW5kZWRfbWluYCB2YWx1ZSB1c2VkIGluIGNhbGN1bGF0aW5nIGBtaW5fZnJlZV9rYnl0ZXNgIGZvciBUcmFuc3BhcmVudCBIdWdlIFBhZ2VzIChUSFApLiBCZWZvcmUgdGhpcyBwYXRjaCwgYHJlY29tbWVuZGVkX21pbmAgd2FzIGNvbXB1dGVkIGJhc2VkIG9uIHNldmVyYWwgZmFjdG9yczogYHBhZ2VibG9ja19ucl9wYWdlc2AsIGBucl96b25lc2AsIGFuZCBgTUlHUkFURV9QQ1BUWVBFU2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZGVzZXJ2ZXMgZnV6emluZyBhdHRlbnRpb24uXG5cbkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbWFnbml0dWRlIG9mIGByZWNvbW1lbmRlZF9taW5gIG9uIGEgdHlwaWNhbCBzeXN0ZW0uIExldCdzIGNhbGN1bGF0ZTogb24gYSBzdGFuZGFyZCB4ODZfNjQgc3lzdGVtLCB3aXRoIGEgMk1CIGh1Z2UgcGFnZSBzaXplLCAzIHpvbmVzLCBhbmQgMyBtaWdyYXRpb24gdHlwZXMsIHRoZSBpbml0aWFsIGNhbGN1bGF0aW9uIHJlc3VsdHMgaW4gcm91Z2hseSA2NiBNQi5cblxuVGhlIGNvbmNlcm4sIEkgdGhpbmssIGlzIHJlYWxseSBhYm91dCBleGNlcHRpb25hbGx5IGxhcmdlIHN5c3RlbXMgLS0gMVRCKyBSQU0sIG9yIGh1Z2UgbnVtYmVycyBvZiB6b25lcy9OVU1BIG5vZGVzLiBUaGUgZXhpc3RpbmcgY2FsY3VsYXRpb24gY291bGQgeWllbGQgdmVyeSBsYXJnZSB2YWx1ZXMsIHBvdGVudGlhbGx5IGV4Y2VlZGluZyB0aGUgMUdCIHRocmVzaG9sZCB0aGF0J3MgYmVpbmcgc2V0IGhlcmUuIEl0J3MgYSBjYWxjdWxhdGlvbiBiYXNlZCBvbiBgbnJfem9uZXNgIGFuZCBgcGFnZWJsb2NrX25yX3BhZ2VzYC4gRXZlbiB3aXRoIG1hbnkgem9uZXMgKGUuZy4sIGEgdGhvdXNhbmQpLCBpdCBjYW4gYmUgbGFyZ2UsIGJ1dCB0aGUgdXBwZXIgYm91bmQgY29tZXMgaW50byBwbGF5IG9uIHZlcnkgbGFyZ2UgbWVtb3J5IGNvbmZpZ3VyYXRpb25zLiBUaGlzIHBhdGNoIGNsYW1wcyBgcmVjb21tZW5kZWRfbWluYCB0byAxR0IuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IElzIHRoaXMgd29ydGggZnV6emluZz8gSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjcml0ZXJpYS4gSSd2ZSByZS1yZWFkIHRoZSBXb3J0aEZ1enppbmcgcnVsZXMgY2FyZWZ1bGx5LiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLiBJcyB0aGlzIGEgbnVtZXJpY2FsIGNvbnN0YW50IG9yIGRvZXMgaXQgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93P1xuXG5MZXQncyBleGFtaW5lLiBUaGUgcGF0Y2ggaXRzZWxmIG1lcmVseSBhZGRzIGEgY2FwIG9mIDFHQiB0byBhIHJlY29tbWVuZGVkIHZhbHVlLiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGludGVyZmFjZXMsIGNvbXBsZXggc3RhdGUgbWFjaGluZXMsIHBhcnNpbmcsIHN5c2NhbGxzLCBvciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy5cblxuSW4gdGhlIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudCAoZS5nLiwgUUVNVSBvciBzeXprYWxsZXIpLCB3aXRoIDItNEdCIG9mIFJBTSwgdGhpcyAxR0IgY2FwIGlzIGxpa2VseSBub3QgZXZlbiByZWFjaGVkLiBUaGUgY2FsY3VsYXRlZCBgcmVjb21tZW5kZWRfbWluYCBpcyBsaWtlbHkgbXVjaCBsb3dlciAoNjZNQikuIFRoaXMgcGF0Y2ggaXMganVzdCBzZXR0aW5nIGFuIHVwcGVyIGJvdW5kLCBub3QgZnVuZGFtZW50YWxseSBjaGFuZ2luZyB0aGUgZXhlY3V0aW9uIGZsb3cgZm9yIHR5cGljYWwgc3lzdGVtcyBvciBpbiBmdXp6aW5nIHNjZW5hcmlvcy5cblxuSSdtIGxlYW5pbmcgdG93YXJkcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHByaW5jaXBsZSB0aGF0IGl0J3MgYSBwYXJhbWV0ZXIgY2xhbXAgYW5kIGRvZXNuJ3QgY2hhbmdlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4gVGhlIHBhdGNoJ3MgZWZmZWN0cyBhcmUgbGltaXRlZCB0byBzeXN0ZW1zIHdpdGggbWFzc2l2ZSBtZW1vcnkuXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIHRoaW5rIHRoaXMgaXMgYSBcIkNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvd1wiLlxuXG5TbywgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyB0aGF0IGl0J3MgYSBzaW1wbGUgdXBwZXItYm91bmQgY2xhbXAgb24gYSBzeXNjdGwgY2FsY3VsYXRpb24gKGZvciBgbWluX2ZyZWVfa2J5dGVzYCkgZm9yIFRIUCwgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGludGVyZmFjZXMsIHJlYWNoYWJsZSBzdGF0ZSBjaGFuZ2VzLCBvciBmdXp6ZXItcmVsZXZhbnQgbG9naWMuIEkgd2lsbCBhbHNvIG1ha2Ugc3VyZSB0byBzZXQgdGhlIGFwcHJvcHJpYXRlIHZhcmlhYmxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OCwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MTMuOTQ4OTM3OTgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgMSBHaUIgdXBwZXIgYm91bmQgY2xhbXAgKFRIUF9NSU5fRlJFRV9NQVhfUEFHRVMpIHRvIHRoZSBhdXRvbWF0aWMgbWluX2ZyZWVfa2J5dGVzIGNhbGN1bGF0aW9uIGZvciBUcmFuc3BhcmVudCBIdWdlcGFnZXMgaW4gc2V0X3JlY29tbWVuZGVkX21pbl9mcmVlX2tieXRlcygpIGFuZCB1cGRhdGVzIHRoZSBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWxpdHksIGludGVyZmFjZXMsIG9yIGNvbXBsZXggbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSAxIEdpQiB1cHBlciBib3VuZCBjbGFtcCAoVEhQX01JTl9GUkVFX01BWF9QQUdFUykgdG8gdGhlIGF1dG9tYXRpYyBtaW5fZnJlZV9rYnl0ZXMgY2FsY3VsYXRpb24gZm9yIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBpbiBzZXRfcmVjb21tZW5kZWRfbWluX2ZyZWVfa2J5dGVzKCkgYW5kIHVwZGF0ZXMgdGhlIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbGl0eSwgaW50ZXJmYWNlcywgb3IgY29tcGxleCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDg6Mjc6MTMuOTQ4OTYyMzcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2q6b5[1] Phase: Running StartedAt: 2026-08-31 08:27:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2q6b5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 08:27:24 +0000 UTC FinishedAt: 2026-08-31 08:27:28 +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,}