Name: series-workflowwzxbt Phase: Failed StartedAt: 2026-09-15 03:29:27 +0000 UTC FinishedAt: 2026-09-15 03:47:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwzxbt[0] Phase: Succeeded StartedAt: 2026-09-15 03:29:27 +0000 UTC FinishedAt: 2026-09-15 03:47:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwzxbt[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 03:29:27 +0000 UTC FinishedAt: 2026-09-15 03:47:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGMzNGY4ZDg2Y2M4YTUuLmFlMzczNTU4OTc1ZTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTIwLDYgJiM0MzsyMCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7cnZ1X25wYy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Y24yMGsvcmVnLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtsbWFjX2NvbW1vbi5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3J2dV90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtMjU5LDYgJiM0MzsyNjAsNyBAQCB2b2lkIG5wY19lbmFibGVfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdGludCBiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIGluZGV4KTtcbiBcdGludCBhY3RiYW5rID0gYmFuaztcbiBcbiYjNDM7XHR0cmFjZV9vdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeShpbmRleCwgKHU4KWVuYWJsZSk7XG4gXHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKSB7XG4gXHRcdGlmIChucGNfY24yMGtfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBibGthZGRyLCBpbmRleCwgZW5hYmxlKSlcbiBcdFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0Vycm9yIHRvICVzIG1jYW0gJXUgZW50cnlcXG5cJiMzNDssXG5AQCAtNTIxLDEwICYjNDM7NTIzLDEwIEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHRcdCAgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCBib29sIGVuYWJsZSlcbiB7XG4gXHRpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7XG4mIzQzO1x0dTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7XG4gXHRpbnQga3cgPSAwLCBhY3RiYW5rLCBhY3RpbmRleDtcbiBcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFx1MDAyNiAweDM7XG4gXHR1OCB0eF9pbnRmID0gaW50Zjtcbi1cdHU2NCBjYW0wLCBjYW0xO1xuIFxuIFx0YWN0YmFuayA9IGJhbms7IC8qIFNhdmUgYmFuayBpZCwgdG8gc2V0IGFjdGlvbiBsYXRlciBvbiAqL1xuIFx0YWN0aW5kZXggPSBpbmRleDtcbkBAIC01NjEsMTcgJiM0Mzs1NjMsMTggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgICB0eF9pbnRmX21hc2spO1xuIFxuIFx0XHQvKiBTZXQgdGhlIG1hdGNoIGtleSAqL1xuLVx0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcdTAwMjZjYW0wLCBcdTAwMjZjYW0xKTtcbiYjNDM7XHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3csIFx1MDAyNncwX2NhbTAsIFx1MDAyNncwX2NhbTEpO1xuIFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIGNhbTEpO1xuJiM0MztcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAxKSwgdzBfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4mIzQzO1x0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCB3MF9jYW0wKTtcbiBcbi1cdFx0bnBjX2dldF9rZXl3b3JkKGVudHJ5LCBrdyAmIzQzOyAxLCBcdTAwMjZjYW0wLCBcdTAwMjZjYW0xKTtcbiYjNDM7XHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgXHUwMDI2dzFfY2FtMCwgXHUwMDI2dzFfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgY2FtMSk7XG4mIzQzO1x0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCB3MV9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcbiYjNDM7XHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xuJiM0MztcdFx0dHJhY2Vfb3R4Ml9ucGNfY2FtKGluZGV4LCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcbiBcdH1cbiBcbiBcdC8qIFBGIGluc3RhbGxpbmcgVkYgcnVsZSAqL1xuQEAgLTU4Niw2ICYjNDM7NTg5LDggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOUENfQUZfTUNBTUVYX0JBTktYX1RBR19BQ1QoaW5kZXgsIGFjdGJhbmspLFxuIFx0XHQgICAgZW50cnktXHUwMDNldnRhZ19hY3Rpb24pO1xuIFxuJiM0MztcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcbiYjNDM7XHRcdFx0ICAgICAgZW50cnktXHUwMDNlYWN0aW9uLCBlbnRyeS1cdTAwM2V2dGFnX2FjdGlvbik7XG4gXHQvKiBFbmFibGUgdGhlIGVudHJ5ICovXG4gXHRpZiAoZW5hYmxlKVxuIFx0XHRucGNfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBtY2FtLCBibGthZGRyLCBhY3RpbmRleCwgdHJ1ZSk7XG5AQCAtNTk2LDI0ICYjNDM7NjAxLDI1IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCB1OCAqaW50ZiwgdTggKmVuYSlcbiB7XG4gXHRpbnQgc2JhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgc3JjKTtcbiYjNDM7XHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcbiBcdGludCBiYW5rLCBrdyA9IDA7XG4tXHR1NjQgY2FtMCwgY2FtMTtcbiBcbiBcdHNyYyBcdTAwMjY9IChtY2FtLVx1MDAzZWJhbmtzaXplIC0gMSk7XG4gXHRiYW5rID0gc2Jhbms7XG4gXG4gXHRmb3IgKDsgYmFuayBcdTAwM2MgKHNiYW5rICYjNDM7IG1jYW0tXHUwMDNlYmFua3NfcGVyX2VudHJ5KTsgYmFuayYjNDM7JiM0MzssIGt3ID0ga3cgJiM0MzsgMikge1xuLVx0XHRjYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDEpKTtcbi1cdFx0Y2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAwKSk7XG4tXHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIGNhbTAsIGNhbTEpO1xuJiM0MztcdFx0dzBfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuJiM0MztcdFx0dzBfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMCkpO1xuJiM0MztcdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgdzBfY2FtMCwgdzBfY2FtMSk7XG4gXG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyAmIzQzOyAxLCBjYW0wLCBjYW0xKTtcbiYjNDM7XHRcdHcxX2NhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiYjNDM7XHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcbiYjNDM7XHRcdHcxX2NhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiYjNDM7XHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbiYjNDM7XHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgdzFfY2FtMCwgdzFfY2FtMSk7XG4mIzQzO1x0XHR0cmFjZV9vdHgyX25wY19jYW0oc3JjLCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcbiBcdH1cbiBcbiBcdGVudHJ5LVx1MDAzZWFjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuQEAgLTYyNSw2ICYjNDM7NjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9JTlRGKHNyYywgc2JhbmssIDEpKSBcdTAwMjYgMztcbiBcdCplbmEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiBcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSBcdTAwMjYgMTtcbiYjNDM7XHR0cmFjZV9vdHgyX25wY19hY3Rpb24oc3JjLCBzYmFuaywgKmludGYsICplbmEsXG4mIzQzO1x0XHRcdCAgICAgIGVudHJ5LVx1MDAzZWFjdGlvbiwgZW50cnktXHUwMDNldnRhZ19hY3Rpb24pO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5wY19jb3B5X21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG5AQCAtMzE5Nyw2ICYjNDM7MzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuIFxuJiM0MztcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiBcbiBub3RfY24yMGs6XG5AQCAtMzM4Myw2ICYjNDM7MzM5Miw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSBtY2FtLVx1MDAzZWJtYXBfZmNudDtcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuJiM0MztcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuaW5kZXggMTllMGQxNmIxMmY2Zi4uMDkxOWM0Mzk4ZGM0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuQEAgLTEzLDMgJiM0MzsxMyw3IEBAIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19pbnRlcnJ1cHQpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19wcm9jZXNzKTtcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTtcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9wYXJzZV9kdW1wKTtcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19jYW0pO1xuJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfYWN0aW9uKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG5pbmRleCA0Y2QwZmM0YjBkMjAzLi43N2RjMWI0YTRjNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG5AQCAtMTU5LDYgJiM0MzsxNTksMTA1IEBAIFRSQUNFX0VWRU5UKG90eDJfcGFyc2VfZHVtcCxcbiBcdFx0ICAgICAgX19lbnRyeS1cdTAwM2V3MywgX19lbnRyeS1cdTAwM2V3NCwgX19lbnRyeS1cdTAwM2V3NSlcbiApO1xuIFxuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMsXG4mIzQzO1x0ICAgIFRQX1BST1RPKHUxNiBwY2lmdW5jLFxuJiM0MztcdFx0ICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksXG4mIzQzO1x0ICAgIFRQX0FSR1MocGNpZnVuYywgcmVxLCByc3ApLFxuJiM0MztcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBwY2lmdW5jKVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGNvbnRpZylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCByZWZfcHJpbylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcmVmX2VudHJ5KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCByZXFfY291bnQpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwga3dfdHlwZSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB2aXJ0KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCBzdGFydF9tY2FtX2lkeClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcnNwX2NvdW50KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCBmcmVlX2NvdW50KVxuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9mYXN0X2Fzc2lnbihfX2VudHJ5LVx1MDAzZWNvbnRpZyA9IHJlcS1cdTAwM2Vjb250aWc7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX3ByaW8gPSByZXEtXHUwMDNlcmVmX3ByaW87XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX2VudHJ5ID0gcmVxLVx1MDAzZXJlZl9lbnRyeTtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2VyZXFfY291bnQgPSByZXEtXHUwMDNlY291bnQ7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNla3dfdHlwZSA9IHJlcS1cdTAwM2Vrd190eXBlO1xuJiM0MztcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXZpcnQgPSByZXEtXHUwMDNldmlydDtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2VzdGFydF9tY2FtX2lkeCA9IHJzcC1cdTAwM2VlbnRyeTtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQgPSByc3AtXHUwMDNlY291bnQ7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZnJlZV9jb3VudCA9IHJzcC1cdTAwM2VmcmVlX2NvdW50O1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7cGNpZnVuYzolZCByZXFfY29udGlnOiVkIHJlcV9yZWZfcHJpbzolZCByZXEtXHUwMDNlcmVmX2VudHJ5OiVkIHJlcS1cdTAwM2VyZXFfY291bnQ6JWQgcmVxLVx1MDAzZWt3X3R5cGU6JWQgcmVxLVx1MDAzZXZpcnQ6JWQgcnNwX3N0YXJ0X21jYW1faWR4OiVkIHJzcF9jb3VudDolZCByc3BfZnJlZV9jb3VudDolZFxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlcGNpZnVuYywgX19lbnRyeS1cdTAwM2Vjb250aWcsIF9fZW50cnktXHUwMDNlcmVmX3ByaW8sXG4mIzQzO1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXJlZl9lbnRyeSwgX19lbnRyeS1cdTAwM2VyZXFfY291bnQsIF9fZW50cnktXHUwMDNla3dfdHlwZSxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNldmlydCwgX19lbnRyeS1cdTAwM2VzdGFydF9tY2FtX2lkeCwgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQsXG4mIzQzO1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZWZyZWVfY291bnQpXG4mIzQzOyk7XG4mIzQzO1xuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSxcbiYjNDM7XHQgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBlbmFibGUpLFxuJiM0MztcdCAgICBUUF9BUkdTKGluZGV4LCBlbmFibGUpLFxuJiM0MztcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYSlcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZW5hID0gZW5hYmxlO1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7bWNhbV9pbmRleDolZCBlbmFibGU6JWRcXG5cJiMzNDssIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2VlbmEpXG4mIzQzOyk7XG4mIzQzO1xuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19jYW0sXG4mIzQzO1x0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcbiYjNDM7XHRcdCAgICAgdTY0IHcwX2NhbTAsXG4mIzQzO1x0XHQgICAgIHU2NCB3MF9jYW0xLFxuJiM0MztcdFx0ICAgICB1NjQgdzFfY2FtMCxcbiYjNDM7XHRcdCAgICAgdTY0IHcxX2NhbTEpLFxuJiM0MztcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxuJiM0MztcdFx0ICAgIHcwX2NhbTAsIHcwX2NhbTEsXG4mIzQzO1x0XHQgICAgdzFfY2FtMCwgdzFfY2FtMSksXG4mIzQzO1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMSlcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlYmFuayA9IGJhbms7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMCA9IHcwX2NhbTA7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMSA9IHcwX2NhbTE7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzFfY2FtMCA9IHcxX2NhbTA7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzFfY2FtMSA9IHcxX2NhbTE7XG4mIzQzO1x0ICAgICksXG4mIzQzO1x0ICAgIFRQX3ByaW50ayhcJiMzNDttY2FtX2luZGV4OiVkIGJhbms6JWQgdzBfY2FtMDoweCVsbHggdzBfY2FtMToweCVsbHgsIHcxX2NhbTA6MHglbGx4LCB3MV9jYW0xOjB4JWxseFxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2ViYW5rLCBfX2VudHJ5LVx1MDAzZXcwX2NhbTAsIF9fZW50cnktXHUwMDNldzBfY2FtMSxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNldzFfY2FtMCwgX19lbnRyeS1cdTAwM2V3MV9jYW0xKVxuJiM0MzspO1xuJiM0MztcbiYjNDM7VFJBQ0VfRVZFTlQob3R4Ml9ucGNfYWN0aW9uLFxuJiM0MztcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXG4mIzQzO1x0XHQgICAgIHU4IHR4X2ludGYsIHU4IGVuYWJsZSxcbiYjNDM7XHRcdCAgICAgdTY0IGFjdCwgdTY0IHZ0YWdfYWN0KSxcbiYjNDM7XHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbiYjNDM7XHRcdCAgICB0eF9pbnRmLCBlbmFibGUsXG4mIzQzO1x0XHQgICAgYWN0LCB2dGFnX2FjdCksXG4mIzQzO1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB0eF9pbnRmKVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYWJsZSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgYWN0KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTY0LCB2dGFnX2FjdClcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlYmFuayA9IGJhbms7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZW5hYmxlID0gZW5hYmxlO1xuJiM0MztcdFx0XHQgICBfX2VudHJ5LVx1MDAzZWFjdCA9IGFjdDtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7bWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVx1MDAzZWJhbmssIF9fZW50cnktXHUwMDNldHhfaW50ZixcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlZW5hYmxlLCBfX2VudHJ5LVx1MDAzZWFjdCwgX19lbnRyeS1cdTAwM2V2dGFnX2FjdClcbiYjNDM7KTtcbiYjNDM7XG4gI2VuZGlmIC8qIF9fUlZVX1RSQUNFX0ggKi9cbiBcbiAjdW5kZWYgVFJBQ0VfSU5DTFVERV9QQVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwppbmRleCBjMzRmOGQ4NmNjOGE1Li5hZTM3MzU1ODk3NWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jCkBAIC0yMCw2ICYjNDM7MjAsNyBAQAogI2luY2x1ZGUgJiMzNDtydnVfbnBjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtjbjIway9yZWcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2xtYWNfY29tbW9uLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtydnVfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEYJMyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqLwogI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEYJMSAvKiBVY2FzdCBmb3IgTEZzICovCkBAIC0yNTksNiAmIzQzOzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCWludCBiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIGluZGV4KTsKIAlpbnQgYWN0YmFuayA9IGJhbms7CiAKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkoaW5kZXgsICh1OCllbmFibGUpOwogCWlmIChpc19jbjIwayhydnUtJmd0O3BkZXYpKSB7CiAJCWlmIChucGNfY24yMGtfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBibGthZGRyLCBpbmRleCwgZW5hYmxlKSkKIAkJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RXJyb3IgdG8gJXMgbWNhbSAldSBlbnRyeVxuJiMzNDssCkBAIC01MjEsMTAgJiM0Mzs1MjMsMTAgQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCQkJCSAgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCBib29sIGVuYWJsZSkKIHsKIAlpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7CiYjNDM7CXU2NCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xOwogCWludCBrdyA9IDAsIGFjdGJhbmssIGFjdGluZGV4OwogCXU4IHR4X2ludGZfbWFzayA9IH5pbnRmICZhbXA7IDB4MzsKIAl1OCB0eF9pbnRmID0gaW50ZjsKLQl1NjQgY2FtMCwgY2FtMTsKIAogCWFjdGJhbmsgPSBiYW5rOyAvKiBTYXZlIGJhbmsgaWQsIHRvIHNldCBhY3Rpb24gbGF0ZXIgb24gKi8KIAlhY3RpbmRleCA9IGluZGV4OwpAQCAtNTYxLDE3ICYjNDM7NTYzLDE4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwKIAkJCSAgICB0eF9pbnRmX21hc2spOwogCiAJCS8qIFNldCB0aGUgbWF0Y2gga2V5ICovCi0JCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3csICZhbXA7Y2FtMCwgJmFtcDtjYW0xKTsKJiM0MzsJCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3csICZhbXA7dzBfY2FtMCwgJmFtcDt3MF9jYW0xKTsKIAkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLAotCQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIGNhbTEpOwomIzQzOwkJCSAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCB3MF9jYW0xKTsKIAkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLAotCQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIGNhbTApOwomIzQzOwkJCSAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCB3MF9jYW0wKTsKIAotCQlucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3ICYjNDM7IDEsICZhbXA7Y2FtMCwgJmFtcDtjYW0xKTsKJiM0MzsJCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgJmFtcDt3MV9jYW0wLCAmYW1wO3cxX2NhbTEpOwogCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsCi0JCQkgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgY2FtMSk7CiYjNDM7CQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMSksIHcxX2NhbTEpOwogCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsCi0JCQkgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7CiYjNDM7CQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApOwomIzQzOwkJdHJhY2Vfb3R4Ml9ucGNfY2FtKGluZGV4LCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTsKIAl9CiAKIAkvKiBQRiBpbnN0YWxsaW5nIFZGIHJ1bGUgKi8KQEAgLTU4Niw2ICYjNDM7NTg5LDggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTlBDX0FGX01DQU1FWF9CQU5LWF9UQUdfQUNUKGluZGV4LCBhY3RiYW5rKSwKIAkJICAgIGVudHJ5LSZndDt2dGFnX2FjdGlvbik7CiAKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfYWN0aW9uKGluZGV4LCBhY3RiYW5rLCB0eF9pbnRmLCAodTgpZW5hYmxlLAomIzQzOwkJCSAgICAgIGVudHJ5LSZndDthY3Rpb24sIGVudHJ5LSZndDt2dGFnX2FjdGlvbik7CiAJLyogRW5hYmxlIHRoZSBlbnRyeSAqLwogCWlmIChlbmFibGUpCiAJCW5wY19lbmFibGVfbWNhbV9lbnRyeShydnUsIG1jYW0sIGJsa2FkZHIsIGFjdGluZGV4LCB0cnVlKTsKQEAgLTU5NiwyNCAmIzQzOzYwMSwyNSBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCB1OCAqaW50ZiwgdTggKmVuYSkKIHsKIAlpbnQgc2JhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgc3JjKTsKJiM0MzsJdTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7CiAJaW50IGJhbmssIGt3ID0gMDsKLQl1NjQgY2FtMCwgY2FtMTsKIAogCXNyYyAmYW1wOz0gKG1jYW0tJmd0O2JhbmtzaXplIC0gMSk7CiAJYmFuayA9IHNiYW5rOwogCiAJZm9yICg7IGJhbmsgJmx0OyAoc2JhbmsgJiM0MzsgbWNhbS0mZ3Q7YmFua3NfcGVyX2VudHJ5KTsgYmFuayYjNDM7JiM0MzssIGt3ID0ga3cgJiM0MzsgMikgewotCQljYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCi0JCQkJICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAxKSk7Ci0JCWNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKLQkJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTsKLQkJbnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgY2FtMCwgY2FtMSk7CiYjNDM7CQl3MF9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCiYjNDM7CQkJCSAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpOwomIzQzOwkJdzBfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAomIzQzOwkJCQkgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTsKJiM0MzsJCW5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIHcwX2NhbTAsIHcwX2NhbTEpOwogCi0JCWNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKLQkJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTsKLQkJY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAotCQkJCSAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMCkpOwotCQlucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3ICYjNDM7IDEsIGNhbTAsIGNhbTEpOwomIzQzOwkJdzFfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAomIzQzOwkJCQkgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTsKJiM0MzsJCXcxX2NhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKJiM0MzsJCQkJICAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7CiYjNDM7CQlucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3ICYjNDM7IDEsIHcxX2NhbTAsIHcxX2NhbTEpOwomIzQzOwkJdHJhY2Vfb3R4Ml9ucGNfY2FtKHNyYywgYmFuaywgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMSk7CiAJfQogCiAJZW50cnktJmd0O2FjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLApAQCAtNjI1LDYgJiM0Mzs2MzEsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfSU5URihzcmMsIHNiYW5rLCAxKSkgJmFtcDsgMzsKIAkqZW5hID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCiAJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSAmYW1wOyAxOwomIzQzOwl0cmFjZV9vdHgyX25wY19hY3Rpb24oc3JjLCBzYmFuaywgKmludGYsICplbmEsCiYjNDM7CQkJICAgICAgZW50cnktJmd0O2FjdGlvbiwgZW50cnktJmd0O3Z0YWdfYWN0aW9uKTsKIH0KIAogc3RhdGljIGludCBucGNfY29weV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLApAQCAtMzE5Nyw2ICYjNDM7MzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLAogCXJzcC0mZ3Q7ZnJlZV9jb3VudCA9IC0xOwogCW11dGV4X3VubG9jaygmYW1wO21jYW0tJmd0O2xvY2spOwogCiYjNDM7CXRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7CiAJcmV0dXJuIDA7CiAKIG5vdF9jbjIwazoKQEAgLTMzODMsNiAmIzQzOzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYywKIAlyc3AtJmd0O2ZyZWVfY291bnQgPSBtY2FtLSZndDtibWFwX2ZjbnQ7CiAKIAltdXRleF91bmxvY2soJmFtcDttY2FtLSZndDtsb2NrKTsKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwppbmRleCAxOWUwZDE2YjEyZjZmLi4wOTE5YzQzOThkYzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwpAQCAtMTMsMyAmIzQzOzEzLDcgQEAgRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX2ludGVycnVwdCk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfcHJvY2Vzcyk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTsKIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX3BhcnNlX2R1bXApOwomIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpOwomIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2NhbSk7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCmluZGV4IDRjZDBmYzRiMGQyMDMuLjc3ZGMxYjRhNGM2NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCkBAIC0xNTksNiAmIzQzOzE1OSwxMDUgQEAgVFJBQ0VfRVZFTlQob3R4Ml9wYXJzZV9kdW1wLAogCQkgICAgICBfX2VudHJ5LSZndDt3MywgX19lbnRyeS0mZ3Q7dzQsIF9fZW50cnktJmd0O3c1KQogKTsKIAomIzQzO1RSQUNFX0VWRU5UKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcywKJiM0MzsJICAgIFRQX1BST1RPKHUxNiBwY2lmdW5jLAomIzQzOwkJICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsCiYjNDM7CQkgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksCiYjNDM7CSAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIHBjaWZ1bmMpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBjb250aWcpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCByZWZfcHJpbykKJiM0MzsJCQkgICAgIF9fZmllbGQodTE2LCByZWZfZW50cnkpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgcmVxX2NvdW50KQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwga3dfdHlwZSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTgsIHZpcnQpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgc3RhcnRfbWNhbV9pZHgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgcnNwX2NvdW50KQomIzQzOwkJCSAgICAgX19maWVsZCh1MTYsIGZyZWVfY291bnQpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7Y29udGlnID0gcmVxLSZndDtjb250aWc7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7cmVmX3ByaW8gPSByZXEtJmd0O3JlZl9wcmlvOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3JlZl9lbnRyeSA9IHJlcS0mZ3Q7cmVmX2VudHJ5OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3JlcV9jb3VudCA9IHJlcS0mZ3Q7Y291bnQ7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7a3dfdHlwZSA9IHJlcS0mZ3Q7a3dfdHlwZTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDt2aXJ0ID0gcmVxLSZndDt2aXJ0OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3N0YXJ0X21jYW1faWR4ID0gcnNwLSZndDtlbnRyeTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDtyc3BfY291bnQgPSByc3AtJmd0O2NvdW50OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2ZyZWVfY291bnQgPSByc3AtJmd0O2ZyZWVfY291bnQ7CiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfcHJpbnRrKCYjMzQ7cGNpZnVuYzolZCByZXFfY29udGlnOiVkIHJlcV9yZWZfcHJpbzolZCByZXEtJmd0O3JlZl9lbnRyeTolZCByZXEtJmd0O3JlcV9jb3VudDolZCByZXEtJmd0O2t3X3R5cGU6JWQgcmVxLSZndDt2aXJ0OiVkIHJzcF9zdGFydF9tY2FtX2lkeDolZCByc3BfY291bnQ6JWQgcnNwX2ZyZWVfY291bnQ6JWRcbiYjMzQ7LAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7cGNpZnVuYywgX19lbnRyeS0mZ3Q7Y29udGlnLCBfX2VudHJ5LSZndDtyZWZfcHJpbywKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O3JlZl9lbnRyeSwgX19lbnRyeS0mZ3Q7cmVxX2NvdW50LCBfX2VudHJ5LSZndDtrd190eXBlLAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7dmlydCwgX19lbnRyeS0mZ3Q7c3RhcnRfbWNhbV9pZHgsIF9fZW50cnktJmd0O3JzcF9jb3VudCwKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O2ZyZWVfY291bnQpCiYjNDM7KTsKJiM0MzsKJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSwKJiM0MzsJICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggZW5hYmxlKSwKJiM0MzsJICAgIFRQX0FSR1MoaW5kZXgsIGVuYWJsZSksCiYjNDM7CSAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwgZW5hKQomIzQzOwkgICAgKSwKJiM0MzsJICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktJmd0O21jYW1faW5kZXggPSBpbmRleDsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDtlbmEgPSBlbmFibGU7CiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfcHJpbnRrKCYjMzQ7bWNhbV9pbmRleDolZCBlbmFibGU6JWRcbiYjMzQ7LCBfX2VudHJ5LSZndDttY2FtX2luZGV4LCBfX2VudHJ5LSZndDtlbmEpCiYjNDM7KTsKJiM0MzsKJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19jYW0sCiYjNDM7CSAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssCiYjNDM7CQkgICAgIHU2NCB3MF9jYW0wLAomIzQzOwkJICAgICB1NjQgdzBfY2FtMSwKJiM0MzsJCSAgICAgdTY0IHcxX2NhbTAsCiYjNDM7CQkgICAgIHU2NCB3MV9jYW0xKSwKJiM0MzsJICAgIFRQX0FSR1MoaW5kZXgsIGJhbmssCiYjNDM7CQkgICAgdzBfY2FtMCwgdzBfY2FtMSwKJiM0MzsJCSAgICB3MV9jYW0wLCB3MV9jYW0xKSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBiYW5rKQomIzQzOwkJCSAgICAgX19maWVsZCh1NjQsIHcwX2NhbTApCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTY0LCB3MV9jYW0wKQomIzQzOwkJCSAgICAgX19maWVsZCh1NjQsIHcxX2NhbTEpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCA9IGluZGV4OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2JhbmsgPSBiYW5rOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cwX2NhbTAgPSB3MF9jYW0wOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cwX2NhbTEgPSB3MF9jYW0xOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cxX2NhbTAgPSB3MV9jYW0wOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cxX2NhbTEgPSB3MV9jYW0xOwomIzQzOwkgICAgKSwKJiM0MzsJICAgIFRQX3ByaW50aygmIzM0O21jYW1faW5kZXg6JWQgYmFuazolZCB3MF9jYW0wOjB4JWxseCB3MF9jYW0xOjB4JWxseCwgdzFfY2FtMDoweCVsbHgsIHcxX2NhbTE6MHglbGx4XG4mIzM0OywKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O21jYW1faW5kZXgsIF9fZW50cnktJmd0O2JhbmssIF9fZW50cnktJmd0O3cwX2NhbTAsIF9fZW50cnktJmd0O3cwX2NhbTEsCiYjNDM7CQkgICAgICBfX2VudHJ5LSZndDt3MV9jYW0wLCBfX2VudHJ5LSZndDt3MV9jYW0xKQomIzQzOyk7CiYjNDM7CiYjNDM7VFJBQ0VfRVZFTlQob3R4Ml9ucGNfYWN0aW9uLAomIzQzOwkgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBiYW5rLAomIzQzOwkJICAgICB1OCB0eF9pbnRmLCB1OCBlbmFibGUsCiYjNDM7CQkgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksCiYjNDM7CSAgICBUUF9BUkdTKGluZGV4LCBiYW5rLAomIzQzOwkJICAgIHR4X2ludGYsIGVuYWJsZSwKJiM0MzsJCSAgICBhY3QsIHZ0YWdfYWN0KSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBiYW5rKQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwgdHhfaW50ZikKJiM0MzsJCQkgICAgIF9fZmllbGQodTgsIGVuYWJsZSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTY0LCBhY3QpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCA9IGluZGV4OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2JhbmsgPSBiYW5rOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3R4X2ludGYgPSB0eF9pbnRmOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2VuYWJsZSA9IGVuYWJsZTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDthY3QgPSBhY3Q7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7dnRhZ19hY3QgPSB2dGFnX2FjdDsKJiM0MzsJICAgICksCiYjNDM7CSAgICBUUF9wcmludGsoJiMzNDttY2FtX2luZGV4OiVkIGJhbms6JWQgdHhfaW50ZjolZCBlbmFibGU6JWQgYWN0aW9uOjB4JWxseCB2dGFnX2FjdGlvbjoweCVsbHhcbiYjMzQ7LAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCwgX19lbnRyeS0mZ3Q7YmFuaywgX19lbnRyeS0mZ3Q7dHhfaW50ZiwKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O2VuYWJsZSwgX19lbnRyeS0mZ3Q7YWN0LCBfX2VudHJ5LSZndDt2dGFnX2FjdCkKJiM0MzspOwomIzQzOwogI2VuZGlmIC8qIF9fUlZVX1RSQUNFX0ggKi8KIAogI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzEzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBydnVfbnBjLmNgLCBgcnZ1X3RyYWNlLmNgLCBhbmQgYHJ2dV90cmFjZS5oYCB3aXRoaW4gdGhlIE9jdGVvblRYMiBNYXJ2ZWxsIEFGIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgbmV3IHRyYWNlcG9pbnRzOiBgdHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzYCwgYHRyYWNlX290eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5YCwgYHRyYWNlX290eDJfbnBjX2NhbWAsIGFuZCBgdHJhY2Vfb3R4Ml9ucGNfYWN0aW9uYCBkZWZpbmVkIGluIHRoZSBoZWFkZXIgYW5kIHRoZW4gZXhwb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBOUEMgY29kZS4gVGhlcmUgYXJlIGFsc28gc29tZSB2YXJpYWJsZSByZW5hbWVzLCB3aGljaCBhcmUgbGlrZWx5IGluc2lnbmlmaWNhbnQuCgpCdXQgaG9sZCBvbiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGZ1enppbmcgaW1wbGljYXRpb25zLiBTZWN0aW9uIDIgaXMgcHJldHR5IGNsZWFyIG9uIHdoZW4gd2UgY2FuIHNhZmVseSBza2lwIGZ1enppbmcuIEl0IGxpc3RzICYjMzQ7UHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZ+KApiBvciB0cmFjZXBvaW50cyB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzJiMzNDsgYXMgYSAqbm8tZnV6eiogY29uZGl0aW9uLiBUaGVzZSB0cmFjZXBvaW50cyAqYXBwZWFyKiB0byBiZSBqdXN0IHRoYXQg4oCTIHB1cmVseSBmb3Igb2JzZXJ2YWJpbGl0eS4gVGhleSBkb24mIzM5O3Qgc2VlbSB0byBiZSBjaGFuZ2luZyBhbnkgY3JpdGljYWwgZGF0YSBwYXRocyBvciBjb250cm9sIGZsb3cuCgpBbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBkcml2ZXI/IFRoYXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGhhcmR3YXJlLiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGlzIGFub3RoZXIgKm5vLWZ1enoqIHNjZW5hcmlvISBJdCBleHBsaWNpdGx5IHNheXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgKmFyZW4mIzM5O3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgYXJlIGV4Y2x1ZGVkLiBUaGlzIGRyaXZlciAqZGVmaW5pdGVseSogZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBTbywgYmFzZWQgb24gYm90aCB0aGUgbmF0dXJlIG9mIHRoZSB0cmFjZXBvaW50cyBhbmQgdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LCBJJiMzOTttIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIGZsYWdnaW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpJIG5lZWQgdG8gY29uZmlybSBieSBpbnNwZWN0aW5nIHRoZSBjb2RlLCBidXQgSSBkb24mIzM5O3Qgc2VlIGFueSByZWFzb24gdG8gYmVsaWV2ZSBmdXp6aW5nIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBzY2FuIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnkgZm9yIGFueSBnb3RjaGFzLCBqdXN0IHRvIGJlIHN1cmUuIEJ1dCBmcm9tIG15IHF1aWNrIGFuYWx5c2lzLCBpdCBsb29rcyBzYWZlIHRvIHNraXAgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT0NURU9OVFgyX0FGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgT2N0ZW9uIFRYMiBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGFib3V0IHRvIGRpc3NlY3QgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uIFRYMiBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiBiZSB0YWlsb3JlZCBmb3IgZGlmZmVyZW50IHN5c3RlbXMgYW5kIHVzZSBjYXNlcy4gSSBleHBlY3QgdG8gZmluZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MsIGFuZCB0aGUgdXN1YWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgLSB0aGUgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgY2hvaWNlcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBvciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB2YXJpb3VzIE9jdGVvbiBUWDIgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgYm9hcmQgY29uZmlndXJhdGlvbnMgb3IgUEhZIG9wdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJJiMzOTtsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgdW51c3VhbCBvciB2ZW5kb3Itc3BlY2lmaWMgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIHVuaXF1ZSBNYXJ2ZWxsIG9wdGltaXphdGlvbnMgb3IgaGFyZHdhcmUgZmVhdHVyZXMuIE15IGdvYWwgaXMgdG8gZ3Jhc3AgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiB0aGlzIGRyaXZlciBhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBrZXkgY29uZmlndXJhYmxlIGVsZW1lbnRzIGFyZSBhbmQgdGhlaXIgcG90ZW50aWFsIGltcGFjdHMgb24gcGVyZm9ybWFuY2UsIHBvd2VyIGNvbnN1bXB0aW9uLCBhbmQgc3VwcG9ydGVkIGhhcmR3YXJlLiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMgb3IgY29tbW9uIGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlIGR1cmluZyBkZXBsb3ltZW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFxuICAgOTpcdGNvbmZpZyBPQ1RFT05UWDJfQUZcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAxMjpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEzOlx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAxNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgUmVzb3VyY2UgVmlydHVhbGl6YXRpb25cbiAgMTg6XHRcdCAgVW5pdCYjMzk7cyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcbiAgMTk6XHRcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxuICAyMDpcdFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cbiAgMjE6XHRcbiAgMjI6XHRjb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbiAgMjM6XHRcdGJvb2wgXCYjMzQ7RGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcJiMzNDtcbiAgMjQ6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG4gIDI1Olx0XHRkZWZhdWx0IG5cbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcbiAgMjg6XHRcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXG4gIDI5Olx0XHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE9DVEVPTlRYMl9QRlxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG4gIDM0Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMzU6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzY6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcbiAgMzc6XHRcdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4gIDM4Olx0XHRzZWxlY3QgRElNTElCXG4gIDM5Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjMKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiA3NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBhIGRlcGVuZGVuY3kgYmFzZWQgb24gYDY0QklUICZhbXA7JmFtcDsgQ09NUElMRV9URVNUYCBvciBgQVJNNjRgLCB3aGljaCBvbiB0aGUgQU1ENjQgdGFyZ2V0IEkmIzM5O20gbG9va2luZyBhdCwgaXMgY29udGluZ2VudCBvbiBgQ09NUElMRV9URVNUYC4gVGhpcyBhbHJlYWR5IGZlZWxzIHNwZWNpZmljLCBidXQgbGV0JiMzOTtzIGRpdmUgZGVlcGVyLiBUaGlzIGBPY3Rlb25UWDJgIHN0dWZmIGlzIHBoeXNpY2FsIGhhcmR3YXJlOiBhIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIGEgU21hcnROSUMvU29DLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIHJlZCBmbGFnLgoKVGhlIGtleSBwb2ludHMgYXJlIHRoYXQgaXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyDigJMgc3R1ZmYgeW91JiMzOTtyZSAqbm90KiBnb2luZyB0byBmaW5kIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgYW5kIGl0IGlzIGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGluIGNvbW1vbiBlbnZpcm9ubWVudHMuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBhY3R1YWwgcGF0Y2guIEl0IGVzc2VudGlhbGx5IGFkZHMgdHJhY2Vwb2ludHMgYW5kIHJlbmFtZXMgc29tZSBsb2NhbCB2YXJpYWJsZXMgdG8gcGFzcyB0aG9zZSB2YXJpYWJsZXMgKnRvKiB0aGUgdHJhY2Vwb2ludHMuIFRoZXJlIGlzIG5vIGNoYW5nZSB0byBjb250cm9sIGZsb3cgb3IgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBkZWNvcmF0aXZlIGxvZ2dpbmcuCgpTbywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRpZmY6IHRoZXkgYWRkZWQgdHJhY2Vwb2ludHMgYW5kIGV4cG9ydGVkIHRoZSBzeW1ib2xzLiBUaGV5IHRoZW4gYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbHMgaW4gYSBjb3VwbGUgb2YgZnVuY3Rpb25zIGluIGBydnVfbnBjLmNgIGFmdGVyIHJlbmFtaW5nIHNvbWUgdmFyaWFibGVzIHRvIHJlYWQgaW50byB0aGUgdHJhY2Vwb2ludCBjYWxscy4KClRoZXJlIGlzIHplcm8gbW9kaWZpY2F0aW9uIHRvIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuIEV2ZXJ5dGhpbmcgcG9pbnRzIHRvIHRoaXMgYmVpbmcgcHVyZWx5IHRyYWNlcG9pbnRzIGFuZCBpbmFjY2Vzc2libGUgaGFyZHdhcmUuCgpUaGlzIGNoZWNrcyB0d28gYm94ZXMgZnJvbSBTZWN0aW9uIDIgb2YgbXkgbWV0aG9kb2xvZ3k6IHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4KClRoZXJlZm9yZSwgdGhlIHZlcmRpY3QgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGluc3RydW1lbnRhdGlvbiBhbmQgbG9nZ2luZy4KCk5vdyB0byBwYWNrYWdlIGl0IHVwIGZvciBgc2V0LXJlc3VsdHNgOgoqICAgYFdvcnRoRnV6emluZzogZmFsc2VgCiogICBgRm9jdXNTeW1ib2xzOiBbXWAKKiAgIGBFbmFibGVDb25maWdzOiBbXWAKKiAgIGBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gb2YgdGhlIGZ1enppbmcgdmVyZGljdC5gCgpSZWFkeSB0byBleGVjdXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6NDc6MTcuNDY1Nzc2MTc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NDA2NjgzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdHJhY2Vwb2ludHMgKGFuZCBsb2NhbCB2YXJpYWJsZSByZW5hbWVzIHRvIGZlZWQgdGhvc2UgdHJhY2Vwb2ludHMpIHdpdGhvdXQgYWx0ZXJpbmcgY29udHJvbCBmbG93IG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIHRhcmdldHMgc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoxNy40NjU3ODEzNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTkzOTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6NDc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuaW5kZXggYzM0ZjhkODZjYzhhNS4uYWUzNzM1NTg5NzVlNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG5AQCAtMjAsNiArMjAsNyBAQFxcbiAjaW5jbHVkZSBcXFwicnZ1X25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY24yMGsvcmVnLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJsbWFjX2NvbW1vbi5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjcnZ1X3RyYWNlLmhcXHUwMDNlXFxuIFxcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlxcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEZcXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cXG5AQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7XFxuIFxcdGludCBhY3RiYW5rID0gYmFuaztcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5KGluZGV4LCAodTgpZW5hYmxlKTtcXG4gXFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpIHtcXG4gXFx0XFx0aWYgKG5wY19jbjIwa19lbmFibGVfbWNhbV9lbnRyeShydnUsIGJsa2FkZHIsIGluZGV4LCBlbmFibGUpKVxcbiBcXHRcXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwiRXJyb3IgdG8gJXMgbWNhbSAldSBlbnRyeVxcXFxuXFxcIixcXG5AQCAtNTIxLDEwICs1MjMsMTAgQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgYm9vbCBlbmFibGUpXFxuIHtcXG4gXFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xcbitcXHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcXG4gXFx0aW50IGt3ID0gMCwgYWN0YmFuaywgYWN0aW5kZXg7XFxuIFxcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFxcdTAwMjYgMHgzO1xcbiBcXHR1OCB0eF9pbnRmID0gaW50ZjtcXG4tXFx0dTY0IGNhbTAsIGNhbTE7XFxuIFxcbiBcXHRhY3RiYW5rID0gYmFuazsgLyogU2F2ZSBiYW5rIGlkLCB0byBzZXQgYWN0aW9uIGxhdGVyIG9uICovXFxuIFxcdGFjdGluZGV4ID0gaW5kZXg7XFxuQEAgLTU2MSwxNyArNTYzLDE4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0XFx0XFx0ICAgIHR4X2ludGZfbWFzayk7XFxuIFxcbiBcXHRcXHQvKiBTZXQgdGhlIG1hdGNoIGtleSAqL1xcbi1cXHRcXHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcXHUwMDI2Y2FtMCwgXFx1MDAyNmNhbTEpO1xcbitcXHRcXHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcXHUwMDI2dzBfY2FtMCwgXFx1MDAyNncwX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIHcwX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIHcwX2NhbTApO1xcbiBcXG4tXFx0XFx0bnBjX2dldF9rZXl3b3JkKGVudHJ5LCBrdyArIDEsIFxcdTAwMjZjYW0wLCBcXHUwMDI2Y2FtMSk7XFxuK1xcdFxcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgKyAxLCBcXHUwMDI2dzFfY2FtMCwgXFx1MDAyNncxX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMSksIHcxX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xcbitcXHRcXHR0cmFjZV9vdHgyX25wY19jYW0oaW5kZXgsIGJhbmssIHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTEpO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBQRiBpbnN0YWxsaW5nIFZGIHJ1bGUgKi9cXG5AQCAtNTg2LDYgKzU4OSw4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOUENfQUZfTUNBTUVYX0JBTktYX1RBR19BQ1QoaW5kZXgsIGFjdGJhbmspLFxcbiBcXHRcXHQgICAgZW50cnktXFx1MDAzZXZ0YWdfYWN0aW9uKTtcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcXG4rXFx0XFx0XFx0ICAgICAgZW50cnktXFx1MDAzZWFjdGlvbiwgZW50cnktXFx1MDAzZXZ0YWdfYWN0aW9uKTtcXG4gXFx0LyogRW5hYmxlIHRoZSBlbnRyeSAqL1xcbiBcXHRpZiAoZW5hYmxlKVxcbiBcXHRcXHRucGNfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBtY2FtLCBibGthZGRyLCBhY3RpbmRleCwgdHJ1ZSk7XFxuQEAgLTU5NiwyNCArNjAxLDI1IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0XFx0XFx0IHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgdTggKmludGYsIHU4ICplbmEpXFxuIHtcXG4gXFx0aW50IHNiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIHNyYyk7XFxuK1xcdHU2NCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xO1xcbiBcXHRpbnQgYmFuaywga3cgPSAwO1xcbi1cXHR1NjQgY2FtMCwgY2FtMTtcXG4gXFxuIFxcdHNyYyBcXHUwMDI2PSAobWNhbS1cXHUwMDNlYmFua3NpemUgLSAxKTtcXG4gXFx0YmFuayA9IHNiYW5rO1xcbiBcXG4gXFx0Zm9yICg7IGJhbmsgXFx1MDAzYyAoc2JhbmsgKyBtY2FtLVxcdTAwM2ViYW5rc19wZXJfZW50cnkpOyBiYW5rKyssIGt3ID0ga3cgKyAyKSB7XFxuLVxcdFxcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAxKSk7XFxuLVxcdFxcdGNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAwKSk7XFxuLVxcdFxcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIGNhbTAsIGNhbTEpO1xcbitcXHRcXHR3MF9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xcbitcXHRcXHR3MF9jYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMCkpO1xcbitcXHRcXHRucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3LCB3MF9jYW0wLCB3MF9jYW0xKTtcXG4gXFxuLVxcdFxcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAxKSk7XFxuLVxcdFxcdGNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7XFxuLVxcdFxcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgKyAxLCBjYW0wLCBjYW0xKTtcXG4rXFx0XFx0dzFfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcXG4rXFx0XFx0dzFfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcXG4rXFx0XFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyArIDEsIHcxX2NhbTAsIHcxX2NhbTEpO1xcbitcXHRcXHR0cmFjZV9vdHgyX25wY19jYW0oc3JjLCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZW50cnktXFx1MDAzZWFjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbkBAIC02MjUsNiArNjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfSU5URihzcmMsIHNiYW5rLCAxKSkgXFx1MDAyNiAzO1xcbiBcXHQqZW5hID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuIFxcdFxcdFxcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DRkcoc3JjLCBzYmFuaykpIFxcdTAwMjYgMTtcXG4rXFx0dHJhY2Vfb3R4Ml9ucGNfYWN0aW9uKHNyYywgc2JhbmssICppbnRmLCAqZW5hLFxcbitcXHRcXHRcXHQgICAgICBlbnRyeS1cXHUwMDNlYWN0aW9uLCBlbnRyeS1cXHUwMDNldnRhZ19hY3Rpb24pO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG5wY19jb3B5X21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuQEAgLTMxOTcsNiArMzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxcbiBcXHRyc3AtXFx1MDAzZWZyZWVfY291bnQgPSAtMTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtY2FtLVxcdTAwM2Vsb2NrKTtcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG4gbm90X2NuMjBrOlxcbkBAIC0zMzgzLDYgKzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYyxcXG4gXFx0cnNwLVxcdTAwM2VmcmVlX2NvdW50ID0gbWNhbS1cXHUwMDNlYm1hcF9mY250O1xcbiBcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtY2FtLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmNcXG5pbmRleCAxOWUwZDE2YjEyZjZmLi4wOTE5YzQzOThkYzRjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmNcXG5AQCAtMTMsMyArMTMsNyBAQCBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfaW50ZXJydXB0KTtcXG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX3Byb2Nlc3MpO1xcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTtcXG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfcGFyc2VfZHVtcCk7XFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfY2FtKTtcXG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcXG5pbmRleCA0Y2QwZmM0YjBkMjAzLi43N2RjMWI0YTRjNjRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcXG5AQCAtMTU5LDYgKzE1OSwxMDUgQEAgVFJBQ0VfRVZFTlQob3R4Ml9wYXJzZV9kdW1wLFxcbiBcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2V3MywgX19lbnRyeS1cXHUwMDNldzQsIF9fZW50cnktXFx1MDAzZXc1KVxcbiApO1xcbiBcXG4rVFJBQ0VfRVZFTlQob3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzLFxcbitcXHQgICAgVFBfUFJPVE8odTE2IHBjaWZ1bmMsXFxuK1xcdFxcdCAgICAgc3RydWN0IG5wY19tY2FtX2FsbG9jX2VudHJ5X3JlcSAqcmVxLFxcbitcXHRcXHQgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksXFxuK1xcdCAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSxcXG4rXFx0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIHBjaWZ1bmMpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgY29udGlnKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIHJlZl9wcmlvKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTE2LCByZWZfZW50cnkpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIHJlcV9jb3VudClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBrd190eXBlKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIHZpcnQpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIHN0YXJ0X21jYW1faWR4KVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTE2LCByc3BfY291bnQpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIGZyZWVfY291bnQpXFxuK1xcdCAgICApLFxcbitcXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cXHUwMDNlY29udGlnID0gcmVxLVxcdTAwM2Vjb250aWc7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXJlZl9wcmlvID0gcmVxLVxcdTAwM2VyZWZfcHJpbztcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlcmVmX2VudHJ5ID0gcmVxLVxcdTAwM2VyZWZfZW50cnk7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXJlcV9jb3VudCA9IHJlcS1cXHUwMDNlY291bnQ7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZWt3X3R5cGUgPSByZXEtXFx1MDAzZWt3X3R5cGU7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXZpcnQgPSByZXEtXFx1MDAzZXZpcnQ7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXN0YXJ0X21jYW1faWR4ID0gcnNwLVxcdTAwM2VlbnRyeTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlcnNwX2NvdW50ID0gcnNwLVxcdTAwM2Vjb3VudDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlZnJlZV9jb3VudCA9IHJzcC1cXHUwMDNlZnJlZV9jb3VudDtcXG4rXFx0ICAgICksXFxuK1xcdCAgICBUUF9wcmludGsoXFxcInBjaWZ1bmM6JWQgcmVxX2NvbnRpZzolZCByZXFfcmVmX3ByaW86JWQgcmVxLVxcdTAwM2VyZWZfZW50cnk6JWQgcmVxLVxcdTAwM2VyZXFfY291bnQ6JWQgcmVxLVxcdTAwM2Vrd190eXBlOiVkIHJlcS1cXHUwMDNldmlydDolZCByc3Bfc3RhcnRfbWNhbV9pZHg6JWQgcnNwX2NvdW50OiVkIHJzcF9mcmVlX2NvdW50OiVkXFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VwY2lmdW5jLCBfX2VudHJ5LVxcdTAwM2Vjb250aWcsIF9fZW50cnktXFx1MDAzZXJlZl9wcmlvLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VyZWZfZW50cnksIF9fZW50cnktXFx1MDAzZXJlcV9jb3VudCwgX19lbnRyeS1cXHUwMDNla3dfdHlwZSxcXG4rXFx0XFx0ICAgICAgX19lbnRyeS1cXHUwMDNldmlydCwgX19lbnRyeS1cXHUwMDNlc3RhcnRfbWNhbV9pZHgsIF9fZW50cnktXFx1MDAzZXJzcF9jb3VudCxcXG4rXFx0XFx0ICAgICAgX19lbnRyeS1cXHUwMDNlZnJlZV9jb3VudClcXG4rKTtcXG4rXFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5LFxcbitcXHQgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBlbmFibGUpLFxcbitcXHQgICAgVFBfQVJHUyhpbmRleCwgZW5hYmxlKSxcXG4rXFx0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgZW5hKVxcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlZW5hID0gZW5hYmxlO1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBlbmFibGU6JWRcXFxcblxcXCIsIF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXFx1MDAzZWVuYSlcXG4rKTtcXG4rXFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2NhbSxcXG4rXFx0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcXG4rXFx0XFx0ICAgICB1NjQgdzBfY2FtMCxcXG4rXFx0XFx0ICAgICB1NjQgdzBfY2FtMSxcXG4rXFx0XFx0ICAgICB1NjQgdzFfY2FtMCxcXG4rXFx0XFx0ICAgICB1NjQgdzFfY2FtMSksXFxuK1xcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxcbitcXHRcXHQgICAgdzBfY2FtMCwgdzBfY2FtMSxcXG4rXFx0XFx0ICAgIHcxX2NhbTAsIHcxX2NhbTEpLFxcbitcXHQgICAgVFBfU1RSVUNUX19lbnRyeShfX2ZpZWxkKHUxNiwgbWNhbV9pbmRleClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBiYW5rKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0wKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0xKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0wKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0xKVxcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlYmFuayA9IGJhbms7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXcwX2NhbTAgPSB3MF9jYW0wO1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2V3MF9jYW0xID0gdzBfY2FtMTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNldzFfY2FtMCA9IHcxX2NhbTA7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXcxX2NhbTEgPSB3MV9jYW0xO1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHcwX2NhbTA6MHglbGx4IHcwX2NhbTE6MHglbGx4LCB3MV9jYW0wOjB4JWxseCwgdzFfY2FtMToweCVsbHhcXFxcblxcXCIsXFxuK1xcdFxcdCAgICAgIF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXFx1MDAzZWJhbmssIF9fZW50cnktXFx1MDAzZXcwX2NhbTAsIF9fZW50cnktXFx1MDAzZXcwX2NhbTEsXFxuK1xcdFxcdCAgICAgIF9fZW50cnktXFx1MDAzZXcxX2NhbTAsIF9fZW50cnktXFx1MDAzZXcxX2NhbTEpXFxuKyk7XFxuK1xcbitUUkFDRV9FVkVOVChvdHgyX25wY19hY3Rpb24sXFxuK1xcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXFxuK1xcdFxcdCAgICAgdTggdHhfaW50ZiwgdTggZW5hYmxlLFxcbitcXHRcXHQgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksXFxuK1xcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxcbitcXHRcXHQgICAgdHhfaW50ZiwgZW5hYmxlLFxcbitcXHRcXHQgICAgYWN0LCB2dGFnX2FjdCksXFxuK1xcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIGJhbmspXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgdHhfaW50ZilcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBlbmFibGUpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1NjQsIGFjdClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpXFxuK1xcdCAgICApLFxcbitcXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cXHUwMDNlbWNhbV9pbmRleCA9IGluZGV4O1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2ViYW5rID0gYmFuaztcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZWVuYWJsZSA9IGVuYWJsZTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlYWN0ID0gYWN0O1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVxcdTAwM2ViYW5rLCBfX2VudHJ5LVxcdTAwM2V0eF9pbnRmLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VlbmFibGUsIF9fZW50cnktXFx1MDAzZWFjdCwgX19lbnRyeS1cXHUwMDNldnRhZ19hY3QpXFxuKyk7XFxuK1xcbiAjZW5kaWYgLyogX19SVlVfVFJBQ0VfSCAqL1xcbiBcXG4gI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoxOC4wMDk4MTAzMjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2ODk2NjIxMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdHJhY2Vwb2ludHMgKGFuZCBsb2NhbCB2YXJpYWJsZSByZW5hbWVzIHRvIGZlZWQgdGhvc2UgdHJhY2Vwb2ludHMpIHdpdGhvdXQgYWx0ZXJpbmcgY29udHJvbCBmbG93IG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIHRhcmdldHMgc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuaW5kZXggYzM0ZjhkODZjYzhhNS4uYWUzNzM1NTg5NzVlNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFwicnZ1X25wYy5oXCJcbiAjaW5jbHVkZSBcImNuMjBrL3JlZy5oXCJcbiAjaW5jbHVkZSBcImxtYWNfY29tbW9uLmhcIlxuKyNpbmNsdWRlIFx1MDAzY3J2dV90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xuIFx0aW50IGFjdGJhbmsgPSBiYW5rO1xuIFxuK1x0dHJhY2Vfb3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkoaW5kZXgsICh1OCllbmFibGUpO1xuIFx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSkge1xuIFx0XHRpZiAobnBjX2NuMjBrX2VuYWJsZV9tY2FtX2VudHJ5KHJ2dSwgYmxrYWRkciwgaW5kZXgsIGVuYWJsZSkpXG4gXHRcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkVycm9yIHRvICVzIG1jYW0gJXUgZW50cnlcXG5cIixcbkBAIC01MjEsMTAgKzUyMywxMCBAQCBzdGF0aWMgdm9pZCBucGNfY29uZmlnX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0XHQgIHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgYm9vbCBlbmFibGUpXG4ge1xuIFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xuK1x0dTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7XG4gXHRpbnQga3cgPSAwLCBhY3RiYW5rLCBhY3RpbmRleDtcbiBcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFx1MDAyNiAweDM7XG4gXHR1OCB0eF9pbnRmID0gaW50Zjtcbi1cdHU2NCBjYW0wLCBjYW0xO1xuIFxuIFx0YWN0YmFuayA9IGJhbms7IC8qIFNhdmUgYmFuayBpZCwgdG8gc2V0IGFjdGlvbiBsYXRlciBvbiAqL1xuIFx0YWN0aW5kZXggPSBpbmRleDtcbkBAIC01NjEsMTcgKzU2MywxOCBAQCBzdGF0aWMgdm9pZCBucGNfY29uZmlnX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0ICAgIHR4X2ludGZfbWFzayk7XG4gXG4gXHRcdC8qIFNldCB0aGUgbWF0Y2gga2V5ICovXG4tXHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3csIFx1MDAyNmNhbTAsIFx1MDAyNmNhbTEpO1xuK1x0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcdTAwMjZ3MF9jYW0wLCBcdTAwMjZ3MF9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcbitcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAxKSwgdzBfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4rXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIHcwX2NhbTApO1xuIFxuLVx0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3ICsgMSwgXHUwMDI2Y2FtMCwgXHUwMDI2Y2FtMSk7XG4rXHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgKyAxLCBcdTAwMjZ3MV9jYW0wLCBcdTAwMjZ3MV9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcbitcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgdzFfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4rXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xuK1x0XHR0cmFjZV9vdHgyX25wY19jYW0oaW5kZXgsIGJhbmssIHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTEpO1xuIFx0fVxuIFxuIFx0LyogUEYgaW5zdGFsbGluZyBWRiBydWxlICovXG5AQCAtNTg2LDYgKzU4OSw4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTlBDX0FGX01DQU1FWF9CQU5LWF9UQUdfQUNUKGluZGV4LCBhY3RiYW5rKSxcbiBcdFx0ICAgIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiBcbitcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcbitcdFx0XHQgICAgICBlbnRyeS1cdTAwM2VhY3Rpb24sIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiBcdC8qIEVuYWJsZSB0aGUgZW50cnkgKi9cbiBcdGlmIChlbmFibGUpXG4gXHRcdG5wY19lbmFibGVfbWNhbV9lbnRyeShydnUsIG1jYW0sIGJsa2FkZHIsIGFjdGluZGV4LCB0cnVlKTtcbkBAIC01OTYsMjQgKzYwMSwyNSBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgdTggKmludGYsIHU4ICplbmEpXG4ge1xuIFx0aW50IHNiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIHNyYyk7XG4rXHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcbiBcdGludCBiYW5rLCBrdyA9IDA7XG4tXHR1NjQgY2FtMCwgY2FtMTtcbiBcbiBcdHNyYyBcdTAwMjY9IChtY2FtLVx1MDAzZWJhbmtzaXplIC0gMSk7XG4gXHRiYW5rID0gc2Jhbms7XG4gXG4gXHRmb3IgKDsgYmFuayBcdTAwM2MgKHNiYW5rICsgbWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkpOyBiYW5rKyssIGt3ID0ga3cgKyAyKSB7XG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgY2FtMCwgY2FtMSk7XG4rXHRcdHcwX2NhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbitcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuK1x0XHR3MF9jYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4rXHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTtcbitcdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgdzBfY2FtMCwgdzBfY2FtMSk7XG4gXG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyArIDEsIGNhbTAsIGNhbTEpO1xuK1x0XHR3MV9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4rXHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcbitcdFx0dzFfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuK1x0XHRcdFx0ICAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7XG4rXHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgKyAxLCB3MV9jYW0wLCB3MV9jYW0xKTtcbitcdFx0dHJhY2Vfb3R4Ml9ucGNfY2FtKHNyYywgYmFuaywgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMSk7XG4gXHR9XG4gXG4gXHRlbnRyeS1cdTAwM2VhY3Rpb24gPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbkBAIC02MjUsNiArNjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9JTlRGKHNyYywgc2JhbmssIDEpKSBcdTAwMjYgMztcbiBcdCplbmEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiBcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSBcdTAwMjYgMTtcbitcdHRyYWNlX290eDJfbnBjX2FjdGlvbihzcmMsIHNiYW5rLCAqaW50ZiwgKmVuYSxcbitcdFx0XHQgICAgICBlbnRyeS1cdTAwM2VhY3Rpb24sIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiB9XG4gXG4gc3RhdGljIGludCBucGNfY29weV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuQEAgLTMxOTcsNiArMzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuIFxuK1x0dHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTtcbiBcdHJldHVybiAwO1xuIFxuIG5vdF9jbjIwazpcbkBAIC0zMzgzLDYgKzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYyxcbiBcdHJzcC1cdTAwM2VmcmVlX2NvdW50ID0gbWNhbS1cdTAwM2VibWFwX2ZjbnQ7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWNhbS1cdTAwM2Vsb2NrKTtcbitcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuaW5kZXggMTllMGQxNmIxMmY2Zi4uMDkxOWM0Mzk4ZGM0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuQEAgLTEzLDMgKzEzLDcgQEAgRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX2ludGVycnVwdCk7XG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX3Byb2Nlc3MpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19zdGF0dXMpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX3BhcnNlX2R1bXApO1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpO1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7XG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2NhbSk7XG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaFxuaW5kZXggNGNkMGZjNGIwZDIwMy4uNzdkYzFiNGE0YzY0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaFxuQEAgLTE1OSw2ICsxNTksMTA1IEBAIFRSQUNFX0VWRU5UKG90eDJfcGFyc2VfZHVtcCxcbiBcdFx0ICAgICAgX19lbnRyeS1cdTAwM2V3MywgX19lbnRyeS1cdTAwM2V3NCwgX19lbnRyeS1cdTAwM2V3NSlcbiApO1xuIFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyxcbitcdCAgICBUUF9QUk9UTyh1MTYgcGNpZnVuYyxcbitcdFx0ICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsXG4rXHRcdCAgICAgc3RydWN0IG5wY19tY2FtX2FsbG9jX2VudHJ5X3JzcCAqcnNwKSxcbitcdCAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBwY2lmdW5jKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgY29udGlnKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgcmVmX3ByaW8pXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcmVmX2VudHJ5KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHJlcV9jb3VudClcbitcdFx0XHQgICAgIF9fZmllbGQodTgsIGt3X3R5cGUpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB2aXJ0KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHN0YXJ0X21jYW1faWR4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHJzcF9jb3VudClcbitcdFx0XHQgICAgIF9fZmllbGQodTE2LCBmcmVlX2NvdW50KVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2Vjb250aWcgPSByZXEtXHUwMDNlY29udGlnO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX3ByaW8gPSByZXEtXHUwMDNlcmVmX3ByaW87XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VyZWZfZW50cnkgPSByZXEtXHUwMDNlcmVmX2VudHJ5O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVxX2NvdW50ID0gcmVxLVx1MDAzZWNvdW50O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNla3dfdHlwZSA9IHJlcS1cdTAwM2Vrd190eXBlO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldmlydCA9IHJlcS1cdTAwM2V2aXJ0O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlc3RhcnRfbWNhbV9pZHggPSByc3AtXHUwMDNlZW50cnk7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQgPSByc3AtXHUwMDNlY291bnQ7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VmcmVlX2NvdW50ID0gcnNwLVx1MDAzZWZyZWVfY291bnQ7XG4rXHQgICAgKSxcbitcdCAgICBUUF9wcmludGsoXCJwY2lmdW5jOiVkIHJlcV9jb250aWc6JWQgcmVxX3JlZl9wcmlvOiVkIHJlcS1cdTAwM2VyZWZfZW50cnk6JWQgcmVxLVx1MDAzZXJlcV9jb3VudDolZCByZXEtXHUwMDNla3dfdHlwZTolZCByZXEtXHUwMDNldmlydDolZCByc3Bfc3RhcnRfbWNhbV9pZHg6JWQgcnNwX2NvdW50OiVkIHJzcF9mcmVlX2NvdW50OiVkXFxuXCIsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlcGNpZnVuYywgX19lbnRyeS1cdTAwM2Vjb250aWcsIF9fZW50cnktXHUwMDNlcmVmX3ByaW8sXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlcmVmX2VudHJ5LCBfX2VudHJ5LVx1MDAzZXJlcV9jb3VudCwgX19lbnRyeS1cdTAwM2Vrd190eXBlLFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXZpcnQsIF9fZW50cnktXHUwMDNlc3RhcnRfbWNhbV9pZHgsIF9fZW50cnktXHUwMDNlcnNwX2NvdW50LFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZWZyZWVfY291bnQpXG4rKTtcbitcbitUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSxcbitcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGVuYWJsZSksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgZW5hYmxlKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgZW5hKVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VlbmEgPSBlbmFibGU7XG4rXHQgICAgKSxcbitcdCAgICBUUF9wcmludGsoXCJtY2FtX2luZGV4OiVkIGVuYWJsZTolZFxcblwiLCBfX2VudHJ5LVx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXHUwMDNlZW5hKVxuKyk7XG4rXG4rVFJBQ0VfRVZFTlQob3R4Ml9ucGNfY2FtLFxuK1x0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcbitcdFx0ICAgICB1NjQgdzBfY2FtMCxcbitcdFx0ICAgICB1NjQgdzBfY2FtMSxcbitcdFx0ICAgICB1NjQgdzFfY2FtMCxcbitcdFx0ICAgICB1NjQgdzFfY2FtMSksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbitcdFx0ICAgIHcwX2NhbTAsIHcwX2NhbTEsXG4rXHRcdCAgICB3MV9jYW0wLCB3MV9jYW0xKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0wKVxuK1x0XHRcdCAgICAgX19maWVsZCh1NjQsIHcwX2NhbTEpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMClcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0xKVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2ViYW5rID0gYmFuaztcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXcwX2NhbTAgPSB3MF9jYW0wO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMSA9IHcwX2NhbTE7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2V3MV9jYW0wID0gdzFfY2FtMDtcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXcxX2NhbTEgPSB3MV9jYW0xO1xuK1x0ICAgICksXG4rXHQgICAgVFBfcHJpbnRrKFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHcwX2NhbTA6MHglbGx4IHcwX2NhbTE6MHglbGx4LCB3MV9jYW0wOjB4JWxseCwgdzFfY2FtMToweCVsbHhcXG5cIixcbitcdFx0ICAgICAgX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVx1MDAzZWJhbmssIF9fZW50cnktXHUwMDNldzBfY2FtMCwgX19lbnRyeS1cdTAwM2V3MF9jYW0xLFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXcxX2NhbTAsIF9fZW50cnktXHUwMDNldzFfY2FtMSlcbispO1xuK1xuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2FjdGlvbixcbitcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXG4rXHRcdCAgICAgdTggdHhfaW50ZiwgdTggZW5hYmxlLFxuK1x0XHQgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbitcdFx0ICAgIHR4X2ludGYsIGVuYWJsZSxcbitcdFx0ICAgIGFjdCwgdnRhZ19hY3QpLFxuK1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU4LCBiYW5rKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgdHhfaW50ZilcbitcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYWJsZSlcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCBhY3QpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpXG4rXHQgICAgKSxcbitcdCAgICBUUF9mYXN0X2Fzc2lnbihfX2VudHJ5LVx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZWJhbmsgPSBiYW5rO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VlbmFibGUgPSBlbmFibGU7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VhY3QgPSBhY3Q7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xuK1x0ICAgICksXG4rXHQgICAgVFBfcHJpbnRrKFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxuXCIsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2ViYW5rLCBfX2VudHJ5LVx1MDAzZXR4X2ludGYsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlZW5hYmxlLCBfX2VudHJ5LVx1MDAzZWFjdCwgX19lbnRyeS1cdTAwM2V2dGFnX2FjdClcbispO1xuK1xuICNlbmRpZiAvKiBfX1JWVV9UUkFDRV9IICovXG4gXG4gI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6NDc6MTguMDA5ODEzMjU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTUyMzcyMjIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ2dV9ucGMuY2AsIGBydnVfdHJhY2UuY2AsIGFuZCBgcnZ1X3RyYWNlLmhgIHdpdGhpbiB0aGUgT2N0ZW9uVFgyIE1hcnZlbGwgQUYgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIG5ldyB0cmFjZXBvaW50czogYHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllc2AsIGB0cmFjZV9vdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeWAsIGB0cmFjZV9vdHgyX25wY19jYW1gLCBhbmQgYHRyYWNlX290eDJfbnBjX2FjdGlvbmAgZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGFuZCB0aGVuIGV4cG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgTlBDIGNvZGUuIFRoZXJlIGFyZSBhbHNvIHNvbWUgdmFyaWFibGUgcmVuYW1lcywgd2hpY2ggYXJlIGxpa2VseSBpbnNpZ25pZmljYW50LlxuXG5CdXQgaG9sZCBvbiwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMuIFNlY3Rpb24gMiBpcyBwcmV0dHkgY2xlYXIgb24gd2hlbiB3ZSBjYW4gc2FmZWx5IHNraXAgZnV6emluZy4gSXQgbGlzdHMgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5n4oCmIG9yIHRyYWNlcG9pbnRzIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXNcIiBhcyBhICpuby1mdXp6KiBjb25kaXRpb24uIFRoZXNlIHRyYWNlcG9pbnRzICphcHBlYXIqIHRvIGJlIGp1c3QgdGhhdCDigJMgcHVyZWx5IGZvciBvYnNlcnZhYmlsaXR5LiBUaGV5IGRvbid0IHNlZW0gdG8gYmUgY2hhbmdpbmcgYW55IGNyaXRpY2FsIGRhdGEgcGF0aHMgb3IgY29udHJvbCBmbG93LlxuXG5BbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBkcml2ZXI/IFRoYXQncyB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgaGFyZHdhcmUuIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgaXMgYW5vdGhlciAqbm8tZnV6eiogc2NlbmFyaW8hIEl0IGV4cGxpY2l0bHkgc2F5cyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFyZSBleGNsdWRlZC4gVGhpcyBkcml2ZXIgKmRlZmluaXRlbHkqIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gU28sIGJhc2VkIG9uIGJvdGggdGhlIG5hdHVyZSBvZiB0aGUgdHJhY2Vwb2ludHMgYW5kIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudCwgSSdtIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIGZsYWdnaW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkkgbmVlZCB0byBjb25maXJtIGJ5IGluc3BlY3RpbmcgdGhlIGNvZGUsIGJ1dCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvIGJlbGlldmUgZnV6emluZyBpcyByZXF1aXJlZC4gSSBzaG91bGQgc2NhbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5IGZvciBhbnkgZ290Y2hhcywganVzdCB0byBiZSBzdXJlLiBCdXQgZnJvbSBteSBxdWljayBhbmFseXNpcywgaXQgbG9va3Mgc2FmZSB0byBza2lwIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyMy41MzM1Mzk1NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwODk4NTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgT0NURU9OVFgyX0FGXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjQ3OjI1LjY0MjUzNzAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQxMjE5NTMxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIE9jdGVvbiBUWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gYWJvdXQgdG8gZGlzc2VjdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTWFydmVsbCBPY3Rlb24gVFgyIEV0aGVybmV0IGRyaXZlciBhcmUgZGVmaW5lZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgY2FuIGJlIHRhaWxvcmVkIGZvciBkaWZmZXJlbnQgc3lzdGVtcyBhbmQgdXNlIGNhc2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBoYXJkd2FyZS1zcGVjaWZpYyBzZXR0aW5ncywgYW5kIHRoZSB1c3VhbCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIC0gdGhlIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGNob2ljZXMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBvciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB2YXJpb3VzIE9jdGVvbiBUWDIgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgYm9hcmQgY29uZmlndXJhdGlvbnMgb3IgUEhZIG9wdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJJ2xsIGFsc28gYmUgc2Nhbm5pbmcgZm9yIGFueSB1bnVzdWFsIG9yIHZlbmRvci1zcGVjaWZpYyBvcHRpb25zIHRoYXQgbWlnaHQgaW5kaWNhdGUgdW5pcXVlIE1hcnZlbGwgb3B0aW1pemF0aW9ucyBvciBoYXJkd2FyZSBmZWF0dXJlcy4gTXkgZ29hbCBpcyB0byBncmFzcCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgc3RhY2suIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIGtleSBjb25maWd1cmFibGUgZWxlbWVudHMgYXJlIGFuZCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0cyBvbiBwZXJmb3JtYW5jZSwgcG93ZXIgY29uc3VtcHRpb24sIGFuZCBzdXBwb3J0ZWQgaGFyZHdhcmUuIEZpbmFsbHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBpdGZhbGxzIG9yIGNvbW1vbiBpc3N1ZXMgdGhhdCBtaWdodCBhcmlzZSBkdXJpbmcgZGVwbG95bWVudC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyOS43NjQ0OTIzMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIE9DVEVPTlRYMl9BRlxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuICAxMTpcXHRcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiAoNjRCSVQgXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxcbiAgMTg6XFx0XFx0ICBVbml0J3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXFxuICAxOTpcXHRcXHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcXG4gIDIwOlxcdFxcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbiAgMjM6XFx0XFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbiAgMjU6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXFxuICAyODpcXHRcXHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxcbiAgMjk6XFx0XFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgT0NURU9OVFgyX1BGXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAzNTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAzODpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyOS43NjQ1NTc2MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MTQxODQ1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVmVyZGljdDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBmbGFnZ2VkIGEgZGVwZW5kZW5jeSBiYXNlZCBvbiBgNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVGAgb3IgYEFSTTY0YCwgd2hpY2ggb24gdGhlIEFNRDY0IHRhcmdldCBJJ20gbG9va2luZyBhdCwgaXMgY29udGluZ2VudCBvbiBgQ09NUElMRV9URVNUYC4gVGhpcyBhbHJlYWR5IGZlZWxzIHNwZWNpZmljLCBidXQgbGV0J3MgZGl2ZSBkZWVwZXIuIFRoaXMgYE9jdGVvblRYMmAgc3R1ZmYgaXMgcGh5c2ljYWwgaGFyZHdhcmU6IGEgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgYSBTbWFydE5JQy9Tb0MuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgcmVkIGZsYWcuXG5cblRoZSBrZXkgcG9pbnRzIGFyZSB0aGF0IGl0J3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyDigJMgc3R1ZmYgeW91J3JlICpub3QqIGdvaW5nIHRvIGZpbmQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBhbmQgaXQgaXMgZ29pbmcgdG8gYmUgdW5yZWFjaGFibGUgaW4gY29tbW9uIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBhY3R1YWwgcGF0Y2guIEl0IGVzc2VudGlhbGx5IGFkZHMgdHJhY2Vwb2ludHMgYW5kIHJlbmFtZXMgc29tZSBsb2NhbCB2YXJpYWJsZXMgdG8gcGFzcyB0aG9zZSB2YXJpYWJsZXMgKnRvKiB0aGUgdHJhY2Vwb2ludHMuIFRoZXJlIGlzIG5vIGNoYW5nZSB0byBjb250cm9sIGZsb3cgb3IgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLiBJdCdzIGVzc2VudGlhbGx5IGRlY29yYXRpdmUgbG9nZ2luZy5cblxuU28sIGxldCdzIGxvb2sgYXQgdGhlIGRpZmY6IHRoZXkgYWRkZWQgdHJhY2Vwb2ludHMgYW5kIGV4cG9ydGVkIHRoZSBzeW1ib2xzLiBUaGV5IHRoZW4gYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbHMgaW4gYSBjb3VwbGUgb2YgZnVuY3Rpb25zIGluIGBydnVfbnBjLmNgIGFmdGVyIHJlbmFtaW5nIHNvbWUgdmFyaWFibGVzIHRvIHJlYWQgaW50byB0aGUgdHJhY2Vwb2ludCBjYWxscy5cblxuVGhlcmUgaXMgemVybyBtb2RpZmljYXRpb24gdG8gY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4gRXZlcnl0aGluZyBwb2ludHMgdG8gdGhpcyBiZWluZyBwdXJlbHkgdHJhY2Vwb2ludHMgYW5kIGluYWNjZXNzaWJsZSBoYXJkd2FyZS5cblxuVGhpcyBjaGVja3MgdHdvIGJveGVzIGZyb20gU2VjdGlvbiAyIG9mIG15IG1ldGhvZG9sb2d5OiBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhlIHZlcmRpY3QgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGluc3RydW1lbnRhdGlvbiBhbmQgbG9nZ2luZy5cblxuTm93IHRvIHBhY2thZ2UgaXQgdXAgZm9yIGBzZXQtcmVzdWx0c2A6XG4qICAgYFdvcnRoRnV6emluZzogZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9sczogW11gXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtdYFxuKiAgIGBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gb2YgdGhlIGZ1enppbmcgdmVyZGljdC5gXG5cblJlYWR5IHRvIGV4ZWN1dGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjMsIk91dHB1dFRva2VucyI6OTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzozNC45MDY0MDYzNTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyB0cmFjZXBvaW50cyAoYW5kIGxvY2FsIHZhcmlhYmxlIHJlbmFtZXMgdG8gZmVlZCB0aG9zZSB0cmFjZXBvaW50cykgd2l0aG91dCBhbHRlcmluZyBjb250cm9sIGZsb3cgb3Iga2VybmVsIGRhdGEgc3RydWN0dXJlcy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggdGFyZ2V0cyBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyB0cmFjZXBvaW50cyAoYW5kIGxvY2FsIHZhcmlhYmxlIHJlbmFtZXMgdG8gZmVlZCB0aG9zZSB0cmFjZXBvaW50cykgd2l0aG91dCBhbHRlcmluZyBjb250cm9sIGZsb3cgb3Iga2VybmVsIGRhdGEgc3RydWN0dXJlcy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggdGFyZ2V0cyBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjQ3OjM0LjkwNjQzMzcwMVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwzxbt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 03:29:27 +0000 UTC FinishedAt: 2026-09-15 03:47:36 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbmluZGV4IGMzNGY4ZDg2Y2M4YTUuLmFlMzczNTU4OTc1ZTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuQEAgLTIwLDYgJiM0MzsyMCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7cnZ1X25wYy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7Y24yMGsvcmVnLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtsbWFjX2NvbW1vbi5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3J2dV90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtMjU5LDYgJiM0MzsyNjAsNyBAQCB2b2lkIG5wY19lbmFibGVfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdGludCBiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIGluZGV4KTtcbiBcdGludCBhY3RiYW5rID0gYmFuaztcbiBcbiYjNDM7XHR0cmFjZV9vdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeShpbmRleCwgKHU4KWVuYWJsZSk7XG4gXHRpZiAoaXNfY24yMGsocnZ1LVx1MDAzZXBkZXYpKSB7XG4gXHRcdGlmIChucGNfY24yMGtfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBibGthZGRyLCBpbmRleCwgZW5hYmxlKSlcbiBcdFx0XHRkZXZfZXJyKHJ2dS1cdTAwM2VkZXYsIFwmIzM0O0Vycm9yIHRvICVzIG1jYW0gJXUgZW50cnlcXG5cJiMzNDssXG5AQCAtNTIxLDEwICYjNDM7NTIzLDEwIEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHRcdCAgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCBib29sIGVuYWJsZSlcbiB7XG4gXHRpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7XG4mIzQzO1x0dTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7XG4gXHRpbnQga3cgPSAwLCBhY3RiYW5rLCBhY3RpbmRleDtcbiBcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFx1MDAyNiAweDM7XG4gXHR1OCB0eF9pbnRmID0gaW50Zjtcbi1cdHU2NCBjYW0wLCBjYW0xO1xuIFxuIFx0YWN0YmFuayA9IGJhbms7IC8qIFNhdmUgYmFuayBpZCwgdG8gc2V0IGFjdGlvbiBsYXRlciBvbiAqL1xuIFx0YWN0aW5kZXggPSBpbmRleDtcbkBAIC01NjEsMTcgJiM0Mzs1NjMsMTggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgICB0eF9pbnRmX21hc2spO1xuIFxuIFx0XHQvKiBTZXQgdGhlIG1hdGNoIGtleSAqL1xuLVx0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcdTAwMjZjYW0wLCBcdTAwMjZjYW0xKTtcbiYjNDM7XHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3csIFx1MDAyNncwX2NhbTAsIFx1MDAyNncwX2NhbTEpO1xuIFx0XHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIGNhbTEpO1xuJiM0MztcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAxKSwgdzBfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4mIzQzO1x0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCB3MF9jYW0wKTtcbiBcbi1cdFx0bnBjX2dldF9rZXl3b3JkKGVudHJ5LCBrdyAmIzQzOyAxLCBcdTAwMjZjYW0wLCBcdTAwMjZjYW0xKTtcbiYjNDM7XHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgXHUwMDI2dzFfY2FtMCwgXHUwMDI2dzFfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgY2FtMSk7XG4mIzQzO1x0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCB3MV9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcbiYjNDM7XHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xuJiM0MztcdFx0dHJhY2Vfb3R4Ml9ucGNfY2FtKGluZGV4LCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcbiBcdH1cbiBcbiBcdC8qIFBGIGluc3RhbGxpbmcgVkYgcnVsZSAqL1xuQEAgLTU4Niw2ICYjNDM7NTg5LDggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOUENfQUZfTUNBTUVYX0JBTktYX1RBR19BQ1QoaW5kZXgsIGFjdGJhbmspLFxuIFx0XHQgICAgZW50cnktXHUwMDNldnRhZ19hY3Rpb24pO1xuIFxuJiM0MztcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcbiYjNDM7XHRcdFx0ICAgICAgZW50cnktXHUwMDNlYWN0aW9uLCBlbnRyeS1cdTAwM2V2dGFnX2FjdGlvbik7XG4gXHQvKiBFbmFibGUgdGhlIGVudHJ5ICovXG4gXHRpZiAoZW5hYmxlKVxuIFx0XHRucGNfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBtY2FtLCBibGthZGRyLCBhY3RpbmRleCwgdHJ1ZSk7XG5AQCAtNTk2LDI0ICYjNDM7NjAxLDI1IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdFx0XHQgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCB1OCAqaW50ZiwgdTggKmVuYSlcbiB7XG4gXHRpbnQgc2JhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgc3JjKTtcbiYjNDM7XHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcbiBcdGludCBiYW5rLCBrdyA9IDA7XG4tXHR1NjQgY2FtMCwgY2FtMTtcbiBcbiBcdHNyYyBcdTAwMjY9IChtY2FtLVx1MDAzZWJhbmtzaXplIC0gMSk7XG4gXHRiYW5rID0gc2Jhbms7XG4gXG4gXHRmb3IgKDsgYmFuayBcdTAwM2MgKHNiYW5rICYjNDM7IG1jYW0tXHUwMDNlYmFua3NfcGVyX2VudHJ5KTsgYmFuayYjNDM7JiM0MzssIGt3ID0ga3cgJiM0MzsgMikge1xuLVx0XHRjYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDEpKTtcbi1cdFx0Y2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAwKSk7XG4tXHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIGNhbTAsIGNhbTEpO1xuJiM0MztcdFx0dzBfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuJiM0MztcdFx0dzBfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuJiM0MztcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMCkpO1xuJiM0MztcdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgdzBfY2FtMCwgdzBfY2FtMSk7XG4gXG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyAmIzQzOyAxLCBjYW0wLCBjYW0xKTtcbiYjNDM7XHRcdHcxX2NhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiYjNDM7XHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcbiYjNDM7XHRcdHcxX2NhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiYjNDM7XHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbiYjNDM7XHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgdzFfY2FtMCwgdzFfY2FtMSk7XG4mIzQzO1x0XHR0cmFjZV9vdHgyX25wY19jYW0oc3JjLCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcbiBcdH1cbiBcbiBcdGVudHJ5LVx1MDAzZWFjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuQEAgLTYyNSw2ICYjNDM7NjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9JTlRGKHNyYywgc2JhbmssIDEpKSBcdTAwMjYgMztcbiBcdCplbmEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiBcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSBcdTAwMjYgMTtcbiYjNDM7XHR0cmFjZV9vdHgyX25wY19hY3Rpb24oc3JjLCBzYmFuaywgKmludGYsICplbmEsXG4mIzQzO1x0XHRcdCAgICAgIGVudHJ5LVx1MDAzZWFjdGlvbiwgZW50cnktXHUwMDNldnRhZ19hY3Rpb24pO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5wY19jb3B5X21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG5AQCAtMzE5Nyw2ICYjNDM7MzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuIFxuJiM0MztcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiBcbiBub3RfY24yMGs6XG5AQCAtMzM4Myw2ICYjNDM7MzM5Miw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSBtY2FtLVx1MDAzZWJtYXBfZmNudDtcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuJiM0MztcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuaW5kZXggMTllMGQxNmIxMmY2Zi4uMDkxOWM0Mzk4ZGM0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuQEAgLTEzLDMgJiM0MzsxMyw3IEBAIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19pbnRlcnJ1cHQpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19wcm9jZXNzKTtcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTtcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9wYXJzZV9kdW1wKTtcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7XG4mIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19jYW0pO1xuJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfYWN0aW9uKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG5pbmRleCA0Y2QwZmM0YjBkMjAzLi43N2RjMWI0YTRjNjRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG5AQCAtMTU5LDYgJiM0MzsxNTksMTA1IEBAIFRSQUNFX0VWRU5UKG90eDJfcGFyc2VfZHVtcCxcbiBcdFx0ICAgICAgX19lbnRyeS1cdTAwM2V3MywgX19lbnRyeS1cdTAwM2V3NCwgX19lbnRyeS1cdTAwM2V3NSlcbiApO1xuIFxuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMsXG4mIzQzO1x0ICAgIFRQX1BST1RPKHUxNiBwY2lmdW5jLFxuJiM0MztcdFx0ICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsXG4mIzQzO1x0XHQgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksXG4mIzQzO1x0ICAgIFRQX0FSR1MocGNpZnVuYywgcmVxLCByc3ApLFxuJiM0MztcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBwY2lmdW5jKVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGNvbnRpZylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCByZWZfcHJpbylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcmVmX2VudHJ5KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCByZXFfY291bnQpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwga3dfdHlwZSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB2aXJ0KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCBzdGFydF9tY2FtX2lkeClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcnNwX2NvdW50KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTE2LCBmcmVlX2NvdW50KVxuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9mYXN0X2Fzc2lnbihfX2VudHJ5LVx1MDAzZWNvbnRpZyA9IHJlcS1cdTAwM2Vjb250aWc7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX3ByaW8gPSByZXEtXHUwMDNlcmVmX3ByaW87XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX2VudHJ5ID0gcmVxLVx1MDAzZXJlZl9lbnRyeTtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2VyZXFfY291bnQgPSByZXEtXHUwMDNlY291bnQ7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNla3dfdHlwZSA9IHJlcS1cdTAwM2Vrd190eXBlO1xuJiM0MztcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXZpcnQgPSByZXEtXHUwMDNldmlydDtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2VzdGFydF9tY2FtX2lkeCA9IHJzcC1cdTAwM2VlbnRyeTtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQgPSByc3AtXHUwMDNlY291bnQ7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZnJlZV9jb3VudCA9IHJzcC1cdTAwM2VmcmVlX2NvdW50O1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7cGNpZnVuYzolZCByZXFfY29udGlnOiVkIHJlcV9yZWZfcHJpbzolZCByZXEtXHUwMDNlcmVmX2VudHJ5OiVkIHJlcS1cdTAwM2VyZXFfY291bnQ6JWQgcmVxLVx1MDAzZWt3X3R5cGU6JWQgcmVxLVx1MDAzZXZpcnQ6JWQgcnNwX3N0YXJ0X21jYW1faWR4OiVkIHJzcF9jb3VudDolZCByc3BfZnJlZV9jb3VudDolZFxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlcGNpZnVuYywgX19lbnRyeS1cdTAwM2Vjb250aWcsIF9fZW50cnktXHUwMDNlcmVmX3ByaW8sXG4mIzQzO1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXJlZl9lbnRyeSwgX19lbnRyeS1cdTAwM2VyZXFfY291bnQsIF9fZW50cnktXHUwMDNla3dfdHlwZSxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNldmlydCwgX19lbnRyeS1cdTAwM2VzdGFydF9tY2FtX2lkeCwgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQsXG4mIzQzO1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZWZyZWVfY291bnQpXG4mIzQzOyk7XG4mIzQzO1xuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSxcbiYjNDM7XHQgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBlbmFibGUpLFxuJiM0MztcdCAgICBUUF9BUkdTKGluZGV4LCBlbmFibGUpLFxuJiM0MztcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYSlcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZW5hID0gZW5hYmxlO1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7bWNhbV9pbmRleDolZCBlbmFibGU6JWRcXG5cJiMzNDssIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2VlbmEpXG4mIzQzOyk7XG4mIzQzO1xuJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19jYW0sXG4mIzQzO1x0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcbiYjNDM7XHRcdCAgICAgdTY0IHcwX2NhbTAsXG4mIzQzO1x0XHQgICAgIHU2NCB3MF9jYW0xLFxuJiM0MztcdFx0ICAgICB1NjQgdzFfY2FtMCxcbiYjNDM7XHRcdCAgICAgdTY0IHcxX2NhbTEpLFxuJiM0MztcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxuJiM0MztcdFx0ICAgIHcwX2NhbTAsIHcwX2NhbTEsXG4mIzQzO1x0XHQgICAgdzFfY2FtMCwgdzFfY2FtMSksXG4mIzQzO1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMClcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMSlcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlYmFuayA9IGJhbms7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMCA9IHcwX2NhbTA7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMSA9IHcwX2NhbTE7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzFfY2FtMCA9IHcxX2NhbTA7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzFfY2FtMSA9IHcxX2NhbTE7XG4mIzQzO1x0ICAgICksXG4mIzQzO1x0ICAgIFRQX3ByaW50ayhcJiMzNDttY2FtX2luZGV4OiVkIGJhbms6JWQgdzBfY2FtMDoweCVsbHggdzBfY2FtMToweCVsbHgsIHcxX2NhbTA6MHglbGx4LCB3MV9jYW0xOjB4JWxseFxcblwmIzM0OyxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2ViYW5rLCBfX2VudHJ5LVx1MDAzZXcwX2NhbTAsIF9fZW50cnktXHUwMDNldzBfY2FtMSxcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNldzFfY2FtMCwgX19lbnRyeS1cdTAwM2V3MV9jYW0xKVxuJiM0MzspO1xuJiM0MztcbiYjNDM7VFJBQ0VfRVZFTlQob3R4Ml9ucGNfYWN0aW9uLFxuJiM0MztcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXG4mIzQzO1x0XHQgICAgIHU4IHR4X2ludGYsIHU4IGVuYWJsZSxcbiYjNDM7XHRcdCAgICAgdTY0IGFjdCwgdTY0IHZ0YWdfYWN0KSxcbiYjNDM7XHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbiYjNDM7XHRcdCAgICB0eF9pbnRmLCBlbmFibGUsXG4mIzQzO1x0XHQgICAgYWN0LCB2dGFnX2FjdCksXG4mIzQzO1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4mIzQzO1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB0eF9pbnRmKVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYWJsZSlcbiYjNDM7XHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgYWN0KVxuJiM0MztcdFx0XHQgICAgIF9fZmllbGQodTY0LCB2dGFnX2FjdClcbiYjNDM7XHQgICAgKSxcbiYjNDM7XHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlYmFuayA9IGJhbms7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XG4mIzQzO1x0XHRcdCAgIF9fZW50cnktXHUwMDNlZW5hYmxlID0gZW5hYmxlO1xuJiM0MztcdFx0XHQgICBfX2VudHJ5LVx1MDAzZWFjdCA9IGFjdDtcbiYjNDM7XHRcdFx0ICAgX19lbnRyeS1cdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xuJiM0MztcdCAgICApLFxuJiM0MztcdCAgICBUUF9wcmludGsoXCYjMzQ7bWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgICAgX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVx1MDAzZWJhbmssIF9fZW50cnktXHUwMDNldHhfaW50ZixcbiYjNDM7XHRcdCAgICAgIF9fZW50cnktXHUwMDNlZW5hYmxlLCBfX2VudHJ5LVx1MDAzZWFjdCwgX19lbnRyeS1cdTAwM2V2dGFnX2FjdClcbiYjNDM7KTtcbiYjNDM7XG4gI2VuZGlmIC8qIF9fUlZVX1RSQUNFX0ggKi9cbiBcbiAjdW5kZWYgVFJBQ0VfSU5DTFVERV9QQVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYwppbmRleCBjMzRmOGQ4NmNjOGE1Li5hZTM3MzU1ODk3NWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jCkBAIC0yMCw2ICYjNDM7MjAsNyBAQAogI2luY2x1ZGUgJiMzNDtydnVfbnBjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtjbjIway9yZWcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2xtYWNfY29tbW9uLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtydnVfdHJhY2UuaCZndDsKIAogI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEYJMyAvKiBCcm9hZGNhc3QsIFByb21pc2MgYW5kIEFsbE11bHRpY2FzdCAqLwogI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEYJMSAvKiBVY2FzdCBmb3IgTEZzICovCkBAIC0yNTksNiAmIzQzOzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCWludCBiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIGluZGV4KTsKIAlpbnQgYWN0YmFuayA9IGJhbms7CiAKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkoaW5kZXgsICh1OCllbmFibGUpOwogCWlmIChpc19jbjIwayhydnUtJmd0O3BkZXYpKSB7CiAJCWlmIChucGNfY24yMGtfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBibGthZGRyLCBpbmRleCwgZW5hYmxlKSkKIAkJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7RXJyb3IgdG8gJXMgbWNhbSAldSBlbnRyeVxuJiMzNDssCkBAIC01MjEsMTAgJiM0Mzs1MjMsMTAgQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCQkJCSAgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCBib29sIGVuYWJsZSkKIHsKIAlpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7CiYjNDM7CXU2NCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xOwogCWludCBrdyA9IDAsIGFjdGJhbmssIGFjdGluZGV4OwogCXU4IHR4X2ludGZfbWFzayA9IH5pbnRmICZhbXA7IDB4MzsKIAl1OCB0eF9pbnRmID0gaW50ZjsKLQl1NjQgY2FtMCwgY2FtMTsKIAogCWFjdGJhbmsgPSBiYW5rOyAvKiBTYXZlIGJhbmsgaWQsIHRvIHNldCBhY3Rpb24gbGF0ZXIgb24gKi8KIAlhY3RpbmRleCA9IGluZGV4OwpAQCAtNTYxLDE3ICYjNDM7NTYzLDE4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSwKIAkJCSAgICB0eF9pbnRmX21hc2spOwogCiAJCS8qIFNldCB0aGUgbWF0Y2gga2V5ICovCi0JCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3csICZhbXA7Y2FtMCwgJmFtcDtjYW0xKTsKJiM0MzsJCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3csICZhbXA7dzBfY2FtMCwgJmFtcDt3MF9jYW0xKTsKIAkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLAotCQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIGNhbTEpOwomIzQzOwkJCSAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCB3MF9jYW0xKTsKIAkJcnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLAotCQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIGNhbTApOwomIzQzOwkJCSAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCB3MF9jYW0wKTsKIAotCQlucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3ICYjNDM7IDEsICZhbXA7Y2FtMCwgJmFtcDtjYW0xKTsKJiM0MzsJCW5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgJiM0MzsgMSwgJmFtcDt3MV9jYW0wLCAmYW1wO3cxX2NhbTEpOwogCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsCi0JCQkgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgY2FtMSk7CiYjNDM7CQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMSksIHcxX2NhbTEpOwogCQlydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsCi0JCQkgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7CiYjNDM7CQkJICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApOwomIzQzOwkJdHJhY2Vfb3R4Ml9ucGNfY2FtKGluZGV4LCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTsKIAl9CiAKIAkvKiBQRiBpbnN0YWxsaW5nIFZGIHJ1bGUgKi8KQEAgLTU4Niw2ICYjNDM7NTg5LDggQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLAogCXJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTlBDX0FGX01DQU1FWF9CQU5LWF9UQUdfQUNUKGluZGV4LCBhY3RiYW5rKSwKIAkJICAgIGVudHJ5LSZndDt2dGFnX2FjdGlvbik7CiAKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfYWN0aW9uKGluZGV4LCBhY3RiYW5rLCB0eF9pbnRmLCAodTgpZW5hYmxlLAomIzQzOwkJCSAgICAgIGVudHJ5LSZndDthY3Rpb24sIGVudHJ5LSZndDt2dGFnX2FjdGlvbik7CiAJLyogRW5hYmxlIHRoZSBlbnRyeSAqLwogCWlmIChlbmFibGUpCiAJCW5wY19lbmFibGVfbWNhbV9lbnRyeShydnUsIG1jYW0sIGJsa2FkZHIsIGFjdGluZGV4LCB0cnVlKTsKQEAgLTU5NiwyNCAmIzQzOzYwMSwyNSBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgc3RydWN0IG1jYW1fZW50cnkgKmVudHJ5LCB1OCAqaW50ZiwgdTggKmVuYSkKIHsKIAlpbnQgc2JhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgc3JjKTsKJiM0MzsJdTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7CiAJaW50IGJhbmssIGt3ID0gMDsKLQl1NjQgY2FtMCwgY2FtMTsKIAogCXNyYyAmYW1wOz0gKG1jYW0tJmd0O2JhbmtzaXplIC0gMSk7CiAJYmFuayA9IHNiYW5rOwogCiAJZm9yICg7IGJhbmsgJmx0OyAoc2JhbmsgJiM0MzsgbWNhbS0mZ3Q7YmFua3NfcGVyX2VudHJ5KTsgYmFuayYjNDM7JiM0MzssIGt3ID0ga3cgJiM0MzsgMikgewotCQljYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCi0JCQkJICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAxKSk7Ci0JCWNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKLQkJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTsKLQkJbnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgY2FtMCwgY2FtMSk7CiYjNDM7CQl3MF9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCiYjNDM7CQkJCSAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpOwomIzQzOwkJdzBfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAomIzQzOwkJCQkgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTsKJiM0MzsJCW5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIHcwX2NhbTAsIHcwX2NhbTEpOwogCi0JCWNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKLQkJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTsKLQkJY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAotCQkJCSAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMCkpOwotCQlucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3ICYjNDM7IDEsIGNhbTAsIGNhbTEpOwomIzQzOwkJdzFfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLAomIzQzOwkJCQkgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTsKJiM0MzsJCXcxX2NhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwKJiM0MzsJCQkJICAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7CiYjNDM7CQlucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3ICYjNDM7IDEsIHcxX2NhbTAsIHcxX2NhbTEpOwomIzQzOwkJdHJhY2Vfb3R4Ml9ucGNfY2FtKHNyYywgYmFuaywgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMSk7CiAJfQogCiAJZW50cnktJmd0O2FjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLApAQCAtNjI1LDYgJiM0Mzs2MzEsOCBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sCiAJCQkgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfSU5URihzcmMsIHNiYW5rLCAxKSkgJmFtcDsgMzsKIAkqZW5hID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsCiAJCQkgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSAmYW1wOyAxOwomIzQzOwl0cmFjZV9vdHgyX25wY19hY3Rpb24oc3JjLCBzYmFuaywgKmludGYsICplbmEsCiYjNDM7CQkJICAgICAgZW50cnktJmd0O2FjdGlvbiwgZW50cnktJmd0O3Z0YWdfYWN0aW9uKTsKIH0KIAogc3RhdGljIGludCBucGNfY29weV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLApAQCAtMzE5Nyw2ICYjNDM7MzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLAogCXJzcC0mZ3Q7ZnJlZV9jb3VudCA9IC0xOwogCW11dGV4X3VubG9jaygmYW1wO21jYW0tJmd0O2xvY2spOwogCiYjNDM7CXRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7CiAJcmV0dXJuIDA7CiAKIG5vdF9jbjIwazoKQEAgLTMzODMsNiAmIzQzOzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYywKIAlyc3AtJmd0O2ZyZWVfY291bnQgPSBtY2FtLSZndDtibWFwX2ZjbnQ7CiAKIAltdXRleF91bmxvY2soJmFtcDttY2FtLSZndDtsb2NrKTsKJiM0MzsJdHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwppbmRleCAxOWUwZDE2YjEyZjZmLi4wOTE5YzQzOThkYzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuYwpAQCAtMTMsMyAmIzQzOzEzLDcgQEAgRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX2ludGVycnVwdCk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfcHJvY2Vzcyk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTsKIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX3BhcnNlX2R1bXApOwomIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpOwomIzQzO0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2NhbSk7CiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCmluZGV4IDRjZDBmYzRiMGQyMDMuLjc3ZGMxYjRhNGM2NGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oCkBAIC0xNTksNiAmIzQzOzE1OSwxMDUgQEAgVFJBQ0VfRVZFTlQob3R4Ml9wYXJzZV9kdW1wLAogCQkgICAgICBfX2VudHJ5LSZndDt3MywgX19lbnRyeS0mZ3Q7dzQsIF9fZW50cnktJmd0O3c1KQogKTsKIAomIzQzO1RSQUNFX0VWRU5UKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcywKJiM0MzsJICAgIFRQX1BST1RPKHUxNiBwY2lmdW5jLAomIzQzOwkJICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsCiYjNDM7CQkgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksCiYjNDM7CSAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIHBjaWZ1bmMpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBjb250aWcpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCByZWZfcHJpbykKJiM0MzsJCQkgICAgIF9fZmllbGQodTE2LCByZWZfZW50cnkpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgcmVxX2NvdW50KQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwga3dfdHlwZSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTgsIHZpcnQpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgc3RhcnRfbWNhbV9pZHgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHUxNiwgcnNwX2NvdW50KQomIzQzOwkJCSAgICAgX19maWVsZCh1MTYsIGZyZWVfY291bnQpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7Y29udGlnID0gcmVxLSZndDtjb250aWc7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7cmVmX3ByaW8gPSByZXEtJmd0O3JlZl9wcmlvOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3JlZl9lbnRyeSA9IHJlcS0mZ3Q7cmVmX2VudHJ5OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3JlcV9jb3VudCA9IHJlcS0mZ3Q7Y291bnQ7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7a3dfdHlwZSA9IHJlcS0mZ3Q7a3dfdHlwZTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDt2aXJ0ID0gcmVxLSZndDt2aXJ0OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3N0YXJ0X21jYW1faWR4ID0gcnNwLSZndDtlbnRyeTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDtyc3BfY291bnQgPSByc3AtJmd0O2NvdW50OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2ZyZWVfY291bnQgPSByc3AtJmd0O2ZyZWVfY291bnQ7CiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfcHJpbnRrKCYjMzQ7cGNpZnVuYzolZCByZXFfY29udGlnOiVkIHJlcV9yZWZfcHJpbzolZCByZXEtJmd0O3JlZl9lbnRyeTolZCByZXEtJmd0O3JlcV9jb3VudDolZCByZXEtJmd0O2t3X3R5cGU6JWQgcmVxLSZndDt2aXJ0OiVkIHJzcF9zdGFydF9tY2FtX2lkeDolZCByc3BfY291bnQ6JWQgcnNwX2ZyZWVfY291bnQ6JWRcbiYjMzQ7LAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7cGNpZnVuYywgX19lbnRyeS0mZ3Q7Y29udGlnLCBfX2VudHJ5LSZndDtyZWZfcHJpbywKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O3JlZl9lbnRyeSwgX19lbnRyeS0mZ3Q7cmVxX2NvdW50LCBfX2VudHJ5LSZndDtrd190eXBlLAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7dmlydCwgX19lbnRyeS0mZ3Q7c3RhcnRfbWNhbV9pZHgsIF9fZW50cnktJmd0O3JzcF9jb3VudCwKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O2ZyZWVfY291bnQpCiYjNDM7KTsKJiM0MzsKJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSwKJiM0MzsJICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggZW5hYmxlKSwKJiM0MzsJICAgIFRQX0FSR1MoaW5kZXgsIGVuYWJsZSksCiYjNDM7CSAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwgZW5hKQomIzQzOwkgICAgKSwKJiM0MzsJICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktJmd0O21jYW1faW5kZXggPSBpbmRleDsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDtlbmEgPSBlbmFibGU7CiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfcHJpbnRrKCYjMzQ7bWNhbV9pbmRleDolZCBlbmFibGU6JWRcbiYjMzQ7LCBfX2VudHJ5LSZndDttY2FtX2luZGV4LCBfX2VudHJ5LSZndDtlbmEpCiYjNDM7KTsKJiM0MzsKJiM0MztUUkFDRV9FVkVOVChvdHgyX25wY19jYW0sCiYjNDM7CSAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssCiYjNDM7CQkgICAgIHU2NCB3MF9jYW0wLAomIzQzOwkJICAgICB1NjQgdzBfY2FtMSwKJiM0MzsJCSAgICAgdTY0IHcxX2NhbTAsCiYjNDM7CQkgICAgIHU2NCB3MV9jYW0xKSwKJiM0MzsJICAgIFRQX0FSR1MoaW5kZXgsIGJhbmssCiYjNDM7CQkgICAgdzBfY2FtMCwgdzBfY2FtMSwKJiM0MzsJCSAgICB3MV9jYW0wLCB3MV9jYW0xKSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBiYW5rKQomIzQzOwkJCSAgICAgX19maWVsZCh1NjQsIHcwX2NhbTApCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU2NCwgdzBfY2FtMSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTY0LCB3MV9jYW0wKQomIzQzOwkJCSAgICAgX19maWVsZCh1NjQsIHcxX2NhbTEpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCA9IGluZGV4OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2JhbmsgPSBiYW5rOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cwX2NhbTAgPSB3MF9jYW0wOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cwX2NhbTEgPSB3MF9jYW0xOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cxX2NhbTAgPSB3MV9jYW0wOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3cxX2NhbTEgPSB3MV9jYW0xOwomIzQzOwkgICAgKSwKJiM0MzsJICAgIFRQX3ByaW50aygmIzM0O21jYW1faW5kZXg6JWQgYmFuazolZCB3MF9jYW0wOjB4JWxseCB3MF9jYW0xOjB4JWxseCwgdzFfY2FtMDoweCVsbHgsIHcxX2NhbTE6MHglbGx4XG4mIzM0OywKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O21jYW1faW5kZXgsIF9fZW50cnktJmd0O2JhbmssIF9fZW50cnktJmd0O3cwX2NhbTAsIF9fZW50cnktJmd0O3cwX2NhbTEsCiYjNDM7CQkgICAgICBfX2VudHJ5LSZndDt3MV9jYW0wLCBfX2VudHJ5LSZndDt3MV9jYW0xKQomIzQzOyk7CiYjNDM7CiYjNDM7VFJBQ0VfRVZFTlQob3R4Ml9ucGNfYWN0aW9uLAomIzQzOwkgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBiYW5rLAomIzQzOwkJICAgICB1OCB0eF9pbnRmLCB1OCBlbmFibGUsCiYjNDM7CQkgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksCiYjNDM7CSAgICBUUF9BUkdTKGluZGV4LCBiYW5rLAomIzQzOwkJICAgIHR4X2ludGYsIGVuYWJsZSwKJiM0MzsJCSAgICBhY3QsIHZ0YWdfYWN0KSwKJiM0MzsJICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU4LCBiYW5rKQomIzQzOwkJCSAgICAgX19maWVsZCh1OCwgdHhfaW50ZikKJiM0MzsJCQkgICAgIF9fZmllbGQodTgsIGVuYWJsZSkKJiM0MzsJCQkgICAgIF9fZmllbGQodTY0LCBhY3QpCiYjNDM7CQkJICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpCiYjNDM7CSAgICApLAomIzQzOwkgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCA9IGluZGV4OwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2JhbmsgPSBiYW5rOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O3R4X2ludGYgPSB0eF9pbnRmOwomIzQzOwkJCSAgIF9fZW50cnktJmd0O2VuYWJsZSA9IGVuYWJsZTsKJiM0MzsJCQkgICBfX2VudHJ5LSZndDthY3QgPSBhY3Q7CiYjNDM7CQkJICAgX19lbnRyeS0mZ3Q7dnRhZ19hY3QgPSB2dGFnX2FjdDsKJiM0MzsJICAgICksCiYjNDM7CSAgICBUUF9wcmludGsoJiMzNDttY2FtX2luZGV4OiVkIGJhbms6JWQgdHhfaW50ZjolZCBlbmFibGU6JWQgYWN0aW9uOjB4JWxseCB2dGFnX2FjdGlvbjoweCVsbHhcbiYjMzQ7LAomIzQzOwkJICAgICAgX19lbnRyeS0mZ3Q7bWNhbV9pbmRleCwgX19lbnRyeS0mZ3Q7YmFuaywgX19lbnRyeS0mZ3Q7dHhfaW50ZiwKJiM0MzsJCSAgICAgIF9fZW50cnktJmd0O2VuYWJsZSwgX19lbnRyeS0mZ3Q7YWN0LCBfX2VudHJ5LSZndDt2dGFnX2FjdCkKJiM0MzspOwomIzQzOwogI2VuZGlmIC8qIF9fUlZVX1RSQUNFX0ggKi8KIAogI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzEzCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBydnVfbnBjLmNgLCBgcnZ1X3RyYWNlLmNgLCBhbmQgYHJ2dV90cmFjZS5oYCB3aXRoaW4gdGhlIE9jdGVvblRYMiBNYXJ2ZWxsIEFGIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgdW5kZXJzdGFuZCB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW50cm9kdWNpbmcgbmV3IHRyYWNlcG9pbnRzOiBgdHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzYCwgYHRyYWNlX290eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5YCwgYHRyYWNlX290eDJfbnBjX2NhbWAsIGFuZCBgdHJhY2Vfb3R4Ml9ucGNfYWN0aW9uYCBkZWZpbmVkIGluIHRoZSBoZWFkZXIgYW5kIHRoZW4gZXhwb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBOUEMgY29kZS4gVGhlcmUgYXJlIGFsc28gc29tZSB2YXJpYWJsZSByZW5hbWVzLCB3aGljaCBhcmUgbGlrZWx5IGluc2lnbmlmaWNhbnQuCgpCdXQgaG9sZCBvbiwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGZ1enppbmcgaW1wbGljYXRpb25zLiBTZWN0aW9uIDIgaXMgcHJldHR5IGNsZWFyIG9uIHdoZW4gd2UgY2FuIHNhZmVseSBza2lwIGZ1enppbmcuIEl0IGxpc3RzICYjMzQ7UHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZ+KApiBvciB0cmFjZXBvaW50cyB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzJiMzNDsgYXMgYSAqbm8tZnV6eiogY29uZGl0aW9uLiBUaGVzZSB0cmFjZXBvaW50cyAqYXBwZWFyKiB0byBiZSBqdXN0IHRoYXQg4oCTIHB1cmVseSBmb3Igb2JzZXJ2YWJpbGl0eS4gVGhleSBkb24mIzM5O3Qgc2VlbSB0byBiZSBjaGFuZ2luZyBhbnkgY3JpdGljYWwgZGF0YSBwYXRocyBvciBjb250cm9sIGZsb3cuCgpBbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBkcml2ZXI/IFRoYXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIGhhcmR3YXJlLiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGlzIGFub3RoZXIgKm5vLWZ1enoqIHNjZW5hcmlvISBJdCBleHBsaWNpdGx5IHNheXMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIHRoYXQgKmFyZW4mIzM5O3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgYXJlIGV4Y2x1ZGVkLiBUaGlzIGRyaXZlciAqZGVmaW5pdGVseSogZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBTbywgYmFzZWQgb24gYm90aCB0aGUgbmF0dXJlIG9mIHRoZSB0cmFjZXBvaW50cyBhbmQgdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LCBJJiMzOTttIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIGZsYWdnaW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpJIG5lZWQgdG8gY29uZmlybSBieSBpbnNwZWN0aW5nIHRoZSBjb2RlLCBidXQgSSBkb24mIzM5O3Qgc2VlIGFueSByZWFzb24gdG8gYmVsaWV2ZSBmdXp6aW5nIGlzIHJlcXVpcmVkLiBJIHNob3VsZCBzY2FuIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnkgZm9yIGFueSBnb3RjaGFzLCBqdXN0IHRvIGJlIHN1cmUuIEJ1dCBmcm9tIG15IHF1aWNrIGFuYWx5c2lzLCBpdCBsb29rcyBzYWZlIHRvIHNraXAgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT0NURU9OVFgyX0FGJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTEzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIE1hcnZlbGwgT2N0ZW9uIFRYMiBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGFib3V0IHRvIGRpc3NlY3QgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uIFRYMiBFdGhlcm5ldCBkcml2ZXIgYXJlIGRlZmluZWQsIHdoaWNoIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGNhbiBiZSB0YWlsb3JlZCBmb3IgZGlmZmVyZW50IHN5c3RlbXMgYW5kIHVzZSBjYXNlcy4gSSBleHBlY3QgdG8gZmluZCBkZXBlbmRlbmNpZXMgb24gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgaGFyZHdhcmUtc3BlY2lmaWMgc2V0dGluZ3MsIGFuZCB0aGUgdXN1YWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbG9naWMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgLSB0aGUgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgY2hvaWNlcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBvciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB2YXJpb3VzIE9jdGVvbiBUWDIgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgYm9hcmQgY29uZmlndXJhdGlvbnMgb3IgUEhZIG9wdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJJiMzOTtsbCBhbHNvIGJlIHNjYW5uaW5nIGZvciBhbnkgdW51c3VhbCBvciB2ZW5kb3Itc3BlY2lmaWMgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIHVuaXF1ZSBNYXJ2ZWxsIG9wdGltaXphdGlvbnMgb3IgaGFyZHdhcmUgZmVhdHVyZXMuIE15IGdvYWwgaXMgdG8gZ3Jhc3AgdGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiB0aGlzIGRyaXZlciBhbmQgaG93IGl0IGludGVyZmFjZXMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JraW5nIHN0YWNrLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBrZXkgY29uZmlndXJhYmxlIGVsZW1lbnRzIGFyZSBhbmQgdGhlaXIgcG90ZW50aWFsIGltcGFjdHMgb24gcGVyZm9ybWFuY2UsIHBvd2VyIGNvbnN1bXB0aW9uLCBhbmQgc3VwcG9ydGVkIGhhcmR3YXJlLiBGaW5hbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGl0ZmFsbHMgb3IgY29tbW9uIGlzc3VlcyB0aGF0IG1pZ2h0IGFyaXNlIGR1cmluZyBkZXBsb3ltZW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFxuICAgOTpcdGNvbmZpZyBPQ1RFT05UWDJfQUZcbiAgMTA6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMTE6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAxMjpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDEzOlx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAxNDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTU6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgMTY6XHRcdGhlbHBcbiAgMTc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgUmVzb3VyY2UgVmlydHVhbGl6YXRpb25cbiAgMTg6XHRcdCAgVW5pdCYjMzk7cyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcbiAgMTk6XHRcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxuICAyMDpcdFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cbiAgMjE6XHRcbiAgMjI6XHRjb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcbiAgMjM6XHRcdGJvb2wgXCYjMzQ7RGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcJiMzNDtcbiAgMjQ6XHRcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG4gIDI1Olx0XHRkZWZhdWx0IG5cbiAgMjY6XHRcdGhlbHBcbiAgMjc6XHRcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcbiAgMjg6XHRcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXG4gIDI5Olx0XHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE9DVEVPTlRYMl9QRlxuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICAzMzpcdFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXG4gIDM0Olx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAgMzU6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgMzY6XHRcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcbiAgMzc6XHRcdGRlcGVuZHMgb24gKDY0QklUIFx1MDAyNlx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XG4gIDM4Olx0XHRzZWxlY3QgRElNTElCXG4gIDM5Olx0XHRkZXBlbmRzIG9uIFBDSVxuICA0MDpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NjMKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiA3NzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBOb3QgV29ydGggRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBhIGRlcGVuZGVuY3kgYmFzZWQgb24gYDY0QklUICZhbXA7JmFtcDsgQ09NUElMRV9URVNUYCBvciBgQVJNNjRgLCB3aGljaCBvbiB0aGUgQU1ENjQgdGFyZ2V0IEkmIzM5O20gbG9va2luZyBhdCwgaXMgY29udGluZ2VudCBvbiBgQ09NUElMRV9URVNUYC4gVGhpcyBhbHJlYWR5IGZlZWxzIHNwZWNpZmljLCBidXQgbGV0JiMzOTtzIGRpdmUgZGVlcGVyLiBUaGlzIGBPY3Rlb25UWDJgIHN0dWZmIGlzIHBoeXNpY2FsIGhhcmR3YXJlOiBhIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIGEgU21hcnROSUMvU29DLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIHJlZCBmbGFnLgoKVGhlIGtleSBwb2ludHMgYXJlIHRoYXQgaXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyDigJMgc3R1ZmYgeW91JiMzOTtyZSAqbm90KiBnb2luZyB0byBmaW5kIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgYW5kIGl0IGlzIGdvaW5nIHRvIGJlIHVucmVhY2hhYmxlIGluIGNvbW1vbiBlbnZpcm9ubWVudHMuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBhY3R1YWwgcGF0Y2guIEl0IGVzc2VudGlhbGx5IGFkZHMgdHJhY2Vwb2ludHMgYW5kIHJlbmFtZXMgc29tZSBsb2NhbCB2YXJpYWJsZXMgdG8gcGFzcyB0aG9zZSB2YXJpYWJsZXMgKnRvKiB0aGUgdHJhY2Vwb2ludHMuIFRoZXJlIGlzIG5vIGNoYW5nZSB0byBjb250cm9sIGZsb3cgb3IgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBkZWNvcmF0aXZlIGxvZ2dpbmcuCgpTbywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGRpZmY6IHRoZXkgYWRkZWQgdHJhY2Vwb2ludHMgYW5kIGV4cG9ydGVkIHRoZSBzeW1ib2xzLiBUaGV5IHRoZW4gYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbHMgaW4gYSBjb3VwbGUgb2YgZnVuY3Rpb25zIGluIGBydnVfbnBjLmNgIGFmdGVyIHJlbmFtaW5nIHNvbWUgdmFyaWFibGVzIHRvIHJlYWQgaW50byB0aGUgdHJhY2Vwb2ludCBjYWxscy4KClRoZXJlIGlzIHplcm8gbW9kaWZpY2F0aW9uIHRvIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuIEV2ZXJ5dGhpbmcgcG9pbnRzIHRvIHRoaXMgYmVpbmcgcHVyZWx5IHRyYWNlcG9pbnRzIGFuZCBpbmFjY2Vzc2libGUgaGFyZHdhcmUuCgpUaGlzIGNoZWNrcyB0d28gYm94ZXMgZnJvbSBTZWN0aW9uIDIgb2YgbXkgbWV0aG9kb2xvZ3k6IHB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgYW5kIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4KClRoZXJlZm9yZSwgdGhlIHZlcmRpY3QgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGluc3RydW1lbnRhdGlvbiBhbmQgbG9nZ2luZy4KCk5vdyB0byBwYWNrYWdlIGl0IHVwIGZvciBgc2V0LXJlc3VsdHNgOgoqICAgYFdvcnRoRnV6emluZzogZmFsc2VgCiogICBgRm9jdXNTeW1ib2xzOiBbXWAKKiAgIGBFbmFibGVDb25maWdzOiBbXWAKKiAgIGBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gb2YgdGhlIGZ1enppbmcgdmVyZGljdC5gCgpSZWFkeSB0byBleGVjdXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIHRyYWNlcG9pbnRzIChhbmQgbG9jYWwgdmFyaWFibGUgcmVuYW1lcyB0byBmZWVkIHRob3NlIHRyYWNlcG9pbnRzKSB3aXRob3V0IGFsdGVyaW5nIGNvbnRyb2wgZmxvdyBvciBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCB3aGljaCB0YXJnZXRzIHNwZWNpZmljIHZlbmRvciBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6NDc6MTcuNDY1Nzc2MTc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0NDA2NjgzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdHJhY2Vwb2ludHMgKGFuZCBsb2NhbCB2YXJpYWJsZSByZW5hbWVzIHRvIGZlZWQgdGhvc2UgdHJhY2Vwb2ludHMpIHdpdGhvdXQgYWx0ZXJpbmcgY29udHJvbCBmbG93IG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIHRhcmdldHMgc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoxNy40NjU3ODEzNTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MTkzOTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6NDc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXFxuaW5kZXggYzM0ZjhkODZjYzhhNS4uYWUzNzM1NTg5NzVlNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmNcXG5AQCAtMjAsNiArMjAsNyBAQFxcbiAjaW5jbHVkZSBcXFwicnZ1X25wYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY24yMGsvcmVnLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJsbWFjX2NvbW1vbi5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjcnZ1X3RyYWNlLmhcXHUwMDNlXFxuIFxcbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9QRlxcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfTklYTEZcXHQxIC8qIFVjYXN0IGZvciBMRnMgKi9cXG5AQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRpbnQgYmFuayA9IG5wY19nZXRfYmFuayhtY2FtLCBpbmRleCk7XFxuIFxcdGludCBhY3RiYW5rID0gYmFuaztcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5KGluZGV4LCAodTgpZW5hYmxlKTtcXG4gXFx0aWYgKGlzX2NuMjBrKHJ2dS1cXHUwMDNlcGRldikpIHtcXG4gXFx0XFx0aWYgKG5wY19jbjIwa19lbmFibGVfbWNhbV9lbnRyeShydnUsIGJsa2FkZHIsIGluZGV4LCBlbmFibGUpKVxcbiBcXHRcXHRcXHRkZXZfZXJyKHJ2dS1cXHUwMDNlZGV2LCBcXFwiRXJyb3IgdG8gJXMgbWNhbSAldSBlbnRyeVxcXFxuXFxcIixcXG5AQCAtNTIxLDEwICs1MjMsMTAgQEAgc3RhdGljIHZvaWQgbnBjX2NvbmZpZ19tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgYm9vbCBlbmFibGUpXFxuIHtcXG4gXFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xcbitcXHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcXG4gXFx0aW50IGt3ID0gMCwgYWN0YmFuaywgYWN0aW5kZXg7XFxuIFxcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFxcdTAwMjYgMHgzO1xcbiBcXHR1OCB0eF9pbnRmID0gaW50ZjtcXG4tXFx0dTY0IGNhbTAsIGNhbTE7XFxuIFxcbiBcXHRhY3RiYW5rID0gYmFuazsgLyogU2F2ZSBiYW5rIGlkLCB0byBzZXQgYWN0aW9uIGxhdGVyIG9uICovXFxuIFxcdGFjdGluZGV4ID0gaW5kZXg7XFxuQEAgLTU2MSwxNyArNTYzLDE4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0XFx0XFx0ICAgIHR4X2ludGZfbWFzayk7XFxuIFxcbiBcXHRcXHQvKiBTZXQgdGhlIG1hdGNoIGtleSAqL1xcbi1cXHRcXHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcXHUwMDI2Y2FtMCwgXFx1MDAyNmNhbTEpO1xcbitcXHRcXHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcXHUwMDI2dzBfY2FtMCwgXFx1MDAyNncwX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMSksIHcwX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIHcwX2NhbTApO1xcbiBcXG4tXFx0XFx0bnBjX2dldF9rZXl3b3JkKGVudHJ5LCBrdyArIDEsIFxcdTAwMjZjYW0wLCBcXHUwMDI2Y2FtMSk7XFxuK1xcdFxcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgKyAxLCBcXHUwMDI2dzFfY2FtMCwgXFx1MDAyNncxX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMSksIHcxX2NhbTEpO1xcbiBcXHRcXHRydnVfd3JpdGU2NChydnUsIGJsa2FkZHIsXFxuLVxcdFxcdFxcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDApLCBjYW0wKTtcXG4rXFx0XFx0XFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xcbitcXHRcXHR0cmFjZV9vdHgyX25wY19jYW0oaW5kZXgsIGJhbmssIHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTEpO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBQRiBpbnN0YWxsaW5nIFZGIHJ1bGUgKi9cXG5AQCAtNTg2LDYgKzU4OSw4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLCBOUENfQUZfTUNBTUVYX0JBTktYX1RBR19BQ1QoaW5kZXgsIGFjdGJhbmspLFxcbiBcXHRcXHQgICAgZW50cnktXFx1MDAzZXZ0YWdfYWN0aW9uKTtcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcXG4rXFx0XFx0XFx0ICAgICAgZW50cnktXFx1MDAzZWFjdGlvbiwgZW50cnktXFx1MDAzZXZ0YWdfYWN0aW9uKTtcXG4gXFx0LyogRW5hYmxlIHRoZSBlbnRyeSAqL1xcbiBcXHRpZiAoZW5hYmxlKVxcbiBcXHRcXHRucGNfZW5hYmxlX21jYW1fZW50cnkocnZ1LCBtY2FtLCBibGthZGRyLCBhY3RpbmRleCwgdHJ1ZSk7XFxuQEAgLTU5NiwyNCArNjAxLDI1IEBAIHZvaWQgbnBjX3JlYWRfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcXG4gXFx0XFx0XFx0IHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgdTggKmludGYsIHU4ICplbmEpXFxuIHtcXG4gXFx0aW50IHNiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIHNyYyk7XFxuK1xcdHU2NCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xO1xcbiBcXHRpbnQgYmFuaywga3cgPSAwO1xcbi1cXHR1NjQgY2FtMCwgY2FtMTtcXG4gXFxuIFxcdHNyYyBcXHUwMDI2PSAobWNhbS1cXHUwMDNlYmFua3NpemUgLSAxKTtcXG4gXFx0YmFuayA9IHNiYW5rO1xcbiBcXG4gXFx0Zm9yICg7IGJhbmsgXFx1MDAzYyAoc2JhbmsgKyBtY2FtLVxcdTAwM2ViYW5rc19wZXJfZW50cnkpOyBiYW5rKyssIGt3ID0ga3cgKyAyKSB7XFxuLVxcdFxcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAxKSk7XFxuLVxcdFxcdGNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoc3JjLCBiYW5rLCAwKSk7XFxuLVxcdFxcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3csIGNhbTAsIGNhbTEpO1xcbitcXHRcXHR3MF9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xcbitcXHRcXHR3MF9jYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMCkpO1xcbitcXHRcXHRucGNfZmlsbF9lbnRyeXdvcmQoZW50cnksIGt3LCB3MF9jYW0wLCB3MF9jYW0xKTtcXG4gXFxuLVxcdFxcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAxKSk7XFxuLVxcdFxcdGNhbTAgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcXG4tXFx0XFx0XFx0XFx0ICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7XFxuLVxcdFxcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgKyAxLCBjYW0wLCBjYW0xKTtcXG4rXFx0XFx0dzFfY2FtMSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcXG4rXFx0XFx0dzFfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcXG4rXFx0XFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyArIDEsIHcxX2NhbTAsIHcxX2NhbTEpO1xcbitcXHRcXHR0cmFjZV9vdHgyX25wY19jYW0oc3JjLCBiYW5rLCB3MF9jYW0wLCB3MF9jYW0xLCB3MV9jYW0wLCB3MV9jYW0xKTtcXG4gXFx0fVxcbiBcXG4gXFx0ZW50cnktXFx1MDAzZWFjdGlvbiA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxcbkBAIC02MjUsNiArNjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxcbiBcXHRcXHRcXHQgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfSU5URihzcmMsIHNiYW5rLCAxKSkgXFx1MDAyNiAzO1xcbiBcXHQqZW5hID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXFxuIFxcdFxcdFxcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DRkcoc3JjLCBzYmFuaykpIFxcdTAwMjYgMTtcXG4rXFx0dHJhY2Vfb3R4Ml9ucGNfYWN0aW9uKHNyYywgc2JhbmssICppbnRmLCAqZW5hLFxcbitcXHRcXHRcXHQgICAgICBlbnRyeS1cXHUwMDNlYWN0aW9uLCBlbnRyeS1cXHUwMDNldnRhZ19hY3Rpb24pO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG5wY19jb3B5X21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXFxuQEAgLTMxOTcsNiArMzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxcbiBcXHRyc3AtXFx1MDAzZWZyZWVfY291bnQgPSAtMTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtY2FtLVxcdTAwM2Vsb2NrKTtcXG4gXFxuK1xcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XFxuIFxcdHJldHVybiAwO1xcbiBcXG4gbm90X2NuMjBrOlxcbkBAIC0zMzgzLDYgKzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYyxcXG4gXFx0cnNwLVxcdTAwM2VmcmVlX2NvdW50ID0gbWNhbS1cXHUwMDNlYm1hcF9mY250O1xcbiBcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtY2FtLVxcdTAwM2Vsb2NrKTtcXG4rXFx0dHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmNcXG5pbmRleCAxOWUwZDE2YjEyZjZmLi4wOTE5YzQzOThkYzRjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmNcXG5AQCAtMTMsMyArMTMsNyBAQCBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfaW50ZXJydXB0KTtcXG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX3Byb2Nlc3MpO1xcbiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9tc2dfc3RhdHVzKTtcXG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfcGFyc2VfZHVtcCk7XFxuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkpO1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0wob3R4Ml9ucGNfY2FtKTtcXG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcXG5pbmRleCA0Y2QwZmM0YjBkMjAzLi43N2RjMWI0YTRjNjRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmhcXG5AQCAtMTU5LDYgKzE1OSwxMDUgQEAgVFJBQ0VfRVZFTlQob3R4Ml9wYXJzZV9kdW1wLFxcbiBcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2V3MywgX19lbnRyeS1cXHUwMDNldzQsIF9fZW50cnktXFx1MDAzZXc1KVxcbiApO1xcbiBcXG4rVFJBQ0VfRVZFTlQob3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzLFxcbitcXHQgICAgVFBfUFJPVE8odTE2IHBjaWZ1bmMsXFxuK1xcdFxcdCAgICAgc3RydWN0IG5wY19tY2FtX2FsbG9jX2VudHJ5X3JlcSAqcmVxLFxcbitcXHRcXHQgICAgIHN0cnVjdCBucGNfbWNhbV9hbGxvY19lbnRyeV9yc3AgKnJzcCksXFxuK1xcdCAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSxcXG4rXFx0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIHBjaWZ1bmMpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgY29udGlnKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIHJlZl9wcmlvKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTE2LCByZWZfZW50cnkpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIHJlcV9jb3VudClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBrd190eXBlKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIHZpcnQpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIHN0YXJ0X21jYW1faWR4KVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTE2LCByc3BfY291bnQpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1MTYsIGZyZWVfY291bnQpXFxuK1xcdCAgICApLFxcbitcXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cXHUwMDNlY29udGlnID0gcmVxLVxcdTAwM2Vjb250aWc7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXJlZl9wcmlvID0gcmVxLVxcdTAwM2VyZWZfcHJpbztcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlcmVmX2VudHJ5ID0gcmVxLVxcdTAwM2VyZWZfZW50cnk7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXJlcV9jb3VudCA9IHJlcS1cXHUwMDNlY291bnQ7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZWt3X3R5cGUgPSByZXEtXFx1MDAzZWt3X3R5cGU7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXZpcnQgPSByZXEtXFx1MDAzZXZpcnQ7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXN0YXJ0X21jYW1faWR4ID0gcnNwLVxcdTAwM2VlbnRyeTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlcnNwX2NvdW50ID0gcnNwLVxcdTAwM2Vjb3VudDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlZnJlZV9jb3VudCA9IHJzcC1cXHUwMDNlZnJlZV9jb3VudDtcXG4rXFx0ICAgICksXFxuK1xcdCAgICBUUF9wcmludGsoXFxcInBjaWZ1bmM6JWQgcmVxX2NvbnRpZzolZCByZXFfcmVmX3ByaW86JWQgcmVxLVxcdTAwM2VyZWZfZW50cnk6JWQgcmVxLVxcdTAwM2VyZXFfY291bnQ6JWQgcmVxLVxcdTAwM2Vrd190eXBlOiVkIHJlcS1cXHUwMDNldmlydDolZCByc3Bfc3RhcnRfbWNhbV9pZHg6JWQgcnNwX2NvdW50OiVkIHJzcF9mcmVlX2NvdW50OiVkXFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VwY2lmdW5jLCBfX2VudHJ5LVxcdTAwM2Vjb250aWcsIF9fZW50cnktXFx1MDAzZXJlZl9wcmlvLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VyZWZfZW50cnksIF9fZW50cnktXFx1MDAzZXJlcV9jb3VudCwgX19lbnRyeS1cXHUwMDNla3dfdHlwZSxcXG4rXFx0XFx0ICAgICAgX19lbnRyeS1cXHUwMDNldmlydCwgX19lbnRyeS1cXHUwMDNlc3RhcnRfbWNhbV9pZHgsIF9fZW50cnktXFx1MDAzZXJzcF9jb3VudCxcXG4rXFx0XFx0ICAgICAgX19lbnRyeS1cXHUwMDNlZnJlZV9jb3VudClcXG4rKTtcXG4rXFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2VuYWJsZV9tY2FtX2VudHJ5LFxcbitcXHQgICAgVFBfUFJPVE8odTE2IGluZGV4LCB1OCBlbmFibGUpLFxcbitcXHQgICAgVFBfQVJHUyhpbmRleCwgZW5hYmxlKSxcXG4rXFx0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgZW5hKVxcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlZW5hID0gZW5hYmxlO1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBlbmFibGU6JWRcXFxcblxcXCIsIF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXFx1MDAzZWVuYSlcXG4rKTtcXG4rXFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2NhbSxcXG4rXFx0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcXG4rXFx0XFx0ICAgICB1NjQgdzBfY2FtMCxcXG4rXFx0XFx0ICAgICB1NjQgdzBfY2FtMSxcXG4rXFx0XFx0ICAgICB1NjQgdzFfY2FtMCxcXG4rXFx0XFx0ICAgICB1NjQgdzFfY2FtMSksXFxuK1xcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxcbitcXHRcXHQgICAgdzBfY2FtMCwgdzBfY2FtMSxcXG4rXFx0XFx0ICAgIHcxX2NhbTAsIHcxX2NhbTEpLFxcbitcXHQgICAgVFBfU1RSVUNUX19lbnRyeShfX2ZpZWxkKHUxNiwgbWNhbV9pbmRleClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBiYW5rKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0wKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0xKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0wKVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0xKVxcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX2Zhc3RfYXNzaWduKF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlYmFuayA9IGJhbms7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXcwX2NhbTAgPSB3MF9jYW0wO1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2V3MF9jYW0xID0gdzBfY2FtMTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNldzFfY2FtMCA9IHcxX2NhbTA7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZXcxX2NhbTEgPSB3MV9jYW0xO1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHcwX2NhbTA6MHglbGx4IHcwX2NhbTE6MHglbGx4LCB3MV9jYW0wOjB4JWxseCwgdzFfY2FtMToweCVsbHhcXFxcblxcXCIsXFxuK1xcdFxcdCAgICAgIF9fZW50cnktXFx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXFx1MDAzZWJhbmssIF9fZW50cnktXFx1MDAzZXcwX2NhbTAsIF9fZW50cnktXFx1MDAzZXcwX2NhbTEsXFxuK1xcdFxcdCAgICAgIF9fZW50cnktXFx1MDAzZXcxX2NhbTAsIF9fZW50cnktXFx1MDAzZXcxX2NhbTEpXFxuKyk7XFxuK1xcbitUUkFDRV9FVkVOVChvdHgyX25wY19hY3Rpb24sXFxuK1xcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXFxuK1xcdFxcdCAgICAgdTggdHhfaW50ZiwgdTggZW5hYmxlLFxcbitcXHRcXHQgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksXFxuK1xcdCAgICBUUF9BUkdTKGluZGV4LCBiYW5rLFxcbitcXHRcXHQgICAgdHhfaW50ZiwgZW5hYmxlLFxcbitcXHRcXHQgICAgYWN0LCB2dGFnX2FjdCksXFxuK1xcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxcbitcXHRcXHRcXHQgICAgIF9fZmllbGQodTgsIGJhbmspXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1OCwgdHhfaW50ZilcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU4LCBlbmFibGUpXFxuK1xcdFxcdFxcdCAgICAgX19maWVsZCh1NjQsIGFjdClcXG4rXFx0XFx0XFx0ICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpXFxuK1xcdCAgICApLFxcbitcXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cXHUwMDNlbWNhbV9pbmRleCA9IGluZGV4O1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2ViYW5rID0gYmFuaztcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XFxuK1xcdFxcdFxcdCAgIF9fZW50cnktXFx1MDAzZWVuYWJsZSA9IGVuYWJsZTtcXG4rXFx0XFx0XFx0ICAgX19lbnRyeS1cXHUwMDNlYWN0ID0gYWN0O1xcbitcXHRcXHRcXHQgICBfX2VudHJ5LVxcdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xcbitcXHQgICAgKSxcXG4rXFx0ICAgIFRQX3ByaW50ayhcXFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxcXG5cXFwiLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVxcdTAwM2ViYW5rLCBfX2VudHJ5LVxcdTAwM2V0eF9pbnRmLFxcbitcXHRcXHQgICAgICBfX2VudHJ5LVxcdTAwM2VlbmFibGUsIF9fZW50cnktXFx1MDAzZWFjdCwgX19lbnRyeS1cXHUwMDNldnRhZ19hY3QpXFxuKyk7XFxuK1xcbiAjZW5kaWYgLyogX19SVlVfVFJBQ0VfSCAqL1xcbiBcXG4gI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoxOC4wMDk4MTAzMjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE2ODk2NjIxMTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgdHJhY2Vwb2ludHMgKGFuZCBsb2NhbCB2YXJpYWJsZSByZW5hbWVzIHRvIGZlZWQgdGhvc2UgdHJhY2Vwb2ludHMpIHdpdGhvdXQgYWx0ZXJpbmcgY29udHJvbCBmbG93IG9yIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbG9jYXRlZCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIHdoaWNoIHRhcmdldHMgc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5MTBjOGM2NDg1ZmQzYTg0NGY1YTNmODQ2MTJiMzY3ZTU2ZjFmMDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAwMzo0NzoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuaW5kZXggYzM0ZjhkODZjYzhhNS4uYWUzNzM1NTg5NzVlNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jXG5AQCAtMjAsNiArMjAsNyBAQFxuICNpbmNsdWRlIFwicnZ1X25wYy5oXCJcbiAjaW5jbHVkZSBcImNuMjBrL3JlZy5oXCJcbiAjaW5jbHVkZSBcImxtYWNfY29tbW9uLmhcIlxuKyNpbmNsdWRlIFx1MDAzY3J2dV90cmFjZS5oXHUwMDNlXG4gXG4gI2RlZmluZSBSU1ZEX01DQU1fRU5UUklFU19QRVJfUEZcdDMgLyogQnJvYWRjYXN0LCBQcm9taXNjIGFuZCBBbGxNdWx0aWNhc3QgKi9cbiAjZGVmaW5lIFJTVkRfTUNBTV9FTlRSSUVTX1BFUl9OSVhMRlx0MSAvKiBVY2FzdCBmb3IgTEZzICovXG5AQCAtMjU5LDYgKzI2MCw3IEBAIHZvaWQgbnBjX2VuYWJsZV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xuIFx0aW50IGFjdGJhbmsgPSBiYW5rO1xuIFxuK1x0dHJhY2Vfb3R4Ml9ucGNfZW5hYmxlX21jYW1fZW50cnkoaW5kZXgsICh1OCllbmFibGUpO1xuIFx0aWYgKGlzX2NuMjBrKHJ2dS1cdTAwM2VwZGV2KSkge1xuIFx0XHRpZiAobnBjX2NuMjBrX2VuYWJsZV9tY2FtX2VudHJ5KHJ2dSwgYmxrYWRkciwgaW5kZXgsIGVuYWJsZSkpXG4gXHRcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcIkVycm9yIHRvICVzIG1jYW0gJXUgZW50cnlcXG5cIixcbkBAIC01MjEsMTAgKzUyMywxMCBAQCBzdGF0aWMgdm9pZCBucGNfY29uZmlnX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0XHQgIHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgYm9vbCBlbmFibGUpXG4ge1xuIFx0aW50IGJhbmsgPSBucGNfZ2V0X2JhbmsobWNhbSwgaW5kZXgpO1xuK1x0dTY0IHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTE7XG4gXHRpbnQga3cgPSAwLCBhY3RiYW5rLCBhY3RpbmRleDtcbiBcdHU4IHR4X2ludGZfbWFzayA9IH5pbnRmIFx1MDAyNiAweDM7XG4gXHR1OCB0eF9pbnRmID0gaW50Zjtcbi1cdHU2NCBjYW0wLCBjYW0xO1xuIFxuIFx0YWN0YmFuayA9IGJhbms7IC8qIFNhdmUgYmFuayBpZCwgdG8gc2V0IGFjdGlvbiBsYXRlciBvbiAqL1xuIFx0YWN0aW5kZXggPSBpbmRleDtcbkBAIC01NjEsMTcgKzU2MywxOCBAQCBzdGF0aWMgdm9pZCBucGNfY29uZmlnX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0ICAgIHR4X2ludGZfbWFzayk7XG4gXG4gXHRcdC8qIFNldCB0aGUgbWF0Y2gga2V5ICovXG4tXHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3csIFx1MDAyNmNhbTAsIFx1MDAyNmNhbTEpO1xuK1x0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3LCBcdTAwMjZ3MF9jYW0wLCBcdTAwMjZ3MF9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzAoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcbitcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAxKSwgdzBfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4rXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChpbmRleCwgYmFuaywgMCksIHcwX2NhbTApO1xuIFxuLVx0XHRucGNfZ2V0X2tleXdvcmQoZW50cnksIGt3ICsgMSwgXHUwMDI2Y2FtMCwgXHUwMDI2Y2FtMSk7XG4rXHRcdG5wY19nZXRfa2V5d29yZChlbnRyeSwga3cgKyAxLCBcdTAwMjZ3MV9jYW0wLCBcdTAwMjZ3MV9jYW0xKTtcbiBcdFx0cnZ1X3dyaXRlNjQocnZ1LCBibGthZGRyLFxuLVx0XHRcdCAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoaW5kZXgsIGJhbmssIDEpLCBjYW0xKTtcbitcdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAxKSwgdzFfY2FtMSk7XG4gXHRcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHQgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKGluZGV4LCBiYW5rLCAwKSwgY2FtMCk7XG4rXHRcdFx0ICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShpbmRleCwgYmFuaywgMCksIHcxX2NhbTApO1xuK1x0XHR0cmFjZV9vdHgyX25wY19jYW0oaW5kZXgsIGJhbmssIHcwX2NhbTAsIHcwX2NhbTEsIHcxX2NhbTAsIHcxX2NhbTEpO1xuIFx0fVxuIFxuIFx0LyogUEYgaW5zdGFsbGluZyBWRiBydWxlICovXG5AQCAtNTg2LDYgKzU4OSw4IEBAIHN0YXRpYyB2b2lkIG5wY19jb25maWdfbWNhbV9lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBucGNfbWNhbSAqbWNhbSxcbiBcdHJ2dV93cml0ZTY0KHJ2dSwgYmxrYWRkciwgTlBDX0FGX01DQU1FWF9CQU5LWF9UQUdfQUNUKGluZGV4LCBhY3RiYW5rKSxcbiBcdFx0ICAgIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiBcbitcdHRyYWNlX290eDJfbnBjX2FjdGlvbihpbmRleCwgYWN0YmFuaywgdHhfaW50ZiwgKHU4KWVuYWJsZSxcbitcdFx0XHQgICAgICBlbnRyeS1cdTAwM2VhY3Rpb24sIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiBcdC8qIEVuYWJsZSB0aGUgZW50cnkgKi9cbiBcdGlmIChlbmFibGUpXG4gXHRcdG5wY19lbmFibGVfbWNhbV9lbnRyeShydnUsIG1jYW0sIGJsa2FkZHIsIGFjdGluZGV4LCB0cnVlKTtcbkBAIC01OTYsMjQgKzYwMSwyNSBAQCB2b2lkIG5wY19yZWFkX21jYW1fZW50cnkoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sXG4gXHRcdFx0IHN0cnVjdCBtY2FtX2VudHJ5ICplbnRyeSwgdTggKmludGYsIHU4ICplbmEpXG4ge1xuIFx0aW50IHNiYW5rID0gbnBjX2dldF9iYW5rKG1jYW0sIHNyYyk7XG4rXHR1NjQgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMTtcbiBcdGludCBiYW5rLCBrdyA9IDA7XG4tXHR1NjQgY2FtMCwgY2FtMTtcbiBcbiBcdHNyYyBcdTAwMjY9IChtY2FtLVx1MDAzZWJhbmtzaXplIC0gMSk7XG4gXHRiYW5rID0gc2Jhbms7XG4gXG4gXHRmb3IgKDsgYmFuayBcdTAwM2MgKHNiYW5rICsgbWNhbS1cdTAwM2ViYW5rc19wZXJfZW50cnkpOyBiYW5rKyssIGt3ID0ga3cgKyAyKSB7XG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgY2FtMCwgY2FtMSk7XG4rXHRcdHcwX2NhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbitcdFx0XHRcdCAgICAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cwKHNyYywgYmFuaywgMSkpO1xuK1x0XHR3MF9jYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4rXHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMChzcmMsIGJhbmssIDApKTtcbitcdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdywgdzBfY2FtMCwgdzBfY2FtMSk7XG4gXG4tXHRcdGNhbTEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbi1cdFx0XHRcdCAgTlBDX0FGX01DQU1FWF9CQU5LWF9DQU1YX1cxKHNyYywgYmFuaywgMSkpO1xuLVx0XHRjYW0wID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4tXHRcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDApKTtcbi1cdFx0bnBjX2ZpbGxfZW50cnl3b3JkKGVudHJ5LCBrdyArIDEsIGNhbTAsIGNhbTEpO1xuK1x0XHR3MV9jYW0xID0gcnZ1X3JlYWQ2NChydnUsIGJsa2FkZHIsXG4rXHRcdFx0XHQgICAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9XMShzcmMsIGJhbmssIDEpKTtcbitcdFx0dzFfY2FtMCA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLFxuK1x0XHRcdFx0ICAgICBOUENfQUZfTUNBTUVYX0JBTktYX0NBTVhfVzEoc3JjLCBiYW5rLCAwKSk7XG4rXHRcdG5wY19maWxsX2VudHJ5d29yZChlbnRyeSwga3cgKyAxLCB3MV9jYW0wLCB3MV9jYW0xKTtcbitcdFx0dHJhY2Vfb3R4Ml9ucGNfY2FtKHNyYywgYmFuaywgdzBfY2FtMCwgdzBfY2FtMSwgdzFfY2FtMCwgdzFfY2FtMSk7XG4gXHR9XG4gXG4gXHRlbnRyeS1cdTAwM2VhY3Rpb24gPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbkBAIC02MjUsNiArNjMxLDggQEAgdm9pZCBucGNfcmVhZF9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuIFx0XHRcdCAgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0FNWF9JTlRGKHNyYywgc2JhbmssIDEpKSBcdTAwMjYgMztcbiBcdCplbmEgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkcixcbiBcdFx0XHQgIE5QQ19BRl9NQ0FNRVhfQkFOS1hfQ0ZHKHNyYywgc2JhbmspKSBcdTAwMjYgMTtcbitcdHRyYWNlX290eDJfbnBjX2FjdGlvbihzcmMsIHNiYW5rLCAqaW50ZiwgKmVuYSxcbitcdFx0XHQgICAgICBlbnRyeS1cdTAwM2VhY3Rpb24sIGVudHJ5LVx1MDAzZXZ0YWdfYWN0aW9uKTtcbiB9XG4gXG4gc3RhdGljIGludCBucGNfY29weV9tY2FtX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5wY19tY2FtICptY2FtLFxuQEAgLTMxOTcsNiArMzIwNSw3IEBAIHN0YXRpYyBpbnQgbnBjX21jYW1fYWxsb2NfZW50cmllcyhzdHJ1Y3QgbnBjX21jYW0gKm1jYW0sIHUxNiBwY2lmdW5jLFxuIFx0cnNwLVx1MDAzZWZyZWVfY291bnQgPSAtMTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZtY2FtLVx1MDAzZWxvY2spO1xuIFxuK1x0dHJhY2Vfb3R4Ml9ucGNfbWNhbV9hbGxvY19lbnRyaWVzKHBjaWZ1bmMsIHJlcSwgcnNwKTtcbiBcdHJldHVybiAwO1xuIFxuIG5vdF9jbjIwazpcbkBAIC0zMzgzLDYgKzMzOTIsNyBAQCBzdGF0aWMgaW50IG5wY19tY2FtX2FsbG9jX2VudHJpZXMoc3RydWN0IG5wY19tY2FtICptY2FtLCB1MTYgcGNpZnVuYyxcbiBcdHJzcC1cdTAwM2VmcmVlX2NvdW50ID0gbWNhbS1cdTAwM2VibWFwX2ZjbnQ7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2bWNhbS1cdTAwM2Vsb2NrKTtcbitcdHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyhwY2lmdW5jLCByZXEsIHJzcCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuaW5kZXggMTllMGQxNmIxMmY2Zi4uMDkxOWM0Mzk4ZGM0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuY1xuQEAgLTEzLDMgKzEzLDcgQEAgRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX2ludGVycnVwdCk7XG4gRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbXNnX3Byb2Nlc3MpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX21zZ19zdGF0dXMpO1xuIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX3BhcnNlX2R1bXApO1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19tY2FtX2FsbG9jX2VudHJpZXMpO1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSk7XG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2NhbSk7XG4rRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKG90eDJfbnBjX2FjdGlvbik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3RyYWNlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaFxuaW5kZXggNGNkMGZjNGIwZDIwMy4uNzdkYzFiNGE0YzY0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV90cmFjZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfdHJhY2UuaFxuQEAgLTE1OSw2ICsxNTksMTA1IEBAIFRSQUNFX0VWRU5UKG90eDJfcGFyc2VfZHVtcCxcbiBcdFx0ICAgICAgX19lbnRyeS1cdTAwM2V3MywgX19lbnRyeS1cdTAwM2V3NCwgX19lbnRyeS1cdTAwM2V3NSlcbiApO1xuIFxuK1RSQUNFX0VWRU5UKG90eDJfbnBjX21jYW1fYWxsb2NfZW50cmllcyxcbitcdCAgICBUUF9QUk9UTyh1MTYgcGNpZnVuYyxcbitcdFx0ICAgICBzdHJ1Y3QgbnBjX21jYW1fYWxsb2NfZW50cnlfcmVxICpyZXEsXG4rXHRcdCAgICAgc3RydWN0IG5wY19tY2FtX2FsbG9jX2VudHJ5X3JzcCAqcnNwKSxcbitcdCAgICBUUF9BUkdTKHBjaWZ1bmMsIHJlcSwgcnNwKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBwY2lmdW5jKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgY29udGlnKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgcmVmX3ByaW8pXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHUxNiwgcmVmX2VudHJ5KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHJlcV9jb3VudClcbitcdFx0XHQgICAgIF9fZmllbGQodTgsIGt3X3R5cGUpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU4LCB2aXJ0KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHN0YXJ0X21jYW1faWR4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1MTYsIHJzcF9jb3VudClcbitcdFx0XHQgICAgIF9fZmllbGQodTE2LCBmcmVlX2NvdW50KVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2Vjb250aWcgPSByZXEtXHUwMDNlY29udGlnO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVmX3ByaW8gPSByZXEtXHUwMDNlcmVmX3ByaW87XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VyZWZfZW50cnkgPSByZXEtXHUwMDNlcmVmX2VudHJ5O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlcmVxX2NvdW50ID0gcmVxLVx1MDAzZWNvdW50O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNla3dfdHlwZSA9IHJlcS1cdTAwM2Vrd190eXBlO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldmlydCA9IHJlcS1cdTAwM2V2aXJ0O1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNlc3RhcnRfbWNhbV9pZHggPSByc3AtXHUwMDNlZW50cnk7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2Vyc3BfY291bnQgPSByc3AtXHUwMDNlY291bnQ7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VmcmVlX2NvdW50ID0gcnNwLVx1MDAzZWZyZWVfY291bnQ7XG4rXHQgICAgKSxcbitcdCAgICBUUF9wcmludGsoXCJwY2lmdW5jOiVkIHJlcV9jb250aWc6JWQgcmVxX3JlZl9wcmlvOiVkIHJlcS1cdTAwM2VyZWZfZW50cnk6JWQgcmVxLVx1MDAzZXJlcV9jb3VudDolZCByZXEtXHUwMDNla3dfdHlwZTolZCByZXEtXHUwMDNldmlydDolZCByc3Bfc3RhcnRfbWNhbV9pZHg6JWQgcnNwX2NvdW50OiVkIHJzcF9mcmVlX2NvdW50OiVkXFxuXCIsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlcGNpZnVuYywgX19lbnRyeS1cdTAwM2Vjb250aWcsIF9fZW50cnktXHUwMDNlcmVmX3ByaW8sXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlcmVmX2VudHJ5LCBfX2VudHJ5LVx1MDAzZXJlcV9jb3VudCwgX19lbnRyeS1cdTAwM2Vrd190eXBlLFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXZpcnQsIF9fZW50cnktXHUwMDNlc3RhcnRfbWNhbV9pZHgsIF9fZW50cnktXHUwMDNlcnNwX2NvdW50LFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZWZyZWVfY291bnQpXG4rKTtcbitcbitUUkFDRV9FVkVOVChvdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeSxcbitcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGVuYWJsZSksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgZW5hYmxlKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgZW5hKVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VlbmEgPSBlbmFibGU7XG4rXHQgICAgKSxcbitcdCAgICBUUF9wcmludGsoXCJtY2FtX2luZGV4OiVkIGVuYWJsZTolZFxcblwiLCBfX2VudHJ5LVx1MDAzZW1jYW1faW5kZXgsIF9fZW50cnktXHUwMDNlZW5hKVxuKyk7XG4rXG4rVFJBQ0VfRVZFTlQob3R4Ml9ucGNfY2FtLFxuK1x0ICAgIFRQX1BST1RPKHUxNiBpbmRleCwgdTggYmFuayxcbitcdFx0ICAgICB1NjQgdzBfY2FtMCxcbitcdFx0ICAgICB1NjQgdzBfY2FtMSxcbitcdFx0ICAgICB1NjQgdzFfY2FtMCxcbitcdFx0ICAgICB1NjQgdzFfY2FtMSksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbitcdFx0ICAgIHcwX2NhbTAsIHcwX2NhbTEsXG4rXHRcdCAgICB3MV9jYW0wLCB3MV9jYW0xKSxcbitcdCAgICBUUF9TVFJVQ1RfX2VudHJ5KF9fZmllbGQodTE2LCBtY2FtX2luZGV4KVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgYmFuaylcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCB3MF9jYW0wKVxuK1x0XHRcdCAgICAgX19maWVsZCh1NjQsIHcwX2NhbTEpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdzFfY2FtMClcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCB3MV9jYW0xKVxuK1x0ICAgICksXG4rXHQgICAgVFBfZmFzdF9hc3NpZ24oX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4ID0gaW5kZXg7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2ViYW5rID0gYmFuaztcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXcwX2NhbTAgPSB3MF9jYW0wO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldzBfY2FtMSA9IHcwX2NhbTE7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2V3MV9jYW0wID0gdzFfY2FtMDtcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZXcxX2NhbTEgPSB3MV9jYW0xO1xuK1x0ICAgICksXG4rXHQgICAgVFBfcHJpbnRrKFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHcwX2NhbTA6MHglbGx4IHcwX2NhbTE6MHglbGx4LCB3MV9jYW0wOjB4JWxseCwgdzFfY2FtMToweCVsbHhcXG5cIixcbitcdFx0ICAgICAgX19lbnRyeS1cdTAwM2VtY2FtX2luZGV4LCBfX2VudHJ5LVx1MDAzZWJhbmssIF9fZW50cnktXHUwMDNldzBfY2FtMCwgX19lbnRyeS1cdTAwM2V3MF9jYW0xLFxuK1x0XHQgICAgICBfX2VudHJ5LVx1MDAzZXcxX2NhbTAsIF9fZW50cnktXHUwMDNldzFfY2FtMSlcbispO1xuK1xuK1RSQUNFX0VWRU5UKG90eDJfbnBjX2FjdGlvbixcbitcdCAgICBUUF9QUk9UTyh1MTYgaW5kZXgsIHU4IGJhbmssXG4rXHRcdCAgICAgdTggdHhfaW50ZiwgdTggZW5hYmxlLFxuK1x0XHQgICAgIHU2NCBhY3QsIHU2NCB2dGFnX2FjdCksXG4rXHQgICAgVFBfQVJHUyhpbmRleCwgYmFuayxcbitcdFx0ICAgIHR4X2ludGYsIGVuYWJsZSxcbitcdFx0ICAgIGFjdCwgdnRhZ19hY3QpLFxuK1x0ICAgIFRQX1NUUlVDVF9fZW50cnkoX19maWVsZCh1MTYsIG1jYW1faW5kZXgpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU4LCBiYW5rKVxuK1x0XHRcdCAgICAgX19maWVsZCh1OCwgdHhfaW50ZilcbitcdFx0XHQgICAgIF9fZmllbGQodTgsIGVuYWJsZSlcbitcdFx0XHQgICAgIF9fZmllbGQodTY0LCBhY3QpXG4rXHRcdFx0ICAgICBfX2ZpZWxkKHU2NCwgdnRhZ19hY3QpXG4rXHQgICAgKSxcbitcdCAgICBUUF9mYXN0X2Fzc2lnbihfX2VudHJ5LVx1MDAzZW1jYW1faW5kZXggPSBpbmRleDtcbitcdFx0XHQgICBfX2VudHJ5LVx1MDAzZWJhbmsgPSBiYW5rO1xuK1x0XHRcdCAgIF9fZW50cnktXHUwMDNldHhfaW50ZiA9IHR4X2ludGY7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VlbmFibGUgPSBlbmFibGU7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2VhY3QgPSBhY3Q7XG4rXHRcdFx0ICAgX19lbnRyeS1cdTAwM2V2dGFnX2FjdCA9IHZ0YWdfYWN0O1xuK1x0ICAgICksXG4rXHQgICAgVFBfcHJpbnRrKFwibWNhbV9pbmRleDolZCBiYW5rOiVkIHR4X2ludGY6JWQgZW5hYmxlOiVkIGFjdGlvbjoweCVsbHggdnRhZ19hY3Rpb246MHglbGx4XFxuXCIsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlbWNhbV9pbmRleCwgX19lbnRyeS1cdTAwM2ViYW5rLCBfX2VudHJ5LVx1MDAzZXR4X2ludGYsXG4rXHRcdCAgICAgIF9fZW50cnktXHUwMDNlZW5hYmxlLCBfX2VudHJ5LVx1MDAzZWFjdCwgX19lbnRyeS1cdTAwM2V2dGFnX2FjdClcbispO1xuK1xuICNlbmRpZiAvKiBfX1JWVV9UUkFDRV9IICovXG4gXG4gI3VuZGVmIFRSQUNFX0lOQ0xVREVfUEFUSFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6NDc6MTguMDA5ODEzMjU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTUyMzcyMjIwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ2dV9ucGMuY2AsIGBydnVfdHJhY2UuY2AsIGFuZCBgcnZ1X3RyYWNlLmhgIHdpdGhpbiB0aGUgT2N0ZW9uVFgyIE1hcnZlbGwgQUYgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCB1bmRlcnN0YW5kIHRoZSBjaGFuZ2VzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIG5ldyB0cmFjZXBvaW50czogYHRyYWNlX290eDJfbnBjX21jYW1fYWxsb2NfZW50cmllc2AsIGB0cmFjZV9vdHgyX25wY19lbmFibGVfbWNhbV9lbnRyeWAsIGB0cmFjZV9vdHgyX25wY19jYW1gLCBhbmQgYHRyYWNlX290eDJfbnBjX2FjdGlvbmAgZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGFuZCB0aGVuIGV4cG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgTlBDIGNvZGUuIFRoZXJlIGFyZSBhbHNvIHNvbWUgdmFyaWFibGUgcmVuYW1lcywgd2hpY2ggYXJlIGxpa2VseSBpbnNpZ25pZmljYW50LlxuXG5CdXQgaG9sZCBvbiwgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMuIFNlY3Rpb24gMiBpcyBwcmV0dHkgY2xlYXIgb24gd2hlbiB3ZSBjYW4gc2FmZWx5IHNraXAgZnV6emluZy4gSXQgbGlzdHMgXCJQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5n4oCmIG9yIHRyYWNlcG9pbnRzIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXNcIiBhcyBhICpuby1mdXp6KiBjb25kaXRpb24uIFRoZXNlIHRyYWNlcG9pbnRzICphcHBlYXIqIHRvIGJlIGp1c3QgdGhhdCDigJMgcHVyZWx5IGZvciBvYnNlcnZhYmlsaXR5LiBUaGV5IGRvbid0IHNlZW0gdG8gYmUgY2hhbmdpbmcgYW55IGNyaXRpY2FsIGRhdGEgcGF0aHMgb3IgY29udHJvbCBmbG93LlxuXG5BbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBRiBkcml2ZXI/IFRoYXQncyB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgaGFyZHdhcmUuIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgaXMgYW5vdGhlciAqbm8tZnV6eiogc2NlbmFyaW8hIEl0IGV4cGxpY2l0bHkgc2F5cyBkcml2ZXJzIHRoYXQgbmVlZCBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgdGhhdCAqYXJlbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFyZSBleGNsdWRlZC4gVGhpcyBkcml2ZXIgKmRlZmluaXRlbHkqIGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeS4gU28sIGJhc2VkIG9uIGJvdGggdGhlIG5hdHVyZSBvZiB0aGUgdHJhY2Vwb2ludHMgYW5kIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudCwgSSdtIGxlYW5pbmcgaGVhdmlseSB0b3dhcmRzIGZsYWdnaW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkkgbmVlZCB0byBjb25maXJtIGJ5IGluc3BlY3RpbmcgdGhlIGNvZGUsIGJ1dCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvIGJlbGlldmUgZnV6emluZyBpcyByZXF1aXJlZC4gSSBzaG91bGQgc2NhbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5IGZvciBhbnkgZ290Y2hhcywganVzdCB0byBiZSBzdXJlLiBCdXQgZnJvbSBteSBxdWljayBhbmFseXNpcywgaXQgbG9va3Mgc2FmZSB0byBza2lwIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczMTMsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyMy41MzM1Mzk1NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwODk4NTY0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgT0NURU9OVFgyX0FGXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9Nj1jb25maWcgT0NURU9OVFgyX01CT1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjQ3OjI1LjY0MjUzNzAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQxMjE5NTMxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgS2NvbmZpZyBmaWxlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIE9jdGVvbiBUWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gYWJvdXQgdG8gZGlzc2VjdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgTWFydmVsbCBPY3Rlb24gVFgyIEV0aGVybmV0IGRyaXZlciBhcmUgZGVmaW5lZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgY2FuIGJlIHRhaWxvcmVkIGZvciBkaWZmZXJlbnQgc3lzdGVtcyBhbmQgdXNlIGNhc2VzLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBoYXJkd2FyZS1zcGVjaWZpYyBzZXR0aW5ncywgYW5kIHRoZSB1c3VhbCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIC0gdGhlIGZlYXR1cmVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGNob2ljZXMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgZHJpdmVycyBvciBrZXJuZWwgZmVhdHVyZXMgYXJlIHJlcXVpcmVkIGZvciB2YXJpb3VzIE9jdGVvbiBUWDIgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzLiBBcmUgdGhlcmUgc3BlY2lmaWMgYm9hcmQgY29uZmlndXJhdGlvbnMgb3IgUEhZIG9wdGlvbnMgSSBuZWVkIHRvIGNvbnNpZGVyPyBJJ2xsIGFsc28gYmUgc2Nhbm5pbmcgZm9yIGFueSB1bnVzdWFsIG9yIHZlbmRvci1zcGVjaWZpYyBvcHRpb25zIHRoYXQgbWlnaHQgaW5kaWNhdGUgdW5pcXVlIE1hcnZlbGwgb3B0aW1pemF0aW9ucyBvciBoYXJkd2FyZSBmZWF0dXJlcy4gTXkgZ29hbCBpcyB0byBncmFzcCB0aGUgY29uZmlndXJhYmlsaXR5IG9mIHRoaXMgZHJpdmVyIGFuZCBob3cgaXQgaW50ZXJmYWNlcyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmtpbmcgc3RhY2suIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIGtleSBjb25maWd1cmFibGUgZWxlbWVudHMgYXJlIGFuZCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0cyBvbiBwZXJmb3JtYW5jZSwgcG93ZXIgY29uc3VtcHRpb24sIGFuZCBzdXBwb3J0ZWQgaGFyZHdhcmUuIEZpbmFsbHksIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHBpdGZhbGxzIG9yIGNvbW1vbiBpc3N1ZXMgdGhhdCBtaWdodCBhcmlzZSBkdXJpbmcgZGVwbG95bWVudC4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyOS43NjQ0OTIzMzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIE9DVEVPTlRYMl9BRlxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuICAxMTpcXHRcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiAoNjRCSVQgXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxcbiAgMTg6XFx0XFx0ICBVbml0J3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXFxuICAxOTpcXHRcXHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcXG4gIDIwOlxcdFxcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbiAgMjM6XFx0XFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbiAgMjU6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXFxuICAyODpcXHRcXHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxcbiAgMjk6XFx0XFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgT0NURU9OVFgyX1BGXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAzNTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAzODpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzoyOS43NjQ1NTc2MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1MTQxODQ1NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVmVyZGljdDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBmbGFnZ2VkIGEgZGVwZW5kZW5jeSBiYXNlZCBvbiBgNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVGAgb3IgYEFSTTY0YCwgd2hpY2ggb24gdGhlIEFNRDY0IHRhcmdldCBJJ20gbG9va2luZyBhdCwgaXMgY29udGluZ2VudCBvbiBgQ09NUElMRV9URVNUYC4gVGhpcyBhbHJlYWR5IGZlZWxzIHNwZWNpZmljLCBidXQgbGV0J3MgZGl2ZSBkZWVwZXIuIFRoaXMgYE9jdGVvblRYMmAgc3R1ZmYgaXMgcGh5c2ljYWwgaGFyZHdhcmU6IGEgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgYSBTbWFydE5JQy9Tb0MuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgcmVkIGZsYWcuXG5cblRoZSBrZXkgcG9pbnRzIGFyZSB0aGF0IGl0J3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLCByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyDigJMgc3R1ZmYgeW91J3JlICpub3QqIGdvaW5nIHRvIGZpbmQgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBhbmQgaXQgaXMgZ29pbmcgdG8gYmUgdW5yZWFjaGFibGUgaW4gY29tbW9uIGVudmlyb25tZW50cy5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBhY3R1YWwgcGF0Y2guIEl0IGVzc2VudGlhbGx5IGFkZHMgdHJhY2Vwb2ludHMgYW5kIHJlbmFtZXMgc29tZSBsb2NhbCB2YXJpYWJsZXMgdG8gcGFzcyB0aG9zZSB2YXJpYWJsZXMgKnRvKiB0aGUgdHJhY2Vwb2ludHMuIFRoZXJlIGlzIG5vIGNoYW5nZSB0byBjb250cm9sIGZsb3cgb3IgdGhlIHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmVzLiBJdCdzIGVzc2VudGlhbGx5IGRlY29yYXRpdmUgbG9nZ2luZy5cblxuU28sIGxldCdzIGxvb2sgYXQgdGhlIGRpZmY6IHRoZXkgYWRkZWQgdHJhY2Vwb2ludHMgYW5kIGV4cG9ydGVkIHRoZSBzeW1ib2xzLiBUaGV5IHRoZW4gYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbHMgaW4gYSBjb3VwbGUgb2YgZnVuY3Rpb25zIGluIGBydnVfbnBjLmNgIGFmdGVyIHJlbmFtaW5nIHNvbWUgdmFyaWFibGVzIHRvIHJlYWQgaW50byB0aGUgdHJhY2Vwb2ludCBjYWxscy5cblxuVGhlcmUgaXMgemVybyBtb2RpZmljYXRpb24gdG8gY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4gRXZlcnl0aGluZyBwb2ludHMgdG8gdGhpcyBiZWluZyBwdXJlbHkgdHJhY2Vwb2ludHMgYW5kIGluYWNjZXNzaWJsZSBoYXJkd2FyZS5cblxuVGhpcyBjaGVja3MgdHdvIGJveGVzIGZyb20gU2VjdGlvbiAyIG9mIG15IG1ldGhvZG9sb2d5OiBwdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIGFuZCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXG5cblRoZXJlZm9yZSwgdGhlIHZlcmRpY3QgaXMgY2xlYXI6IGBXb3J0aEZ1enppbmcgPSBmYWxzZWAuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gYSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnQsIGFuZCB0aGUgY2hhbmdlcyBhcmUgcHVyZWx5IGluc3RydW1lbnRhdGlvbiBhbmQgbG9nZ2luZy5cblxuTm93IHRvIHBhY2thZ2UgaXQgdXAgZm9yIGBzZXQtcmVzdWx0c2A6XG4qICAgYFdvcnRoRnV6emluZzogZmFsc2VgXG4qICAgYEZvY3VzU3ltYm9sczogW11gXG4qICAgYEVuYWJsZUNvbmZpZ3M6IFtdYFxuKiAgIGBSZWFzb25pbmc6IENvbmNpc2UgZXhwbGFuYXRpb24gb2YgdGhlIGZ1enppbmcgdmVyZGljdC5gXG5cblJlYWR5IHRvIGV4ZWN1dGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NjMsIk91dHB1dFRva2VucyI6OTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzo0NzozNC45MDY0MDYzNTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyB0cmFjZXBvaW50cyAoYW5kIGxvY2FsIHZhcmlhYmxlIHJlbmFtZXMgdG8gZmVlZCB0aG9zZSB0cmFjZXBvaW50cykgd2l0aG91dCBhbHRlcmluZyBjb250cm9sIGZsb3cgb3Iga2VybmVsIGRhdGEgc3RydWN0dXJlcy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggdGFyZ2V0cyBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyB0cmFjZXBvaW50cyAoYW5kIGxvY2FsIHZhcmlhYmxlIHJlbmFtZXMgdG8gZmVlZCB0aG9zZSB0cmFjZXBvaW50cykgd2l0aG91dCBhbHRlcmluZyBjb250cm9sIGZsb3cgb3Iga2VybmVsIGRhdGEgc3RydWN0dXJlcy4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsb2NhdGVkIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlciwgd2hpY2ggdGFyZ2V0cyBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjQ3OjM0LjkwNjQzMzcwMVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwzxbt[1] Phase: Running StartedAt: 2026-09-15 03:47:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwzxbt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 03:47:46 +0000 UTC FinishedAt: 2026-09-15 03:47:51 +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,}