Name: series-workflow6c6jq Phase: Failed StartedAt: 2026-08-05 00:07:38 +0000 UTC FinishedAt: 2026-08-05 00:53:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c6jq[0] Phase: Succeeded StartedAt: 2026-08-05 00:07:38 +0000 UTC FinishedAt: 2026-08-05 00:53:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c6jq[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 00:07:38 +0000 UTC FinishedAt: 2026-08-05 00:53:34 +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+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWIyYTM3ODU1NzExZTFjNTdjNWY1Y2Q0MWExNmNlNjRmMDhlYzU0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDA6NDY6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjQ5MiwxMiAmIzQzOzI0OTIsMTMgQEAgY29uZmlnIE1JVElHQVRJT05fSUJQQl9FTlRSWVxuIFxuIGNvbmZpZyBNSVRJR0FUSU9OX0lCUlNfRU5UUllcbiBcdGJvb2wgXCYjMzQ7RW5hYmxlIElCUlMgb24ga2VybmVsIGVudHJ5XCYjMzQ7XG4tXHRkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgXHUwMDI2XHUwMDI2IFg4Nl82NFxuJiM0MztcdGRlcGVuZHMgb24gWDg2XzY0XG4gXHRkZWZhdWx0IHlcbiBcdGhlbHBcbiBcdCAgQ29tcGlsZSB0aGUga2VybmVsIHdpdGggc3VwcG9ydCBmb3IgdGhlIHNwZWN0cmVfdjI9aWJycyBtaXRpZ2F0aW9uLlxuLVx0ICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG9cbi1cdCAgcGVyZm9ybWFuY2UuXG4mIzQzO1x0ICBUaGlzIG1pdGlnYXRlcyBzcGVjdHJlX3YyIGF0IGdyZWF0IGNvc3QgdG8gcGVyZm9ybWFuY2UuICBPbiBJbnRlbCxcbiYjNDM7XHQgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uXG4mIzQzO1x0ICByZXF1aXJlcyBNSVRJR0FUSU9OX1VOUkVUX0VOVFJZIG9yIE1JVElHQVRJT05fSUJQQl9FTlRSWS5cbiBcbiBjb25maWcgTUlUSUdBVElPTl9TUlNPXG4gXHRib29sIFwmIzM0O01pdGlnYXRlIHNwZWN1bGF0aXZlIFJBUyBvdmVyZmxvdyBvbiBBTURcJiMzNDtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC00NjAsNiAmIzQzOzQ2MCw3IEBAXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BTExPV0VEX1NFVl9GRUFUVVJFUyAoMTkqMzImIzQzOzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVx0XHQoMTkqMzImIzQzOzI4KSAvKiBcJiMzNDtzdnNtXCYjMzQ7IFNWU00gcHJlc2VudCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfSFZfSU5VU0VfV1JfQUxMT1dFRFx0KDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi9cbiYjNDM7I2RlZmluZSBYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWVx0KDE5KjMyJiM0MzszMSkgLyogU0VWLVNOUCBJQlBCIG9uIFZNIEVudHJ5ICovXG4gXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlBcdCgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuaW5kZXggYWE2MzQzMWJhOTJjMy4uMGRhMjIzNGI3MWM2OSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuQEAgLTMwNSwxMSAmIzQzOzMwNSwxOCBAQCBzdGF0aWNfYXNzZXJ0KChBVklDX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gQVZJQ19NQVhfXG4gc3RhdGljX2Fzc2VydCgoWDJBVklDX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDX01BWF9QSFlTSUNBTF9JRCk7XG4gc3RhdGljX2Fzc2VydCgoWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCk7XG4gXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRcdFx0QklUKDApXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cdFx0QklUKDMpXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlx0XHRCSVQoNClcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXHRcdFx0XHRCSVQoNSlcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDXHRcdFx0XHRCSVQoOSlcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRcdFx0QklUX1VMTCgwKVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVRfVUxMKDMpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT05cdFx0QklUX1VMTCg0KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXHRcdFx0XHRCSVRfVUxMKDUpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cdFx0XHRCSVRfVUxMKDcpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0XHRcdEJJVF9VTEwoOSlcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWVx0XHRcdEJJVF9VTEwoMjEpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLXHQoU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlkpXG4gXG4gI2RlZmluZSBWTUNCX0FMTE9XRURfU0VWX0ZFQVRVUkVTX1ZBTElEXHRcdFx0QklUX1VMTCg2MylcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5pbmRleCBkZGYwZGI1MzI2ZmExLi4yNDVkZTRlYThkNjBhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5AQCAtMTMwNSw3ICYjNDM7MTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZClcbiBcbiBcdC8qXG4gXHQgKiBMZXQgSUJSUyB0cnVtcCBhbGwgb24gSW50ZWwgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGVmZmVjdHMgb2YgdGhlXG4tXHQgKiByZXRibGVlZD0gY21kbGluZSBvcHRpb24gZXhjZXB0IGZvciBjYWxsIGRlcHRoIGJhc2VkIHN0dWZmaW5nXG4mIzQzO1x0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIE9uIEFNRC9IeWdvbiwgbGVnYWN5IFNQRUNfQ1RSTC5JQlJTIHRvZ2dsaW5nIGRvZXMgbm90IG1pdGlnYXRlIHRoZVxuJiM0MztcdCAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tXG4mIzQzO1x0ICogdGhlIFJldHVybiBBZGRyZXNzIFByZWRpY3Rvciwgbm90IHRoZSByZXN0cmljdGVkIGluZGlyZWN0IGJyYW5jaFxuJiM0MztcdCAqIHByZWRpY3RvcnMgdGhhdCBJQlJTIGNvbnRyb2xzLiAgU28ga2VlcCB0aGlzIEludGVsLW9ubHkgYW5kIGxlYXZlXG4mIzQzO1x0ICogQU1EJiMzOTtzIHNvZnR3YXJlIHJldHVybi10aHVuayBtaXRpZ2F0aW9uIChVTlJFVC9JQlBCKSBpbiBwbGFjZSBldmVuXG4mIzQzO1x0ICogd2hlbiBzcGVjdHJlX3YyPWlicnMgaXMgc2VsZWN0ZWQuXG4gXHQgKi9cbiBcdGlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xuIFx0XHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xuQEAgLTE2NzIsNiAmIzQzOzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBTUEVDVFJFX1YyX0xGRU5DRV9NU0cgXCYjMzQ7V0FSTklORzogTEZFTkNFIG1pdGlnYXRpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIENQVSwgZGF0YSBsZWFrcyBwb3NzaWJsZSFcXG5cJiMzNDtcbiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgXCYjMzQ7V0FSTklORzogVW5wcml2aWxlZ2VkIGVCUEYgaXMgZW5hYmxlZCB3aXRoIGVJQlJTIG9uLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcblwmIzM0O1xuICNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19MRkVOQ0VfRUJQRl9TTVRfTVNHIFwmIzM0O1dBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUyYjNDM7TEZFTkNFIG1pdGlnYXRpb24gYW5kIFNNVCwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXG5cJiMzNDtcbiYjNDM7I2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX1NOUF9QRVJGX01TRyBcJiMzNDtXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcblwmIzM0O1xuICNkZWZpbmUgU1BFQ1RSRV9WMl9JQlJTX1BFUkZfTVNHIFwmIzM0O1dBUk5JTkc6IElCUlMgbWl0aWdhdGlvbiBzZWxlY3RlZCBvbiBFbmhhbmNlZCBJQlJTIENQVSwgdGhpcyBtYXkgY2F1c2UgdW5uZWNlc3NhcnkgcGVyZm9ybWFuY2UgbG9zc1xcblwmIzM0O1xuIFxuICNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbkBAIC0xOTU2LDEwICYjNDM7MTk2NCw4IEBAIGVhcmx5X3BhcmFtKFwmIzM0O3NwZWN0cmVfdjJcJiMzNDssIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUodm9pZClcbiB7XG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSkge1xuLVx0XHRwcl9lcnIoXCYjMzQ7S2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSlcbiBcdFx0cmV0dXJuIFNQRUNUUkVfVjJfTk9ORTtcbi1cdH1cbiBcbiBcdHJldHVybiBTUEVDVFJFX1YyX1JFVFBPTElORTtcbiB9XG5AQCAtMjE2NSwxMSAmIzQzOzIxNzEsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG4gXHR9XG4gXG4tXHRpZiAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfSUJSUyBcdTAwMjZcdTAwMjYgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O0lCUlMgc2VsZWN0ZWQgYnV0IG5vdCBJbnRlbCBDUFUuIFN3aXRjaGluZyB0byBBVVRPIHNlbGVjdFxcblwmIzM0Oyk7XG4tXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbi1cdH1cbi1cbiBcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlMpKSB7XG4gXHRcdHByX2VycihcJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24mIzM5O3QgaGF2ZSBJQlJTLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXG5cJiMzNDspO1xuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG5AQCAtMjE5NCwxMiAmIzQzOzIxOTUsMjYgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiBcdFx0XHRicmVhaztcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIFNQRUNUUkVfVjJfQ01EX0ZPUkNFOlxuLVx0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpKSB7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXNcbiYjNDM7XHRcdCAqIGhvc3QgdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTX0VOSEFOQ0VEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSB7XG4gXHRcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRzcGVjdHJlX3YyX2VuYWJsZWQgPSBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUoKTtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBJZiByZXRwb2xpbmUgaXMgdW5hdmFpbGFibGUgKGUuZy4gYnVpbHQgd2l0aG91dFxuJiM0MztcdFx0ICogQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSwgZmFsbCBiYWNrIHRvIGVJQlJTIG9uXG4mIzQzO1x0XHQgKiBBdXRvSUJSUy1jYXBhYmxlIHBhcnRzIHJhdGhlciB0aGFuIGxlYXZpbmcgU05QIGhvc3RzXG4mIzQzO1x0XHQgKiB1bm1pdGlnYXRlZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbiYjNDM7XHRcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFNQRUNUUkVfVjJfQ01EX1JFVFBPTElORV9MRkVOQ0U6XG5AQCAtMjI0Nyw2ICYjNDM7MjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9GT1JDRSB8fFxuJiM0MztcdCAgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0FVVE8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19TUEVDVFJFX1YyKSkpKVxuJiM0MztcdFx0cHJfZXJyKFwmIzM0O0tlcm5lbCBub3QgY29tcGlsZWQgd2l0aCByZXRwb2xpbmU7IG5vIG1pdGlnYXRpb24gYXZhaWxhYmxlIVwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSlcbiBcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0Oywgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pO1xuIH1cbkBAIC0yMjc3LDE1ICYjNDM7MjI5OSwzMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXHUwMDI2XHUwMDI2IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSlcbiBcdFx0cHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpO1xuIFxuLVx0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHtcbi1cdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGhlYWRfNjQuUyBwcmVzZXJ2ZXMgRUZFUi5BVVRPSUJSUyBhY3Jvc3MgYm9vdCwgc28gYSBrZXhlYyBmcm9tIGFcbiYjNDM7XHQgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC5cbiYjNDM7XHQgKiBFeHBsaWNpdGx5IHNldCBvciBjbGVhciBpdCB0byBtYXRjaCB0aGUgc2VsZWN0ZWQgbWl0aWdhdGlvbiwgcmVnYXJkbGVzc1xuJiM0MztcdCAqIG9mIHdoaWNoIG1vZGUgaXMgaW4gZWZmZWN0LiAgVGhlIGJvb3QgQ1BVIGRvZXMgdGhpcyBiZWZvcmVcbiYjNDM7XHQgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXRcbiYjNDM7XHQgKiB0aGUgY29ycmVjdCB2YWx1ZSB0b28uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbiYjNDM7XHRcdGlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSlcbiBcdFx0XHRtc3Jfc2V0X2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbi1cdFx0XHR1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7XG4tXHRcdH1cbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICEoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICBzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkpIHtcbiYjNDM7XHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbiYjNDM7XHRcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSlcbiYjNDM7XHRcdHByX3dhcm4oU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cpO1xuJiM0MztcbiBcdHN3aXRjaCAoc3BlY3RyZV92Ml9lbmFibGVkKSB7XG4gXHRjYXNlIFNQRUNUUkVfVjJfTk9ORTpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jXG5pbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuQEAgLTE0OTYsMTMgJiM0MzsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKVxuIFx0LypcbiBcdCAqIEFNRCYjMzk7cyBBdXRvSUJSUyBpcyBlcXVpdmFsZW50IHRvIEludGVsJiMzOTtzIGVJQlJTIC0gdXNlIHRoZSBJbnRlbCBmZWF0dXJlXG4gXHQgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuXG4tXHQgKlxuLVx0ICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxuLVx0ICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiBcdCAqL1xuIFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9JQlJTX0FMTCkgfHxcbi1cdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXHUwMDI2XHUwMDI2XG4tXHQgICAgICFjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSkge1xuJiM0MztcdCAgICBjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xuIFx0XHRzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpO1xuIFx0XHRpZiAoIWNwdV9tYXRjaGVzKGNwdV92dWxuX3doaXRlbGlzdCwgTk9fRUlCUlNfUEJSU0IpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgISh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9QQlJTQl9OTykpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zZXYuYyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbmluZGV4IDk0NGFhZWE2NTAxZjIuLmVlMTQ3OTVhMjBiZDkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXG5AQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKCFzbnBfYWN0aXZlKVxuLVx0XHR2YWxpZF92bXNhX2ZlYXR1cmVzIFx1MDAyNj0gflNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiBcbiBcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0zMjE5LDggJiM0MzszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFx0ICAgIGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlApKVxuIFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVA7XG4gXG4tXHRpZiAoc2V2X3NucF9lbmFibGVkIFx1MDAyNlx1MDAyNiB0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbi1cdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcdGlmIChzZXZfc25wX2VuYWJsZWQpIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBTb21lIFNOUC1vbmx5IGZlYXR1cmVzIHN1Y2ggYXMgQlRCIElzb2xhdGlvbiBhcmVcbiYjNDM7XHRcdCAqIGF2YWlsYWJsZSBvbiBhbGwgc3lzdGVtcyB0aGF0IHN1cHBvcnQgU05QLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbiYjNDM7XHRcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcbiYjNDM7XHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZKSlcbiYjNDM7XHRcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZO1xuJiM0MztcdH1cbiB9XG4gXG4gdm9pZCBzZXZfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NFxuLS0tIGEvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FMTE9XRURfU0VWX0ZFQVRVUkVTICgxOSozMiYjNDM7MjcpIC8qIEFsbG93ZWQgU0VWIEZlYXR1cmVzICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TVlNNXHRcdCgxOSozMiYjNDM7MjgpIC8qIFwmIzM0O3N2c21cJiMzNDsgU1ZTTSBwcmVzZW50ICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9IVl9JTlVTRV9XUl9BTExPV0VEXHQoMTkqMzImIzQzOzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xuJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXHQoMTkqMzImIzQzOzMxKSAvKiBTRVYtU05QIElCUEIgb24gVk0gRW50cnkgKi9cbiBcbiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUFx0KDIwKjMyJiM0MzsgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggNjg5MzkwYzEwZjdjMy4uY2YyMWJmZmZhY2I2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbkBAIC0xMywxNyAmIzQzOzEzLDI1IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCAzMnVcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRCSVRfVUxMKDApXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcdFx0QklUX1VMTCg1KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OXHRCSVRfVUxMKDcpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0QklUX1VMTCg5KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZXHRCSVRfVUxMKDIxKVxuJiM0MztcbiYjNDM7LyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovXG4mIzQzOyNkZWZpbmUgU05QX09OTFlfRkVBVFVSRVNcdFx0KFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKVxuIFxuIC8qXG4gICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrXG4gICogZm9yIGNlcnRhaW4gVk0gdHlwZXMuICBFcnIgb24gdGhlIHNpZGUgb2Ygc2FmZXR5IGFuZCBkb24mIzM5O3RcbiAgKiBleHBlY3QgdGhhdCBhbGwgc3VwcG9ydGVkIGZlYXR1cmVzIGNhbiBiZSBwYXNzZWQgb25lIGJ5IG9uZVxuICAqIHRvIEtWTV9TRVZfSU5JVDIuXG4tICpcbi0gKiAoV2VsbCwgcmlnaHQgbm93IHRoZXJlJiMzOTtzIG9ubHkgb25lLi4uKVxuICAqL1xuLSNkZWZpbmUgS05PV05fRkVBVFVSRVMgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcbiYjNDM7I2RlZmluZSBLTk9XTl9GRUFUVVJFU1x0XHQoU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVAgfCBTTlBfT05MWV9GRUFUVVJFUylcbiBcbiBpbnQga3ZtX2ZkO1xuIHU2NCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcztcbkBAIC0xMTIsNyAmIzQzOzEyMCw3IEBAIHZvaWQgdGVzdF9mZWF0dXJlcyh1MzIgdm1fdHlwZSwgdTY0IHN1cHBvcnRlZF9mZWF0dXJlcylcbiBcdFx0aWYgKCEoc3VwcG9ydGVkX2ZlYXR1cmVzIFx1MDAyNiBCSVRfVUxMKGkpKSlcbiBcdFx0XHR0ZXN0X2luaXQyX2ludmFsaWQodm1fdHlwZSxcbiBcdFx0XHRcdFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0sXG4tXHRcdFx0XHRcJiMzNDt1bmtub3duIGZlYXR1cmVcJiMzNDspO1xuJiM0MztcdFx0XHRcdFwmIzM0O3Vua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVwmIzM0Oyk7XG4gXHRcdGVsc2UgaWYgKEtOT1dOX0ZFQVRVUkVTIFx1MDAyNiBCSVRfVUxMKGkpKVxuIFx0XHRcdHRlc3RfaW5pdDIodm1fdHlwZSxcbiBcdFx0XHRcdFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0pO1xuQEAgLTE2MSw3ICYjNDM7MTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApO1xuIFx0aWYgKGhhdmVfc2V2X2VzKVxuLVx0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyk7XG4mIzQzO1x0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyBcdTAwMjYgflNOUF9PTkxZX0ZFQVRVUkVTKTtcbiBcdGlmIChoYXZlX3NucClcbiBcdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NOUF9WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBib290LXRpbWUgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIHNldHVwIChfX2luaXQgZnVuY3Rpb25zKSBhbmQgS1ZNIFNFVi1TTlAgZ3Vlc3QgaW5pdGlhbGl6YXRpb24uIFRoZSBfX2luaXQgZnVuY3Rpb25zIHJ1biBvbmNlIGR1cmluZyBib290IGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IGEgc3lzY2FsbCBmdXp6ZXIuIFRoZSBLVk0gU0VWLVNOUCBjaGFuZ2VzIGluIGBfX3Nldl9ndWVzdF9pbml0YCBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBLVk1fU0VWX0lOSVQyIGlvY3RsIGlmIHRoZSBob3N0IGhhcyBwaHlzaWNhbCBBTUQgU0VWIGhhcmR3YXJlIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDAwOjQ2OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWcKaW5kZXggZTcyNWI0MzlkMGEyMy4uNGJkOTFkNDFkYmJhZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0yNDkyLDEyICYjNDM7MjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZCiAKIGNvbmZpZyBNSVRJR0FUSU9OX0lCUlNfRU5UUlkKIAlib29sICYjMzQ7RW5hYmxlIElCUlMgb24ga2VybmVsIGVudHJ5JiMzNDsKLQlkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgJmFtcDsmYW1wOyBYODZfNjQKJiM0MzsJZGVwZW5kcyBvbiBYODZfNjQKIAlkZWZhdWx0IHkKIAloZWxwCiAJICBDb21waWxlIHRoZSBrZXJuZWwgd2l0aCBzdXBwb3J0IGZvciB0aGUgc3BlY3RyZV92Mj1pYnJzIG1pdGlnYXRpb24uCi0JICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG8KLQkgIHBlcmZvcm1hbmNlLgomIzQzOwkgIFRoaXMgbWl0aWdhdGVzIHNwZWN0cmVfdjIgYXQgZ3JlYXQgY29zdCB0byBwZXJmb3JtYW5jZS4gIE9uIEludGVsLAomIzQzOwkgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uCiYjNDM7CSAgcmVxdWlyZXMgTUlUSUdBVElPTl9VTlJFVF9FTlRSWSBvciBNSVRJR0FUSU9OX0lCUEJfRU5UUlkuCiAKIGNvbmZpZyBNSVRJR0FUSU9OX1NSU08KIAlib29sICYjMzQ7TWl0aWdhdGUgc3BlY3VsYXRpdmUgUkFTIG92ZXJmbG93IG9uIEFNRCYjMzQ7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEAKICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyJiM0MzsyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTQkJKDE5KjMyJiM0MzsyOCkgLyogJiMzNDtzdnNtJiMzNDsgU1ZTTSBwcmVzZW50ICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRUQJKDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi8KJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZCSgxOSozMiYjNDM7MzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqLwogCiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQCSgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCmluZGV4IGFhNjM0MzFiYTkyYzMuLjBkYTIyMzRiNzFjNjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCkBAIC0zMDUsMTEgJiM0MzszMDUsMTggQEAgc3RhdGljX2Fzc2VydCgoQVZJQ19NQVhfUEhZU0lDQUxfSUQgJmFtcDsgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gQVZJQ19NQVhfCiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEICZhbXA7IEFWSUNfUEhZU0lDQUxfTUFYX0lOREVYX01BU0spID09IFgyQVZJQ19NQVhfUEhZU0lDQUxfSUQpOwogc3RhdGljX2Fzc2VydCgoWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCAmYW1wOyBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTsKIAotI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRQkJCQlCSVQoMCkKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1JFU1RSSUNURURfSU5KRUNUSU9OCQlCSVQoMykKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT04JCUJJVCg0KQotI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJCQlCSVQoNSkKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MJCQkJQklUKDkpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRQkJCQlCSVRfVUxMKDApCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT04JCUJJVF9VTEwoMykKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9BTFRFUk5BVEVfSU5KRUNUSU9OCQlCSVRfVUxMKDQpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJCQlCSVRfVUxMKDUpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTgkJCUJJVF9VTEwoNykKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDCQkJCUJJVF9VTEwoOSkKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZCQkJQklUX1VMTCgyMSkKJiM0MzsKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLCShTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSkKIAogI2RlZmluZSBWTUNCX0FMTE9XRURfU0VWX0ZFQVRVUkVTX1ZBTElECQkJQklUX1VMTCg2MykKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwppbmRleCBkZGYwZGI1MzI2ZmExLi4yNDVkZTRlYThkNjBhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwpAQCAtMTMwNSw3ICYjNDM7MTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZCkKIAogCS8qCiAJICogTGV0IElCUlMgdHJ1bXAgYWxsIG9uIEludGVsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBlZmZlY3RzIG9mIHRoZQotCSAqIHJldGJsZWVkPSBjbWRsaW5lIG9wdGlvbiBleGNlcHQgZm9yIGNhbGwgZGVwdGggYmFzZWQgc3R1ZmZpbmcKJiM0MzsJICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy4KJiM0MzsJICoKJiM0MzsJICogT24gQU1EL0h5Z29uLCBsZWdhY3kgU1BFQ19DVFJMLklCUlMgdG9nZ2xpbmcgZG9lcyBub3QgbWl0aWdhdGUgdGhlCiYjNDM7CSAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tCiYjNDM7CSAqIHRoZSBSZXR1cm4gQWRkcmVzcyBQcmVkaWN0b3IsIG5vdCB0aGUgcmVzdHJpY3RlZCBpbmRpcmVjdCBicmFuY2gKJiM0MzsJICogcHJlZGljdG9ycyB0aGF0IElCUlMgY29udHJvbHMuICBTbyBrZWVwIHRoaXMgSW50ZWwtb25seSBhbmQgbGVhdmUKJiM0MzsJICogQU1EJiMzOTtzIHNvZnR3YXJlIHJldHVybi10aHVuayBtaXRpZ2F0aW9uIChVTlJFVC9JQlBCKSBpbiBwbGFjZSBldmVuCiYjNDM7CSAqIHdoZW4gc3BlY3RyZV92Mj1pYnJzIGlzIHNlbGVjdGVkLgogCSAqLwogCWlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkgewogCQlzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkgewpAQCAtMTY3Miw2ICYjNDM7MTY3OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZXRwb2xpbmVfc2VxX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KICNkZWZpbmUgU1BFQ1RSRV9WMl9MRkVOQ0VfTVNHICYjMzQ7V0FSTklORzogTEZFTkNFIG1pdGlnYXRpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIENQVSwgZGF0YSBsZWFrcyBwb3NzaWJsZSFcbiYjMzQ7CiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgJiMzNDtXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMgb24sIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXG4mIzM0OwogI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgJiMzNDtXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMmIzQzO0xGRU5DRSBtaXRpZ2F0aW9uIGFuZCBTTVQsIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXG4mIzM0OwomIzQzOyNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cgJiMzNDtXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xuJiMzNDsKICNkZWZpbmUgU1BFQ1RSRV9WMl9JQlJTX1BFUkZfTVNHICYjMzQ7V0FSTklORzogSUJSUyBtaXRpZ2F0aW9uIHNlbGVjdGVkIG9uIEVuaGFuY2VkIElCUlMgQ1BVLCB0aGlzIG1heSBjYXVzZSB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBsb3NzXG4mIzM0OwogCiAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCkBAIC0xOTU2LDEwICYjNDM7MTk2NCw4IEBAIGVhcmx5X3BhcmFtKCYjMzQ7c3BlY3RyZV92MiYjMzQ7LCBzcGVjdHJlX3YyX3BhcnNlX2NtZGxpbmUpOwogCiBzdGF0aWMgZW51bSBzcGVjdHJlX3YyX21pdGlnYXRpb24gX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X3JldHBvbGluZSh2b2lkKQogewotCWlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKSB7Ci0JCXByX2VycigmIzM0O0tlcm5lbCBub3QgY29tcGlsZWQgd2l0aCByZXRwb2xpbmU7IG5vIG1pdGlnYXRpb24gYXZhaWxhYmxlISYjMzQ7KTsKJiM0MzsJaWYgKCFJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSkpCiAJCXJldHVybiBTUEVDVFJFX1YyX05PTkU7Ci0JfQogCiAJcmV0dXJuIFNQRUNUUkVfVjJfUkVUUE9MSU5FOwogfQpAQCAtMjE2NSwxMSAmIzQzOzIxNzEsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKQogCQlzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87CiAJfQogCi0JaWYgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0lCUlMgJmFtcDsmYW1wOyBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9JTlRFTCkgewotCQlwcl9lcnIoJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcbiYjMzQ7KTsKLQkJc3BlY3RyZV92Ml9jbWQgPSBTUEVDVFJFX1YyX0NNRF9BVVRPOwotCX0KLQogCWlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTICZhbXA7JmFtcDsgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTKSkgewogCQlwcl9lcnIoJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24mIzM5O3QgaGF2ZSBJQlJTLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcbiYjMzQ7KTsKIAkJc3BlY3RyZV92Ml9jbWQgPSBTUEVDVFJFX1YyX0NNRF9BVVRPOwpAQCAtMjE5NCwxMiAmIzQzOzIxOTUsMjYgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X21pdGlnYXRpb24odm9pZCkKIAkJCWJyZWFrOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIFNQRUNUUkVfVjJfQ01EX0ZPUkNFOgotCQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpKSB7CiYjNDM7CQkvKgomIzQzOwkJICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMKJiM0MzsJCSAqIGhvc3QgdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTX0VOSEFOQ0VEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSkgewogCQkJc3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUzsKIAkJCWJyZWFrOwogCQl9CiAKIAkJc3BlY3RyZV92Ml9lbmFibGVkID0gc3BlY3RyZV92Ml9zZWxlY3RfcmV0cG9saW5lKCk7CiYjNDM7CQkvKgomIzQzOwkJICogSWYgcmV0cG9saW5lIGlzIHVuYXZhaWxhYmxlIChlLmcuIGJ1aWx0IHdpdGhvdXQKJiM0MzsJCSAqIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSksIGZhbGwgYmFjayB0byBlSUJSUyBvbgomIzQzOwkJICogQXV0b0lCUlMtY2FwYWJsZSBwYXJ0cyByYXRoZXIgdGhhbiBsZWF2aW5nIFNOUCBob3N0cwomIzQzOwkJICogdW5taXRpZ2F0ZWQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FICZhbXA7JmFtcDsKJiM0MzsJCSAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKQomIzQzOwkJCXNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7CiAJCWJyZWFrOwogCiAJY2FzZSBTUEVDVFJFX1YyX0NNRF9SRVRQT0xJTkVfTEZFTkNFOgpAQCAtMjI0Nyw2ICYjNDM7MjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKQogCQl9CiAJfQogCiYjNDM7CWlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpICZhbXA7JmFtcDsKJiM0MzsJICAgIHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgJmFtcDsmYW1wOwomIzQzOwkgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0ZPUkNFIHx8CiYjNDM7CSAgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0FVVE8gJmFtcDsmYW1wOwomIzQzOwkgICAgICBzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1NQRUNUUkVfVjIpKSkpCiYjNDM7CQlwcl9lcnIoJiMzNDtLZXJuZWwgbm90IGNvbXBpbGVkIHdpdGggcmV0cG9saW5lOyBubyBtaXRpZ2F0aW9uIGF2YWlsYWJsZSEmIzM0Oyk7CiYjNDM7CiAJaWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSkKIAkJcHJfaW5mbygmIzM0OyVzXG4mIzM0Oywgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pOwogfQpAQCAtMjI3NywxNSAmIzQzOzIyOTksMzIgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbih2b2lkKQogCWlmIChzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9FSUJSUyAmYW1wOyZhbXA7IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSkKIAkJcHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpOwogCi0JaWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHsKLQkJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHsKJiM0MzsJLyoKJiM0MzsJICogaGVhZF82NC5TIHByZXNlcnZlcyBFRkVSLkFVVE9JQlJTIGFjcm9zcyBib290LCBzbyBhIGtleGVjIGZyb20gYQomIzQzOwkgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC4KJiM0MzsJICogRXhwbGljaXRseSBzZXQgb3IgY2xlYXIgaXQgdG8gbWF0Y2ggdGhlIHNlbGVjdGVkIG1pdGlnYXRpb24sIHJlZ2FyZGxlc3MKJiM0MzsJICogb2Ygd2hpY2ggbW9kZSBpcyBpbiBlZmZlY3QuICBUaGUgYm9vdCBDUFUgZG9lcyB0aGlzIGJlZm9yZQomIzQzOwkgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXQKJiM0MzsJICogdGhlIGNvcnJlY3QgdmFsdWUgdG9vLgomIzQzOwkgKi8KJiM0MzsJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHsKJiM0MzsJCWlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkKIAkJCW1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7Ci0JCX0gZWxzZSB7Ci0JCQl4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7Ci0JCQl1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7Ci0JCX0KJiM0MzsJCWVsc2UKJiM0MzsJCQltc3JfY2xlYXJfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgJmFtcDsmYW1wOwomIzQzOwkgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpKSB7CiYjNDM7CQl4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7CiYjNDM7CQl1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7CiAJfQogCiYjNDM7CWlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0VWX1NOUCkpCiYjNDM7CQlwcl93YXJuKFNQRUNUUkVfVjJfRUlCUlNfU05QX1BFUkZfTVNHKTsKJiM0MzsKIAlzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkgewogCWNhc2UgU1BFQ1RSRV9WMl9OT05FOgogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKQEAgLTE0OTYsMTMgJiM0MzsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKQogCS8qCiAJICogQU1EJiMzOTtzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwmIzM5O3MgZUlCUlMgLSB1c2UgdGhlIEludGVsIGZlYXR1cmUKIAkgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuCi0JICoKLQkgKiBEb24mIzM5O3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlcyBob3N0Ci0JICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS4KIAkgKi8KIAlpZiAoKHg4Nl9hcmNoX2NhcF9tc3IgJmFtcDsgQVJDSF9DQVBfSUJSU19BTEwpIHx8Ci0JICAgIChjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSAmYW1wOyZhbXA7Ci0JICAgICAhY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TRVZfU05QKSkpIHsKJiM0MzsJICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7CiAJCXNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7CiAJCWlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgJmFtcDsmYW1wOwogCQkgICAgISh4ODZfYXJjaF9jYXBfbXNyICZhbXA7IEFSQ0hfQ0FQX1BCUlNCX05PKSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jCmluZGV4IDk0NGFhZWE2NTAxZjIuLmVlMTQ3OTVhMjBiZDkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zZXYuYwpAQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFzbnBfYWN0aXZlKQotCQl2YWxpZF92bXNhX2ZlYXR1cmVzICZhbXA7PSB+U1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7CiYjNDM7CQl2YWxpZF92bXNhX2ZlYXR1cmVzICZhbXA7PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7CiAKIAlpZiAoZGF0YS0mZ3Q7dm1zYV9mZWF0dXJlcyAmYW1wOyB+dmFsaWRfdm1zYV9mZWF0dXJlcykKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0zMjE5LDggJiM0MzszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKQogCSAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSkKIAkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQOwogCi0JaWYgKHNldl9zbnBfZW5hYmxlZCAmYW1wOyZhbXA7IHRzY19raHogJmFtcDsmYW1wOyBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSkKLQkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDOwomIzQzOwlpZiAoc2V2X3NucF9lbmFibGVkKSB7CiYjNDM7CQkvKgomIzQzOwkJICogU29tZSBTTlAtb25seSBmZWF0dXJlcyBzdWNoIGFzIEJUQiBJc29sYXRpb24gYXJlCiYjNDM7CQkgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC4KJiM0MzsJCSAqLwomIzQzOwkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwKJiM0MzsJCQkJCSAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjsKJiM0MzsKJiM0MzsJCWlmICh0c2Nfa2h6ICZhbXA7JmFtcDsgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfU0VDVVJFX1RTQykpCiYjNDM7CQkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDOwomIzQzOwomIzQzOwkJaWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUlkpKQomIzQzOwkJCXNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTsKJiM0MzsJfQogfQogCiB2b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpCmRpZmYgLS1naXQgYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NAotLS0gYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEAKICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyJiM0MzsyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTQkJKDE5KjMyJiM0MzsyOCkgLyogJiMzNDtzdnNtJiMzNDsgU1ZTTSBwcmVzZW50ICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRUQJKDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi8KJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZCSgxOSozMiYjNDM7MzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqLwogCiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQCSgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwppbmRleCA2ODkzOTBjMTBmN2MzLi5jZjIxYmZmZmFjYjY1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMKQEAgLTEzLDE3ICYjNDM7MTMsMjUgQEAKICNpbmNsdWRlICYjMzQ7c3ZtX3V0aWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdC5oJiMzNDsKIAotI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCAzMnUKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFCQlCSVRfVUxMKDApCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJQklUX1VMTCg1KQomIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04JQklUX1VMTCg3KQomIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MJCUJJVF9VTEwoOSkKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZCUJJVF9VTEwoMjEpCiYjNDM7CiYjNDM7LyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovCiYjNDM7I2RlZmluZSBTTlBfT05MWV9GRUFUVVJFUwkJKFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKQogCiAvKgogICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrCiAgKiBmb3IgY2VydGFpbiBWTSB0eXBlcy4gIEVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGRvbiYjMzk7dAogICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmUKICAqIHRvIEtWTV9TRVZfSU5JVDIuCi0gKgotICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSYjMzk7cyBvbmx5IG9uZS4uLikKICAqLwotI2RlZmluZSBLTk9XTl9GRUFUVVJFUyBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAomIzQzOyNkZWZpbmUgS05PV05fRkVBVFVSRVMJCShTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCB8IFNOUF9PTkxZX0ZFQVRVUkVTKQogCiBpbnQga3ZtX2ZkOwogdTY0IHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzOwpAQCAtMTEyLDcgJiM0MzsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpCiAJCWlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyAmYW1wOyBCSVRfVUxMKGkpKSkKIAkJCXRlc3RfaW5pdDJfaW52YWxpZCh2bV90eXBlLAogCQkJCSZhbXA7KHN0cnVjdCBrdm1fc2V2X2luaXQpeyAudm1zYV9mZWF0dXJlcyA9IEJJVF9VTEwoaSkgfSwKLQkJCQkmIzM0O3Vua25vd24gZmVhdHVyZSYjMzQ7KTsKJiM0MzsJCQkJJiMzNDt1bmtub3duIG9yIHVuc3VwcG9ydGVkIGZlYXR1cmUgZm9yIFZNIHR5cGUmIzM0Oyk7CiAJCWVsc2UgaWYgKEtOT1dOX0ZFQVRVUkVTICZhbXA7IEJJVF9VTEwoaSkpCiAJCQl0ZXN0X2luaXQyKHZtX3R5cGUsCiAJCQkJJmFtcDsoc3RydWN0IGt2bV9zZXZfaW5pdCl7IC52bXNhX2ZlYXR1cmVzID0gQklUX1VMTChpKSB9KTsKQEAgLTE2MSw3ICYjNDM7MTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApOwogCWlmIChoYXZlX3Nldl9lcykKLQkJdGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpOwomIzQzOwkJdGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgJmFtcDsgflNOUF9PTkxZX0ZFQVRVUkVTKTsKIAlpZiAoaGF2ZV9zbnApCiAJCXRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TTlBfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBhIGJ1bmNoIG9mIGNydWNpYWwgeDg2IGtlcm5lbCBhcmVhczogS2NvbmZpZywgQ1BVIGZlYXR1cmUgZGVmaW5pdGlvbnMgKGBjcHVmZWF0dXJlcy5oYCksIFNWTSBoZWFkZXJzIChgc3ZtLmhgKSwgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIGNvZGUgKGBidWdzLmNgLCBgY29tbW9uLmNgKSwgS1ZNL1NFVi1TTlAgc3BlY2lmaWMgc3R1ZmYgKGBzZXYuY2ApLCBhbmQgc29tZSBzdXBwb3J0aW5nIHRvb2xzIChgdG9vbHMvYCkuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIG1pdGlnYXRpbmcgQ1BVIGJ1Z3MgbGlrZSBTcGVjdHJlIFYyIGFuZCBSZXRibGVlZCwgYWxvbmcgd2l0aCBlbmFibGluZyBBTUQmIzM5O3MgU0VWLVNOUCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5LCBJQlBCIG9uIGVudHJ5IGFuZCBCVEIgaXNvbGF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0NhbiB3ZSBmdXp6IHRoaXM/JiMzNDsgU2luY2UgSSBrbm93IHRoZXNlIGFyZWFzLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYXJlLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIHRoaW5ncyB0aGF0IGluaXRpYWxpemUgdGhlIENQVSBhdCBib290IGFuZCBpbml0aWFsaXplIHRoZSBTRVYtU05QIGd1ZXN0IGR1cmluZyBWTSBjcmVhdGlvbiBtYWtlcyBtZSB0aGluayB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHdlIGNhbiBnZXQgc29tZSBmdXp6aW5nIGNvdmVyYWdlIGhlcmUuCgpJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYCBmaXJzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IGZyb20gdGhlIGBfX3Nldl9ndWVzdF9pbml0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB2YWxpZGF0aW5nIFZNU0EgZmVhdHVyZXMsIGFuZCB0aGVyZSYjMzk7cyBhIGNoZWNrIGhlcmUgdGhhdCBJIHN1c3BlY3QgbWlnaHQgYmUgYnlwYXNzZWQgc29tZWhvdy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1NFVl9JTklUMmAgaW9jdGwsIHdoaWNoIGNhbGxzIGBfX3Nldl9ndWVzdF9pbml0YCB2aWEgYHNldl9ndWVzdF9pbml0MmAuCgpSaWdodCwgYEtWTV9TRVZfSU5JVDJgLiBJIGtub3cgS1ZNIGlvY3RscyBhcmUgZ2VuZXJhbGx5IHJlYWNoYWJsZSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIG9uZSBoYXMgYmVlbiBmdXp6ZWQgYmVmb3JlLiBJZiB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIHBhdGggd2hlbiBjcmVhdGluZyBhIFZNLCB0aGF0IG9wZW5zIHVwIGEgZnV6emluZyB0YXJnZXQuCgpCYXNlZCBvbiB0aGF0LCBJJiMzOTttIG1ha2luZyB0aGUganVkZ2VtZW50IHRoYXQgd2Ugc2hvdWxkIHByaW9yaXRpemUgdGhpcyBwYXRjaCwgc2luY2UgdGhlIGNoYW5nZXMgaW4gYGFyY2gveDg2L2t2bS9zdm0vc2V2LmNgIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBpbiB0aGUgYnVnIG1pdGlnYXRpb24gY29kZSAoZS5nLiBgYnVncy5jYCkgYXJlIHByb2JhYmx5IGJvb3QtdGltZSBvbmx5LCBhbmQgc28gbm90IGFzIGVhc3kgdG8gZnV6ei4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgb3RoZXIgY2FsbCBzaXRlcyB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgYW5kIGBzZXZfZ3Vlc3RfaW5pdDJgIGluIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3Nldl9ndWVzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTAtXHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz01Nzk9c3RhdGljIGludCBzZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU5OC1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTk5Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCB2bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAwLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTYwMj1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxNi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCBrdm0tXHUwMDNlYXJjaC52bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMzEzLVx0ICpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcdCAqIENoZWNraW5nIGZvciBTRVYmIzQzOyBvdXRzaWRlIG9mIGt2bS1cdTAwM2Vsb2NrIGlzIHNhZmUgYXMgX19zZXZfZ3Vlc3RfaW5pdCgpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyBTRVYgR3Vlc3QgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSBgX19zZXZfZ3Vlc3RfaW5pdGAgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgc2V2X2d1ZXN0X2luaXRgIGFuZCBgc2V2X2d1ZXN0X2luaXQyYC4gSW50ZXJlc3RpbmcuIFRob3NlIGZ1bmN0aW9ucywgaW4gdHVybiwgYXBwZWFyIHRvIGJlIHRyaWdnZXJlZCBieSBzb21ldGhpbmcgbGlrZSBgc2V2X2lzc3VlX2NtZGAg4oCTIHdoaWNoLCBJIHJlY2FsbCwgaXMgbGlrZWx5IHJlYWNoZWQgdGhyb3VnaCB0aGUgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAgaW9jdGwuIFRoaXMgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHlwaWNhbCBTRVYgaW5pdGlhbGl6YXRpb24gcGF0aC4KCk15IGZvY3VzIG5vdyBpcyBvbiBjb25maXJtaW5nIGhvdyB0aGVzZSBpbml0aWF0aW9uIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGVyZWZvcmUgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGJvdGggYHNldl9ndWVzdF9pbml0MmAgYW5kIGBzZXZfZ3Vlc3RfaW5pdGAgdG8gc29saWRpZnkgdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IGVkZ2UgY2FzZXMgb3IgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBmdWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nldl9ndWVzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTAtXHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01NzgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU3OTpzdGF0aWMgaW50IHNldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01ODAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjYwMjpzdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxNi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCBrdm0tXHUwMDNlYXJjaC52bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjU4LVx0Y2FzZSBLVk1fU0VWX0lOSVQ6XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjI2NTk6XHRcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFx1MDAyNnNldl9jbWQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYwLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjY2MS1cdGNhc2UgS1ZNX1NFVl9JTklUMjpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjY2MjpcdFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFx1MDAyNnNldl9jbWQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYzLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMzEzLVx0ICpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcdCAqIENoZWNraW5nIGZvciBTRVYmIzQzOyBvdXRzaWRlIG9mIGt2bS1cdTAwM2Vsb2NrIGlzIHNhZmUgYXMgX19zZXZfZ3Vlc3RfaW5pdCgpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTS9TRVYtU05QIEZlYXR1cmUgVmFsaWRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGp1c3RtZW50IHRvIHRoZSBmZWF0dXJlIHZhbGlkYXRpb24gaW4gYF9fc2V2X2d1ZXN0X2luaXRgLiAgRXNzZW50aWFsbHksIHRoZSBjb2RlIGlzIHRpZ2h0ZW5pbmcgdXAgdGhlIGNoZWNrcyBmb3Igc3BlY2lmaWMgU0VWIGZlYXR1cmVzLCBzcGVjaWZpY2FsbHkgdGhvc2UgcmVsYXRlZCB0byBTTlAuICBCZWZvcmUsIGlmIFNOUCB3YXNuJiMzOTt0IGFjdGl2ZSAoYCFzbnBfYWN0aXZlYCksIHRoZSBjb2RlIHdvdWxkIG1hc2sgb3V0IGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AuIE5vdywgdGhlIG1hc2sgaXMgd2lkZW5lZCB0byBjb3ZlciBgU1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0tgLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgdGhlIGBLVk1fU0VWX0lOSVQyYCBpb2N0bC4gSXQgc2VlbXMgd2Ugbm93IGhhdmUgYSBzdHJpY3RlciBjaGVjayBmb3IgZmVhdHVyZXMgc3VibWl0dGVkIHZpYSB0aGUgYHN0cnVjdCBrdm1fc2V2X2luaXRgIHN0cnVjdHVyZSwgcmVqZWN0aW5nIGFueXRoaW5nIGZyb20gdGhhdCBtYXNrIGlmIHRoZSBjdXJyZW50IHN5c3RlbSBkb2VzbiYjMzk7dCBoYXZlIGFuIGFjdGl2ZSBTTlAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBhIGRpcmVjdCBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgS1ZNIGhhbmRsZXMgZmVhdHVyZSBuZWdvdGlhdGlvbiBhbmQgYWN0aXZhdGlvbi4KCk1vdmluZyBvbiB0byBgc2V2X2hhcmR3YXJlX3NldHVwYCwgaXQgc2VlbXMgdGhhdCB3ZSYjMzk7cmUgbm93IGFkZGluZyBtb3JlIGNhcGFiaWxpdGllcyB0byB0aGUgYHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlc2Agd2hlbiBgc2V2X3NucF9lbmFibGVkYCBpcyB0cnVlLiAgU3BlY2lmaWNhbGx5LCBgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVgLCBgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05gLCBhbmQgYFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZYCBhcmUgYmVpbmcgdW5jb25kaXRpb25hbGx5IGFkZGVkLiAgVGhlIGFkZGl0aW9uIG9mIGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AgaXMgcHJlc2VydmVkIGJ1dCBub3cgY29uZGl0aW9uYWwgb24gYFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDYC4KClNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHksIHllcy4gVGhlIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIGtleSBhcmVhIG9mIGludGVyZXN0LiBUaGlzIGhhcyBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGBLVk1fU0VWX0lOSVQyYCBpb2N0bCB3aGljaCBub3cgbW9yZSBzdHJpY3RseSBlbmZvcmNlcyB0aGlzIGZlYXR1cmUgdmFsaWRhdGlvbiBsb2dpYy4gVGhlIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgb3IgZXZlbiBieXBhc3NlcywgZ2l2ZW4gdGhlIG5ldyBhbmQgY2hhbmdlZCB2YWxpZGF0aW9uIHJ1bGVzIGlzIGhpZ2gsIGVzcGVjaWFsbHkgaWYgd2UgY2FuIGNyYWZ0IG1hbGljaW91cyBgdm1zYV9mZWF0dXJlc2AgdmFsdWVzLiBXZSBzaG91bGQgZXhwbG9yZSB0aGlzLCBwYXJ0aWN1bGFybHkgc2luY2UgaXQgZGlyZWN0bHkgbW9kaWZpZXMgdGhlIEtWTSBBUEkgYmVoYXZpb3IuCgpUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hldGhlciBgS1ZNX1NFVl9JTklUMmAgaXMgZXZlbiByZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFdoaWxlIFNFViBhbmQgU0VWLVNOUCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlLCB0aGUgS1ZNIEFQSSBtaWdodCBiZSBpbnZva2VkIHdpdGhvdXQgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCByZXZlYWwgaW50ZXJlc3RpbmcgYmVoYXZpb3VyLiBGdXJ0aGVyLCBkb2VzIGBfX3Nldl9ndWVzdF9pbml0YCBjaGVjayBgc2V2X3NucF9lbmFibGVkYD8gVGhpcyB3b3VsZCBmdXJ0aGVyIGxpbWl0IHJlYWNoLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgaW50ZXJhY3QuIExldCYjMzk7cyBiYWNrdHJhY2sgdG8gYF9fc2V2X2d1ZXN0X2luaXRgIGZvciB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V2X2d1ZXN0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc2V2LmM9NDc1PXN0YXRpYyB2b2lkIHNucF9ndWVzdF9yZXFfY2xlYW51cChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00ODgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjQ4OTpzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cdFx0XHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTU3OT1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NjAyPXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2MTc6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIGt2bS1cdTAwM2VhcmNoLnZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MTgtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzMwNz12b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXHQgKlxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMzE0Olx0ICogQ2hlY2tpbmcgZm9yIFNFViYjNDM7IG91dHNpZGUgb2Yga3ZtLVx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxNS1cdCAqIGNhbiBvbmx5IGJlIGRvbmUgYmVmb3JlIHZDUFVzIGFyZSBjcmVhdGVkLCBjYWNoZXMgY2FuIGJlIGluY29oZXJlbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU2NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBgX19zZXZfZ3Vlc3RfaW5pdGAgUmVhY2hhYmlsaXR5KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgY2FsbCB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgU0VWIGhhcmR3YXJlIHByZXNlbnQuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgZGlmZmVyZW50IGNvZGUgcGF0aHMgYW5kIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIG9mdGVuIHRoZSBzdGFydGluZyBwb2ludCBmb3Igc2VjdXJpdHkgYW5hbHlzaXMg4oCTIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgYXNzdW1wdGlvbnMgbWFkZSBieSB0aGUgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgZmVhdHVyZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBiZWhhdmVzIGlmIHRob3NlIGRlcGVuZGVuY2llcyBhcmVuJiMzOTt0IG1ldC4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBjYW4gYSBwcml2aWxlZ2VkIHByb2Nlc3Mgb3IgZXZlbiBhIGxlc3MtcHJpdmlsZWdlZCBndWVzdCBtYW5pcHVsYXRlIHRoZSBleGVjdXRpb24gcGF0aCB0byByZWFjaCBgX19zZXZfZ3Vlc3RfaW5pdGAgZXZlbiBvbiBhIG5vbi1TRVYgc3lzdGVtLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluc3RhYmlsaXR5IG9yLCB3b3JzZSwgYSBieXBhc3Mgb2YgdGhlIGludGVuZGVkIHNlY3VyaXR5IGNoZWNrcz8gTGV0JiMzOTtzIHRyYWNlIGl0IGFuZCBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODk6XHRzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4gNDkwOlx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4gNDkxOlx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgdm1fdHlwZSlcbiA0OTI6XHR7XG4gNDkzOlx0XHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvICpzZXYgPSB0b19rdm1fc2V2X2luZm8oa3ZtKTtcbiA0OTQ6XHRcdHN0cnVjdCBzZXZfcGxhdGZvcm1faW5pdF9hcmdzIGluaXRfYXJncyA9IHswfTtcbiA0OTU6XHRcdGJvb2wgZXNfYWN0aXZlID0gdm1fdHlwZSAhPSBLVk1fWDg2X1NFVl9WTTtcbiA0OTY6XHRcdGJvb2wgc25wX2FjdGl2ZSA9IHZtX3R5cGUgPT0gS1ZNX1g4Nl9TTlBfVk07XG4gNDk3Olx0XHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XG4gNDk4Olx0XHRpbnQgcmV0O1xuIDQ5OTpcdFxuIDUwMDpcdFx0aWYgKGt2bS1cdTAwM2VjcmVhdGVkX3ZjcHVzKVxuIDUwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MDI6XHRcbiA1MDM6XHRcdGlmIChkYXRhLVx1MDAzZWZsYWdzKVxuIDUwNDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MDU6XHRcbiA1MDY6XHRcdGlmICghc25wX2FjdGl2ZSlcbiA1MDc6XHRcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiA1MDg6XHRcbiA1MDk6XHRcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIDUxMDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MTE6XHRcbiA1MTI6XHRcdGlmIChkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbiBcdTAwM2UgR0hDQl9WRVJTSU9OX01BWCB8fCAoIWVzX2FjdGl2ZSBcdTAwMjZcdTAwMjYgZGF0YS1cdTAwM2VnaGNiX3ZlcnNpb24pKVxuIDUxMzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MTQ6XHRcbiA1MTU6XHRcdC8qXG4gNTE2Olx0XHQgKiBLVk0gc3VwcG9ydHMgdGhlIGZ1bGwgcmFuZ2Ugb2YgbWFuZGF0b3J5IGZlYXR1cmVzIGRlZmluZWQgYnkgdmVyc2lvblxuIDUxNzpcdFx0ICogMiBvZiB0aGUgR0hDQiBwcm90b2NvbCwgc28gZGVmYXVsdCB0byB0aGF0IGZvciBTRVYtRVMgZ3Vlc3RzIGNyZWF0ZWRcbiA1MTg6XHRcdCAqIHZpYSBLVk1fU0VWX0lOSVQyIChLVk1fU0VWX0lOSVQgZm9yY2VzIHZlcnNpb24gMSkuXG4gNTE5Olx0XHQgKi9cbiA1MjA6XHRcdGlmIChlc19hY3RpdmUgXHUwMDI2XHUwMDI2ICFkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbilcbiA1MjE6XHRcdFx0ZGF0YS1cdTAwM2VnaGNiX3ZlcnNpb24gPSAyO1xuIDUyMjpcdFxuIDUyMzpcdFx0aWYgKHNucF9hY3RpdmUgXHUwMDI2XHUwMDI2IGRhdGEtXHUwMDNlZ2hjYl92ZXJzaW9uIFx1MDAzYyAyKVxuIDUyNDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MjU6XHRcbiA1MjY6XHRcdGlmICh1bmxpa2VseShzZXYtXHUwMDNlYWN0aXZlKSlcbiA1Mjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTI4Olx0XG4gNTI5Olx0XHRzZXYtXHUwMDNlYWN0aXZlID0gdHJ1ZTtcbiA1MzA6XHRcdHNldi1cdTAwM2Vlc19hY3RpdmUgPSBlc19hY3RpdmU7XG4gNTMxOlx0XHRzZXYtXHUwMDNldm1zYV9mZWF0dXJlcyA9IGRhdGEtXHUwMDNldm1zYV9mZWF0dXJlcztcbiA1MzI6XHRcdHNldi1cdTAwM2VnaGNiX3ZlcnNpb24gPSBkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbjtcbiA1MzM6XHRcbiA1MzQ6XHRcdGlmIChzbnBfYWN0aXZlKVxuIDUzNTpcdFx0XHRzZXYtXHUwMDNldm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRTtcbiA1MzY6XHRcbiA1Mzc6XHRcdHJldCA9IHNldl9hc2lkX25ldyhzZXYsIHZtX3R5cGUpO1xuIDUzODpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2NzcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNFViBHdWVzdCBJbml0aWFsaXphdGlvbiBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBTRVYgZ3Vlc3RzLCBhbmQgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gY3J5c3RhbGxpemUuIFRoZSBpbml0aWFsIGZ1bmN0aW9uLCBgX19zZXZfZ3Vlc3RfaW5pdGAsIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIOKAkyB0aGF0JiMzOTtzIHRoZSBqdW1waW5nLW9mZiBwb2ludC4gSXQgcGVyZm9ybXMgc29tZSBpbml0aWFsIHZhbGlkYXRpb24sIGFzIGV4cGVjdGVkLCBhbmQgdGhlbiBpdCBjYWxscyBgc2V2X2FzaWRfbmV3YC4gVGhhdCBtYWtlcyBzZW5zZS4gV2UmIzM5O3JlIGdldHRpbmcgYW4gQVNJRCBhc3NpZ25lZCwgd2hpY2ggaXMgY3J1Y2lhbC4KCkJ1dCB0aGVuLCBJIHNlZSB0aGlzIGBzZXZfZ3Vlc3RfaW5pdDJgLCBhbmQgaXQmIzM5O3MgZmxhZ2dlZCBhcyAqb25seSogYmVpbmcgcmVhY2hhYmxlIHRocm91Z2ggYEtWTV9TRVZfSU5JVDJgLiBBaCwgcmlnaHQsIGEgc2Vjb25kYXJ5IGluaXRpYWxpemF0aW9uIHBoYXNlLCBwb3RlbnRpYWxseS4gTm93LCB3aGVyZSBkb2VzIGBLVk1fU0VWX0lOSVQyYCBmaXQgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmU/IExldCBtZSBzZWXigKYgQmluZ28hIEl0JiMzOTtzIGFjdHVhbGx5IGEgY29tbWFuZCBmb3IgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAuIFRoYXQgY29ubmVjdGlvbiB0ZWxscyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIG1lbW9yeSBlbmNyeXB0aW9uLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIHJldmlldyBgc2V2X21lbV9lbmNfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgZW5jcnlwdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgbm93LCB0byBzZWUgaG93IHRoYXQgY29tbWFuZCBhY3R1YWxseSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjI1Olx0aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4yNjI2Olx0e1xuMjYyNzpcdFx0c3RydWN0IGt2bV9zZXZfY21kIHNldl9jbWQ7XG4yNjI4Olx0XHRpbnQgcjtcbjI2Mjk6XHRcbjI2MzA6XHRcdGlmICghc2V2X2VuYWJsZWQpXG4yNjMxOlx0XHRcdHJldHVybiAtRU5PVFRZO1xuMjYzMjpcdFxuMjYzMzpcdFx0aWYgKCFhcmdwKVxuMjYzNDpcdFx0XHRyZXR1cm4gMDtcbjI2MzU6XHRcbjI2MzY6XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZzZXZfY21kLCBhcmdwLCBzaXplb2Yoc3RydWN0IGt2bV9zZXZfY21kKSkpXG4yNjM3Olx0XHRcdHJldHVybiAtRUZBVUxUO1xuMjYzODpcdFxuMjYzOTpcdFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmt2bS1cdTAwM2Vsb2NrKTtcbjI2NDA6XHRcbjI2NDE6XHRcdC8qIE9ubHkgdGhlIGVuY19jb250ZXh0X293bmVyIGhhbmRsZXMgc29tZSBtZW1vcnkgZW5jIG9wZXJhdGlvbnMuICovXG4yNjQyOlx0XHRpZiAoaXNfbWlycm9yaW5nX2VuY19jb250ZXh0KGt2bSkgXHUwMDI2XHUwMDI2XG4yNjQzOlx0XHQgICAgIWlzX2NtZF9hbGxvd2VkX2Zyb21fbWlycm9yKHNldl9jbWQuaWQpKVxuMjY0NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI2NDU6XHRcbjI2NDY6XHRcdC8qXG4yNjQ3Olx0XHQgKiBPbmNlIEtWTV9TRVZfSU5JVDIgaW5pdGlhbGl6ZXMgYSBLVk0gaW5zdGFuY2UgYXMgYW4gU05QIGd1ZXN0LCBvbmx5XG4yNjQ4Olx0XHQgKiBhbGxvdyB0aGUgdXNlIG9mIFNOUC1zcGVjaWZpYyBjb21tYW5kcy5cbjI2NDk6XHRcdCAqL1xuMjY1MDpcdFx0aWYgKHNldl9zbnBfZ3Vlc3Qoa3ZtKSBcdTAwMjZcdTAwMjYgc2V2X2NtZC5pZCBcdTAwM2MgS1ZNX1NFVl9TTlBfTEFVTkNIX1NUQVJUKVxuMjY1MTpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuMjY1MjpcdFxuMjY1MzpcdFx0c3dpdGNoIChzZXZfY21kLmlkKSB7XG4yNjU0Olx0XHRjYXNlIEtWTV9TRVZfRVNfSU5JVDpcbjI2NTU6XHRcdFx0aWYgKCFzZXZfZXNfZW5hYmxlZClcbjI2NTY6XHRcdFx0XHRyZXR1cm4gLUVOT1RUWTtcbjI2NTc6XHRcdFx0ZmFsbHRocm91Z2g7XG4yNjU4Olx0XHRjYXNlIEtWTV9TRVZfSU5JVDpcbjI2NTk6XHRcdFx0ciA9IHNldl9ndWVzdF9pbml0KGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjYwOlx0XHRcdGJyZWFrO1xuMjY2MTpcdFx0Y2FzZSBLVk1fU0VWX0lOSVQyOlxuMjY2MjpcdFx0XHRyID0gc2V2X2d1ZXN0X2luaXQyKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjYzOlx0XHRcdGJyZWFrO1xuMjY2NDpcdFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9TVEFSVDpcbjI2NjU6XHRcdFx0ciA9IHNldl9sYXVuY2hfc3RhcnQoa3ZtLCBcdTAwMjZzZXZfY21kKTtcbjI2NjY6XHRcdFx0YnJlYWs7XG4yNjY3Olx0XHRjYXNlIEtWTV9TRVZfTEFVTkNIX1VQREFURV9EQVRBOlxuMjY2ODpcdFx0XHRyID0gc2V2X2xhdW5jaF91cGRhdGVfZGF0YShrdm0sIFx1MDAyNnNldl9jbWQpO1xuMjY2OTpcdFx0XHRicmVhaztcbjI2NzA6XHRcdGNhc2UgS1ZNX1NFVl9MQVVOQ0hfVVBEQVRFX1ZNU0E6XG4yNjcxOlx0XHRcdHIgPSBzZXZfbGF1bmNoX3VwZGF0ZV92bXNhKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjcyOlx0XHRcdGJyZWFrO1xuMjY3MzpcdFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9NRUFTVVJFOlxuMjY3NDpcdFx0XHRyID0gc2V2X2xhdW5jaF9tZWFzdXJlKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTRVYgTWVtb3J5IEVuY3J5cHRpb24gSU9DVEwqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBzZXZfbWVtX2VuY19pb2N0bGAgZnVuY3Rpb24uIFRoZSB2ZXJ5IGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoaXMgY2hlY2sgZm9yIGBzZXZfZW5hYmxlZGAuIElmIGl0JiMzOTtzICpmYWxzZSosIGJvb20sIHdlJiMzOTtyZSByZXR1cm5pbmcgYC1FTk9UVFlgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZSBmZWF0dXJlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgb3IgaXNuJiMzOTt0IGFjdGl2ZS4KCkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgYHNldl9lbmFibGVkYCBhY3R1YWxseSAqdHJ1ZSogaW4gdGhlIGVudmlyb25tZW50cyBJJiMzOTttIG1vc3QgaW50ZXJlc3RlZCBpbj8gU3BlY2lmaWNhbGx5LCBRRU1VIGFuZCBHQ0UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBTRVYgZmVhdHVyZXMgYXJlIGNvbnNpc3RlbnRseSBhY3RpdmF0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBJdCYjMzk7cyBjcnVjaWFsIGZvciBteSBhbmFseXNpcy4KClRoZXJlZm9yZSwgdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZGV0ZXJtaW5lICpob3cqIGBzZXZfZW5hYmxlZGAgaXMgYmVpbmcgc2V0LiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGVudGlyZSBJT0NUTCBwYXRoIGlzIGV2ZW4gcmVsZXZhbnQgdG8gbXkgbmVlZHMgaW4gdGhlc2Ugc3BlY2lmaWMgY29udGV4dHMuIExldCYjMzk7cyBmaW5kIHRoYXQgYXNzaWdubWVudCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nldl9lbmFibGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU1LS8qIGVuYWJsZS9kaXNhYmxlIFNFViBzdXBwb3J0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU2OnN0YXRpYyBib29sIF9fcm9fYWZ0ZXJfaW5pdCBzZXZfZW5hYmxlZCA9IHRydWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU3Om1vZHVsZV9wYXJhbV9uYW1lZChzZXYsIHNldl9lbmFibGVkLCBib29sLCAwNDQ0KTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTgtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0yNjI1PWludCBzZXZfbWVtX2VuY19pb2N0bChzdHJ1Y3Qga3ZtICprdm0sIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjYyOS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjYzMDpcdGlmICghc2V2X2VuYWJsZWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2MzEtXHRcdHJldHVybiAtRU5PVFRZO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzAwND12b2lkIF9faW5pdCBzZXZfc2V0X2NwdV9jYXBzKHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwMDUte1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDA2Olx0aWYgKHNldl9lbmFibGVkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDA3LVx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfU0VWKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwNDg9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDU3Olx0aWYgKCFzZXZfZW5hYmxlZCB8fCAhbnB0X2VuYWJsZWQgfHwgIW5yaXBzKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU4LVx0XHRnb3RvIG91dDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNTUtb3V0OlxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTU2Olx0aWYgKHNldl9lbmFibGVkKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNTctXHRcdGluaXRfYXJncy5wcm9iZSA9IHRydWU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjExLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjEyOlx0c2V2X2VuYWJsZWQgPSBzZXZfc3VwcG9ydGVkO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjEzLVx0c2V2X2VzX2VuYWJsZWQgPSBzZXZfZXNfc3VwcG9ydGVkO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzIzOD12b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzkte1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjQwOlx0aWYgKCFzZXZfZW5hYmxlZClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI0MS1cdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzI1NT1pbnQgc2V2X2NwdV9pbml0KHN0cnVjdCBzdm1fY3B1X2RhdGEgKnNkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjU2LXtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI1NzpcdGlmICghc2V2X2VuYWJsZWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyNTgtXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA5NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFNFViBTdXBwb3J0KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHNldl9lbmFibGVkYCBpcyBiZWluZyBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHdpdGhpbiB0aGUgYHNldl9oYXJkd2FyZV9zZXR1cGAgZnVuY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIHRoYXQgc2V0cyB0aGUgc3RhZ2UgZm9yIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgdG8gYmUgYWN0aXZhdGVkLiBCdXQsIHRoZSBjcnVjaWFsIHBpZWNlIGlzIGBzZXZfc3VwcG9ydGVkYC4gSSBzdXNwZWN0IHRoYXQgaWYgdGhlIGhhcmR3YXJlICpkb2VzbiYjMzk7dCogc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9zdXBwb3J0ZWRgIGlzIGdvaW5nIHRvIGV2YWx1YXRlIHRvIGZhbHNlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBhY3R1YWwgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V2X3N1cHBvcnRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc2V2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYz05MT1zdGF0aWMgdTY0IHNucF9zdXBwb3J0ZWRfcG9saWN5X2JpdHMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05Mi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6OTM6c3RhdGljIHU2NCBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05NC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ4OT1zdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTYtXHRib29sIHNucF9hY3RpdmUgPSB2bV90eXBlID09IEtWTV9YODZfU05QX1ZNO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0OTc6XHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5OC1cdGludCByZXQ7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0yMTkyPWludCBzZXZfZGV2X2dldF9hdHRyKHUzMiBncm91cCwgdTY0IGF0dHIsIHU2NCAqdmFsKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjE5OC1cdGNhc2UgS1ZNX1g4Nl9TRVZfVk1TQV9GRUFUVVJFUzpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjE5OTpcdFx0KnZhbCA9IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcztcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjIwMC1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzA1My1cdGJvb2wgc2V2X2VzX3N1cHBvcnRlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDU0Olx0Ym9vbCBzZXZfc3VwcG9ydGVkID0gZmFsc2U7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwNTUtXHR1MzIgdm1fdHlwZXMgPSAwO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExNy1cdH1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzExODpcdHNldl9zdXBwb3J0ZWQgPSB0cnVlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE5LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzE2My1cdFx0aWYgKHNldl9wbGF0Zm9ybV9pbml0KFx1MDAyNmluaXRfYXJncykpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxNjQ6XHRcdFx0c2V2X3N1cHBvcnRlZCA9IHNldl9lc19zdXBwb3J0ZWQgPSBzZXZfc25wX3N1cHBvcnRlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTY1LVx0XHRlbHNlIGlmIChzZXZfc25wX3N1cHBvcnRlZClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxODgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxODk6XHRpZiAoc2V2X3N1cHBvcnRlZCBcdTAwMjZcdTAwMjYgbWluX3Nldl9hc2lkIFx1MDAzYz0gbWF4X3Nldl9hc2lkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTkwLVx0XHR2bV90eXBlcyB8PSBCSVQoS1ZNX1g4Nl9TRVZfVk0pO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIwMC1cdFx0cHJfaW5mbyhcJiMzNDtTRVYgJXMgKEFTSURzICV1IC0gJXUpXFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjAxOlx0XHRcdHNldl9zdHJfZmVhdHVyZV9zdGF0ZShzZXZfc3VwcG9ydGVkLCB2bV90eXBlcyBcdTAwMjYgQklUKEtWTV9YODZfU0VWX1ZNKSksXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMDItXHRcdFx0bWluX3Nldl9hc2lkLCBtYXhfc2V2X2FzaWQpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIxMjpcdHNldl9lbmFibGVkID0gc2V2X3N1cHBvcnRlZDtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMy1cdHNldl9lc19lbmFibGVkID0gc2V2X2VzX3N1cHBvcnRlZDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTUtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMTY6XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE3LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxOS1cdCAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIyMDpcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjIxLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyNi1cdFx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjc6XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMjgtXHRcdFx0XHRcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzAtXHRcdGlmICh0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzMTpcdFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzItXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzMtXHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzNDpcdFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzUtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0VWLVJlbGF0ZWQgQ29kZSBQYXRocyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgc2V2X2VuYWJsZWRgIGJlaW5nIGZhbHNlIGlzIHRoZSBjcnVjaWFsIGZhY3Rvci4gSWYgdGhlIGhhcmR3YXJlIGRvZXNuJiMzOTt0IHN1cHBvcnQgU0VWLCB0aGVuIGBzZXZfZW5hYmxlZGAgd2lsbCBiZSBmYWxzZS4gQ29uc2VxdWVudGx5LCBgc2V2X21lbV9lbmNfaW9jdGxgIHJldHVybnMgYC1FTk9UVFlgLiBUaGlzIG1lYW5zIHRoYXQgYm90aCBgS1ZNX1NFVl9JTklUMmAgYW5kIGBfX3Nldl9ndWVzdF9pbml0YCB3aXRoaW4gUUVNVS9HQ0UgYmVjb21lIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIGhvc3QgaGFyZHdhcmUgaXMgc3BlY2lmaWNhbGx5IFNFVi1lbmFibGVkLgoKV2FpdCBhIHNlY29uZCwgY2FuIFFFTVUgZXZlbiAqZW11bGF0ZSogU0VWIGZ1bmN0aW9uYWxpdHk/IEkga25vdyBpdCYjMzk7cyBhIGNvbXBsaWNhdGVkIGZlYXR1cmUuIE5vLCB0aGF0JiMzOTtzIHJpZ2h0LCBTRVYgbmVlZHMgdGhlIGFjdHVhbCBBTUQgaGFyZHdhcmUgdG8gZG8gdGhlIGVuY3J5cHRpb24uIFN5emthbGxlciBvbiBHQ0UgaXMgdXNpbmcgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVpdGhlciBvbiBJbnRlbCBvciBBTUQsIGJ1dCBJIGtub3cgdGhhdCBpbiBzdGFuZGFyZCBHQ0UgVk1zLCBTRVYgaXNuJiMzOTt0IHVzdWFsbHkgYXZhaWxhYmxlLCBvciBlbmFibGVkLCBmb3IgdGhvc2UgbmVzdGVkIGd1ZXN0cy4gUGx1cywgUUVNVSBjYW4mIzM5O3QgZW11bGF0ZSBTRVYgd2l0aG91dCB0aGF0IGhvc3Qgc3VwcG9ydC4KCkFscmlnaHQsIHNvIHRoZSBTRVYgaW5pdGlhbGl6YXRpb24gaXMgbGlrZWx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHNlZSwgaXMgdGhlcmUgYW55dGhpbmcgKmVsc2UqIGZyb20gdGhpcyBwYXRjaCB0aGF0IEkgY2FuIHJlYWNoPyBUaGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY2AgYW5kIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY2AgdG8gc2VlIGlmIGFueXRoaW5nIHRoZXJlIGlzIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGVjdHJlX3YyX2FwcGx5X21pdGlnYXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0yMjg3PXN0YXRpYyBib29sIF9faW5pdCBjcHVfd2FudHNfaWJwYl9icGYodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0yMjk2LVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MjI5NzpzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0yMjk4LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMzA4PXZvaWQgX19pbml0IGNwdV9zZWxlY3RfbWl0aWdhdGlvbnModm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzgyLVx0c3BlY3RyZV92MV9hcHBseV9taXRpZ2F0aW9uKCk7XG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzozMzgzOlx0c3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKCk7XG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzg0LVx0cmV0YmxlZWRfYXBwbHlfbWl0aWdhdGlvbigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc2NgoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAxMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXM6IE5vIFZhbHVlIEZvdW5kKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBpcyB0aGVyZSBhbnkgKmZ1enphYmxlKiBmdW5jdGlvbmFsaXR5IGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCBidXQgbGV0JiMzOTtzIGJlIG1ldGhvZGljYWwuCgpGaXJzdCwgYHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbmAg4oCTIHRoYXQmIzM5O3MgYSBib290LXRpbWUgc2V0dXAgZnVuY3Rpb24gKGBfX2luaXRgKS4gRnV6emVycyBkb24mIzM5O3QgZ2VuZXJhbGx5IHRhcmdldCB0aG9zZSBiZWNhdXNlIHRoZXkgcnVuIGJlZm9yZSB0aGUgZnV6emVyIGV2ZW4gZ2V0cyBhIGNoYW5jZSB0byBzdGFydCBwb2tpbmcgYXQgdGhlIHN5c3RlbSB2aWEgc3lzY2FsbHMgb3IgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNvLCB0aGF0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgU0VWIChTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uKSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIFNFViBpb2N0bHMgbG9vayBpbnRlcmVzdGluZyBhdCBmaXJzdCBnbGFuY2UuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGAvZGV2L3NldmAgYW5kIEtWTSBTRVYgaW9jdGxzLiBIb3dldmVyLCB0aGF0IHN1cHBvcnQgaXMgY29udGluZ2VudCBvbiB0aGUgaG9zdCBoYXJkd2FyZSAqYWN0dWFsbHkqIHN1cHBvcnRpbmcgU0VWLiBJZiB0aGUgaGFyZHdhcmUgZG9lc24mIzM5O3Qgc3VwcG9ydCBpdCwgdGhlIGlvY3RsIGp1c3QgcmV0dXJucyBgLUVOT1RUWWAsIHdoaWNoIGlzIGEgZGVhZCBlbmQuIEZ1cnRoZXJtb3JlLCBvdXIgR0NFIFN5emthbGxlciBpbnN0YW5jZXMsIHdoaWNoIGFyZSB0aGUgbWFpbiBmb2N1cywgZG9uJiMzOTt0IGhhdmUgU0VWIGVuYWJsZWQuIEV2ZW4gaWYgdGhleSBkaWQsIHRoZSBhY3R1YWwgY29kZSBjaGFuZ2UgSSYjMzk7bSBsb29raW5nIGF0IGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIHZlcnkgc21hbGwgYml0bWFzayBjaGFuZ2U6IGEgdmFsaWRhdGlvbiBtb2RpZmljYXRpb24uCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSBwYXRocyB3aGljaCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBkb24mIzM5O3QgbWVyaXQgZnV6emluZy4gU0VWIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBzcGVjaWZpYyBBTUQgaGFyZHdhcmUsIHdoaWNoIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgaG9zdCBzdXBwb3J0LiBUaGVyZWZvcmUsIEkgY2FuJiMzOTt0IHRyaWdnZXIgdGhlIFNFViBwYXRocyB1c2luZyB0aGUgZnV6emVycy4KCkkgcmUtY2hlY2tlZCBgc2V2X21lbV9lbmNfaW9jdGxgIGFuZCBjb25maXJtZWQgYHNldl9lbmFibGVkYCBiZWluZyBjaGVja2VkLCB3aXRoIGBzZXZfZW5hYmxlZGAgb25seSBiZWluZyB0cnVlIGlmIGBzZXZfc3VwcG9ydGVkYCBpcyB0cnVlLCBhbmQgYHNldl9zdXBwb3J0ZWRgIG9ubHkgYmVpbmcgdHJ1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNldl9wbGF0Zm9ybV9pbml0YCwgd2hpY2ggbmVlZHMgU0VWIENQVS4KClNvLCBTRVYgaXMgb3V0LiBXaGF0IGFib3V0IHRoZSBvdGhlciBjaGFuZ2VzPyBNb3N0IG9mIHRoZW0gYXJlIGluIGBfX2luaXRgIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZXMgaW4gYGJ1Z3MuY2AgYXJlIGBfX2luaXRgLiBUaGUgY2hhbmdlcyBpbiBgY29tbW9uLmNgIGFyZSBgX19pbml0YCB0b28uCgpMZXQmIzM5O3Mgc3VtbWFyaXplIHRoZSBjaGFuZ2VzIGFnYWluOgoKKiAgIGBhcmNoL3g4Ni9LY29uZmlnYDogS2NvbmZpZyBjaGFuZ2VzLCBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaGA6IE1hY3JvIGFkZGl0aW9ucywgbm90IGZ1enphYmxlLgoqICAgYGFyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oYDogTWFjcm8gYWRkaXRpb25zLCBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgOiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYF9faW5pdGAgKHJldGJsZWVkIHVwZGF0ZSwgbWl0aWdhdGlvbiBzZWxlY3Rpb24vYXBwbGljYXRpb24pIC0gbm90IGZ1enphYmxlLgoqICAgYGFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNgOiBgY3B1X3NldF9idWdfYml0c2AgaXMgYWxzbyBjYWxsZWQgYXQgYF9faW5pdGAgLSBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2A6IGBfX3Nldl9ndWVzdF9pbml0YCByZXF1aXJlcyBTRVYgaGFyZHdhcmUgYW5kIGlzIG5vdCBhY2Nlc3NpYmxlIGZyb20gR0NFIG9yIHN0YW5kYXJkIFFFTVUuIGBzZXZfaGFyZHdhcmVfc2V0dXBgIGlzIGBfX2luaXRgIC0gYWxzbyBub3QgZnV6emFibGUuCiogICBgdG9vbHMvLi4uYDogVGVzdCBhbmQgaGVhZGVyIGNoYW5nZXMsIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHJlYWNoYWJsZSBjb2RlIGVpdGhlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBvciBpcyBib290LXRpbWUgc2V0dXAsIEkgY29uY2x1ZGUgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgZWl0aGVyIGltcG9zc2libGUgdG8gcmVhY2ggaW4gbXkgdGVzdGluZyBlbnZpcm9ubWVudCwgb3IgYXJlIG5vdCB0YXJnZXRhYmxlIGJ5IGEgZnV6emVyLgoKSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBib290LXRpbWUgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIHNldHVwIChfX2luaXQgZnVuY3Rpb25zKSBhbmQgS1ZNIFNFVi1TTlAgZ3Vlc3QgaW5pdGlhbGl6YXRpb24uIFRoZSBfX2luaXQgZnVuY3Rpb25zIHJ1biBvbmNlIGR1cmluZyBib290IGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IGEgc3lzY2FsbCBmdXp6ZXIuIFRoZSBLVk0gU0VWLVNOUCBjaGFuZ2VzIGluIGBfX3Nldl9ndWVzdF9pbml0YCBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBLVk1fU0VWX0lOSVQyIGlvY3RsIGlmIHRoZSBob3N0IGhhcyBwaHlzaWNhbCBBTUQgU0VWIGhhcmR3YXJlIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQwLjU0NDk3MDUyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjg2Mzc5ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQwLjU0NDk3NjI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MDA1MjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwMDo0NjozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29uZmlnIGIvYXJjaC94ODYvS2NvbmZpZ1xcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvS2NvbmZpZ1xcbisrKyBiL2FyY2gveDg2L0tjb25maWdcXG5AQCAtMjQ5MiwxMiArMjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZXFxuIFxcbiBjb25maWcgTUlUSUdBVElPTl9JQlJTX0VOVFJZXFxuIFxcdGJvb2wgXFxcIkVuYWJsZSBJQlJTIG9uIGtlcm5lbCBlbnRyeVxcXCJcXG4tXFx0ZGVwZW5kcyBvbiBDUFVfU1VQX0lOVEVMIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbitcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbiBcXHRkZWZhdWx0IHlcXG4gXFx0aGVscFxcbiBcXHQgIENvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIHN1cHBvcnQgZm9yIHRoZSBzcGVjdHJlX3YyPWlicnMgbWl0aWdhdGlvbi5cXG4tXFx0ICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG9cXG4tXFx0ICBwZXJmb3JtYW5jZS5cXG4rXFx0ICBUaGlzIG1pdGlnYXRlcyBzcGVjdHJlX3YyIGF0IGdyZWF0IGNvc3QgdG8gcGVyZm9ybWFuY2UuICBPbiBJbnRlbCxcXG4rXFx0ICBpdCBhbHNvIG1pdGlnYXRlcyByZXRibGVlZC4gIE9uIEFNRC9IeWdvbiwgcmV0YmxlZWQgbWl0aWdhdGlvblxcbitcXHQgIHJlcXVpcmVzIE1JVElHQVRJT05fVU5SRVRfRU5UUlkgb3IgTUlUSUdBVElPTl9JQlBCX0VOVFJZLlxcbiBcXG4gY29uZmlnIE1JVElHQVRJT05fU1JTT1xcbiBcXHRib29sIFxcXCJNaXRpZ2F0ZSBzcGVjdWxhdGl2ZSBSQVMgb3ZlcmZsb3cgb24gQU1EXFxcIlxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbmluZGV4IDNkMDk0MGEzYjlmMzcuLjExZTQwNjQ0Yjk2NzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcXG5AQCAtNDYwLDYgKzQ2MCw3IEBAXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyKzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NWU01cXHRcXHQoMTkqMzIrMjgpIC8qIFxcXCJzdnNtXFxcIiBTVlNNIHByZXNlbnQgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9IVl9JTlVTRV9XUl9BTExPV0VEXFx0KDE5KjMyKzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xcbisjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXFx0KDE5KjMyKzMxKSAvKiBTRVYtU05QIElCUEIgb24gVk0gRW50cnkgKi9cXG4gXFxuIC8qIEFNRC1kZWZpbmVkIEV4dGVuZGVkIEZlYXR1cmUgMiBFQVgsIENQVUlEIGxldmVsIDB4ODAwMDAwMjEgKEVBWCksIHdvcmQgMjAgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUFxcdCgyMCozMisgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxcbmluZGV4IGFhNjM0MzFiYTkyYzMuLjBkYTIyMzRiNzFjNjkgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxcbkBAIC0zMDUsMTEgKzMwNSwxOCBAQCBzdGF0aWNfYXNzZXJ0KChBVklDX01BWF9QSFlTSUNBTF9JRCBcXHUwMDI2IEFWSUNfUEhZU0lDQUxfTUFYX0lOREVYX01BU0spID09IEFWSUNfTUFYX1xcbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEIFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDX01BWF9QSFlTSUNBTF9JRCk7XFxuIHN0YXRpY19hc3NlcnQoKFgyQVZJQ180S19NQVhfUEhZU0lDQUxfSUQgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTtcXG4gXFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVcXHRcXHRcXHRcXHRCSVQoMClcXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cXHRcXHRCSVQoMylcXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlxcdFxcdEJJVCg0KVxcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXFx0XFx0XFx0XFx0QklUKDUpXFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcXHRcXHRcXHRcXHRCSVQoOSlcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVxcdFxcdFxcdFxcdEJJVF9VTEwoMClcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cXHRcXHRCSVRfVUxMKDMpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT05cXHRcXHRCSVRfVUxMKDQpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcXHRcXHRcXHRcXHRCSVRfVUxMKDUpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cXHRcXHRcXHRCSVRfVUxMKDcpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcXHRcXHRcXHRcXHRCSVRfVUxMKDkpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcXHRcXHRcXHRCSVRfVUxMKDIxKVxcbitcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTS1xcdChTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSlcXG4gXFxuICNkZWZpbmUgVk1DQl9BTExPV0VEX1NFVl9GRUFUVVJFU19WQUxJRFxcdFxcdFxcdEJJVF9VTEwoNjMpXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXFxuaW5kZXggZGRmMGRiNTMyNmZhMS4uMjQ1ZGU0ZWE4ZDYwYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xcbisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXFxuQEAgLTEzMDUsNyArMTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZClcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIExldCBJQlJTIHRydW1wIGFsbCBvbiBJbnRlbCB3aXRob3V0IGFmZmVjdGluZyB0aGUgZWZmZWN0cyBvZiB0aGVcXG4tXFx0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZ1xcbitcXHQgKiByZXRibGVlZD0gY21kbGluZSBvcHRpb24gZXhjZXB0IGZvciBjYWxsIGRlcHRoIGJhc2VkIHN0dWZmaW5nLlxcbitcXHQgKlxcbitcXHQgKiBPbiBBTUQvSHlnb24sIGxlZ2FjeSBTUEVDX0NUUkwuSUJSUyB0b2dnbGluZyBkb2VzIG5vdCBtaXRpZ2F0ZSB0aGVcXG4rXFx0ICogQnJhbmNoIFR5cGUgQ29uZnVzaW9uIFJFVEJsZWVkIHZhcmlhbnQ6IFJFVCBwcmVkaWN0aW9uIGNvbWVzIGZyb21cXG4rXFx0ICogdGhlIFJldHVybiBBZGRyZXNzIFByZWRpY3Rvciwgbm90IHRoZSByZXN0cmljdGVkIGluZGlyZWN0IGJyYW5jaFxcbitcXHQgKiBwcmVkaWN0b3JzIHRoYXQgSUJSUyBjb250cm9scy4gIFNvIGtlZXAgdGhpcyBJbnRlbC1vbmx5IGFuZCBsZWF2ZVxcbitcXHQgKiBBTUQncyBzb2Z0d2FyZSByZXR1cm4tdGh1bmsgbWl0aWdhdGlvbiAoVU5SRVQvSUJQQikgaW4gcGxhY2UgZXZlblxcbitcXHQgKiB3aGVuIHNwZWN0cmVfdjI9aWJycyBpcyBzZWxlY3RlZC5cXG4gXFx0ICovXFxuIFxcdGlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xcbiBcXHRcXHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xcbkBAIC0xNjcyLDYgKzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XFxuICNkZWZpbmUgU1BFQ1RSRV9WMl9MRkVOQ0VfTVNHIFxcXCJXQVJOSU5HOiBMRkVOQ0UgbWl0aWdhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHRoaXMgQ1BVLCBkYXRhIGxlYWtzIHBvc3NpYmxlIVxcXFxuXFxcIlxcbiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgXFxcIldBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUyBvbiwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXFxcblxcXCJcXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgXFxcIldBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUytMRkVOQ0UgbWl0aWdhdGlvbiBhbmQgU01ULCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcXFxuXFxcIlxcbisjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfU05QX1BFUkZfTVNHIFxcXCJXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcXFxuXFxcIlxcbiAjZGVmaW5lIFNQRUNUUkVfVjJfSUJSU19QRVJGX01TRyBcXFwiV0FSTklORzogSUJSUyBtaXRpZ2F0aW9uIHNlbGVjdGVkIG9uIEVuaGFuY2VkIElCUlMgQ1BVLCB0aGlzIG1heSBjYXVzZSB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBsb3NzXFxcXG5cXFwiXFxuIFxcbiAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuQEAgLTE5NTYsMTAgKzE5NjQsOCBAQCBlYXJseV9wYXJhbShcXFwic3BlY3RyZV92MlxcXCIsIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XFxuIFxcbiBzdGF0aWMgZW51bSBzcGVjdHJlX3YyX21pdGlnYXRpb24gX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X3JldHBvbGluZSh2b2lkKVxcbiB7XFxuLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKSB7XFxuLVxcdFxcdHByX2VycihcXFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXFxcIik7XFxuK1xcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKVxcbiBcXHRcXHRyZXR1cm4gU1BFQ1RSRV9WMl9OT05FO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXR1cm4gU1BFQ1RSRV9WMl9SRVRQT0xJTkU7XFxuIH1cXG5AQCAtMjE2NSwxMSArMjE3MSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXFxuIFxcdFxcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0lCUlMgXFx1MDAyNlxcdTAwMjYgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXFxcblxcXCIpO1xcbi1cXHRcXHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XFxuLVxcdH1cXG4tXFxuIFxcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFxcdTAwMjZcXHUwMDI2ICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSUykpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24ndCBoYXZlIElCUlMuIFN3aXRjaGluZyB0byBBVVRPIHNlbGVjdFxcXFxuXFxcIik7XFxuIFxcdFxcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcXG5AQCAtMjE5NCwxMiArMjE5NSwyNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgU1BFQ1RSRV9WMl9DTURfRk9SQ0U6XFxuLVxcdFxcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCkpIHtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRG9uJ3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlc1xcbitcXHRcXHQgKiBob3N0IHVzZXJzcGFjZSBpbmRpcmVjdCBicmFuY2ggcGVyZm9ybWFuY2UuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSB7XFxuIFxcdFxcdFxcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzcGVjdHJlX3YyX2VuYWJsZWQgPSBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUoKTtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogSWYgcmV0cG9saW5lIGlzIHVuYXZhaWxhYmxlIChlLmcuIGJ1aWx0IHdpdGhvdXRcXG4rXFx0XFx0ICogQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSwgZmFsbCBiYWNrIHRvIGVJQlJTIG9uXFxuK1xcdFxcdCAqIEF1dG9JQlJTLWNhcGFibGUgcGFydHMgcmF0aGVyIHRoYW4gbGVhdmluZyBTTlAgaG9zdHNcXG4rXFx0XFx0ICogdW5taXRpZ2F0ZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfTk9ORSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4rXFx0XFx0XFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFNQRUNUUkVfVjJfQ01EX1JFVFBPTElORV9MRkVOQ0U6XFxuQEAgLTIyNDcsNiArMjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfRk9SQ0UgfHxcXG4rXFx0ICAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfQVVUTyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICBzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1NQRUNUUkVfVjIpKSkpXFxuK1xcdFxcdHByX2VycihcXFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXFxcIik7XFxuK1xcbiBcXHRpZiAoYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1NQRUNUUkVfVjIpKVxcbiBcXHRcXHRwcl9pbmZvKFxcXCIlc1xcXFxuXFxcIiwgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pO1xcbiB9XFxuQEAgLTIyNzcsMTUgKzIyOTksMzIgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXFx1MDAyNlxcdTAwMjYgdW5wcml2aWxlZ2VkX2VicGZfZW5hYmxlZCgpKVxcbiBcXHRcXHRwcl9lcnIoU1BFQ1RSRV9WMl9FSUJSU19FQlBGX01TRyk7XFxuIFxcbi1cXHRpZiAoc3BlY3RyZV92Ml9pbl9pYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkge1xcbi1cXHRcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xcbitcXHQvKlxcbitcXHQgKiBoZWFkXzY0LlMgcHJlc2VydmVzIEVGRVIuQVVUT0lCUlMgYWNyb3NzIGJvb3QsIHNvIGEga2V4ZWMgZnJvbSBhXFxuK1xcdCAqIGtlcm5lbCB0aGF0IHJhbiBpbiBBdXRvSUJSUyBtb2RlIGNhcnJpZXMgdGhlIGJpdCBpbnRvIHRoZSBuZXcga2VybmVsLlxcbitcXHQgKiBFeHBsaWNpdGx5IHNldCBvciBjbGVhciBpdCB0byBtYXRjaCB0aGUgc2VsZWN0ZWQgbWl0aWdhdGlvbiwgcmVnYXJkbGVzc1xcbitcXHQgKiBvZiB3aGljaCBtb2RlIGlzIGluIGVmZmVjdC4gIFRoZSBib290IENQVSBkb2VzIHRoaXMgYmVmb3JlXFxuK1xcdCAqIGluaXRfcmVhbF9tb2RlKCkgc25hcHNob3RzIEVGRVIgZm9yIHRoZSBBUCB0cmFtcG9saW5lLCBzbyBBUHMgaW5oZXJpdFxcbitcXHQgKiB0aGUgY29ycmVjdCB2YWx1ZSB0b28uXFxuK1xcdCAqL1xcbitcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xcbitcXHRcXHRpZiAoc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpXFxuIFxcdFxcdFxcdG1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcXG4tXFx0XFx0XFx0dXBkYXRlX3NwZWNfY3RybCh4ODZfc3BlY19jdHJsX2Jhc2UpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3BlY3RyZV92Ml9pbl9pYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgIHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpKSkge1xcbitcXHRcXHR4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7XFxuK1xcdFxcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0VWX1NOUCkpXFxuK1xcdFxcdHByX3dhcm4oU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cpO1xcbitcXG4gXFx0c3dpdGNoIChzcGVjdHJlX3YyX2VuYWJsZWQpIHtcXG4gXFx0Y2FzZSBTUEVDVFJFX1YyX05PTkU6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcXG5pbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcXG4rKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jXFxuQEAgLTE0OTYsMTMgKzE0OTYsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X3NldF9idWdfYml0cyhzdHJ1Y3QgY3B1aW5mb194ODYgKmMpXFxuIFxcdC8qXFxuIFxcdCAqIEFNRCdzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwncyBlSUJSUyAtIHVzZSB0aGUgSW50ZWwgZmVhdHVyZVxcbiBcXHQgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuXFxuLVxcdCAqXFxuLVxcdCAqIERvbid0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxcbi1cXHQgKiB1c2Vyc3BhY2UgaW5kaXJlY3QgYnJhbmNoIHBlcmZvcm1hbmNlLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFxcdTAwMjYgQVJDSF9DQVBfSUJSU19BTEwpIHx8XFxuLVxcdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICAhY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TRVZfU05QKSkpIHtcXG4rXFx0ICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7XFxuIFxcdFxcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7XFxuIFxcdFxcdGlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICEoeDg2X2FyY2hfY2FwX21zciBcXHUwMDI2IEFSQ0hfQ0FQX1BCUlNCX05PKSlcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zZXYuYyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcXG5pbmRleCA5NDRhYWVhNjUwMWYyLi5lZTE0Nzk1YTIwYmQ5IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXFxuQEAgLTUwNCw3ICs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKCFzbnBfYWN0aXZlKVxcbi1cXHRcXHR2YWxpZF92bXNhX2ZlYXR1cmVzIFxcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcXG4rXFx0XFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcXHUwMDI2PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7XFxuIFxcbiBcXHRpZiAoZGF0YS1cXHUwMDNldm1zYV9mZWF0dXJlcyBcXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtMzIxOSw4ICszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiBcXHQgICAgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUCkpXFxuIFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUDtcXG4gXFxuLVxcdGlmIChzZXZfc25wX2VuYWJsZWQgXFx1MDAyNlxcdTAwMjYgdHNjX2toeiBcXHUwMDI2XFx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcXG4tXFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xcbitcXHRpZiAoc2V2X3NucF9lbmFibGVkKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNvbWUgU05QLW9ubHkgZmVhdHVyZXMgc3VjaCBhcyBCVEIgSXNvbGF0aW9uIGFyZVxcbitcXHRcXHQgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcXG4rXFxuK1xcdFxcdGlmICh0c2Nfa2h6IFxcdTAwMjZcXHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxcbitcXHRcXHRcXHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XFxuK1xcbitcXHRcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWSkpXFxuK1xcdFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcXG4rXFx0fVxcbiB9XFxuIFxcbiB2b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcXG4tLS0gYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuKysrIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbkBAIC00NjAsNiArNDYwLDcgQEBcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BTExPV0VEX1NFVl9GRUFUVVJFUyAoMTkqMzIrMjcpIC8qIEFsbG93ZWQgU0VWIEZlYXR1cmVzICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVxcdFxcdCgxOSozMisyOCkgLyogXFxcInN2c21cXFwiIFNWU00gcHJlc2VudCAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRURcXHQoMTkqMzIrMzApIC8qIEFsbG93IFdyaXRlIHRvIGluLXVzZSBoeXBlcnZpc29yLW93bmVkIHBhZ2VzICovXFxuKyNkZWZpbmUgWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUllcXHQoMTkqMzIrMzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqL1xcbiBcXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQXFx0KDIwKjMyKyAwKSAvKiBObyBOZXN0ZWQgRGF0YSBCcmVha3BvaW50cyAqL1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbmluZGV4IDY4OTM5MGMxMGY3YzMuLmNmMjFiZmZmYWNiNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcXG5AQCAtMTMsMTcgKzEzLDI1IEBAXFxuICNpbmNsdWRlIFxcXCJzdm1fdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwia3NlbGZ0ZXN0LmhcXFwiXFxuIFxcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQIDMydVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFXFx0XFx0QklUX1VMTCgwKVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXFx0XFx0QklUX1VMTCg1KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OXFx0QklUX1VMTCg3KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDXFx0XFx0QklUX1VMTCg5KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZXFx0QklUX1VMTCgyMSlcXG4rXFxuKy8qIEZlYXR1cmVzIHZhbGlkIG9ubHkgZm9yIFNOUCBndWVzdHMsIHJlamVjdGVkIGZvciBTRVYtRVMgYW5kIGJlbG93LiAqL1xcbisjZGVmaW5lIFNOUF9PTkxZX0ZFQVRVUkVTXFx0XFx0KFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04gfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKVxcbiBcXG4gLypcXG4gICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrXFxuICAqIGZvciBjZXJ0YWluIFZNIHR5cGVzLiAgRXJyIG9uIHRoZSBzaWRlIG9mIHNhZmV0eSBhbmQgZG9uJ3RcXG4gICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmVcXG4gICogdG8gS1ZNX1NFVl9JTklUMi5cXG4tICpcXG4tICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSdzIG9ubHkgb25lLi4uKVxcbiAgKi9cXG4tI2RlZmluZSBLTk9XTl9GRUFUVVJFUyBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFxcbisjZGVmaW5lIEtOT1dOX0ZFQVRVUkVTXFx0XFx0KFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQIHwgU05QX09OTFlfRkVBVFVSRVMpXFxuIFxcbiBpbnQga3ZtX2ZkO1xcbiB1NjQgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXM7XFxuQEAgLTExMiw3ICsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXFxuIFxcdFxcdGlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyBcXHUwMDI2IEJJVF9VTEwoaSkpKVxcbiBcXHRcXHRcXHR0ZXN0X2luaXQyX2ludmFsaWQodm1fdHlwZSxcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0sXFxuLVxcdFxcdFxcdFxcdFxcXCJ1bmtub3duIGZlYXR1cmVcXFwiKTtcXG4rXFx0XFx0XFx0XFx0XFxcInVua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVxcXCIpO1xcbiBcXHRcXHRlbHNlIGlmIChLTk9XTl9GRUFUVVJFUyBcXHUwMDI2IEJJVF9VTEwoaSkpXFxuIFxcdFxcdFxcdHRlc3RfaW5pdDIodm1fdHlwZSxcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0pO1xcbkBAIC0xNjEsNyArMTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxuIFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApO1xcbiBcXHRpZiAoaGF2ZV9zZXZfZXMpXFxuLVxcdFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfRVNfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTtcXG4rXFx0XFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgXFx1MDAyNiB+U05QX09OTFlfRkVBVFVSRVMpO1xcbiBcXHRpZiAoaGF2ZV9zbnApXFxuIFxcdFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TTlBfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQxLjc5NTc1NzQ2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMTYxMzAwNjg1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDAwOjQ2OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4rKysgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjQ5MiwxMiArMjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZXG4gXG4gY29uZmlnIE1JVElHQVRJT05fSUJSU19FTlRSWVxuIFx0Ym9vbCBcIkVuYWJsZSBJQlJTIG9uIGtlcm5lbCBlbnRyeVwiXG4tXHRkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgXHUwMDI2XHUwMDI2IFg4Nl82NFxuK1x0ZGVwZW5kcyBvbiBYODZfNjRcbiBcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBDb21waWxlIHRoZSBrZXJuZWwgd2l0aCBzdXBwb3J0IGZvciB0aGUgc3BlY3RyZV92Mj1pYnJzIG1pdGlnYXRpb24uXG4tXHQgIFRoaXMgbWl0aWdhdGVzIGJvdGggc3BlY3RyZV92MiBhbmQgcmV0YmxlZWQgYXQgZ3JlYXQgY29zdCB0b1xuLVx0ICBwZXJmb3JtYW5jZS5cbitcdCAgVGhpcyBtaXRpZ2F0ZXMgc3BlY3RyZV92MiBhdCBncmVhdCBjb3N0IHRvIHBlcmZvcm1hbmNlLiAgT24gSW50ZWwsXG4rXHQgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uXG4rXHQgIHJlcXVpcmVzIE1JVElHQVRJT05fVU5SRVRfRU5UUlkgb3IgTUlUSUdBVElPTl9JQlBCX0VOVFJZLlxuIFxuIGNvbmZpZyBNSVRJR0FUSU9OX1NSU09cbiBcdGJvb2wgXCJNaXRpZ2F0ZSBzcGVjdWxhdGl2ZSBSQVMgb3ZlcmZsb3cgb24gQU1EXCJcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC00NjAsNiArNDYwLDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FMTE9XRURfU0VWX0ZFQVRVUkVTICgxOSozMisyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NWU01cdFx0KDE5KjMyKzI4KSAvKiBcInN2c21cIiBTVlNNIHByZXNlbnQgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRURcdCgxOSozMiszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi9cbisjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXHQoMTkqMzIrMzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqL1xuIFxuIC8qIEFNRC1kZWZpbmVkIEV4dGVuZGVkIEZlYXR1cmUgMiBFQVgsIENQVUlEIGxldmVsIDB4ODAwMDAwMjEgKEVBWCksIHdvcmQgMjAgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQXHQoMjAqMzIrIDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuaW5kZXggYWE2MzQzMWJhOTJjMy4uMGRhMjIzNGI3MWM2OSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuQEAgLTMwNSwxMSArMzA1LDE4IEBAIHN0YXRpY19hc3NlcnQoKEFWSUNfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBBVklDX01BWF9cbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEKTtcbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTtcbiBcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFXHRcdFx0XHRCSVQoMClcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVQoMylcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9BTFRFUk5BVEVfSU5KRUNUSU9OXHRcdEJJVCg0KVxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcdFx0XHRcdEJJVCg1KVxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0XHRcdEJJVCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVcdFx0XHRcdEJJVF9VTEwoMClcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVRfVUxMKDMpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlx0XHRCSVRfVUxMKDQpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFx0XHRcdFx0QklUX1VMTCg1KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cdFx0XHRCSVRfVUxMKDcpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ1x0XHRcdFx0QklUX1VMTCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcdFx0XHRCSVRfVUxMKDIxKVxuK1xuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0tcdChTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSlcbiBcbiAjZGVmaW5lIFZNQ0JfQUxMT1dFRF9TRVZfRkVBVFVSRVNfVkFMSURcdFx0XHRCSVRfVUxMKDYzKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbmluZGV4IGRkZjBkYjUzMjZmYTEuLjI0NWRlNGVhOGQ2MGEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbkBAIC0xMzA1LDcgKzEzMDUsMTQgQEAgc3RhdGljIHZvaWQgX19pbml0IHJldGJsZWVkX3VwZGF0ZV9taXRpZ2F0aW9uKHZvaWQpXG4gXG4gXHQvKlxuIFx0ICogTGV0IElCUlMgdHJ1bXAgYWxsIG9uIEludGVsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBlZmZlY3RzIG9mIHRoZVxuLVx0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZ1xuK1x0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy5cbitcdCAqXG4rXHQgKiBPbiBBTUQvSHlnb24sIGxlZ2FjeSBTUEVDX0NUUkwuSUJSUyB0b2dnbGluZyBkb2VzIG5vdCBtaXRpZ2F0ZSB0aGVcbitcdCAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tXG4rXHQgKiB0aGUgUmV0dXJuIEFkZHJlc3MgUHJlZGljdG9yLCBub3QgdGhlIHJlc3RyaWN0ZWQgaW5kaXJlY3QgYnJhbmNoXG4rXHQgKiBwcmVkaWN0b3JzIHRoYXQgSUJSUyBjb250cm9scy4gIFNvIGtlZXAgdGhpcyBJbnRlbC1vbmx5IGFuZCBsZWF2ZVxuK1x0ICogQU1EJ3Mgc29mdHdhcmUgcmV0dXJuLXRodW5rIG1pdGlnYXRpb24gKFVOUkVUL0lCUEIpIGluIHBsYWNlIGV2ZW5cbitcdCAqIHdoZW4gc3BlY3RyZV92Mj1pYnJzIGlzIHNlbGVjdGVkLlxuIFx0ICovXG4gXHRpZiAoYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfSU5URUwpIHtcbiBcdFx0c3dpdGNoIChzcGVjdHJlX3YyX2VuYWJsZWQpIHtcbkBAIC0xNjcyLDYgKzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBTUEVDVFJFX1YyX0xGRU5DRV9NU0cgXCJXQVJOSU5HOiBMRkVOQ0UgbWl0aWdhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHRoaXMgQ1BVLCBkYXRhIGxlYWtzIHBvc3NpYmxlIVxcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0VCUEZfTVNHIFwiV0FSTklORzogVW5wcml2aWxlZ2VkIGVCUEYgaXMgZW5hYmxlZCB3aXRoIGVJQlJTIG9uLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgXCJXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMrTEZFTkNFIG1pdGlnYXRpb24gYW5kIFNNVCwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXG5cIlxuKyNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cgXCJXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0lCUlNfUEVSRl9NU0cgXCJXQVJOSU5HOiBJQlJTIG1pdGlnYXRpb24gc2VsZWN0ZWQgb24gRW5oYW5jZWQgSUJSUyBDUFUsIHRoaXMgbWF5IGNhdXNlIHVubmVjZXNzYXJ5IHBlcmZvcm1hbmNlIGxvc3NcXG5cIlxuIFxuICNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbkBAIC0xOTU2LDEwICsxOTY0LDggQEAgZWFybHlfcGFyYW0oXCJzcGVjdHJlX3YyXCIsIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUodm9pZClcbiB7XG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSkge1xuLVx0XHRwcl9lcnIoXCJLZXJuZWwgbm90IGNvbXBpbGVkIHdpdGggcmV0cG9saW5lOyBubyBtaXRpZ2F0aW9uIGF2YWlsYWJsZSFcIik7XG4rXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSlcbiBcdFx0cmV0dXJuIFNQRUNUUkVfVjJfTk9ORTtcbi1cdH1cbiBcbiBcdHJldHVybiBTUEVDVFJFX1YyX1JFVFBPTElORTtcbiB9XG5AQCAtMjE2NSwxMSArMjE3MSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXG4gXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbiBcdH1cbiBcbi1cdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xuLVx0XHRwcl9lcnIoXCJJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXG5cIik7XG4tXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbi1cdH1cbi1cbiBcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlMpKSB7XG4gXHRcdHByX2VycihcIklCUlMgc2VsZWN0ZWQgYnV0IENQVSBkb2Vzbid0IGhhdmUgSUJSUy4gU3dpdGNoaW5nIHRvIEFVVE8gc2VsZWN0XFxuXCIpO1xuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG5AQCAtMjE5NCwxMiArMjE5NSwyNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgU1BFQ1RSRV9WMl9DTURfRk9SQ0U6XG4tXHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCkpIHtcbitcdFx0LypcbitcdFx0ICogRG9uJ3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlc1xuK1x0XHQgKiBob3N0IHVzZXJzcGFjZSBpbmRpcmVjdCBicmFuY2ggcGVyZm9ybWFuY2UuXG4rXHRcdCAqL1xuK1x0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSkge1xuIFx0XHRcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbiBcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gc3BlY3RyZV92Ml9zZWxlY3RfcmV0cG9saW5lKCk7XG4rXHRcdC8qXG4rXHRcdCAqIElmIHJldHBvbGluZSBpcyB1bmF2YWlsYWJsZSAoZS5nLiBidWlsdCB3aXRob3V0XG4rXHRcdCAqIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSksIGZhbGwgYmFjayB0byBlSUJSUyBvblxuK1x0XHQgKiBBdXRvSUJSUy1jYXBhYmxlIHBhcnRzIHJhdGhlciB0aGFuIGxlYXZpbmcgU05QIGhvc3RzXG4rXHRcdCAqIHVubWl0aWdhdGVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuK1x0XHRcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBTUEVDVFJFX1YyX0NNRF9SRVRQT0xJTkVfTEZFTkNFOlxuQEAgLTIyNDcsNiArMjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSBcdTAwMjZcdTAwMjZcbitcdCAgICBzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FIFx1MDAyNlx1MDAyNlxuK1x0ICAgIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9GT1JDRSB8fFxuK1x0ICAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfQVVUTyBcdTAwMjZcdTAwMjZcbitcdCAgICAgIHNob3VsZF9taXRpZ2F0ZV92dWxuKFg4Nl9CVUdfU1BFQ1RSRV9WMikpKSlcbitcdFx0cHJfZXJyKFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXCIpO1xuK1xuIFx0aWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSlcbiBcdFx0cHJfaW5mbyhcIiVzXFxuXCIsIHNwZWN0cmVfdjJfc3RyaW5nc1tzcGVjdHJlX3YyX2VuYWJsZWRdKTtcbiB9XG5AQCAtMjI3NywxNSArMjI5OSwzMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXHUwMDI2XHUwMDI2IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSlcbiBcdFx0cHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpO1xuIFxuLVx0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHtcbi1cdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbitcdC8qXG4rXHQgKiBoZWFkXzY0LlMgcHJlc2VydmVzIEVGRVIuQVVUT0lCUlMgYWNyb3NzIGJvb3QsIHNvIGEga2V4ZWMgZnJvbSBhXG4rXHQgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC5cbitcdCAqIEV4cGxpY2l0bHkgc2V0IG9yIGNsZWFyIGl0IHRvIG1hdGNoIHRoZSBzZWxlY3RlZCBtaXRpZ2F0aW9uLCByZWdhcmRsZXNzXG4rXHQgKiBvZiB3aGljaCBtb2RlIGlzIGluIGVmZmVjdC4gIFRoZSBib290IENQVSBkb2VzIHRoaXMgYmVmb3JlXG4rXHQgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXRcbitcdCAqIHRoZSBjb3JyZWN0IHZhbHVlIHRvby5cbitcdCAqL1xuK1x0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbitcdFx0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpKVxuIFx0XHRcdG1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0eDg2X3NwZWNfY3RybF9iYXNlIHw9IFNQRUNfQ1RSTF9JQlJTO1xuLVx0XHRcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcbi1cdFx0fVxuK1x0XHRlbHNlXG4rXHRcdFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuK1x0fVxuK1xuK1x0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpKSB7XG4rXHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbitcdFx0dXBkYXRlX3NwZWNfY3RybCh4ODZfc3BlY19jdHJsX2Jhc2UpO1xuIFx0fVxuIFxuK1x0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSlcbitcdFx0cHJfd2FybihTUEVDVFJFX1YyX0VJQlJTX1NOUF9QRVJGX01TRyk7XG4rXG4gXHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xuIFx0Y2FzZSBTUEVDVFJFX1YyX05PTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuaW5kZXggZmE0MjlmMDRmMDAzZS4uODM4N2QzYTQ5YzQzYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcbisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcbkBAIC0xNDk2LDEzICsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKVxuIFx0LypcbiBcdCAqIEFNRCdzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwncyBlSUJSUyAtIHVzZSB0aGUgSW50ZWwgZmVhdHVyZVxuIFx0ICogZmxhZyBhbmQgcHJvdGVjdCBmcm9tIHZlbmRvci1zcGVjaWZpYyBidWdzIHZpYSB0aGUgd2hpdGVsaXN0LlxuLVx0ICpcbi1cdCAqIERvbid0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxuLVx0ICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiBcdCAqL1xuIFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9JQlJTX0FMTCkgfHxcbi1cdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXHUwMDI2XHUwMDI2XG4tXHQgICAgICFjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSkge1xuK1x0ICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7XG4gXHRcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7XG4gXHRcdGlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhKHg4Nl9hcmNoX2NhcF9tc3IgXHUwMDI2IEFSQ0hfQ0FQX1BCUlNCX05PKSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jIGIvYXJjaC94ODYva3ZtL3N2bS9zZXYuY1xuaW5kZXggOTQ0YWFlYTY1MDFmMi4uZWUxNDc5NWEyMGJkOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbkBAIC01MDQsNyArNTA0LDcgQEAgc3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGlmICghc25wX2FjdGl2ZSlcbi1cdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcbitcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiBcbiBcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0zMjE5LDggKzMyMTksMjAgQEAgdm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4gXHQgICAgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUCkpXG4gXHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUDtcbiBcbi1cdGlmIChzZXZfc25wX2VuYWJsZWQgXHUwMDI2XHUwMDI2IHRzY19raHogXHUwMDI2XHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxuLVx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XG4rXHRpZiAoc2V2X3NucF9lbmFibGVkKSB7XG4rXHRcdC8qXG4rXHRcdCAqIFNvbWUgU05QLW9ubHkgZmVhdHVyZXMgc3VjaCBhcyBCVEIgSXNvbGF0aW9uIGFyZVxuK1x0XHQgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC5cbitcdFx0ICovXG4rXHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XG4rXHRcdFx0XHRcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcbitcbitcdFx0aWYgKHRzY19raHogXHUwMDI2XHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxuK1x0XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcbitcbitcdFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUlkpKVxuK1x0XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcbitcdH1cbiB9XG4gXG4gdm9pZCBzZXZfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NFxuLS0tIGEvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuKysrIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuQEAgLTQ2MCw2ICs0NjAsNyBAQFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyKzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVx0XHQoMTkqMzIrMjgpIC8qIFwic3ZzbVwiIFNWU00gcHJlc2VudCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfSFZfSU5VU0VfV1JfQUxMT1dFRFx0KDE5KjMyKzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xuKyNkZWZpbmUgWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUllcdCgxOSozMiszMSkgLyogU0VWLVNOUCBJQlBCIG9uIFZNIEVudHJ5ICovXG4gXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlBcdCgyMCozMisgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggNjg5MzkwYzEwZjdjMy4uY2YyMWJmZmZhY2I2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbkBAIC0xMywxNyArMTMsMjUgQEBcbiAjaW5jbHVkZSBcInN2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0LmhcIlxuIFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVAgMzJ1XG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRCSVRfVUxMKDApXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFx0XHRCSVRfVUxMKDUpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTlx0QklUX1VMTCg3KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0QklUX1VMTCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcdEJJVF9VTEwoMjEpXG4rXG4rLyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovXG4rI2RlZmluZSBTTlBfT05MWV9GRUFUVVJFU1x0XHQoU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04gfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlkpXG4gXG4gLypcbiAgKiBTb21lIGZlYXR1cmVzIG1heSBoYXZlIGhpZGRlbiBkZXBlbmRlbmNpZXMsIG9yIG1heSBvbmx5IHdvcmtcbiAgKiBmb3IgY2VydGFpbiBWTSB0eXBlcy4gIEVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGRvbid0XG4gICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmVcbiAgKiB0byBLVk1fU0VWX0lOSVQyLlxuLSAqXG4tICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSdzIG9ubHkgb25lLi4uKVxuICAqL1xuLSNkZWZpbmUgS05PV05fRkVBVFVSRVMgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcbisjZGVmaW5lIEtOT1dOX0ZFQVRVUkVTXHRcdChTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCB8IFNOUF9PTkxZX0ZFQVRVUkVTKVxuIFxuIGludCBrdm1fZmQ7XG4gdTY0IHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzO1xuQEAgLTExMiw3ICsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXHRcdGlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyBcdTAwMjYgQklUX1VMTChpKSkpXG4gXHRcdFx0dGVzdF9pbml0Ml9pbnZhbGlkKHZtX3R5cGUsXG4gXHRcdFx0XHRcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7IC52bXNhX2ZlYXR1cmVzID0gQklUX1VMTChpKSB9LFxuLVx0XHRcdFx0XCJ1bmtub3duIGZlYXR1cmVcIik7XG4rXHRcdFx0XHRcInVua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVwiKTtcbiBcdFx0ZWxzZSBpZiAoS05PV05fRkVBVFVSRVMgXHUwMDI2IEJJVF9VTEwoaSkpXG4gXHRcdFx0dGVzdF9pbml0Mih2bV90eXBlLFxuIFx0XHRcdFx0XHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpeyAudm1zYV9mZWF0dXJlcyA9IEJJVF9VTEwoaSkgfSk7XG5AQCAtMTYxLDcgKzE2OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX1ZNLCAwKTtcbiBcdGlmIChoYXZlX3Nldl9lcylcbi1cdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuK1x0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyBcdTAwMjYgflNOUF9PTkxZX0ZFQVRVUkVTKTtcbiBcdGlmIChoYXZlX3NucClcbiBcdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NOUF9WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDY6NDEuNzk1NzU4NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU0NDUzMjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIGl0J3MgdG91Y2hpbmcgYSBidW5jaCBvZiBjcnVjaWFsIHg4NiBrZXJuZWwgYXJlYXM6IEtjb25maWcsIENQVSBmZWF0dXJlIGRlZmluaXRpb25zIChgY3B1ZmVhdHVyZXMuaGApLCBTVk0gaGVhZGVycyAoYHN2bS5oYCksIENQVSBidWcgbWl0aWdhdGlvbiBjb2RlIChgYnVncy5jYCwgYGNvbW1vbi5jYCksIEtWTS9TRVYtU05QIHNwZWNpZmljIHN0dWZmIChgc2V2LmNgKSwgYW5kIHNvbWUgc3VwcG9ydGluZyB0b29scyAoYHRvb2xzL2ApLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGZvY3VzIGlzIGFyb3VuZCBtaXRpZ2F0aW5nIENQVSBidWdzIGxpa2UgU3BlY3RyZSBWMiBhbmQgUmV0YmxlZWQsIGFsb25nIHdpdGggZW5hYmxpbmcgQU1EJ3MgU0VWLVNOUCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5LCBJQlBCIG9uIGVudHJ5IGFuZCBCVEIgaXNvbGF0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQ2FuIHdlIGZ1enogdGhpcz9cIiBTaW5jZSBJIGtub3cgdGhlc2UgYXJlYXMsIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGFyZS4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyB0b3VjaCB0aGluZ3MgdGhhdCBpbml0aWFsaXplIHRoZSBDUFUgYXQgYm9vdCBhbmQgaW5pdGlhbGl6ZSB0aGUgU0VWLVNOUCBndWVzdCBkdXJpbmcgVk0gY3JlYXRpb24gbWFrZXMgbWUgdGhpbmsgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHdlIGNhbiBnZXQgc29tZSBmdXp6aW5nIGNvdmVyYWdlIGhlcmUuXG5cbkknbSBmb2N1c2luZyBpbiBvbiB0aGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IGZyb20gdGhlIGBfX3Nldl9ndWVzdF9pbml0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB2YWxpZGF0aW5nIFZNU0EgZmVhdHVyZXMsIGFuZCB0aGVyZSdzIGEgY2hlY2sgaGVyZSB0aGF0IEkgc3VzcGVjdCBtaWdodCBiZSBieXBhc3NlZCBzb21laG93LiBJdCBsb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TRVZfSU5JVDJgIGlvY3RsLCB3aGljaCBjYWxscyBgX19zZXZfZ3Vlc3RfaW5pdGAgdmlhIGBzZXZfZ3Vlc3RfaW5pdDJgLlxuXG5SaWdodCwgYEtWTV9TRVZfSU5JVDJgLiBJIGtub3cgS1ZNIGlvY3RscyBhcmUgZ2VuZXJhbGx5IHJlYWNoYWJsZSwgc28gdGhhdCdzIGEgZ29vZCBzaWduLiBMZXQncyBzZWUgaWYgdGhpcyBvbmUgaGFzIGJlZW4gZnV6emVkIGJlZm9yZS4gSWYgd2UgY2FuIHJlYWNoIHRoaXMgY29kZSBwYXRoIHdoZW4gY3JlYXRpbmcgYSBWTSwgdGhhdCBvcGVucyB1cCBhIGZ1enppbmcgdGFyZ2V0LlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gbWFraW5nIHRoZSBqdWRnZW1lbnQgdGhhdCB3ZSBzaG91bGQgcHJpb3JpdGl6ZSB0aGlzIHBhdGNoLCBzaW5jZSB0aGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2AgYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGluIHRoZSBidWcgbWl0aWdhdGlvbiBjb2RlIChlLmcuIGBidWdzLmNgKSBhcmUgcHJvYmFibHkgYm9vdC10aW1lIG9ubHksIGFuZCBzbyBub3QgYXMgZWFzeSB0byBmdXp6LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIGNhbGwgc2l0ZXMgdG8gYF9fc2V2X2d1ZXN0X2luaXRgIGFuZCBgc2V2X2d1ZXN0X2luaXQyYCBpbiB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1MC4zNDAyOTMzOTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4NjAwNTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2V2X2d1ZXN0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00ODgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDkwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX3Nldl9pbml0ICpkYXRhLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz01Nzk9c3RhdGljIGludCBzZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTk5OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAwLX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NjAyPXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MTYtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2MTc6XFx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcXHUwMDI2ZGF0YSwga3ZtLVxcdTAwM2VhcmNoLnZtX3R5cGUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzMwNz12b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxMy1cXHQgKlxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcXHQgKiBDaGVja2luZyBmb3IgU0VWKyBvdXRzaWRlIG9mIGt2bS1cXHUwMDNlbG9jayBpcyBzYWZlIGFzIF9fc2V2X2d1ZXN0X2luaXQoKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxNS1cXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjUwLjY4ODg5NzA0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODI4MzAyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkFuYWx5emluZyBTRVYgR3Vlc3QgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIGBfX3Nldl9ndWVzdF9pbml0YCBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGBzZXZfZ3Vlc3RfaW5pdGAgYW5kIGBzZXZfZ3Vlc3RfaW5pdDJgLiBJbnRlcmVzdGluZy4gVGhvc2UgZnVuY3Rpb25zLCBpbiB0dXJuLCBhcHBlYXIgdG8gYmUgdHJpZ2dlcmVkIGJ5IHNvbWV0aGluZyBsaWtlIGBzZXZfaXNzdWVfY21kYCDigJMgd2hpY2gsIEkgcmVjYWxsLCBpcyBsaWtlbHkgcmVhY2hlZCB0aHJvdWdoIHRoZSBgS1ZNX01FTU9SWV9FTkNSWVBUX09QYCBpb2N0bC4gVGhpcyBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0eXBpY2FsIFNFViBpbml0aWFsaXphdGlvbiBwYXRoLlxuXG5NeSBmb2N1cyBub3cgaXMgb24gY29uZmlybWluZyBob3cgdGhlc2UgaW5pdGlhdGlvbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gVGhlcmVmb3JlIEknbGwgZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGJvdGggYHNldl9ndWVzdF9pbml0MmAgYW5kIGBzZXZfZ3Vlc3RfaW5pdGAgdG8gc29saWRpZnkgdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgZWRnZSBjYXNlcyBvciBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1NC4xNzE3MjkxODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MjMzMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldl9ndWVzdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc2V2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00NzU9c3RhdGljIHZvaWQgc25wX2d1ZXN0X3JlcV9jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NDg5OnN0YXRpYyBpbnQgX19zZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTc4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTc5OnN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01ODAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01OTgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XFx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcXHUwMDI2ZGF0YSwgdm1fdHlwZSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAxLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjAyOnN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIGt2bS1cXHUwMDNlYXJjaC52bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NTgtXFx0Y2FzZSBLVk1fU0VWX0lOSVQ6XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyNjU5OlxcdFxcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NjAtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYxLVxcdGNhc2UgS1ZNX1NFVl9JTklUMjpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjI2NjI6XFx0XFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXFx0ICpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMzMTQ6XFx0ICogQ2hlY2tpbmcgZm9yIFNFVisgb3V0c2lkZSBvZiBrdm0tXFx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXFx0ICogY2FuIG9ubHkgYmUgZG9uZSBiZWZvcmUgdkNQVXMgYXJlIGNyZWF0ZWQsIGNhY2hlcyBjYW4gYmUgaW5jb2hlcmVudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1NC40Njc5NjY4OTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjgwMjYxMTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0vU0VWLVNOUCBGZWF0dXJlIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgaW4gYGFyY2gveDg2L2t2bS9zdm0vc2V2LmNgLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGFkanVzdG1lbnQgdG8gdGhlIGZlYXR1cmUgdmFsaWRhdGlvbiBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAuICBFc3NlbnRpYWxseSwgdGhlIGNvZGUgaXMgdGlnaHRlbmluZyB1cCB0aGUgY2hlY2tzIGZvciBzcGVjaWZpYyBTRVYgZmVhdHVyZXMsIHNwZWNpZmljYWxseSB0aG9zZSByZWxhdGVkIHRvIFNOUC4gIEJlZm9yZSwgaWYgU05QIHdhc24ndCBhY3RpdmUgKGAhc25wX2FjdGl2ZWApLCB0aGUgY29kZSB3b3VsZCBtYXNrIG91dCBgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NgLiBOb3csIHRoZSBtYXNrIGlzIHdpZGVuZWQgdG8gY292ZXIgYFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLYC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZSBgS1ZNX1NFVl9JTklUMmAgaW9jdGwuIEl0IHNlZW1zIHdlIG5vdyBoYXZlIGEgc3RyaWN0ZXIgY2hlY2sgZm9yIGZlYXR1cmVzIHN1Ym1pdHRlZCB2aWEgdGhlIGBzdHJ1Y3Qga3ZtX3Nldl9pbml0YCBzdHJ1Y3R1cmUsIHJlamVjdGluZyBhbnl0aGluZyBmcm9tIHRoYXQgbWFzayBpZiB0aGUgY3VycmVudCBzeXN0ZW0gZG9lc24ndCBoYXZlIGFuIGFjdGl2ZSBTTlAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGEgZGlyZWN0IGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyBLVk0gaGFuZGxlcyBmZWF0dXJlIG5lZ290aWF0aW9uIGFuZCBhY3RpdmF0aW9uLlxuXG5Nb3Zpbmcgb24gdG8gYHNldl9oYXJkd2FyZV9zZXR1cGAsIGl0IHNlZW1zIHRoYXQgd2UncmUgbm93IGFkZGluZyBtb3JlIGNhcGFiaWxpdGllcyB0byB0aGUgYHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlc2Agd2hlbiBgc2V2X3NucF9lbmFibGVkYCBpcyB0cnVlLiAgU3BlY2lmaWNhbGx5LCBgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVgLCBgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05gLCBhbmQgYFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZYCBhcmUgYmVpbmcgdW5jb25kaXRpb25hbGx5IGFkZGVkLiAgVGhlIGFkZGl0aW9uIG9mIGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AgaXMgcHJlc2VydmVkIGJ1dCBub3cgY29uZGl0aW9uYWwgb24gYFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDYC5cblxuU28sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdXp6LXdvcnRoeT8gQWJzb2x1dGVseSwgeWVzLiBUaGUgdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGlzIGEga2V5IGFyZWEgb2YgaW50ZXJlc3QuIFRoaXMgaGFzIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgYEtWTV9TRVZfSU5JVDJgIGlvY3RsIHdoaWNoIG5vdyBtb3JlIHN0cmljdGx5IGVuZm9yY2VzIHRoaXMgZmVhdHVyZSB2YWxpZGF0aW9uIGxvZ2ljLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBvciBldmVuIGJ5cGFzc2VzLCBnaXZlbiB0aGUgbmV3IGFuZCBjaGFuZ2VkIHZhbGlkYXRpb24gcnVsZXMgaXMgaGlnaCwgZXNwZWNpYWxseSBpZiB3ZSBjYW4gY3JhZnQgbWFsaWNpb3VzIGB2bXNhX2ZlYXR1cmVzYCB2YWx1ZXMuIFdlIHNob3VsZCBleHBsb3JlIHRoaXMsIHBhcnRpY3VsYXJseSBzaW5jZSBpdCBkaXJlY3RseSBtb2RpZmllcyB0aGUgS1ZNIEFQSSBiZWhhdmlvci5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHdoZXRoZXIgYEtWTV9TRVZfSU5JVDJgIGlzIGV2ZW4gcmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBXaGlsZSBTRVYgYW5kIFNFVi1TTlAgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIEtWTSBBUEkgbWlnaHQgYmUgaW52b2tlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgcmV2ZWFsIGludGVyZXN0aW5nIGJlaGF2aW91ci4gRnVydGhlciwgZG9lcyBgX19zZXZfZ3Vlc3RfaW5pdGAgY2hlY2sgYHNldl9zbnBfZW5hYmxlZGA/IFRoaXMgd291bGQgZnVydGhlciBsaW1pdCByZWFjaC4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgaW50ZXJhY3QuIExldCdzIGJhY2t0cmFjayB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgZm9yIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjAzLjc0ODIyOTg4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY2NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3Nldl9ndWVzdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc2V2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00NzU9c3RhdGljIHZvaWQgc25wX2d1ZXN0X3JlcV9jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NDg5OnN0YXRpYyBpbnQgX19zZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NTc5PXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU5OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU5OTpcXHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFxcdTAwMjZkYXRhLCB2bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTYwMj1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIGt2bS1cXHUwMDNlYXJjaC52bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXFx0ICpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMzMTQ6XFx0ICogQ2hlY2tpbmcgZm9yIFNFVisgb3V0c2lkZSBvZiBrdm0tXFx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXFx0ICogY2FuIG9ubHkgYmUgZG9uZSBiZWZvcmUgdkNQVXMgYXJlIGNyZWF0ZWQsIGNhY2hlcyBjYW4gYmUgaW5jb2hlcmVudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzowMy44MDQ4OTk2MjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk2NzMwNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgYF9fc2V2X2d1ZXN0X2luaXRgIFJlYWNoYWJpbGl0eSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluIGFuZCBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgYSBjYWxsIHRvIGBfX3Nldl9ndWVzdF9pbml0YCB3aXRob3V0IGFjdHVhbGx5IGhhdmluZyBTRVYgaGFyZHdhcmUgcHJlc2VudC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGFuZCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBvZnRlbiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHNlY3VyaXR5IGFuYWx5c2lzIOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGFzc3VtcHRpb25zIG1hZGUgYnkgdGhlIGNvZGUsIGVzcGVjaWFsbHkgYXJvdW5kIGZlYXR1cmVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgYmVoYXZlcyBpZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlbid0IG1ldC4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBjYW4gYSBwcml2aWxlZ2VkIHByb2Nlc3Mgb3IgZXZlbiBhIGxlc3MtcHJpdmlsZWdlZCBndWVzdCBtYW5pcHVsYXRlIHRoZSBleGVjdXRpb24gcGF0aCB0byByZWFjaCBgX19zZXZfZ3Vlc3RfaW5pdGAgZXZlbiBvbiBhIG5vbi1TRVYgc3lzdGVtLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluc3RhYmlsaXR5IG9yLCB3b3JzZSwgYSBieXBhc3Mgb2YgdGhlIGludGVuZGVkIHNlY3VyaXR5IGNoZWNrcz8gTGV0J3MgdHJhY2UgaXQgYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU2NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjA3LjQwMTYzMjI3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTA3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODk6XFx0c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbiA0OTA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXFxuIDQ5MTpcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyB2bV90eXBlKVxcbiA0OTI6XFx0e1xcbiA0OTM6XFx0XFx0c3RydWN0IGt2bV9zZXZfaW5mbyAqc2V2ID0gdG9fa3ZtX3Nldl9pbmZvKGt2bSk7XFxuIDQ5NDpcXHRcXHRzdHJ1Y3Qgc2V2X3BsYXRmb3JtX2luaXRfYXJncyBpbml0X2FyZ3MgPSB7MH07XFxuIDQ5NTpcXHRcXHRib29sIGVzX2FjdGl2ZSA9IHZtX3R5cGUgIT0gS1ZNX1g4Nl9TRVZfVk07XFxuIDQ5NjpcXHRcXHRib29sIHNucF9hY3RpdmUgPSB2bV90eXBlID09IEtWTV9YODZfU05QX1ZNO1xcbiA0OTc6XFx0XFx0dTY0IHZhbGlkX3Ztc2FfZmVhdHVyZXMgPSBlc19hY3RpdmUgPyBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgOiAwO1xcbiA0OTg6XFx0XFx0aW50IHJldDtcXG4gNDk5OlxcdFxcbiA1MDA6XFx0XFx0aWYgKGt2bS1cXHUwMDNlY3JlYXRlZF92Y3B1cylcXG4gNTAxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1MDI6XFx0XFxuIDUwMzpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlZmxhZ3MpXFxuIDUwNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTA1OlxcdFxcbiA1MDY6XFx0XFx0aWYgKCFzbnBfYWN0aXZlKVxcbiA1MDc6XFx0XFx0XFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcXHUwMDI2PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7XFxuIDUwODpcXHRcXG4gNTA5OlxcdFxcdGlmIChkYXRhLVxcdTAwM2V2bXNhX2ZlYXR1cmVzIFxcdTAwMjYgfnZhbGlkX3Ztc2FfZmVhdHVyZXMpXFxuIDUxMDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTExOlxcdFxcbiA1MTI6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZWdoY2JfdmVyc2lvbiBcXHUwMDNlIEdIQ0JfVkVSU0lPTl9NQVggfHwgKCFlc19hY3RpdmUgXFx1MDAyNlxcdTAwMjYgZGF0YS1cXHUwMDNlZ2hjYl92ZXJzaW9uKSlcXG4gNTEzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHQvKlxcbiA1MTY6XFx0XFx0ICogS1ZNIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIG1hbmRhdG9yeSBmZWF0dXJlcyBkZWZpbmVkIGJ5IHZlcnNpb25cXG4gNTE3OlxcdFxcdCAqIDIgb2YgdGhlIEdIQ0IgcHJvdG9jb2wsIHNvIGRlZmF1bHQgdG8gdGhhdCBmb3IgU0VWLUVTIGd1ZXN0cyBjcmVhdGVkXFxuIDUxODpcXHRcXHQgKiB2aWEgS1ZNX1NFVl9JTklUMiAoS1ZNX1NFVl9JTklUIGZvcmNlcyB2ZXJzaW9uIDEpLlxcbiA1MTk6XFx0XFx0ICovXFxuIDUyMDpcXHRcXHRpZiAoZXNfYWN0aXZlIFxcdTAwMjZcXHUwMDI2ICFkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24pXFxuIDUyMTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24gPSAyO1xcbiA1MjI6XFx0XFxuIDUyMzpcXHRcXHRpZiAoc25wX2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24gXFx1MDAzYyAyKVxcbiA1MjQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdGlmICh1bmxpa2VseShzZXYtXFx1MDAzZWFjdGl2ZSkpXFxuIDUyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0c2V2LVxcdTAwM2VhY3RpdmUgPSB0cnVlO1xcbiA1MzA6XFx0XFx0c2V2LVxcdTAwM2Vlc19hY3RpdmUgPSBlc19hY3RpdmU7XFxuIDUzMTpcXHRcXHRzZXYtXFx1MDAzZXZtc2FfZmVhdHVyZXMgPSBkYXRhLVxcdTAwM2V2bXNhX2ZlYXR1cmVzO1xcbiA1MzI6XFx0XFx0c2V2LVxcdTAwM2VnaGNiX3ZlcnNpb24gPSBkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb247XFxuIDUzMzpcXHRcXG4gNTM0OlxcdFxcdGlmIChzbnBfYWN0aXZlKVxcbiA1MzU6XFx0XFx0XFx0c2V2LVxcdTAwM2V2bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFO1xcbiA1MzY6XFx0XFxuIDUzNzpcXHRcXHRyZXQgPSBzZXZfYXNpZF9uZXcoc2V2LCB2bV90eXBlKTtcXG4gNTM4OlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjA3LjQwMTk4NDY3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU5MDA3MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0VWIEd1ZXN0IEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBTRVYgZ3Vlc3RzLCBhbmQgaXQncyBzdGFydGluZyB0byBjcnlzdGFsbGl6ZS4gVGhlIGluaXRpYWwgZnVuY3Rpb24sIGBfX3Nldl9ndWVzdF9pbml0YCwgaXMgZGVmaW5pdGVseSByZWFjaGFibGUg4oCTIHRoYXQncyB0aGUganVtcGluZy1vZmYgcG9pbnQuIEl0IHBlcmZvcm1zIHNvbWUgaW5pdGlhbCB2YWxpZGF0aW9uLCBhcyBleHBlY3RlZCwgYW5kIHRoZW4gaXQgY2FsbHMgYHNldl9hc2lkX25ld2AuIFRoYXQgbWFrZXMgc2Vuc2UuIFdlJ3JlIGdldHRpbmcgYW4gQVNJRCBhc3NpZ25lZCwgd2hpY2ggaXMgY3J1Y2lhbC5cblxuQnV0IHRoZW4sIEkgc2VlIHRoaXMgYHNldl9ndWVzdF9pbml0MmAsIGFuZCBpdCdzIGZsYWdnZWQgYXMgKm9ubHkqIGJlaW5nIHJlYWNoYWJsZSB0aHJvdWdoIGBLVk1fU0VWX0lOSVQyYC4gQWgsIHJpZ2h0LCBhIHNlY29uZGFyeSBpbml0aWFsaXphdGlvbiBwaGFzZSwgcG90ZW50aWFsbHkuIE5vdywgd2hlcmUgZG9lcyBgS1ZNX1NFVl9JTklUMmAgZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQgbWUgc2Vl4oCmIEJpbmdvISBJdCdzIGFjdHVhbGx5IGEgY29tbWFuZCBmb3IgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAuIFRoYXQgY29ubmVjdGlvbiB0ZWxscyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuXG5HaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBtZW1vcnkgZW5jcnlwdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIHJldmlldyBgc2V2X21lbV9lbmNfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgZW5jcnlwdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGF0J3MgdGhlIGtleSBub3csIHRvIHNlZSBob3cgdGhhdCBjb21tYW5kIGFjdHVhbGx5IHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTEuNDYxMDA1OTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MjU6XFx0aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuMjYyNjpcXHR7XFxuMjYyNzpcXHRcXHRzdHJ1Y3Qga3ZtX3Nldl9jbWQgc2V2X2NtZDtcXG4yNjI4OlxcdFxcdGludCByO1xcbjI2Mjk6XFx0XFxuMjYzMDpcXHRcXHRpZiAoIXNldl9lbmFibGVkKVxcbjI2MzE6XFx0XFx0XFx0cmV0dXJuIC1FTk9UVFk7XFxuMjYzMjpcXHRcXG4yNjMzOlxcdFxcdGlmICghYXJncClcXG4yNjM0OlxcdFxcdFxcdHJldHVybiAwO1xcbjI2MzU6XFx0XFxuMjYzNjpcXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNnNldl9jbWQsIGFyZ3AsIHNpemVvZihzdHJ1Y3Qga3ZtX3Nldl9jbWQpKSlcXG4yNjM3OlxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbjI2Mzg6XFx0XFxuMjYzOTpcXHRcXHRndWFyZChtdXRleCkoXFx1MDAyNmt2bS1cXHUwMDNlbG9jayk7XFxuMjY0MDpcXHRcXG4yNjQxOlxcdFxcdC8qIE9ubHkgdGhlIGVuY19jb250ZXh0X293bmVyIGhhbmRsZXMgc29tZSBtZW1vcnkgZW5jIG9wZXJhdGlvbnMuICovXFxuMjY0MjpcXHRcXHRpZiAoaXNfbWlycm9yaW5nX2VuY19jb250ZXh0KGt2bSkgXFx1MDAyNlxcdTAwMjZcXG4yNjQzOlxcdFxcdCAgICAhaXNfY21kX2FsbG93ZWRfZnJvbV9taXJyb3Ioc2V2X2NtZC5pZCkpXFxuMjY0NDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yNjQ1OlxcdFxcbjI2NDY6XFx0XFx0LypcXG4yNjQ3OlxcdFxcdCAqIE9uY2UgS1ZNX1NFVl9JTklUMiBpbml0aWFsaXplcyBhIEtWTSBpbnN0YW5jZSBhcyBhbiBTTlAgZ3Vlc3QsIG9ubHlcXG4yNjQ4OlxcdFxcdCAqIGFsbG93IHRoZSB1c2Ugb2YgU05QLXNwZWNpZmljIGNvbW1hbmRzLlxcbjI2NDk6XFx0XFx0ICovXFxuMjY1MDpcXHRcXHRpZiAoc2V2X3NucF9ndWVzdChrdm0pIFxcdTAwMjZcXHUwMDI2IHNldl9jbWQuaWQgXFx1MDAzYyBLVk1fU0VWX1NOUF9MQVVOQ0hfU1RBUlQpXFxuMjY1MTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbjI2NTI6XFx0XFxuMjY1MzpcXHRcXHRzd2l0Y2ggKHNldl9jbWQuaWQpIHtcXG4yNjU0OlxcdFxcdGNhc2UgS1ZNX1NFVl9FU19JTklUOlxcbjI2NTU6XFx0XFx0XFx0aWYgKCFzZXZfZXNfZW5hYmxlZClcXG4yNjU2OlxcdFxcdFxcdFxcdHJldHVybiAtRU5PVFRZO1xcbjI2NTc6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMjY1ODpcXHRcXHRjYXNlIEtWTV9TRVZfSU5JVDpcXG4yNjU5OlxcdFxcdFxcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjYwOlxcdFxcdFxcdGJyZWFrO1xcbjI2NjE6XFx0XFx0Y2FzZSBLVk1fU0VWX0lOSVQyOlxcbjI2NjI6XFx0XFx0XFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjYzOlxcdFxcdFxcdGJyZWFrO1xcbjI2NjQ6XFx0XFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9TVEFSVDpcXG4yNjY1OlxcdFxcdFxcdHIgPSBzZXZfbGF1bmNoX3N0YXJ0KGt2bSwgXFx1MDAyNnNldl9jbWQpO1xcbjI2NjY6XFx0XFx0XFx0YnJlYWs7XFxuMjY2NzpcXHRcXHRjYXNlIEtWTV9TRVZfTEFVTkNIX1VQREFURV9EQVRBOlxcbjI2Njg6XFx0XFx0XFx0ciA9IHNldl9sYXVuY2hfdXBkYXRlX2RhdGEoa3ZtLCBcXHUwMDI2c2V2X2NtZCk7XFxuMjY2OTpcXHRcXHRcXHRicmVhaztcXG4yNjcwOlxcdFxcdGNhc2UgS1ZNX1NFVl9MQVVOQ0hfVVBEQVRFX1ZNU0E6XFxuMjY3MTpcXHRcXHRcXHRyID0gc2V2X2xhdW5jaF91cGRhdGVfdm1zYShrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjcyOlxcdFxcdFxcdGJyZWFrO1xcbjI2NzM6XFx0XFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9NRUFTVVJFOlxcbjI2NzQ6XFx0XFx0XFx0ciA9IHNldl9sYXVuY2hfbWVhc3VyZShrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTEuNDYxNTMwNjQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMwNzAwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTRVYgTWVtb3J5IEVuY3J5cHRpb24gSU9DVEwqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgc2V2X21lbV9lbmNfaW9jdGxgIGZ1bmN0aW9uLiBUaGUgdmVyeSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGlzIGNoZWNrIGZvciBgc2V2X2VuYWJsZWRgLiBJZiBpdCdzICpmYWxzZSosIGJvb20sIHdlJ3JlIHJldHVybmluZyBgLUVOT1RUWWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYSBjbGVhciBzaWduYWwgdGhhdCB0aGUgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQgb3IgaXNuJ3QgYWN0aXZlLlxuXG5CdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGBzZXZfZW5hYmxlZGAgYWN0dWFsbHkgKnRydWUqIGluIHRoZSBlbnZpcm9ubWVudHMgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbj8gU3BlY2lmaWNhbGx5LCBRRU1VIGFuZCBHQ0UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBTRVYgZmVhdHVyZXMgYXJlIGNvbnNpc3RlbnRseSBhY3RpdmF0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBJdCdzIGNydWNpYWwgZm9yIG15IGFuYWx5c2lzLlxuXG5UaGVyZWZvcmUsIHRoZSBuZXh0IHN0ZXAgaXMgY3J5c3RhbCBjbGVhcjogSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGRldGVybWluZSAqaG93KiBgc2V2X2VuYWJsZWRgIGlzIGJlaW5nIHNldC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGVudGlyZSBJT0NUTCBwYXRoIGlzIGV2ZW4gcmVsZXZhbnQgdG8gbXkgbmVlZHMgaW4gdGhlc2Ugc3BlY2lmaWMgY29udGV4dHMuIExldCdzIGZpbmQgdGhhdCBhc3NpZ25tZW50IGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg4MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTUuNTg0NjAzNzg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxMzg3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V2X2VuYWJsZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU1LS8qIGVuYWJsZS9kaXNhYmxlIFNFViBzdXBwb3J0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1NjpzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgc2V2X2VuYWJsZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTc6bW9kdWxlX3BhcmFtX25hbWVkKHNldiwgc2V2X2VuYWJsZWQsIGJvb2wsIDA0NDQpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2MjktXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyNjMwOlxcdGlmICghc2V2X2VuYWJsZWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjMxLVxcdFxcdHJldHVybiAtRU5PVFRZO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDA0PXZvaWQgX19pbml0IHNldl9zZXRfY3B1X2NhcHModm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwMDUte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzAwNjpcXHRpZiAoc2V2X2VuYWJsZWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDA3LVxcdFxcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9TRVYpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzA1NzpcXHRpZiAoIXNldl9lbmFibGVkIHx8ICFucHRfZW5hYmxlZCB8fCAhbnJpcHMpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTU1LW91dDpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxNTY6XFx0aWYgKHNldl9lbmFibGVkKSB7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTU3LVxcdFxcdGluaXRfYXJncy5wcm9iZSA9IHRydWU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTEtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjEyOlxcdHNldl9lbmFibGVkID0gc2V2X3N1cHBvcnRlZDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTMtXFx0c2V2X2VzX2VuYWJsZWQgPSBzZXZfZXNfc3VwcG9ydGVkO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMjM4PXZvaWQgc2V2X2hhcmR3YXJlX3Vuc2V0dXAodm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzkte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI0MDpcXHRpZiAoIXNldl9lbmFibGVkKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMyNTU9aW50IHNldl9jcHVfaW5pdChzdHJ1Y3Qgc3ZtX2NwdV9kYXRhICpzZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyNTYte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI1NzpcXHRpZiAoIXNldl9lbmFibGVkKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI1OC1cXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTYuMDM3NzQ3NDI3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzU3NzU3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgU0VWIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBzZXZfZW5hYmxlZGAgaXMgYmVpbmcgYXNzaWduZWQgdGhlIHZhbHVlIG9mIGBzZXZfc3VwcG9ydGVkYCB3aXRoaW4gdGhlIGBzZXZfaGFyZHdhcmVfc2V0dXBgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHRvIGJlIGFjdGl2YXRlZC4gQnV0LCB0aGUgY3J1Y2lhbCBwaWVjZSBpcyBgc2V2X3N1cHBvcnRlZGAuIEkgc3VzcGVjdCB0aGF0IGlmIHRoZSBoYXJkd2FyZSAqZG9lc24ndCogc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9zdXBwb3J0ZWRgIGlzIGdvaW5nIHRvIGV2YWx1YXRlIHRvIGZhbHNlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBhY3R1YWwgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzoxOC45NzM1MjYwNTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODM2OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldl9zdXBwb3J0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTkxPXN0YXRpYyB1NjQgc25wX3N1cHBvcnRlZF9wb2xpY3lfYml0cyBfX3JvX2FmdGVyX2luaXQ7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjkzOnN0YXRpYyB1NjQgc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIF9fcm9fYWZ0ZXJfaW5pdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTk0LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00ODk9c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTYtXFx0Ym9vbCBzbnBfYWN0aXZlID0gdm1fdHlwZSA9PSBLVk1fWDg2X1NOUF9WTTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjQ5NzpcXHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTgtXFx0aW50IHJldDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MjE5Mj1pbnQgc2V2X2Rldl9nZXRfYXR0cih1MzIgZ3JvdXAsIHU2NCBhdHRyLCB1NjQgKnZhbClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjE5OC1cXHRjYXNlIEtWTV9YODZfU0VWX1ZNU0FfRkVBVFVSRVM6XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyMTk5OlxcdFxcdCp2YWwgPSBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXM7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yMjAwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDUzLVxcdGJvb2wgc2V2X2VzX3N1cHBvcnRlZCA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzA1NDpcXHRib29sIHNldl9zdXBwb3J0ZWQgPSBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwNTUtXFx0dTMyIHZtX3R5cGVzID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExNy1cXHR9XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTE4OlxcdHNldl9zdXBwb3J0ZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExOS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzE2My1cXHRcXHRpZiAoc2V2X3BsYXRmb3JtX2luaXQoXFx1MDAyNmluaXRfYXJncykpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTY0OlxcdFxcdFxcdHNldl9zdXBwb3J0ZWQgPSBzZXZfZXNfc3VwcG9ydGVkID0gc2V2X3NucF9zdXBwb3J0ZWQgPSBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNjUtXFx0XFx0ZWxzZSBpZiAoc2V2X3NucF9zdXBwb3J0ZWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxODgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTg5OlxcdGlmIChzZXZfc3VwcG9ydGVkIFxcdTAwMjZcXHUwMDI2IG1pbl9zZXZfYXNpZCBcXHUwMDNjPSBtYXhfc2V2X2FzaWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTkwLVxcdFxcdHZtX3R5cGVzIHw9IEJJVChLVk1fWDg2X1NFVl9WTSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMDAtXFx0XFx0cHJfaW5mbyhcXFwiU0VWICVzIChBU0lEcyAldSAtICV1KVxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMDE6XFx0XFx0XFx0c2V2X3N0cl9mZWF0dXJlX3N0YXRlKHNldl9zdXBwb3J0ZWQsIHZtX3R5cGVzIFxcdTAwMjYgQklUKEtWTV9YODZfU0VWX1ZNKSksXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjAyLVxcdFxcdFxcdG1pbl9zZXZfYXNpZCwgbWF4X3Nldl9hc2lkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMTI6XFx0c2V2X2VuYWJsZWQgPSBzZXZfc3VwcG9ydGVkO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMy1cXHRzZXZfZXNfZW5hYmxlZCA9IHNldl9lc19zdXBwb3J0ZWQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTUtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjE2OlxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA9IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE3LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE5LVxcdCAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjA6XFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyMS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyNi1cXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjc6XFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMjgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjMwLVxcdFxcdGlmICh0c2Nfa2h6IFxcdTAwMjZcXHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzMTpcXHRcXHRcXHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjMyLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIzMy1cXHRcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjM0OlxcdFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzoxOS4wNjUzNjUwNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NzU5MDAzNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0VWLVJlbGF0ZWQgQ29kZSBQYXRocyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgc2V2X2VuYWJsZWRgIGJlaW5nIGZhbHNlIGlzIHRoZSBjcnVjaWFsIGZhY3Rvci4gSWYgdGhlIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9lbmFibGVkYCB3aWxsIGJlIGZhbHNlLiBDb25zZXF1ZW50bHksIGBzZXZfbWVtX2VuY19pb2N0bGAgcmV0dXJucyBgLUVOT1RUWWAuIFRoaXMgbWVhbnMgdGhhdCBib3RoIGBLVk1fU0VWX0lOSVQyYCBhbmQgYF9fc2V2X2d1ZXN0X2luaXRgIHdpdGhpbiBRRU1VL0dDRSBiZWNvbWUgY29tcGxldGVseSB1bnJlYWNoYWJsZSB1bmxlc3MgdGhlIHVuZGVybHlpbmcgaG9zdCBoYXJkd2FyZSBpcyBzcGVjaWZpY2FsbHkgU0VWLWVuYWJsZWQuXG5cbldhaXQgYSBzZWNvbmQsIGNhbiBRRU1VIGV2ZW4gKmVtdWxhdGUqIFNFViBmdW5jdGlvbmFsaXR5PyBJIGtub3cgaXQncyBhIGNvbXBsaWNhdGVkIGZlYXR1cmUuIE5vLCB0aGF0J3MgcmlnaHQsIFNFViBuZWVkcyB0aGUgYWN0dWFsIEFNRCBoYXJkd2FyZSB0byBkbyB0aGUgZW5jcnlwdGlvbi4gU3l6a2FsbGVyIG9uIEdDRSBpcyB1c2luZyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZWl0aGVyIG9uIEludGVsIG9yIEFNRCwgYnV0IEkga25vdyB0aGF0IGluIHN0YW5kYXJkIEdDRSBWTXMsIFNFViBpc24ndCB1c3VhbGx5IGF2YWlsYWJsZSwgb3IgZW5hYmxlZCwgZm9yIHRob3NlIG5lc3RlZCBndWVzdHMuIFBsdXMsIFFFTVUgY2FuJ3QgZW11bGF0ZSBTRVYgd2l0aG91dCB0aGF0IGhvc3Qgc3VwcG9ydC5cblxuQWxyaWdodCwgc28gdGhlIFNFViBpbml0aWFsaXphdGlvbiBpcyBsaWtlbHkgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBtb3N0IGNvbmZpZ3VyYXRpb25zLiBMZXQgbWUgc2VlLCBpcyB0aGVyZSBhbnl0aGluZyAqZWxzZSogZnJvbSB0aGlzIHBhdGNoIHRoYXQgSSBjYW4gcmVhY2g/IFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgYGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jYCBhbmQgYGFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNgLiBMZXQncyB0YWtlIGEgbG9vayBhdCBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgIHRvIHNlZSBpZiBhbnl0aGluZyB0aGVyZSBpcyByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MTAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MDguODI0MzcxNzQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzMjU3Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0yMjg3PXN0YXRpYyBib29sIF9faW5pdCBjcHVfd2FudHNfaWJwYl9icGYodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTIyOTYtXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MjI5NzpzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMjI5OC17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMzA4PXZvaWQgX19pbml0IGNwdV9zZWxlY3RfbWl0aWdhdGlvbnModm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMzODItXFx0c3BlY3RyZV92MV9hcHBseV9taXRpZ2F0aW9uKCk7XFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MzM4MzpcXHRzcGVjdHJlX3YyX2FwcGx5X21pdGlnYXRpb24oKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzg0LVxcdHJldGJsZWVkX2FwcGx5X21pdGlnYXRpb24oKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MTAuMDI3NjM0MjU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzgxMTA2Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IE5vIFZhbHVlIEZvdW5kKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBxdWVzdGlvbiBpczogaXMgdGhlcmUgYW55ICpmdXp6YWJsZSogZnVuY3Rpb25hbGl0eSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2g/IE15IGluaXRpYWwgdGhvdWdodCBpcyBubywgYnV0IGxldCdzIGJlIG1ldGhvZGljYWwuXG5cbkZpcnN0LCBgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uYCDigJMgdGhhdCdzIGEgYm9vdC10aW1lIHNldHVwIGZ1bmN0aW9uIChgX19pbml0YCkuIEZ1enplcnMgZG9uJ3QgZ2VuZXJhbGx5IHRhcmdldCB0aG9zZSBiZWNhdXNlIHRoZXkgcnVuIGJlZm9yZSB0aGUgZnV6emVyIGV2ZW4gZ2V0cyBhIGNoYW5jZSB0byBzdGFydCBwb2tpbmcgYXQgdGhlIHN5c3RlbSB2aWEgc3lzY2FsbHMgb3IgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNvLCB0aGF0J3MgYSBub24tc3RhcnRlci5cblxuVGhlbiwgdGhlcmUncyB0aGUgU0VWIChTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uKSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIFNFViBpb2N0bHMgbG9vayBpbnRlcmVzdGluZyBhdCBmaXJzdCBnbGFuY2UuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGAvZGV2L3NldmAgYW5kIEtWTSBTRVYgaW9jdGxzLiBIb3dldmVyLCB0aGF0IHN1cHBvcnQgaXMgY29udGluZ2VudCBvbiB0aGUgaG9zdCBoYXJkd2FyZSAqYWN0dWFsbHkqIHN1cHBvcnRpbmcgU0VWLiBJZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBzdXBwb3J0IGl0LCB0aGUgaW9jdGwganVzdCByZXR1cm5zIGAtRU5PVFRZYCwgd2hpY2ggaXMgYSBkZWFkIGVuZC4gRnVydGhlcm1vcmUsIG91ciBHQ0UgU3l6a2FsbGVyIGluc3RhbmNlcywgd2hpY2ggYXJlIHRoZSBtYWluIGZvY3VzLCBkb24ndCBoYXZlIFNFViBlbmFibGVkLiBFdmVuIGlmIHRoZXkgZGlkLCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlIEknbSBsb29raW5nIGF0IGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIHZlcnkgc21hbGwgYml0bWFzayBjaGFuZ2U6IGEgdmFsaWRhdGlvbiBtb2RpZmljYXRpb24uXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdGhhdCBjb2RlIHBhdGhzIHdoaWNoIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIGRvbid0IG1lcml0IGZ1enppbmcuIFNFViBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgQU1EIGhhcmR3YXJlLCB3aGljaCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgaG9zdCBzdXBwb3J0LiBUaGVyZWZvcmUsIEkgY2FuJ3QgdHJpZ2dlciB0aGUgU0VWIHBhdGhzIHVzaW5nIHRoZSBmdXp6ZXJzLlxuXG5JIHJlLWNoZWNrZWQgYHNldl9tZW1fZW5jX2lvY3RsYCBhbmQgY29uZmlybWVkIGBzZXZfZW5hYmxlZGAgYmVpbmcgY2hlY2tlZCwgd2l0aCBgc2V2X2VuYWJsZWRgIG9ubHkgYmVpbmcgdHJ1ZSBpZiBgc2V2X3N1cHBvcnRlZGAgaXMgdHJ1ZSwgYW5kIGBzZXZfc3VwcG9ydGVkYCBvbmx5IGJlaW5nIHRydWUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBzZXZfcGxhdGZvcm1faW5pdGAsIHdoaWNoIG5lZWRzIFNFViBDUFUuXG5cblNvLCBTRVYgaXMgb3V0LiBXaGF0IGFib3V0IHRoZSBvdGhlciBjaGFuZ2VzPyBNb3N0IG9mIHRoZW0gYXJlIGluIGBfX2luaXRgIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZXMgaW4gYGJ1Z3MuY2AgYXJlIGBfX2luaXRgLiBUaGUgY2hhbmdlcyBpbiBgY29tbW9uLmNgIGFyZSBgX19pbml0YCB0b28uXG5cbkxldCdzIHN1bW1hcml6ZSB0aGUgY2hhbmdlcyBhZ2FpbjpcblxuKiAgIGBhcmNoL3g4Ni9LY29uZmlnYDogS2NvbmZpZyBjaGFuZ2VzLCBub3QgZnV6emFibGUuXG4qICAgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhgOiBNYWNybyBhZGRpdGlvbnMsIG5vdCBmdXp6YWJsZS5cbiogICBgYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmhgOiBNYWNybyBhZGRpdGlvbnMsIG5vdCBmdXp6YWJsZS5cbiogICBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgOiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYF9faW5pdGAgKHJldGJsZWVkIHVwZGF0ZSwgbWl0aWdhdGlvbiBzZWxlY3Rpb24vYXBwbGljYXRpb24pIC0gbm90IGZ1enphYmxlLlxuKiAgIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jYDogYGNwdV9zZXRfYnVnX2JpdHNgIGlzIGFsc28gY2FsbGVkIGF0IGBfX2luaXRgIC0gbm90IGZ1enphYmxlLlxuKiAgIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYDogYF9fc2V2X2d1ZXN0X2luaXRgIHJlcXVpcmVzIFNFViBoYXJkd2FyZSBhbmQgaXMgbm90IGFjY2Vzc2libGUgZnJvbSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVS4gYHNldl9oYXJkd2FyZV9zZXR1cGAgaXMgYF9faW5pdGAgLSBhbHNvIG5vdCBmdXp6YWJsZS5cbiogICBgdG9vbHMvLi4uYDogVGVzdCBhbmQgaGVhZGVyIGNoYW5nZXMsIG5vdCBkaXJlY3RseSBmdXp6YWJsZS5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcmVhY2hhYmxlIGNvZGUgZWl0aGVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQncyBub3QgZW11bGF0ZWQgb3IgaXMgYm9vdC10aW1lIHNldHVwLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGVpdGhlciBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIG15IHRlc3RpbmcgZW52aXJvbm1lbnQsIG9yIGFyZSBub3QgdGFyZ2V0YWJsZSBieSBhIGZ1enplci5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzY2LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MjMuNDA4NzQzNjI0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c6jq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 00:07:38 +0000 UTC FinishedAt: 2026-08-05 00:53:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWIyYTM3ODU1NzExZTFjNTdjNWY1Y2Q0MWExNmNlNjRmMDhlYzU0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMDA6NDY6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjQ5MiwxMiAmIzQzOzI0OTIsMTMgQEAgY29uZmlnIE1JVElHQVRJT05fSUJQQl9FTlRSWVxuIFxuIGNvbmZpZyBNSVRJR0FUSU9OX0lCUlNfRU5UUllcbiBcdGJvb2wgXCYjMzQ7RW5hYmxlIElCUlMgb24ga2VybmVsIGVudHJ5XCYjMzQ7XG4tXHRkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgXHUwMDI2XHUwMDI2IFg4Nl82NFxuJiM0MztcdGRlcGVuZHMgb24gWDg2XzY0XG4gXHRkZWZhdWx0IHlcbiBcdGhlbHBcbiBcdCAgQ29tcGlsZSB0aGUga2VybmVsIHdpdGggc3VwcG9ydCBmb3IgdGhlIHNwZWN0cmVfdjI9aWJycyBtaXRpZ2F0aW9uLlxuLVx0ICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG9cbi1cdCAgcGVyZm9ybWFuY2UuXG4mIzQzO1x0ICBUaGlzIG1pdGlnYXRlcyBzcGVjdHJlX3YyIGF0IGdyZWF0IGNvc3QgdG8gcGVyZm9ybWFuY2UuICBPbiBJbnRlbCxcbiYjNDM7XHQgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uXG4mIzQzO1x0ICByZXF1aXJlcyBNSVRJR0FUSU9OX1VOUkVUX0VOVFJZIG9yIE1JVElHQVRJT05fSUJQQl9FTlRSWS5cbiBcbiBjb25maWcgTUlUSUdBVElPTl9TUlNPXG4gXHRib29sIFwmIzM0O01pdGlnYXRlIHNwZWN1bGF0aXZlIFJBUyBvdmVyZmxvdyBvbiBBTURcJiMzNDtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC00NjAsNiAmIzQzOzQ2MCw3IEBAXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BTExPV0VEX1NFVl9GRUFUVVJFUyAoMTkqMzImIzQzOzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVx0XHQoMTkqMzImIzQzOzI4KSAvKiBcJiMzNDtzdnNtXCYjMzQ7IFNWU00gcHJlc2VudCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfSFZfSU5VU0VfV1JfQUxMT1dFRFx0KDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi9cbiYjNDM7I2RlZmluZSBYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWVx0KDE5KjMyJiM0MzszMSkgLyogU0VWLVNOUCBJQlBCIG9uIFZNIEVudHJ5ICovXG4gXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlBcdCgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuaW5kZXggYWE2MzQzMWJhOTJjMy4uMGRhMjIzNGI3MWM2OSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuQEAgLTMwNSwxMSAmIzQzOzMwNSwxOCBAQCBzdGF0aWNfYXNzZXJ0KChBVklDX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gQVZJQ19NQVhfXG4gc3RhdGljX2Fzc2VydCgoWDJBVklDX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDX01BWF9QSFlTSUNBTF9JRCk7XG4gc3RhdGljX2Fzc2VydCgoWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCBcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCk7XG4gXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRcdFx0QklUKDApXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cdFx0QklUKDMpXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlx0XHRCSVQoNClcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXHRcdFx0XHRCSVQoNSlcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDXHRcdFx0XHRCSVQoOSlcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRcdFx0QklUX1VMTCgwKVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVRfVUxMKDMpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT05cdFx0QklUX1VMTCg0KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXHRcdFx0XHRCSVRfVUxMKDUpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cdFx0XHRCSVRfVUxMKDcpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0XHRcdEJJVF9VTEwoOSlcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWVx0XHRcdEJJVF9VTEwoMjEpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLXHQoU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlkpXG4gXG4gI2RlZmluZSBWTUNCX0FMTE9XRURfU0VWX0ZFQVRVUkVTX1ZBTElEXHRcdFx0QklUX1VMTCg2MylcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5pbmRleCBkZGYwZGI1MzI2ZmExLi4yNDVkZTRlYThkNjBhIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5AQCAtMTMwNSw3ICYjNDM7MTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZClcbiBcbiBcdC8qXG4gXHQgKiBMZXQgSUJSUyB0cnVtcCBhbGwgb24gSW50ZWwgd2l0aG91dCBhZmZlY3RpbmcgdGhlIGVmZmVjdHMgb2YgdGhlXG4tXHQgKiByZXRibGVlZD0gY21kbGluZSBvcHRpb24gZXhjZXB0IGZvciBjYWxsIGRlcHRoIGJhc2VkIHN0dWZmaW5nXG4mIzQzO1x0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIE9uIEFNRC9IeWdvbiwgbGVnYWN5IFNQRUNfQ1RSTC5JQlJTIHRvZ2dsaW5nIGRvZXMgbm90IG1pdGlnYXRlIHRoZVxuJiM0MztcdCAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tXG4mIzQzO1x0ICogdGhlIFJldHVybiBBZGRyZXNzIFByZWRpY3Rvciwgbm90IHRoZSByZXN0cmljdGVkIGluZGlyZWN0IGJyYW5jaFxuJiM0MztcdCAqIHByZWRpY3RvcnMgdGhhdCBJQlJTIGNvbnRyb2xzLiAgU28ga2VlcCB0aGlzIEludGVsLW9ubHkgYW5kIGxlYXZlXG4mIzQzO1x0ICogQU1EJiMzOTtzIHNvZnR3YXJlIHJldHVybi10aHVuayBtaXRpZ2F0aW9uIChVTlJFVC9JQlBCKSBpbiBwbGFjZSBldmVuXG4mIzQzO1x0ICogd2hlbiBzcGVjdHJlX3YyPWlicnMgaXMgc2VsZWN0ZWQuXG4gXHQgKi9cbiBcdGlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xuIFx0XHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xuQEAgLTE2NzIsNiAmIzQzOzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBTUEVDVFJFX1YyX0xGRU5DRV9NU0cgXCYjMzQ7V0FSTklORzogTEZFTkNFIG1pdGlnYXRpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIENQVSwgZGF0YSBsZWFrcyBwb3NzaWJsZSFcXG5cJiMzNDtcbiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgXCYjMzQ7V0FSTklORzogVW5wcml2aWxlZ2VkIGVCUEYgaXMgZW5hYmxlZCB3aXRoIGVJQlJTIG9uLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcblwmIzM0O1xuICNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19MRkVOQ0VfRUJQRl9TTVRfTVNHIFwmIzM0O1dBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUyYjNDM7TEZFTkNFIG1pdGlnYXRpb24gYW5kIFNNVCwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXG5cJiMzNDtcbiYjNDM7I2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX1NOUF9QRVJGX01TRyBcJiMzNDtXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcblwmIzM0O1xuICNkZWZpbmUgU1BFQ1RSRV9WMl9JQlJTX1BFUkZfTVNHIFwmIzM0O1dBUk5JTkc6IElCUlMgbWl0aWdhdGlvbiBzZWxlY3RlZCBvbiBFbmhhbmNlZCBJQlJTIENQVSwgdGhpcyBtYXkgY2F1c2UgdW5uZWNlc3NhcnkgcGVyZm9ybWFuY2UgbG9zc1xcblwmIzM0O1xuIFxuICNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbkBAIC0xOTU2LDEwICYjNDM7MTk2NCw4IEBAIGVhcmx5X3BhcmFtKFwmIzM0O3NwZWN0cmVfdjJcJiMzNDssIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUodm9pZClcbiB7XG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSkge1xuLVx0XHRwcl9lcnIoXCYjMzQ7S2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSlcbiBcdFx0cmV0dXJuIFNQRUNUUkVfVjJfTk9ORTtcbi1cdH1cbiBcbiBcdHJldHVybiBTUEVDVFJFX1YyX1JFVFBPTElORTtcbiB9XG5AQCAtMjE2NSwxMSAmIzQzOzIxNzEsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG4gXHR9XG4gXG4tXHRpZiAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfSUJSUyBcdTAwMjZcdTAwMjYgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O0lCUlMgc2VsZWN0ZWQgYnV0IG5vdCBJbnRlbCBDUFUuIFN3aXRjaGluZyB0byBBVVRPIHNlbGVjdFxcblwmIzM0Oyk7XG4tXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbi1cdH1cbi1cbiBcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlMpKSB7XG4gXHRcdHByX2VycihcJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24mIzM5O3QgaGF2ZSBJQlJTLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXG5cJiMzNDspO1xuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG5AQCAtMjE5NCwxMiAmIzQzOzIxOTUsMjYgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiBcdFx0XHRicmVhaztcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIFNQRUNUUkVfVjJfQ01EX0ZPUkNFOlxuLVx0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpKSB7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXNcbiYjNDM7XHRcdCAqIGhvc3QgdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTX0VOSEFOQ0VEKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSB7XG4gXHRcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFxuIFx0XHRzcGVjdHJlX3YyX2VuYWJsZWQgPSBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUoKTtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBJZiByZXRwb2xpbmUgaXMgdW5hdmFpbGFibGUgKGUuZy4gYnVpbHQgd2l0aG91dFxuJiM0MztcdFx0ICogQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSwgZmFsbCBiYWNrIHRvIGVJQlJTIG9uXG4mIzQzO1x0XHQgKiBBdXRvSUJSUy1jYXBhYmxlIHBhcnRzIHJhdGhlciB0aGFuIGxlYXZpbmcgU05QIGhvc3RzXG4mIzQzO1x0XHQgKiB1bm1pdGlnYXRlZC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcbiYjNDM7XHRcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFNQRUNUUkVfVjJfQ01EX1JFVFBPTElORV9MRkVOQ0U6XG5AQCAtMjI0Nyw2ICYjNDM7MjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9GT1JDRSB8fFxuJiM0MztcdCAgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0FVVE8gXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19TUEVDVFJFX1YyKSkpKVxuJiM0MztcdFx0cHJfZXJyKFwmIzM0O0tlcm5lbCBub3QgY29tcGlsZWQgd2l0aCByZXRwb2xpbmU7IG5vIG1pdGlnYXRpb24gYXZhaWxhYmxlIVwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSlcbiBcdFx0cHJfaW5mbyhcJiMzNDslc1xcblwmIzM0Oywgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pO1xuIH1cbkBAIC0yMjc3LDE1ICYjNDM7MjI5OSwzMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXHUwMDI2XHUwMDI2IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSlcbiBcdFx0cHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpO1xuIFxuLVx0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHtcbi1cdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGhlYWRfNjQuUyBwcmVzZXJ2ZXMgRUZFUi5BVVRPSUJSUyBhY3Jvc3MgYm9vdCwgc28gYSBrZXhlYyBmcm9tIGFcbiYjNDM7XHQgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC5cbiYjNDM7XHQgKiBFeHBsaWNpdGx5IHNldCBvciBjbGVhciBpdCB0byBtYXRjaCB0aGUgc2VsZWN0ZWQgbWl0aWdhdGlvbiwgcmVnYXJkbGVzc1xuJiM0MztcdCAqIG9mIHdoaWNoIG1vZGUgaXMgaW4gZWZmZWN0LiAgVGhlIGJvb3QgQ1BVIGRvZXMgdGhpcyBiZWZvcmVcbiYjNDM7XHQgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXRcbiYjNDM7XHQgKiB0aGUgY29ycmVjdCB2YWx1ZSB0b28uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbiYjNDM7XHRcdGlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSlcbiBcdFx0XHRtc3Jfc2V0X2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuLVx0XHR9IGVsc2Uge1xuLVx0XHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbi1cdFx0XHR1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7XG4tXHRcdH1cbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICEoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgICBzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkpIHtcbiYjNDM7XHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbiYjNDM7XHRcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSlcbiYjNDM7XHRcdHByX3dhcm4oU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cpO1xuJiM0MztcbiBcdHN3aXRjaCAoc3BlY3RyZV92Ml9lbmFibGVkKSB7XG4gXHRjYXNlIFNQRUNUUkVfVjJfTk9ORTpcbiBcdFx0cmV0dXJuO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jXG5pbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuQEAgLTE0OTYsMTMgJiM0MzsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKVxuIFx0LypcbiBcdCAqIEFNRCYjMzk7cyBBdXRvSUJSUyBpcyBlcXVpdmFsZW50IHRvIEludGVsJiMzOTtzIGVJQlJTIC0gdXNlIHRoZSBJbnRlbCBmZWF0dXJlXG4gXHQgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuXG4tXHQgKlxuLVx0ICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxuLVx0ICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiBcdCAqL1xuIFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9JQlJTX0FMTCkgfHxcbi1cdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXHUwMDI2XHUwMDI2XG4tXHQgICAgICFjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSkge1xuJiM0MztcdCAgICBjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xuIFx0XHRzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpO1xuIFx0XHRpZiAoIWNwdV9tYXRjaGVzKGNwdV92dWxuX3doaXRlbGlzdCwgTk9fRUlCUlNfUEJSU0IpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgISh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9QQlJTQl9OTykpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zZXYuYyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbmluZGV4IDk0NGFhZWE2NTAxZjIuLmVlMTQ3OTVhMjBiZDkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXG5AQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKCFzbnBfYWN0aXZlKVxuLVx0XHR2YWxpZF92bXNhX2ZlYXR1cmVzIFx1MDAyNj0gflNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiBcbiBcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0zMjE5LDggJiM0MzszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuIFx0ICAgIGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlApKVxuIFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVA7XG4gXG4tXHRpZiAoc2V2X3NucF9lbmFibGVkIFx1MDAyNlx1MDAyNiB0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbi1cdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcdGlmIChzZXZfc25wX2VuYWJsZWQpIHtcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBTb21lIFNOUC1vbmx5IGZlYXR1cmVzIHN1Y2ggYXMgQlRCIElzb2xhdGlvbiBhcmVcbiYjNDM7XHRcdCAqIGF2YWlsYWJsZSBvbiBhbGwgc3lzdGVtcyB0aGF0IHN1cHBvcnQgU05QLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OO1xuJiM0MztcbiYjNDM7XHRcdGlmICh0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbiYjNDM7XHRcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xuJiM0MztcbiYjNDM7XHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZKSlcbiYjNDM7XHRcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZO1xuJiM0MztcdH1cbiB9XG4gXG4gdm9pZCBzZXZfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NFxuLS0tIGEvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FMTE9XRURfU0VWX0ZFQVRVUkVTICgxOSozMiYjNDM7MjcpIC8qIEFsbG93ZWQgU0VWIEZlYXR1cmVzICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9TVlNNXHRcdCgxOSozMiYjNDM7MjgpIC8qIFwmIzM0O3N2c21cJiMzNDsgU1ZTTSBwcmVzZW50ICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9IVl9JTlVTRV9XUl9BTExPV0VEXHQoMTkqMzImIzQzOzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xuJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXHQoMTkqMzImIzQzOzMxKSAvKiBTRVYtU05QIElCUEIgb24gVk0gRW50cnkgKi9cbiBcbiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUFx0KDIwKjMyJiM0MzsgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggNjg5MzkwYzEwZjdjMy4uY2YyMWJmZmZhY2I2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbkBAIC0xMywxNyAmIzQzOzEzLDI1IEBAXG4gI2luY2x1ZGUgXCYjMzQ7c3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2tzZWxmdGVzdC5oXCYjMzQ7XG4gXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCAzMnVcbiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRCSVRfVUxMKDApXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcdFx0QklUX1VMTCg1KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OXHRCSVRfVUxMKDcpXG4mIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0QklUX1VMTCg5KVxuJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZXHRCSVRfVUxMKDIxKVxuJiM0MztcbiYjNDM7LyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovXG4mIzQzOyNkZWZpbmUgU05QX09OTFlfRkVBVFVSRVNcdFx0KFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXFxcbiYjNDM7XHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFxcXG4mIzQzO1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxuJiM0MztcdFx0XHRcdFx0IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKVxuIFxuIC8qXG4gICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrXG4gICogZm9yIGNlcnRhaW4gVk0gdHlwZXMuICBFcnIgb24gdGhlIHNpZGUgb2Ygc2FmZXR5IGFuZCBkb24mIzM5O3RcbiAgKiBleHBlY3QgdGhhdCBhbGwgc3VwcG9ydGVkIGZlYXR1cmVzIGNhbiBiZSBwYXNzZWQgb25lIGJ5IG9uZVxuICAqIHRvIEtWTV9TRVZfSU5JVDIuXG4tICpcbi0gKiAoV2VsbCwgcmlnaHQgbm93IHRoZXJlJiMzOTtzIG9ubHkgb25lLi4uKVxuICAqL1xuLSNkZWZpbmUgS05PV05fRkVBVFVSRVMgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcbiYjNDM7I2RlZmluZSBLTk9XTl9GRUFUVVJFU1x0XHQoU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVAgfCBTTlBfT05MWV9GRUFUVVJFUylcbiBcbiBpbnQga3ZtX2ZkO1xuIHU2NCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcztcbkBAIC0xMTIsNyAmIzQzOzEyMCw3IEBAIHZvaWQgdGVzdF9mZWF0dXJlcyh1MzIgdm1fdHlwZSwgdTY0IHN1cHBvcnRlZF9mZWF0dXJlcylcbiBcdFx0aWYgKCEoc3VwcG9ydGVkX2ZlYXR1cmVzIFx1MDAyNiBCSVRfVUxMKGkpKSlcbiBcdFx0XHR0ZXN0X2luaXQyX2ludmFsaWQodm1fdHlwZSxcbiBcdFx0XHRcdFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0sXG4tXHRcdFx0XHRcJiMzNDt1bmtub3duIGZlYXR1cmVcJiMzNDspO1xuJiM0MztcdFx0XHRcdFwmIzM0O3Vua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVwmIzM0Oyk7XG4gXHRcdGVsc2UgaWYgKEtOT1dOX0ZFQVRVUkVTIFx1MDAyNiBCSVRfVUxMKGkpKVxuIFx0XHRcdHRlc3RfaW5pdDIodm1fdHlwZSxcbiBcdFx0XHRcdFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0pO1xuQEAgLTE2MSw3ICYjNDM7MTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApO1xuIFx0aWYgKGhhdmVfc2V2X2VzKVxuLVx0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyk7XG4mIzQzO1x0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyBcdTAwMjYgflNOUF9PTkxZX0ZFQVRVUkVTKTtcbiBcdGlmIChoYXZlX3NucClcbiBcdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NOUF9WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBib290LXRpbWUgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIHNldHVwIChfX2luaXQgZnVuY3Rpb25zKSBhbmQgS1ZNIFNFVi1TTlAgZ3Vlc3QgaW5pdGlhbGl6YXRpb24uIFRoZSBfX2luaXQgZnVuY3Rpb25zIHJ1biBvbmNlIGR1cmluZyBib290IGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IGEgc3lzY2FsbCBmdXp6ZXIuIFRoZSBLVk0gU0VWLVNOUCBjaGFuZ2VzIGluIGBfX3Nldl9ndWVzdF9pbml0YCBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBLVk1fU0VWX0lOSVQyIGlvY3RsIGlmIHRoZSBob3N0IGhhcyBwaHlzaWNhbCBBTUQgU0VWIGhhcmR3YXJlIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDAwOjQ2OjM4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWcKaW5kZXggZTcyNWI0MzlkMGEyMy4uNGJkOTFkNDFkYmJhZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0yNDkyLDEyICYjNDM7MjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZCiAKIGNvbmZpZyBNSVRJR0FUSU9OX0lCUlNfRU5UUlkKIAlib29sICYjMzQ7RW5hYmxlIElCUlMgb24ga2VybmVsIGVudHJ5JiMzNDsKLQlkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgJmFtcDsmYW1wOyBYODZfNjQKJiM0MzsJZGVwZW5kcyBvbiBYODZfNjQKIAlkZWZhdWx0IHkKIAloZWxwCiAJICBDb21waWxlIHRoZSBrZXJuZWwgd2l0aCBzdXBwb3J0IGZvciB0aGUgc3BlY3RyZV92Mj1pYnJzIG1pdGlnYXRpb24uCi0JICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG8KLQkgIHBlcmZvcm1hbmNlLgomIzQzOwkgIFRoaXMgbWl0aWdhdGVzIHNwZWN0cmVfdjIgYXQgZ3JlYXQgY29zdCB0byBwZXJmb3JtYW5jZS4gIE9uIEludGVsLAomIzQzOwkgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uCiYjNDM7CSAgcmVxdWlyZXMgTUlUSUdBVElPTl9VTlJFVF9FTlRSWSBvciBNSVRJR0FUSU9OX0lCUEJfRU5UUlkuCiAKIGNvbmZpZyBNSVRJR0FUSU9OX1NSU08KIAlib29sICYjMzQ7TWl0aWdhdGUgc3BlY3VsYXRpdmUgUkFTIG92ZXJmbG93IG9uIEFNRCYjMzQ7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEAKICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyJiM0MzsyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTQkJKDE5KjMyJiM0MzsyOCkgLyogJiMzNDtzdnNtJiMzNDsgU1ZTTSBwcmVzZW50ICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRUQJKDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi8KJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZCSgxOSozMiYjNDM7MzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqLwogCiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQCSgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCmluZGV4IGFhNjM0MzFiYTkyYzMuLjBkYTIyMzRiNzFjNjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oCkBAIC0zMDUsMTEgJiM0MzszMDUsMTggQEAgc3RhdGljX2Fzc2VydCgoQVZJQ19NQVhfUEhZU0lDQUxfSUQgJmFtcDsgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gQVZJQ19NQVhfCiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEICZhbXA7IEFWSUNfUEhZU0lDQUxfTUFYX0lOREVYX01BU0spID09IFgyQVZJQ19NQVhfUEhZU0lDQUxfSUQpOwogc3RhdGljX2Fzc2VydCgoWDJBVklDXzRLX01BWF9QSFlTSUNBTF9JRCAmYW1wOyBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTsKIAotI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRQkJCQlCSVQoMCkKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1JFU1RSSUNURURfSU5KRUNUSU9OCQlCSVQoMykKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT04JCUJJVCg0KQotI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJCQlCSVQoNSkKLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MJCQkJQklUKDkpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRQkJCQlCSVRfVUxMKDApCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT04JCUJJVF9VTEwoMykKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9BTFRFUk5BVEVfSU5KRUNUSU9OCQlCSVRfVUxMKDQpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJCQlCSVRfVUxMKDUpCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTgkJCUJJVF9VTEwoNykKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDCQkJCUJJVF9VTEwoOSkKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZCQkJQklUX1VMTCgyMSkKJiM0MzsKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLCShTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFwKJiM0MzsJCQkJCSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSkKIAogI2RlZmluZSBWTUNCX0FMTE9XRURfU0VWX0ZFQVRVUkVTX1ZBTElECQkJQklUX1VMTCg2MykKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwppbmRleCBkZGYwZGI1MzI2ZmExLi4yNDVkZTRlYThkNjBhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwpAQCAtMTMwNSw3ICYjNDM7MTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZCkKIAogCS8qCiAJICogTGV0IElCUlMgdHJ1bXAgYWxsIG9uIEludGVsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBlZmZlY3RzIG9mIHRoZQotCSAqIHJldGJsZWVkPSBjbWRsaW5lIG9wdGlvbiBleGNlcHQgZm9yIGNhbGwgZGVwdGggYmFzZWQgc3R1ZmZpbmcKJiM0MzsJICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy4KJiM0MzsJICoKJiM0MzsJICogT24gQU1EL0h5Z29uLCBsZWdhY3kgU1BFQ19DVFJMLklCUlMgdG9nZ2xpbmcgZG9lcyBub3QgbWl0aWdhdGUgdGhlCiYjNDM7CSAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tCiYjNDM7CSAqIHRoZSBSZXR1cm4gQWRkcmVzcyBQcmVkaWN0b3IsIG5vdCB0aGUgcmVzdHJpY3RlZCBpbmRpcmVjdCBicmFuY2gKJiM0MzsJICogcHJlZGljdG9ycyB0aGF0IElCUlMgY29udHJvbHMuICBTbyBrZWVwIHRoaXMgSW50ZWwtb25seSBhbmQgbGVhdmUKJiM0MzsJICogQU1EJiMzOTtzIHNvZnR3YXJlIHJldHVybi10aHVuayBtaXRpZ2F0aW9uIChVTlJFVC9JQlBCKSBpbiBwbGFjZSBldmVuCiYjNDM7CSAqIHdoZW4gc3BlY3RyZV92Mj1pYnJzIGlzIHNlbGVjdGVkLgogCSAqLwogCWlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkgewogCQlzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkgewpAQCAtMTY3Miw2ICYjNDM7MTY3OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCByZXRwb2xpbmVfc2VxX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KICNkZWZpbmUgU1BFQ1RSRV9WMl9MRkVOQ0VfTVNHICYjMzQ7V0FSTklORzogTEZFTkNFIG1pdGlnYXRpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIENQVSwgZGF0YSBsZWFrcyBwb3NzaWJsZSFcbiYjMzQ7CiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgJiMzNDtXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMgb24sIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXG4mIzM0OwogI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgJiMzNDtXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMmIzQzO0xGRU5DRSBtaXRpZ2F0aW9uIGFuZCBTTVQsIGRhdGEgbGVha3MgcG9zc2libGUgdmlhIFNwZWN0cmUgdjIgQkhCIGF0dGFja3MhXG4mIzM0OwomIzQzOyNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cgJiMzNDtXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xuJiMzNDsKICNkZWZpbmUgU1BFQ1RSRV9WMl9JQlJTX1BFUkZfTVNHICYjMzQ7V0FSTklORzogSUJSUyBtaXRpZ2F0aW9uIHNlbGVjdGVkIG9uIEVuaGFuY2VkIElCUlMgQ1BVLCB0aGlzIG1heSBjYXVzZSB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBsb3NzXG4mIzM0OwogCiAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMCkBAIC0xOTU2LDEwICYjNDM7MTk2NCw4IEBAIGVhcmx5X3BhcmFtKCYjMzQ7c3BlY3RyZV92MiYjMzQ7LCBzcGVjdHJlX3YyX3BhcnNlX2NtZGxpbmUpOwogCiBzdGF0aWMgZW51bSBzcGVjdHJlX3YyX21pdGlnYXRpb24gX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X3JldHBvbGluZSh2b2lkKQogewotCWlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKSB7Ci0JCXByX2VycigmIzM0O0tlcm5lbCBub3QgY29tcGlsZWQgd2l0aCByZXRwb2xpbmU7IG5vIG1pdGlnYXRpb24gYXZhaWxhYmxlISYjMzQ7KTsKJiM0MzsJaWYgKCFJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSkpCiAJCXJldHVybiBTUEVDVFJFX1YyX05PTkU7Ci0JfQogCiAJcmV0dXJuIFNQRUNUUkVfVjJfUkVUUE9MSU5FOwogfQpAQCAtMjE2NSwxMSAmIzQzOzIxNzEsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKQogCQlzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87CiAJfQogCi0JaWYgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0lCUlMgJmFtcDsmYW1wOyBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9JTlRFTCkgewotCQlwcl9lcnIoJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcbiYjMzQ7KTsKLQkJc3BlY3RyZV92Ml9jbWQgPSBTUEVDVFJFX1YyX0NNRF9BVVRPOwotCX0KLQogCWlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTICZhbXA7JmFtcDsgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTKSkgewogCQlwcl9lcnIoJiMzNDtJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24mIzM5O3QgaGF2ZSBJQlJTLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcbiYjMzQ7KTsKIAkJc3BlY3RyZV92Ml9jbWQgPSBTUEVDVFJFX1YyX0NNRF9BVVRPOwpAQCAtMjE5NCwxMiAmIzQzOzIxOTUsMjYgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X21pdGlnYXRpb24odm9pZCkKIAkJCWJyZWFrOwogCQlmYWxsdGhyb3VnaDsKIAljYXNlIFNQRUNUUkVfVjJfQ01EX0ZPUkNFOgotCQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpKSB7CiYjNDM7CQkvKgomIzQzOwkJICogRG9uJiMzOTt0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMKJiM0MzsJCSAqIGhvc3QgdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTX0VOSEFOQ0VEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSkgewogCQkJc3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUzsKIAkJCWJyZWFrOwogCQl9CiAKIAkJc3BlY3RyZV92Ml9lbmFibGVkID0gc3BlY3RyZV92Ml9zZWxlY3RfcmV0cG9saW5lKCk7CiYjNDM7CQkvKgomIzQzOwkJICogSWYgcmV0cG9saW5lIGlzIHVuYXZhaWxhYmxlIChlLmcuIGJ1aWx0IHdpdGhvdXQKJiM0MzsJCSAqIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSksIGZhbGwgYmFjayB0byBlSUJSUyBvbgomIzQzOwkJICogQXV0b0lCUlMtY2FwYWJsZSBwYXJ0cyByYXRoZXIgdGhhbiBsZWF2aW5nIFNOUCBob3N0cwomIzQzOwkJICogdW5taXRpZ2F0ZWQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FICZhbXA7JmFtcDsKJiM0MzsJCSAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKQomIzQzOwkJCXNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7CiAJCWJyZWFrOwogCiAJY2FzZSBTUEVDVFJFX1YyX0NNRF9SRVRQT0xJTkVfTEZFTkNFOgpAQCAtMjI0Nyw2ICYjNDM7MjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKQogCQl9CiAJfQogCiYjNDM7CWlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpICZhbXA7JmFtcDsKJiM0MzsJICAgIHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgJmFtcDsmYW1wOwomIzQzOwkgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0ZPUkNFIHx8CiYjNDM7CSAgICAgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0FVVE8gJmFtcDsmYW1wOwomIzQzOwkgICAgICBzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1NQRUNUUkVfVjIpKSkpCiYjNDM7CQlwcl9lcnIoJiMzNDtLZXJuZWwgbm90IGNvbXBpbGVkIHdpdGggcmV0cG9saW5lOyBubyBtaXRpZ2F0aW9uIGF2YWlsYWJsZSEmIzM0Oyk7CiYjNDM7CiAJaWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSkKIAkJcHJfaW5mbygmIzM0OyVzXG4mIzM0Oywgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pOwogfQpAQCAtMjI3NywxNSAmIzQzOzIyOTksMzIgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbih2b2lkKQogCWlmIChzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9FSUJSUyAmYW1wOyZhbXA7IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSkKIAkJcHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpOwogCi0JaWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHsKLQkJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHsKJiM0MzsJLyoKJiM0MzsJICogaGVhZF82NC5TIHByZXNlcnZlcyBFRkVSLkFVVE9JQlJTIGFjcm9zcyBib290LCBzbyBhIGtleGVjIGZyb20gYQomIzQzOwkgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC4KJiM0MzsJICogRXhwbGljaXRseSBzZXQgb3IgY2xlYXIgaXQgdG8gbWF0Y2ggdGhlIHNlbGVjdGVkIG1pdGlnYXRpb24sIHJlZ2FyZGxlc3MKJiM0MzsJICogb2Ygd2hpY2ggbW9kZSBpcyBpbiBlZmZlY3QuICBUaGUgYm9vdCBDUFUgZG9lcyB0aGlzIGJlZm9yZQomIzQzOwkgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXQKJiM0MzsJICogdGhlIGNvcnJlY3QgdmFsdWUgdG9vLgomIzQzOwkgKi8KJiM0MzsJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHsKJiM0MzsJCWlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkKIAkJCW1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7Ci0JCX0gZWxzZSB7Ci0JCQl4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7Ci0JCQl1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7Ci0JCX0KJiM0MzsJCWVsc2UKJiM0MzsJCQltc3JfY2xlYXJfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgJmFtcDsmYW1wOwomIzQzOwkgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpICZhbXA7JmFtcDsKJiM0MzsJICAgICAgc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpKSB7CiYjNDM7CQl4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7CiYjNDM7CQl1cGRhdGVfc3BlY19jdHJsKHg4Nl9zcGVjX2N0cmxfYmFzZSk7CiAJfQogCiYjNDM7CWlmIChzcGVjdHJlX3YyX2luX2VpYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0VWX1NOUCkpCiYjNDM7CQlwcl93YXJuKFNQRUNUUkVfVjJfRUlCUlNfU05QX1BFUkZfTVNHKTsKJiM0MzsKIAlzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkgewogCWNhc2UgU1BFQ1RSRV9WMl9OT05FOgogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKQEAgLTE0OTYsMTMgJiM0MzsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKQogCS8qCiAJICogQU1EJiMzOTtzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwmIzM5O3MgZUlCUlMgLSB1c2UgdGhlIEludGVsIGZlYXR1cmUKIAkgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuCi0JICoKLQkgKiBEb24mIzM5O3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlcyBob3N0Ci0JICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS4KIAkgKi8KIAlpZiAoKHg4Nl9hcmNoX2NhcF9tc3IgJmFtcDsgQVJDSF9DQVBfSUJSU19BTEwpIHx8Ci0JICAgIChjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSAmYW1wOyZhbXA7Ci0JICAgICAhY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TRVZfU05QKSkpIHsKJiM0MzsJICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7CiAJCXNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7CiAJCWlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgJmFtcDsmYW1wOwogCQkgICAgISh4ODZfYXJjaF9jYXBfbXNyICZhbXA7IEFSQ0hfQ0FQX1BCUlNCX05PKSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jCmluZGV4IDk0NGFhZWE2NTAxZjIuLmVlMTQ3OTVhMjBiZDkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zZXYuYwpAQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFzbnBfYWN0aXZlKQotCQl2YWxpZF92bXNhX2ZlYXR1cmVzICZhbXA7PSB+U1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7CiYjNDM7CQl2YWxpZF92bXNhX2ZlYXR1cmVzICZhbXA7PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7CiAKIAlpZiAoZGF0YS0mZ3Q7dm1zYV9mZWF0dXJlcyAmYW1wOyB+dmFsaWRfdm1zYV9mZWF0dXJlcykKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0zMjE5LDggJiM0MzszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKQogCSAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSkKIAkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQOwogCi0JaWYgKHNldl9zbnBfZW5hYmxlZCAmYW1wOyZhbXA7IHRzY19raHogJmFtcDsmYW1wOyBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSkKLQkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDOwomIzQzOwlpZiAoc2V2X3NucF9lbmFibGVkKSB7CiYjNDM7CQkvKgomIzQzOwkJICogU29tZSBTTlAtb25seSBmZWF0dXJlcyBzdWNoIGFzIEJUQiBJc29sYXRpb24gYXJlCiYjNDM7CQkgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC4KJiM0MzsJCSAqLwomIzQzOwkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwKJiM0MzsJCQkJCSAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjsKJiM0MzsKJiM0MzsJCWlmICh0c2Nfa2h6ICZhbXA7JmFtcDsgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfU0VDVVJFX1RTQykpCiYjNDM7CQkJc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDOwomIzQzOwomIzQzOwkJaWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUlkpKQomIzQzOwkJCXNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTsKJiM0MzsJfQogfQogCiB2b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpCmRpZmYgLS1naXQgYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NAotLS0gYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKQEAgLTQ2MCw2ICYjNDM7NDYwLDcgQEAKICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyJiM0MzsyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTQkJKDE5KjMyJiM0MzsyOCkgLyogJiMzNDtzdnNtJiMzNDsgU1ZTTSBwcmVzZW50ICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRUQJKDE5KjMyJiM0MzszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi8KJiM0MzsjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZCSgxOSozMiYjNDM7MzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqLwogCiAvKiBBTUQtZGVmaW5lZCBFeHRlbmRlZCBGZWF0dXJlIDIgRUFYLCBDUFVJRCBsZXZlbCAweDgwMDAwMDIxIChFQVgpLCB3b3JkIDIwICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQCSgyMCozMiYjNDM7IDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuYwppbmRleCA2ODkzOTBjMTBmN2MzLi5jZjIxYmZmZmFjYjY1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmMKQEAgLTEzLDE3ICYjNDM7MTMsMjUgQEAKICNpbmNsdWRlICYjMzQ7c3ZtX3V0aWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2tzZWxmdGVzdC5oJiMzNDsKIAotI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCAzMnUKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFCQlCSVRfVUxMKDApCiYjNDM7I2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAkJQklUX1VMTCg1KQomIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04JQklUX1VMTCg3KQomIzQzOyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MJCUJJVF9VTEwoOSkKJiM0MzsjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZCUJJVF9VTEwoMjEpCiYjNDM7CiYjNDM7LyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovCiYjNDM7I2RlZmluZSBTTlBfT05MWV9GRUFUVVJFUwkJKFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDIHwgXAomIzQzOwkJCQkJIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKQogCiAvKgogICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrCiAgKiBmb3IgY2VydGFpbiBWTSB0eXBlcy4gIEVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGRvbiYjMzk7dAogICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmUKICAqIHRvIEtWTV9TRVZfSU5JVDIuCi0gKgotICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSYjMzk7cyBvbmx5IG9uZS4uLikKICAqLwotI2RlZmluZSBLTk9XTl9GRUFUVVJFUyBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUAomIzQzOyNkZWZpbmUgS05PV05fRkVBVFVSRVMJCShTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCB8IFNOUF9PTkxZX0ZFQVRVUkVTKQogCiBpbnQga3ZtX2ZkOwogdTY0IHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzOwpAQCAtMTEyLDcgJiM0MzsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpCiAJCWlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyAmYW1wOyBCSVRfVUxMKGkpKSkKIAkJCXRlc3RfaW5pdDJfaW52YWxpZCh2bV90eXBlLAogCQkJCSZhbXA7KHN0cnVjdCBrdm1fc2V2X2luaXQpeyAudm1zYV9mZWF0dXJlcyA9IEJJVF9VTEwoaSkgfSwKLQkJCQkmIzM0O3Vua25vd24gZmVhdHVyZSYjMzQ7KTsKJiM0MzsJCQkJJiMzNDt1bmtub3duIG9yIHVuc3VwcG9ydGVkIGZlYXR1cmUgZm9yIFZNIHR5cGUmIzM0Oyk7CiAJCWVsc2UgaWYgKEtOT1dOX0ZFQVRVUkVTICZhbXA7IEJJVF9VTEwoaSkpCiAJCQl0ZXN0X2luaXQyKHZtX3R5cGUsCiAJCQkJJmFtcDsoc3RydWN0IGt2bV9zZXZfaW5pdCl7IC52bXNhX2ZlYXR1cmVzID0gQklUX1VMTChpKSB9KTsKQEAgLTE2MSw3ICYjNDM7MTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApOwogCWlmIChoYXZlX3Nldl9lcykKLQkJdGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpOwomIzQzOwkJdGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgJmFtcDsgflNOUF9PTkxZX0ZFQVRVUkVTKTsKIAlpZiAoaGF2ZV9zbnApCiAJCXRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TTlBfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjIzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBzZXJpZXMgaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBhIGJ1bmNoIG9mIGNydWNpYWwgeDg2IGtlcm5lbCBhcmVhczogS2NvbmZpZywgQ1BVIGZlYXR1cmUgZGVmaW5pdGlvbnMgKGBjcHVmZWF0dXJlcy5oYCksIFNWTSBoZWFkZXJzIChgc3ZtLmhgKSwgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIGNvZGUgKGBidWdzLmNgLCBgY29tbW9uLmNgKSwgS1ZNL1NFVi1TTlAgc3BlY2lmaWMgc3R1ZmYgKGBzZXYuY2ApLCBhbmQgc29tZSBzdXBwb3J0aW5nIHRvb2xzIChgdG9vbHMvYCkuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZm9jdXMgaXMgYXJvdW5kIG1pdGlnYXRpbmcgQ1BVIGJ1Z3MgbGlrZSBTcGVjdHJlIFYyIGFuZCBSZXRibGVlZCwgYWxvbmcgd2l0aCBlbmFibGluZyBBTUQmIzM5O3MgU0VWLVNOUCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5LCBJQlBCIG9uIGVudHJ5IGFuZCBCVEIgaXNvbGF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O0NhbiB3ZSBmdXp6IHRoaXM/JiMzNDsgU2luY2UgSSBrbm93IHRoZXNlIGFyZWFzLCBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgd2hlcmUgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMgYXJlLiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIHRoaW5ncyB0aGF0IGluaXRpYWxpemUgdGhlIENQVSBhdCBib290IGFuZCBpbml0aWFsaXplIHRoZSBTRVYtU05QIGd1ZXN0IGR1cmluZyBWTSBjcmVhdGlvbiBtYWtlcyBtZSB0aGluayB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHdlIGNhbiBnZXQgc29tZSBmdXp6aW5nIGNvdmVyYWdlIGhlcmUuCgpJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYCBmaXJzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IGZyb20gdGhlIGBfX3Nldl9ndWVzdF9pbml0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB2YWxpZGF0aW5nIFZNU0EgZmVhdHVyZXMsIGFuZCB0aGVyZSYjMzk7cyBhIGNoZWNrIGhlcmUgdGhhdCBJIHN1c3BlY3QgbWlnaHQgYmUgYnlwYXNzZWQgc29tZWhvdy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1NFVl9JTklUMmAgaW9jdGwsIHdoaWNoIGNhbGxzIGBfX3Nldl9ndWVzdF9pbml0YCB2aWEgYHNldl9ndWVzdF9pbml0MmAuCgpSaWdodCwgYEtWTV9TRVZfSU5JVDJgLiBJIGtub3cgS1ZNIGlvY3RscyBhcmUgZ2VuZXJhbGx5IHJlYWNoYWJsZSwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc2lnbi4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIG9uZSBoYXMgYmVlbiBmdXp6ZWQgYmVmb3JlLiBJZiB3ZSBjYW4gcmVhY2ggdGhpcyBjb2RlIHBhdGggd2hlbiBjcmVhdGluZyBhIFZNLCB0aGF0IG9wZW5zIHVwIGEgZnV6emluZyB0YXJnZXQuCgpCYXNlZCBvbiB0aGF0LCBJJiMzOTttIG1ha2luZyB0aGUganVkZ2VtZW50IHRoYXQgd2Ugc2hvdWxkIHByaW9yaXRpemUgdGhpcyBwYXRjaCwgc2luY2UgdGhlIGNoYW5nZXMgaW4gYGFyY2gveDg2L2t2bS9zdm0vc2V2LmNgIGFyZSByZWFjaGFibGUgZHVyaW5nIFZNIGNyZWF0aW9uLiBUaGUgY2hhbmdlcyBpbiB0aGUgYnVnIG1pdGlnYXRpb24gY29kZSAoZS5nLiBgYnVncy5jYCkgYXJlIHByb2JhYmx5IGJvb3QtdGltZSBvbmx5LCBhbmQgc28gbm90IGFzIGVhc3kgdG8gZnV6ei4gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgb3RoZXIgY2FsbCBzaXRlcyB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgYW5kIGBzZXZfZ3Vlc3RfaW5pdDJgIGluIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3Nldl9ndWVzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTAtXHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz01Nzk9c3RhdGljIGludCBzZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU5OC1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTk5Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCB2bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAwLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTYwMj1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxNi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCBrdm0tXHUwMDNlYXJjaC52bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMzEzLVx0ICpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcdCAqIENoZWNraW5nIGZvciBTRVYmIzQzOyBvdXRzaWRlIG9mIGt2bS1cdTAwM2Vsb2NrIGlzIHNhZmUgYXMgX19zZXZfZ3Vlc3RfaW5pdCgpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyBTRVYgR3Vlc3QgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSBgX19zZXZfZ3Vlc3RfaW5pdGAgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgc2V2X2d1ZXN0X2luaXRgIGFuZCBgc2V2X2d1ZXN0X2luaXQyYC4gSW50ZXJlc3RpbmcuIFRob3NlIGZ1bmN0aW9ucywgaW4gdHVybiwgYXBwZWFyIHRvIGJlIHRyaWdnZXJlZCBieSBzb21ldGhpbmcgbGlrZSBgc2V2X2lzc3VlX2NtZGAg4oCTIHdoaWNoLCBJIHJlY2FsbCwgaXMgbGlrZWx5IHJlYWNoZWQgdGhyb3VnaCB0aGUgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAgaW9jdGwuIFRoaXMgY29uZmlybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHlwaWNhbCBTRVYgaW5pdGlhbGl6YXRpb24gcGF0aC4KCk15IGZvY3VzIG5vdyBpcyBvbiBjb25maXJtaW5nIGhvdyB0aGVzZSBpbml0aWF0aW9uIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBUaGVyZWZvcmUgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGJvdGggYHNldl9ndWVzdF9pbml0MmAgYW5kIGBzZXZfZ3Vlc3RfaW5pdGAgdG8gc29saWRpZnkgdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IGVkZ2UgY2FzZXMgb3IgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBmdWxsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nldl9ndWVzdF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTAtXHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01NzgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU3OTpzdGF0aWMgaW50IHNldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01ODAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjYwMjpzdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxNi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3Olx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcdTAwMjZkYXRhLCBrdm0tXHUwMDNlYXJjaC52bV90eXBlKTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjU4LVx0Y2FzZSBLVk1fU0VWX0lOSVQ6XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjI2NTk6XHRcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFx1MDAyNnNldl9jbWQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYwLVx0XHRicmVhaztcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjY2MS1cdGNhc2UgS1ZNX1NFVl9JTklUMjpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjY2MjpcdFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFx1MDAyNnNldl9jbWQpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYzLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMzEzLVx0ICpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcdCAqIENoZWNraW5nIGZvciBTRVYmIzQzOyBvdXRzaWRlIG9mIGt2bS1cdTAwM2Vsb2NrIGlzIHNhZmUgYXMgX19zZXZfZ3Vlc3RfaW5pdCgpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1MTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTS9TRVYtU05QIEZlYXR1cmUgVmFsaWRhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGp1c3RtZW50IHRvIHRoZSBmZWF0dXJlIHZhbGlkYXRpb24gaW4gYF9fc2V2X2d1ZXN0X2luaXRgLiAgRXNzZW50aWFsbHksIHRoZSBjb2RlIGlzIHRpZ2h0ZW5pbmcgdXAgdGhlIGNoZWNrcyBmb3Igc3BlY2lmaWMgU0VWIGZlYXR1cmVzLCBzcGVjaWZpY2FsbHkgdGhvc2UgcmVsYXRlZCB0byBTTlAuICBCZWZvcmUsIGlmIFNOUCB3YXNuJiMzOTt0IGFjdGl2ZSAoYCFzbnBfYWN0aXZlYCksIHRoZSBjb2RlIHdvdWxkIG1hc2sgb3V0IGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AuIE5vdywgdGhlIG1hc2sgaXMgd2lkZW5lZCB0byBjb3ZlciBgU1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0tgLiBUaGlzIGRpcmVjdGx5IGltcGFjdHMgdGhlIGBLVk1fU0VWX0lOSVQyYCBpb2N0bC4gSXQgc2VlbXMgd2Ugbm93IGhhdmUgYSBzdHJpY3RlciBjaGVjayBmb3IgZmVhdHVyZXMgc3VibWl0dGVkIHZpYSB0aGUgYHN0cnVjdCBrdm1fc2V2X2luaXRgIHN0cnVjdHVyZSwgcmVqZWN0aW5nIGFueXRoaW5nIGZyb20gdGhhdCBtYXNrIGlmIHRoZSBjdXJyZW50IHN5c3RlbSBkb2VzbiYjMzk7dCBoYXZlIGFuIGFjdGl2ZSBTTlAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCYjMzk7cyBhIGRpcmVjdCBmdW5jdGlvbmFsIGNoYW5nZSB0byBob3cgS1ZNIGhhbmRsZXMgZmVhdHVyZSBuZWdvdGlhdGlvbiBhbmQgYWN0aXZhdGlvbi4KCk1vdmluZyBvbiB0byBgc2V2X2hhcmR3YXJlX3NldHVwYCwgaXQgc2VlbXMgdGhhdCB3ZSYjMzk7cmUgbm93IGFkZGluZyBtb3JlIGNhcGFiaWxpdGllcyB0byB0aGUgYHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlc2Agd2hlbiBgc2V2X3NucF9lbmFibGVkYCBpcyB0cnVlLiAgU3BlY2lmaWNhbGx5LCBgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVgLCBgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05gLCBhbmQgYFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZYCBhcmUgYmVpbmcgdW5jb25kaXRpb25hbGx5IGFkZGVkLiAgVGhlIGFkZGl0aW9uIG9mIGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AgaXMgcHJlc2VydmVkIGJ1dCBub3cgY29uZGl0aW9uYWwgb24gYFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDYC4KClNvLCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZnV6ei13b3J0aHk/IEFic29sdXRlbHksIHllcy4gVGhlIHZhbGlkYXRpb24gbG9naWMgd2l0aGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIGtleSBhcmVhIG9mIGludGVyZXN0LiBUaGlzIGhhcyBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGBLVk1fU0VWX0lOSVQyYCBpb2N0bCB3aGljaCBub3cgbW9yZSBzdHJpY3RseSBlbmZvcmNlcyB0aGlzIGZlYXR1cmUgdmFsaWRhdGlvbiBsb2dpYy4gVGhlIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgb3IgZXZlbiBieXBhc3NlcywgZ2l2ZW4gdGhlIG5ldyBhbmQgY2hhbmdlZCB2YWxpZGF0aW9uIHJ1bGVzIGlzIGhpZ2gsIGVzcGVjaWFsbHkgaWYgd2UgY2FuIGNyYWZ0IG1hbGljaW91cyBgdm1zYV9mZWF0dXJlc2AgdmFsdWVzLiBXZSBzaG91bGQgZXhwbG9yZSB0aGlzLCBwYXJ0aWN1bGFybHkgc2luY2UgaXQgZGlyZWN0bHkgbW9kaWZpZXMgdGhlIEtWTSBBUEkgYmVoYXZpb3IuCgpUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hldGhlciBgS1ZNX1NFVl9JTklUMmAgaXMgZXZlbiByZWFjaGFibGUgaW4gZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFdoaWxlIFNFViBhbmQgU0VWLVNOUCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlLCB0aGUgS1ZNIEFQSSBtaWdodCBiZSBpbnZva2VkIHdpdGhvdXQgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGFuZCByZXZlYWwgaW50ZXJlc3RpbmcgYmVoYXZpb3VyLiBGdXJ0aGVyLCBkb2VzIGBfX3Nldl9ndWVzdF9pbml0YCBjaGVjayBgc2V2X3NucF9lbmFibGVkYD8gVGhpcyB3b3VsZCBmdXJ0aGVyIGxpbWl0IHJlYWNoLiBJdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgaW50ZXJhY3QuIExldCYjMzk7cyBiYWNrdHJhY2sgdG8gYF9fc2V2X2d1ZXN0X2luaXRgIGZvciB0aGUgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2V2X2d1ZXN0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc2V2LmM9NDc1PXN0YXRpYyB2b2lkIHNucF9ndWVzdF9yZXFfY2xlYW51cChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00ODgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjQ4OTpzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cdFx0XHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTU3OT1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NjAyPXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2MTc6XHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFx1MDAyNmRhdGEsIGt2bS1cdTAwM2VhcmNoLnZtX3R5cGUpO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MTgtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzMwNz12b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXHQgKlxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMzE0Olx0ICogQ2hlY2tpbmcgZm9yIFNFViYjNDM7IG91dHNpZGUgb2Yga3ZtLVx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxNS1cdCAqIGNhbiBvbmx5IGJlIGRvbmUgYmVmb3JlIHZDUFVzIGFyZSBjcmVhdGVkLCBjYWNoZXMgY2FuIGJlIGluY29oZXJlbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjU2NgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW52ZXN0aWdhdGluZyBgX19zZXZfZ3Vlc3RfaW5pdGAgUmVhY2hhYmlsaXR5KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbiBhbmQgc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgY2FsbCB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgU0VWIGhhcmR3YXJlIHByZXNlbnQuIEkmIzM5O20gY3VyaW91cyBhYm91dCB0aGUgZGlmZmVyZW50IGNvZGUgcGF0aHMgYW5kIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIG9mdGVuIHRoZSBzdGFydGluZyBwb2ludCBmb3Igc2VjdXJpdHkgYW5hbHlzaXMg4oCTIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgYXNzdW1wdGlvbnMgbWFkZSBieSB0aGUgY29kZSwgZXNwZWNpYWxseSBhcm91bmQgZmVhdHVyZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgdGlnaHRseSBjb3VwbGVkIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUuIEkgd2FudCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBiZWhhdmVzIGlmIHRob3NlIGRlcGVuZGVuY2llcyBhcmVuJiMzOTt0IG1ldC4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBjYW4gYSBwcml2aWxlZ2VkIHByb2Nlc3Mgb3IgZXZlbiBhIGxlc3MtcHJpdmlsZWdlZCBndWVzdCBtYW5pcHVsYXRlIHRoZSBleGVjdXRpb24gcGF0aCB0byByZWFjaCBgX19zZXZfZ3Vlc3RfaW5pdGAgZXZlbiBvbiBhIG5vbi1TRVYgc3lzdGVtLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluc3RhYmlsaXR5IG9yLCB3b3JzZSwgYSBieXBhc3Mgb2YgdGhlIGludGVuZGVkIHNlY3VyaXR5IGNoZWNrcz8gTGV0JiMzOTtzIHRyYWNlIGl0IGFuZCBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDg5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0ODk6XHRzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4gNDkwOlx0XHRcdFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXG4gNDkxOlx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgdm1fdHlwZSlcbiA0OTI6XHR7XG4gNDkzOlx0XHRzdHJ1Y3Qga3ZtX3Nldl9pbmZvICpzZXYgPSB0b19rdm1fc2V2X2luZm8oa3ZtKTtcbiA0OTQ6XHRcdHN0cnVjdCBzZXZfcGxhdGZvcm1faW5pdF9hcmdzIGluaXRfYXJncyA9IHswfTtcbiA0OTU6XHRcdGJvb2wgZXNfYWN0aXZlID0gdm1fdHlwZSAhPSBLVk1fWDg2X1NFVl9WTTtcbiA0OTY6XHRcdGJvb2wgc25wX2FjdGl2ZSA9IHZtX3R5cGUgPT0gS1ZNX1g4Nl9TTlBfVk07XG4gNDk3Olx0XHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XG4gNDk4Olx0XHRpbnQgcmV0O1xuIDQ5OTpcdFxuIDUwMDpcdFx0aWYgKGt2bS1cdTAwM2VjcmVhdGVkX3ZjcHVzKVxuIDUwMTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MDI6XHRcbiA1MDM6XHRcdGlmIChkYXRhLVx1MDAzZWZsYWdzKVxuIDUwNDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MDU6XHRcbiA1MDY6XHRcdGlmICghc25wX2FjdGl2ZSlcbiA1MDc6XHRcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiA1MDg6XHRcbiA1MDk6XHRcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIDUxMDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MTE6XHRcbiA1MTI6XHRcdGlmIChkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbiBcdTAwM2UgR0hDQl9WRVJTSU9OX01BWCB8fCAoIWVzX2FjdGl2ZSBcdTAwMjZcdTAwMjYgZGF0YS1cdTAwM2VnaGNiX3ZlcnNpb24pKVxuIDUxMzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MTQ6XHRcbiA1MTU6XHRcdC8qXG4gNTE2Olx0XHQgKiBLVk0gc3VwcG9ydHMgdGhlIGZ1bGwgcmFuZ2Ugb2YgbWFuZGF0b3J5IGZlYXR1cmVzIGRlZmluZWQgYnkgdmVyc2lvblxuIDUxNzpcdFx0ICogMiBvZiB0aGUgR0hDQiBwcm90b2NvbCwgc28gZGVmYXVsdCB0byB0aGF0IGZvciBTRVYtRVMgZ3Vlc3RzIGNyZWF0ZWRcbiA1MTg6XHRcdCAqIHZpYSBLVk1fU0VWX0lOSVQyIChLVk1fU0VWX0lOSVQgZm9yY2VzIHZlcnNpb24gMSkuXG4gNTE5Olx0XHQgKi9cbiA1MjA6XHRcdGlmIChlc19hY3RpdmUgXHUwMDI2XHUwMDI2ICFkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbilcbiA1MjE6XHRcdFx0ZGF0YS1cdTAwM2VnaGNiX3ZlcnNpb24gPSAyO1xuIDUyMjpcdFxuIDUyMzpcdFx0aWYgKHNucF9hY3RpdmUgXHUwMDI2XHUwMDI2IGRhdGEtXHUwMDNlZ2hjYl92ZXJzaW9uIFx1MDAzYyAyKVxuIDUyNDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1MjU6XHRcbiA1MjY6XHRcdGlmICh1bmxpa2VseShzZXYtXHUwMDNlYWN0aXZlKSlcbiA1Mjc6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTI4Olx0XG4gNTI5Olx0XHRzZXYtXHUwMDNlYWN0aXZlID0gdHJ1ZTtcbiA1MzA6XHRcdHNldi1cdTAwM2Vlc19hY3RpdmUgPSBlc19hY3RpdmU7XG4gNTMxOlx0XHRzZXYtXHUwMDNldm1zYV9mZWF0dXJlcyA9IGRhdGEtXHUwMDNldm1zYV9mZWF0dXJlcztcbiA1MzI6XHRcdHNldi1cdTAwM2VnaGNiX3ZlcnNpb24gPSBkYXRhLVx1MDAzZWdoY2JfdmVyc2lvbjtcbiA1MzM6XHRcbiA1MzQ6XHRcdGlmIChzbnBfYWN0aXZlKVxuIDUzNTpcdFx0XHRzZXYtXHUwMDNldm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRTtcbiA1MzY6XHRcbiA1Mzc6XHRcdHJldCA9IHNldl9hc2lkX25ldyhzZXYsIHZtX3R5cGUpO1xuIDUzODpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2NzcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNFViBHdWVzdCBJbml0aWFsaXphdGlvbiBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBTRVYgZ3Vlc3RzLCBhbmQgaXQmIzM5O3Mgc3RhcnRpbmcgdG8gY3J5c3RhbGxpemUuIFRoZSBpbml0aWFsIGZ1bmN0aW9uLCBgX19zZXZfZ3Vlc3RfaW5pdGAsIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIOKAkyB0aGF0JiMzOTtzIHRoZSBqdW1waW5nLW9mZiBwb2ludC4gSXQgcGVyZm9ybXMgc29tZSBpbml0aWFsIHZhbGlkYXRpb24sIGFzIGV4cGVjdGVkLCBhbmQgdGhlbiBpdCBjYWxscyBgc2V2X2FzaWRfbmV3YC4gVGhhdCBtYWtlcyBzZW5zZS4gV2UmIzM5O3JlIGdldHRpbmcgYW4gQVNJRCBhc3NpZ25lZCwgd2hpY2ggaXMgY3J1Y2lhbC4KCkJ1dCB0aGVuLCBJIHNlZSB0aGlzIGBzZXZfZ3Vlc3RfaW5pdDJgLCBhbmQgaXQmIzM5O3MgZmxhZ2dlZCBhcyAqb25seSogYmVpbmcgcmVhY2hhYmxlIHRocm91Z2ggYEtWTV9TRVZfSU5JVDJgLiBBaCwgcmlnaHQsIGEgc2Vjb25kYXJ5IGluaXRpYWxpemF0aW9uIHBoYXNlLCBwb3RlbnRpYWxseS4gTm93LCB3aGVyZSBkb2VzIGBLVk1fU0VWX0lOSVQyYCBmaXQgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmU/IExldCBtZSBzZWXigKYgQmluZ28hIEl0JiMzOTtzIGFjdHVhbGx5IGEgY29tbWFuZCBmb3IgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAuIFRoYXQgY29ubmVjdGlvbiB0ZWxscyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyByZWxhdGVkIHRvIG1lbW9yeSBlbmNyeXB0aW9uLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIHJldmlldyBgc2V2X21lbV9lbmNfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgZW5jcnlwdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGF0JiMzOTtzIHRoZSBrZXkgbm93LCB0byBzZWUgaG93IHRoYXQgY29tbWFuZCBhY3R1YWxseSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjI1Olx0aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4yNjI2Olx0e1xuMjYyNzpcdFx0c3RydWN0IGt2bV9zZXZfY21kIHNldl9jbWQ7XG4yNjI4Olx0XHRpbnQgcjtcbjI2Mjk6XHRcbjI2MzA6XHRcdGlmICghc2V2X2VuYWJsZWQpXG4yNjMxOlx0XHRcdHJldHVybiAtRU5PVFRZO1xuMjYzMjpcdFxuMjYzMzpcdFx0aWYgKCFhcmdwKVxuMjYzNDpcdFx0XHRyZXR1cm4gMDtcbjI2MzU6XHRcbjI2MzY6XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZzZXZfY21kLCBhcmdwLCBzaXplb2Yoc3RydWN0IGt2bV9zZXZfY21kKSkpXG4yNjM3Olx0XHRcdHJldHVybiAtRUZBVUxUO1xuMjYzODpcdFxuMjYzOTpcdFx0Z3VhcmQobXV0ZXgpKFx1MDAyNmt2bS1cdTAwM2Vsb2NrKTtcbjI2NDA6XHRcbjI2NDE6XHRcdC8qIE9ubHkgdGhlIGVuY19jb250ZXh0X293bmVyIGhhbmRsZXMgc29tZSBtZW1vcnkgZW5jIG9wZXJhdGlvbnMuICovXG4yNjQyOlx0XHRpZiAoaXNfbWlycm9yaW5nX2VuY19jb250ZXh0KGt2bSkgXHUwMDI2XHUwMDI2XG4yNjQzOlx0XHQgICAgIWlzX2NtZF9hbGxvd2VkX2Zyb21fbWlycm9yKHNldl9jbWQuaWQpKVxuMjY0NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjI2NDU6XHRcbjI2NDY6XHRcdC8qXG4yNjQ3Olx0XHQgKiBPbmNlIEtWTV9TRVZfSU5JVDIgaW5pdGlhbGl6ZXMgYSBLVk0gaW5zdGFuY2UgYXMgYW4gU05QIGd1ZXN0LCBvbmx5XG4yNjQ4Olx0XHQgKiBhbGxvdyB0aGUgdXNlIG9mIFNOUC1zcGVjaWZpYyBjb21tYW5kcy5cbjI2NDk6XHRcdCAqL1xuMjY1MDpcdFx0aWYgKHNldl9zbnBfZ3Vlc3Qoa3ZtKSBcdTAwMjZcdTAwMjYgc2V2X2NtZC5pZCBcdTAwM2MgS1ZNX1NFVl9TTlBfTEFVTkNIX1NUQVJUKVxuMjY1MTpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuMjY1MjpcdFxuMjY1MzpcdFx0c3dpdGNoIChzZXZfY21kLmlkKSB7XG4yNjU0Olx0XHRjYXNlIEtWTV9TRVZfRVNfSU5JVDpcbjI2NTU6XHRcdFx0aWYgKCFzZXZfZXNfZW5hYmxlZClcbjI2NTY6XHRcdFx0XHRyZXR1cm4gLUVOT1RUWTtcbjI2NTc6XHRcdFx0ZmFsbHRocm91Z2g7XG4yNjU4Olx0XHRjYXNlIEtWTV9TRVZfSU5JVDpcbjI2NTk6XHRcdFx0ciA9IHNldl9ndWVzdF9pbml0KGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjYwOlx0XHRcdGJyZWFrO1xuMjY2MTpcdFx0Y2FzZSBLVk1fU0VWX0lOSVQyOlxuMjY2MjpcdFx0XHRyID0gc2V2X2d1ZXN0X2luaXQyKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjYzOlx0XHRcdGJyZWFrO1xuMjY2NDpcdFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9TVEFSVDpcbjI2NjU6XHRcdFx0ciA9IHNldl9sYXVuY2hfc3RhcnQoa3ZtLCBcdTAwMjZzZXZfY21kKTtcbjI2NjY6XHRcdFx0YnJlYWs7XG4yNjY3Olx0XHRjYXNlIEtWTV9TRVZfTEFVTkNIX1VQREFURV9EQVRBOlxuMjY2ODpcdFx0XHRyID0gc2V2X2xhdW5jaF91cGRhdGVfZGF0YShrdm0sIFx1MDAyNnNldl9jbWQpO1xuMjY2OTpcdFx0XHRicmVhaztcbjI2NzA6XHRcdGNhc2UgS1ZNX1NFVl9MQVVOQ0hfVVBEQVRFX1ZNU0E6XG4yNjcxOlx0XHRcdHIgPSBzZXZfbGF1bmNoX3VwZGF0ZV92bXNhKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4yNjcyOlx0XHRcdGJyZWFrO1xuMjY3MzpcdFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9NRUFTVVJFOlxuMjY3NDpcdFx0XHRyID0gc2V2X2xhdW5jaF9tZWFzdXJlKGt2bSwgXHUwMDI2c2V2X2NtZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTRVYgTWVtb3J5IEVuY3J5cHRpb24gSU9DVEwqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBzZXZfbWVtX2VuY19pb2N0bGAgZnVuY3Rpb24uIFRoZSB2ZXJ5IGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGF0IG1lIGlzIHRoaXMgY2hlY2sgZm9yIGBzZXZfZW5hYmxlZGAuIElmIGl0JiMzOTtzICpmYWxzZSosIGJvb20sIHdlJiMzOTtyZSByZXR1cm5pbmcgYC1FTk9UVFlgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBhIGNsZWFyIHNpZ25hbCB0aGF0IHRoZSBmZWF0dXJlIGlzbiYjMzk7dCBzdXBwb3J0ZWQgb3IgaXNuJiMzOTt0IGFjdGl2ZS4KCkJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgaXMgYHNldl9lbmFibGVkYCBhY3R1YWxseSAqdHJ1ZSogaW4gdGhlIGVudmlyb25tZW50cyBJJiMzOTttIG1vc3QgaW50ZXJlc3RlZCBpbj8gU3BlY2lmaWNhbGx5LCBRRU1VIGFuZCBHQ0UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBTRVYgZmVhdHVyZXMgYXJlIGNvbnNpc3RlbnRseSBhY3RpdmF0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBJdCYjMzk7cyBjcnVjaWFsIGZvciBteSBhbmFseXNpcy4KClRoZXJlZm9yZSwgdGhlIG5leHQgc3RlcCBpcyBjcnlzdGFsIGNsZWFyOiBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZGV0ZXJtaW5lICpob3cqIGBzZXZfZW5hYmxlZGAgaXMgYmVpbmcgc2V0LiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGVudGlyZSBJT0NUTCBwYXRoIGlzIGV2ZW4gcmVsZXZhbnQgdG8gbXkgbmVlZHMgaW4gdGhlc2Ugc3BlY2lmaWMgY29udGV4dHMuIExldCYjMzk7cyBmaW5kIHRoYXQgYXNzaWdubWVudCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Nldl9lbmFibGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU1LS8qIGVuYWJsZS9kaXNhYmxlIFNFViBzdXBwb3J0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU2OnN0YXRpYyBib29sIF9fcm9fYWZ0ZXJfaW5pdCBzZXZfZW5hYmxlZCA9IHRydWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU3Om1vZHVsZV9wYXJhbV9uYW1lZChzZXYsIHNldl9lbmFibGVkLCBib29sLCAwNDQ0KTtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTgtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0yNjI1PWludCBzZXZfbWVtX2VuY19pb2N0bChzdHJ1Y3Qga3ZtICprdm0sIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjYyOS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjYzMDpcdGlmICghc2V2X2VuYWJsZWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2MzEtXHRcdHJldHVybiAtRU5PVFRZO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzAwND12b2lkIF9faW5pdCBzZXZfc2V0X2NwdV9jYXBzKHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwMDUte1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDA2Olx0aWYgKHNldl9lbmFibGVkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDA3LVx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfU0VWKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMwNDg9dm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU2LVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDU3Olx0aWYgKCFzZXZfZW5hYmxlZCB8fCAhbnB0X2VuYWJsZWQgfHwgIW5yaXBzKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU4LVx0XHRnb3RvIG91dDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNTUtb3V0OlxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTU2Olx0aWYgKHNldl9lbmFibGVkKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNTctXHRcdGluaXRfYXJncy5wcm9iZSA9IHRydWU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjExLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjEyOlx0c2V2X2VuYWJsZWQgPSBzZXZfc3VwcG9ydGVkO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjEzLVx0c2V2X2VzX2VuYWJsZWQgPSBzZXZfZXNfc3VwcG9ydGVkO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzIzOD12b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzkte1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjQwOlx0aWYgKCFzZXZfZW5hYmxlZClcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI0MS1cdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzI1NT1pbnQgc2V2X2NwdV9pbml0KHN0cnVjdCBzdm1fY3B1X2RhdGEgKnNkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjU2LXtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI1NzpcdGlmICghc2V2X2VuYWJsZWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyNTgtXHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA5NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFNFViBTdXBwb3J0KioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYHNldl9lbmFibGVkYCBpcyBiZWluZyBhc3NpZ25lZCB0aGUgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHdpdGhpbiB0aGUgYHNldl9oYXJkd2FyZV9zZXR1cGAgZnVuY3Rpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIHRoYXQgc2V0cyB0aGUgc3RhZ2UgZm9yIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgdG8gYmUgYWN0aXZhdGVkLiBCdXQsIHRoZSBjcnVjaWFsIHBpZWNlIGlzIGBzZXZfc3VwcG9ydGVkYC4gSSBzdXNwZWN0IHRoYXQgaWYgdGhlIGhhcmR3YXJlICpkb2VzbiYjMzk7dCogc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9zdXBwb3J0ZWRgIGlzIGdvaW5nIHRvIGV2YWx1YXRlIHRvIGZhbHNlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBhY3R1YWwgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2V2X3N1cHBvcnRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc2V2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zZXYuYz05MT1zdGF0aWMgdTY0IHNucF9zdXBwb3J0ZWRfcG9saWN5X2JpdHMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05Mi1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6OTM6c3RhdGljIHU2NCBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05NC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ4OT1zdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTYtXHRib29sIHNucF9hY3RpdmUgPSB2bV90eXBlID09IEtWTV9YODZfU05QX1ZNO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0OTc6XHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5OC1cdGludCByZXQ7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0yMTkyPWludCBzZXZfZGV2X2dldF9hdHRyKHUzMiBncm91cCwgdTY0IGF0dHIsIHU2NCAqdmFsKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjE5OC1cdGNhc2UgS1ZNX1g4Nl9TRVZfVk1TQV9GRUFUVVJFUzpcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MjE5OTpcdFx0KnZhbCA9IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcztcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjIwMC1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzA1My1cdGJvb2wgc2V2X2VzX3N1cHBvcnRlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMDU0Olx0Ym9vbCBzZXZfc3VwcG9ydGVkID0gZmFsc2U7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwNTUtXHR1MzIgdm1fdHlwZXMgPSAwO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExNy1cdH1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzExODpcdHNldl9zdXBwb3J0ZWQgPSB0cnVlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTE5LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzE2My1cdFx0aWYgKHNldl9wbGF0Zm9ybV9pbml0KFx1MDAyNmluaXRfYXJncykpXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxNjQ6XHRcdFx0c2V2X3N1cHBvcnRlZCA9IHNldl9lc19zdXBwb3J0ZWQgPSBzZXZfc25wX3N1cHBvcnRlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTY1LVx0XHRlbHNlIGlmIChzZXZfc25wX3N1cHBvcnRlZClcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxODgtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxODk6XHRpZiAoc2V2X3N1cHBvcnRlZCBcdTAwMjZcdTAwMjYgbWluX3Nldl9hc2lkIFx1MDAzYz0gbWF4X3Nldl9hc2lkKVxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTkwLVx0XHR2bV90eXBlcyB8PSBCSVQoS1ZNX1g4Nl9TRVZfVk0pO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIwMC1cdFx0cHJfaW5mbyhcJiMzNDtTRVYgJXMgKEFTSURzICV1IC0gJXUpXFxuXCYjMzQ7LFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjAxOlx0XHRcdHNldl9zdHJfZmVhdHVyZV9zdGF0ZShzZXZfc3VwcG9ydGVkLCB2bV90eXBlcyBcdTAwMjYgQklUKEtWTV9YODZfU0VWX1ZNKSksXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMDItXHRcdFx0bWluX3Nldl9hc2lkLCBtYXhfc2V2X2FzaWQpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIxMjpcdHNldl9lbmFibGVkID0gc2V2X3N1cHBvcnRlZDtcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMy1cdHNldl9lc19lbmFibGVkID0gc2V2X2VzX3N1cHBvcnRlZDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTUtXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMTY6XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE3LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxOS1cdCAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIyMDpcdFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQO1xuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjIxLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyNi1cdFx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjc6XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMjgtXHRcdFx0XHRcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzAtXHRcdGlmICh0c2Nfa2h6IFx1MDAyNlx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzMTpcdFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzItXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzMtXHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZKSlcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzNDpcdFx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzUtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTEwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0VWLVJlbGF0ZWQgQ29kZSBQYXRocyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgc2V2X2VuYWJsZWRgIGJlaW5nIGZhbHNlIGlzIHRoZSBjcnVjaWFsIGZhY3Rvci4gSWYgdGhlIGhhcmR3YXJlIGRvZXNuJiMzOTt0IHN1cHBvcnQgU0VWLCB0aGVuIGBzZXZfZW5hYmxlZGAgd2lsbCBiZSBmYWxzZS4gQ29uc2VxdWVudGx5LCBgc2V2X21lbV9lbmNfaW9jdGxgIHJldHVybnMgYC1FTk9UVFlgLiBUaGlzIG1lYW5zIHRoYXQgYm90aCBgS1ZNX1NFVl9JTklUMmAgYW5kIGBfX3Nldl9ndWVzdF9pbml0YCB3aXRoaW4gUUVNVS9HQ0UgYmVjb21lIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgdW5sZXNzIHRoZSB1bmRlcmx5aW5nIGhvc3QgaGFyZHdhcmUgaXMgc3BlY2lmaWNhbGx5IFNFVi1lbmFibGVkLgoKV2FpdCBhIHNlY29uZCwgY2FuIFFFTVUgZXZlbiAqZW11bGF0ZSogU0VWIGZ1bmN0aW9uYWxpdHk/IEkga25vdyBpdCYjMzk7cyBhIGNvbXBsaWNhdGVkIGZlYXR1cmUuIE5vLCB0aGF0JiMzOTtzIHJpZ2h0LCBTRVYgbmVlZHMgdGhlIGFjdHVhbCBBTUQgaGFyZHdhcmUgdG8gZG8gdGhlIGVuY3J5cHRpb24uIFN5emthbGxlciBvbiBHQ0UgaXMgdXNpbmcgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVpdGhlciBvbiBJbnRlbCBvciBBTUQsIGJ1dCBJIGtub3cgdGhhdCBpbiBzdGFuZGFyZCBHQ0UgVk1zLCBTRVYgaXNuJiMzOTt0IHVzdWFsbHkgYXZhaWxhYmxlLCBvciBlbmFibGVkLCBmb3IgdGhvc2UgbmVzdGVkIGd1ZXN0cy4gUGx1cywgUUVNVSBjYW4mIzM5O3QgZW11bGF0ZSBTRVYgd2l0aG91dCB0aGF0IGhvc3Qgc3VwcG9ydC4KCkFscmlnaHQsIHNvIHRoZSBTRVYgaW5pdGlhbGl6YXRpb24gaXMgbGlrZWx5IG5vdCBnb2luZyB0byBiZSB0cmlnZ2VyZWQgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gTGV0IG1lIHNlZSwgaXMgdGhlcmUgYW55dGhpbmcgKmVsc2UqIGZyb20gdGhpcyBwYXRjaCB0aGF0IEkgY2FuIHJlYWNoPyBUaGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY2AgYW5kIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jYC4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY2AgdG8gc2VlIGlmIGFueXRoaW5nIHRoZXJlIGlzIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGVjdHJlX3YyX2FwcGx5X21pdGlnYXRpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0yMjg3PXN0YXRpYyBib29sIF9faW5pdCBjcHVfd2FudHNfaWJwYl9icGYodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0yMjk2LVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MjI5NzpzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0yMjk4LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMzA4PXZvaWQgX19pbml0IGNwdV9zZWxlY3RfbWl0aWdhdGlvbnModm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzgyLVx0c3BlY3RyZV92MV9hcHBseV9taXRpZ2F0aW9uKCk7XG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzozMzgzOlx0c3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKCk7XG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzg0LVx0cmV0YmxlZWRfYXBwbHlfbWl0aWdhdGlvbigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc2NgoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiAxMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgQW5hbHlzaXM6IE5vIFZhbHVlIEZvdW5kKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBpcyB0aGVyZSBhbnkgKmZ1enphYmxlKiBmdW5jdGlvbmFsaXR5IGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIG5vLCBidXQgbGV0JiMzOTtzIGJlIG1ldGhvZGljYWwuCgpGaXJzdCwgYHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbmAg4oCTIHRoYXQmIzM5O3MgYSBib290LXRpbWUgc2V0dXAgZnVuY3Rpb24gKGBfX2luaXRgKS4gRnV6emVycyBkb24mIzM5O3QgZ2VuZXJhbGx5IHRhcmdldCB0aG9zZSBiZWNhdXNlIHRoZXkgcnVuIGJlZm9yZSB0aGUgZnV6emVyIGV2ZW4gZ2V0cyBhIGNoYW5jZSB0byBzdGFydCBwb2tpbmcgYXQgdGhlIHN5c3RlbSB2aWEgc3lzY2FsbHMgb3IgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNvLCB0aGF0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgU0VWIChTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uKSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIFNFViBpb2N0bHMgbG9vayBpbnRlcmVzdGluZyBhdCBmaXJzdCBnbGFuY2UuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGAvZGV2L3NldmAgYW5kIEtWTSBTRVYgaW9jdGxzLiBIb3dldmVyLCB0aGF0IHN1cHBvcnQgaXMgY29udGluZ2VudCBvbiB0aGUgaG9zdCBoYXJkd2FyZSAqYWN0dWFsbHkqIHN1cHBvcnRpbmcgU0VWLiBJZiB0aGUgaGFyZHdhcmUgZG9lc24mIzM5O3Qgc3VwcG9ydCBpdCwgdGhlIGlvY3RsIGp1c3QgcmV0dXJucyBgLUVOT1RUWWAsIHdoaWNoIGlzIGEgZGVhZCBlbmQuIEZ1cnRoZXJtb3JlLCBvdXIgR0NFIFN5emthbGxlciBpbnN0YW5jZXMsIHdoaWNoIGFyZSB0aGUgbWFpbiBmb2N1cywgZG9uJiMzOTt0IGhhdmUgU0VWIGVuYWJsZWQuIEV2ZW4gaWYgdGhleSBkaWQsIHRoZSBhY3R1YWwgY29kZSBjaGFuZ2UgSSYjMzk7bSBsb29raW5nIGF0IGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIHZlcnkgc21hbGwgYml0bWFzayBjaGFuZ2U6IGEgdmFsaWRhdGlvbiBtb2RpZmljYXRpb24uCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRoYXQgY29kZSBwYXRocyB3aGljaCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBkb24mIzM5O3QgbWVyaXQgZnV6emluZy4gU0VWIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGlzIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBzcGVjaWZpYyBBTUQgaGFyZHdhcmUsIHdoaWNoIGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgaG9zdCBzdXBwb3J0LiBUaGVyZWZvcmUsIEkgY2FuJiMzOTt0IHRyaWdnZXIgdGhlIFNFViBwYXRocyB1c2luZyB0aGUgZnV6emVycy4KCkkgcmUtY2hlY2tlZCBgc2V2X21lbV9lbmNfaW9jdGxgIGFuZCBjb25maXJtZWQgYHNldl9lbmFibGVkYCBiZWluZyBjaGVja2VkLCB3aXRoIGBzZXZfZW5hYmxlZGAgb25seSBiZWluZyB0cnVlIGlmIGBzZXZfc3VwcG9ydGVkYCBpcyB0cnVlLCBhbmQgYHNldl9zdXBwb3J0ZWRgIG9ubHkgYmVpbmcgdHJ1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgYHNldl9wbGF0Zm9ybV9pbml0YCwgd2hpY2ggbmVlZHMgU0VWIENQVS4KClNvLCBTRVYgaXMgb3V0LiBXaGF0IGFib3V0IHRoZSBvdGhlciBjaGFuZ2VzPyBNb3N0IG9mIHRoZW0gYXJlIGluIGBfX2luaXRgIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZXMgaW4gYGJ1Z3MuY2AgYXJlIGBfX2luaXRgLiBUaGUgY2hhbmdlcyBpbiBgY29tbW9uLmNgIGFyZSBgX19pbml0YCB0b28uCgpMZXQmIzM5O3Mgc3VtbWFyaXplIHRoZSBjaGFuZ2VzIGFnYWluOgoKKiAgIGBhcmNoL3g4Ni9LY29uZmlnYDogS2NvbmZpZyBjaGFuZ2VzLCBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaGA6IE1hY3JvIGFkZGl0aW9ucywgbm90IGZ1enphYmxlLgoqICAgYGFyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oYDogTWFjcm8gYWRkaXRpb25zLCBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgOiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYF9faW5pdGAgKHJldGJsZWVkIHVwZGF0ZSwgbWl0aWdhdGlvbiBzZWxlY3Rpb24vYXBwbGljYXRpb24pIC0gbm90IGZ1enphYmxlLgoqICAgYGFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNgOiBgY3B1X3NldF9idWdfYml0c2AgaXMgYWxzbyBjYWxsZWQgYXQgYF9faW5pdGAgLSBub3QgZnV6emFibGUuCiogICBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2A6IGBfX3Nldl9ndWVzdF9pbml0YCByZXF1aXJlcyBTRVYgaGFyZHdhcmUgYW5kIGlzIG5vdCBhY2Nlc3NpYmxlIGZyb20gR0NFIG9yIHN0YW5kYXJkIFFFTVUuIGBzZXZfaGFyZHdhcmVfc2V0dXBgIGlzIGBfX2luaXRgIC0gYWxzbyBub3QgZnV6emFibGUuCiogICBgdG9vbHMvLi4uYDogVGVzdCBhbmQgaGVhZGVyIGNoYW5nZXMsIG5vdCBkaXJlY3RseSBmdXp6YWJsZS4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHJlYWNoYWJsZSBjb2RlIGVpdGhlciByZXF1aXJlcyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0JiMzOTtzIG5vdCBlbXVsYXRlZCBvciBpcyBib290LXRpbWUgc2V0dXAsIEkgY29uY2x1ZGUgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgZWl0aGVyIGltcG9zc2libGUgdG8gcmVhY2ggaW4gbXkgdGVzdGluZyBlbnZpcm9ubWVudCwgb3IgYXJlIG5vdCB0YXJnZXRhYmxlIGJ5IGEgZnV6emVyLgoKSSYjMzk7bSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBib290LXRpbWUgQ1BVIGJ1ZyBtaXRpZ2F0aW9uIHNldHVwIChfX2luaXQgZnVuY3Rpb25zKSBhbmQgS1ZNIFNFVi1TTlAgZ3Vlc3QgaW5pdGlhbGl6YXRpb24uIFRoZSBfX2luaXQgZnVuY3Rpb25zIHJ1biBvbmNlIGR1cmluZyBib290IGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IGEgc3lzY2FsbCBmdXp6ZXIuIFRoZSBLVk0gU0VWLVNOUCBjaGFuZ2VzIGluIGBfX3Nldl9ndWVzdF9pbml0YCBhcmUgb25seSByZWFjaGFibGUgdmlhIHRoZSBLVk1fU0VWX0lOSVQyIGlvY3RsIGlmIHRoZSBob3N0IGhhcyBwaHlzaWNhbCBBTUQgU0VWIGhhcmR3YXJlIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQwLjU0NDk3MDUyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjg2Mzc5ODE5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQwLjU0NDk3NjI5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MDA1MjMwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwMDo0NjozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9LY29uZmlnIGIvYXJjaC94ODYvS2NvbmZpZ1xcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvS2NvbmZpZ1xcbisrKyBiL2FyY2gveDg2L0tjb25maWdcXG5AQCAtMjQ5MiwxMiArMjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZXFxuIFxcbiBjb25maWcgTUlUSUdBVElPTl9JQlJTX0VOVFJZXFxuIFxcdGJvb2wgXFxcIkVuYWJsZSBJQlJTIG9uIGtlcm5lbCBlbnRyeVxcXCJcXG4tXFx0ZGVwZW5kcyBvbiBDUFVfU1VQX0lOVEVMIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbitcXHRkZXBlbmRzIG9uIFg4Nl82NFxcbiBcXHRkZWZhdWx0IHlcXG4gXFx0aGVscFxcbiBcXHQgIENvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIHN1cHBvcnQgZm9yIHRoZSBzcGVjdHJlX3YyPWlicnMgbWl0aWdhdGlvbi5cXG4tXFx0ICBUaGlzIG1pdGlnYXRlcyBib3RoIHNwZWN0cmVfdjIgYW5kIHJldGJsZWVkIGF0IGdyZWF0IGNvc3QgdG9cXG4tXFx0ICBwZXJmb3JtYW5jZS5cXG4rXFx0ICBUaGlzIG1pdGlnYXRlcyBzcGVjdHJlX3YyIGF0IGdyZWF0IGNvc3QgdG8gcGVyZm9ybWFuY2UuICBPbiBJbnRlbCxcXG4rXFx0ICBpdCBhbHNvIG1pdGlnYXRlcyByZXRibGVlZC4gIE9uIEFNRC9IeWdvbiwgcmV0YmxlZWQgbWl0aWdhdGlvblxcbitcXHQgIHJlcXVpcmVzIE1JVElHQVRJT05fVU5SRVRfRU5UUlkgb3IgTUlUSUdBVElPTl9JQlBCX0VOVFJZLlxcbiBcXG4gY29uZmlnIE1JVElHQVRJT05fU1JTT1xcbiBcXHRib29sIFxcXCJNaXRpZ2F0ZSBzcGVjdWxhdGl2ZSBSQVMgb3ZlcmZsb3cgb24gQU1EXFxcIlxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbmluZGV4IDNkMDk0MGEzYjlmMzcuLjExZTQwNjQ0Yjk2NzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcXG5AQCAtNDYwLDYgKzQ2MCw3IEBAXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyKzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NWU01cXHRcXHQoMTkqMzIrMjgpIC8qIFxcXCJzdnNtXFxcIiBTVlNNIHByZXNlbnQgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9IVl9JTlVTRV9XUl9BTExPV0VEXFx0KDE5KjMyKzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xcbisjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXFx0KDE5KjMyKzMxKSAvKiBTRVYtU05QIElCUEIgb24gVk0gRW50cnkgKi9cXG4gXFxuIC8qIEFNRC1kZWZpbmVkIEV4dGVuZGVkIEZlYXR1cmUgMiBFQVgsIENQVUlEIGxldmVsIDB4ODAwMDAwMjEgKEVBWCksIHdvcmQgMjAgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUFxcdCgyMCozMisgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxcbmluZGV4IGFhNjM0MzFiYTkyYzMuLjBkYTIyMzRiNzFjNjkgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxcbkBAIC0zMDUsMTEgKzMwNSwxOCBAQCBzdGF0aWNfYXNzZXJ0KChBVklDX01BWF9QSFlTSUNBTF9JRCBcXHUwMDI2IEFWSUNfUEhZU0lDQUxfTUFYX0lOREVYX01BU0spID09IEFWSUNfTUFYX1xcbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEIFxcdTAwMjYgQVZJQ19QSFlTSUNBTF9NQVhfSU5ERVhfTUFTSykgPT0gWDJBVklDX01BWF9QSFlTSUNBTF9JRCk7XFxuIHN0YXRpY19hc3NlcnQoKFgyQVZJQ180S19NQVhfUEhZU0lDQUxfSUQgXFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTtcXG4gXFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVcXHRcXHRcXHRcXHRCSVQoMClcXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cXHRcXHRCSVQoMylcXG4tI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlxcdFxcdEJJVCg0KVxcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXFx0XFx0XFx0XFx0QklUKDUpXFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcXHRcXHRcXHRcXHRCSVQoOSlcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVxcdFxcdFxcdFxcdEJJVF9VTEwoMClcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfUkVTVFJJQ1RFRF9JTkpFQ1RJT05cXHRcXHRCSVRfVUxMKDMpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0FMVEVSTkFURV9JTkpFQ1RJT05cXHRcXHRCSVRfVUxMKDQpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcXHRcXHRcXHRcXHRCSVRfVUxMKDUpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cXHRcXHRcXHRCSVRfVUxMKDcpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcXHRcXHRcXHRcXHRCSVRfVUxMKDkpXFxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcXHRcXHRcXHRCSVRfVUxMKDIxKVxcbitcXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTS1xcdChTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSlcXG4gXFxuICNkZWZpbmUgVk1DQl9BTExPV0VEX1NFVl9GRUFUVVJFU19WQUxJRFxcdFxcdFxcdEJJVF9VTEwoNjMpXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXFxuaW5kZXggZGRmMGRiNTMyNmZhMS4uMjQ1ZGU0ZWE4ZDYwYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xcbisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXFxuQEAgLTEzMDUsNyArMTMwNSwxNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmV0YmxlZWRfdXBkYXRlX21pdGlnYXRpb24odm9pZClcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIExldCBJQlJTIHRydW1wIGFsbCBvbiBJbnRlbCB3aXRob3V0IGFmZmVjdGluZyB0aGUgZWZmZWN0cyBvZiB0aGVcXG4tXFx0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZ1xcbitcXHQgKiByZXRibGVlZD0gY21kbGluZSBvcHRpb24gZXhjZXB0IGZvciBjYWxsIGRlcHRoIGJhc2VkIHN0dWZmaW5nLlxcbitcXHQgKlxcbitcXHQgKiBPbiBBTUQvSHlnb24sIGxlZ2FjeSBTUEVDX0NUUkwuSUJSUyB0b2dnbGluZyBkb2VzIG5vdCBtaXRpZ2F0ZSB0aGVcXG4rXFx0ICogQnJhbmNoIFR5cGUgQ29uZnVzaW9uIFJFVEJsZWVkIHZhcmlhbnQ6IFJFVCBwcmVkaWN0aW9uIGNvbWVzIGZyb21cXG4rXFx0ICogdGhlIFJldHVybiBBZGRyZXNzIFByZWRpY3Rvciwgbm90IHRoZSByZXN0cmljdGVkIGluZGlyZWN0IGJyYW5jaFxcbitcXHQgKiBwcmVkaWN0b3JzIHRoYXQgSUJSUyBjb250cm9scy4gIFNvIGtlZXAgdGhpcyBJbnRlbC1vbmx5IGFuZCBsZWF2ZVxcbitcXHQgKiBBTUQncyBzb2Z0d2FyZSByZXR1cm4tdGh1bmsgbWl0aWdhdGlvbiAoVU5SRVQvSUJQQikgaW4gcGxhY2UgZXZlblxcbitcXHQgKiB3aGVuIHNwZWN0cmVfdjI9aWJycyBpcyBzZWxlY3RlZC5cXG4gXFx0ICovXFxuIFxcdGlmIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xcbiBcXHRcXHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xcbkBAIC0xNjcyLDYgKzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XFxuICNkZWZpbmUgU1BFQ1RSRV9WMl9MRkVOQ0VfTVNHIFxcXCJXQVJOSU5HOiBMRkVOQ0UgbWl0aWdhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHRoaXMgQ1BVLCBkYXRhIGxlYWtzIHBvc3NpYmxlIVxcXFxuXFxcIlxcbiAjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cgXFxcIldBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUyBvbiwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXFxcblxcXCJcXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgXFxcIldBUk5JTkc6IFVucHJpdmlsZWdlZCBlQlBGIGlzIGVuYWJsZWQgd2l0aCBlSUJSUytMRkVOQ0UgbWl0aWdhdGlvbiBhbmQgU01ULCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcXFxuXFxcIlxcbisjZGVmaW5lIFNQRUNUUkVfVjJfRUlCUlNfU05QX1BFUkZfTVNHIFxcXCJXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcXFxuXFxcIlxcbiAjZGVmaW5lIFNQRUNUUkVfVjJfSUJSU19QRVJGX01TRyBcXFwiV0FSTklORzogSUJSUyBtaXRpZ2F0aW9uIHNlbGVjdGVkIG9uIEVuaGFuY2VkIElCUlMgQ1BVLCB0aGlzIG1heSBjYXVzZSB1bm5lY2Vzc2FyeSBwZXJmb3JtYW5jZSBsb3NzXFxcXG5cXFwiXFxuIFxcbiAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxuQEAgLTE5NTYsMTAgKzE5NjQsOCBAQCBlYXJseV9wYXJhbShcXFwic3BlY3RyZV92MlxcXCIsIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XFxuIFxcbiBzdGF0aWMgZW51bSBzcGVjdHJlX3YyX21pdGlnYXRpb24gX19pbml0IHNwZWN0cmVfdjJfc2VsZWN0X3JldHBvbGluZSh2b2lkKVxcbiB7XFxuLVxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKSB7XFxuLVxcdFxcdHByX2VycihcXFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXFxcIik7XFxuK1xcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpKVxcbiBcXHRcXHRyZXR1cm4gU1BFQ1RSRV9WMl9OT05FO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXR1cm4gU1BFQ1RSRV9WMl9SRVRQT0xJTkU7XFxuIH1cXG5AQCAtMjE2NSwxMSArMjE3MSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXFxuIFxcdFxcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHNwZWN0cmVfdjJfY21kID09IFNQRUNUUkVfVjJfQ01EX0lCUlMgXFx1MDAyNlxcdTAwMjYgYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXFxcblxcXCIpO1xcbi1cXHRcXHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XFxuLVxcdH1cXG4tXFxuIFxcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFxcdTAwMjZcXHUwMDI2ICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSUykpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJJQlJTIHNlbGVjdGVkIGJ1dCBDUFUgZG9lc24ndCBoYXZlIElCUlMuIFN3aXRjaGluZyB0byBBVVRPIHNlbGVjdFxcXFxuXFxcIik7XFxuIFxcdFxcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcXG5AQCAtMjE5NCwxMiArMjE5NSwyNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZmFsbHRocm91Z2g7XFxuIFxcdGNhc2UgU1BFQ1RSRV9WMl9DTURfRk9SQ0U6XFxuLVxcdFxcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCkpIHtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRG9uJ3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlc1xcbitcXHRcXHQgKiBob3N0IHVzZXJzcGFjZSBpbmRpcmVjdCBicmFuY2ggcGVyZm9ybWFuY2UuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSB7XFxuIFxcdFxcdFxcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRzcGVjdHJlX3YyX2VuYWJsZWQgPSBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUoKTtcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogSWYgcmV0cG9saW5lIGlzIHVuYXZhaWxhYmxlIChlLmcuIGJ1aWx0IHdpdGhvdXRcXG4rXFx0XFx0ICogQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSwgZmFsbCBiYWNrIHRvIGVJQlJTIG9uXFxuK1xcdFxcdCAqIEF1dG9JQlJTLWNhcGFibGUgcGFydHMgcmF0aGVyIHRoYW4gbGVhdmluZyBTTlAgaG9zdHNcXG4rXFx0XFx0ICogdW5taXRpZ2F0ZWQuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfTk9ORSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSlcXG4rXFx0XFx0XFx0c3BlY3RyZV92Ml9lbmFibGVkID0gU1BFQ1RSRV9WMl9FSUJSUztcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFNQRUNUUkVfVjJfQ01EX1JFVFBPTElORV9MRkVOQ0U6XFxuQEAgLTIyNDcsNiArMjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuK1xcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfRk9SQ0UgfHxcXG4rXFx0ICAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfQVVUTyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICBzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1NQRUNUUkVfVjIpKSkpXFxuK1xcdFxcdHByX2VycihcXFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXFxcIik7XFxuK1xcbiBcXHRpZiAoYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1NQRUNUUkVfVjIpKVxcbiBcXHRcXHRwcl9pbmZvKFxcXCIlc1xcXFxuXFxcIiwgc3BlY3RyZV92Ml9zdHJpbmdzW3NwZWN0cmVfdjJfZW5hYmxlZF0pO1xcbiB9XFxuQEAgLTIyNzcsMTUgKzIyOTksMzIgQEAgc3RhdGljIHZvaWQgX19pbml0IHNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvbih2b2lkKVxcbiBcXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXFx1MDAyNlxcdTAwMjYgdW5wcml2aWxlZ2VkX2VicGZfZW5hYmxlZCgpKVxcbiBcXHRcXHRwcl9lcnIoU1BFQ1RSRV9WMl9FSUJSU19FQlBGX01TRyk7XFxuIFxcbi1cXHRpZiAoc3BlY3RyZV92Ml9pbl9pYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSkge1xcbi1cXHRcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xcbitcXHQvKlxcbitcXHQgKiBoZWFkXzY0LlMgcHJlc2VydmVzIEVGRVIuQVVUT0lCUlMgYWNyb3NzIGJvb3QsIHNvIGEga2V4ZWMgZnJvbSBhXFxuK1xcdCAqIGtlcm5lbCB0aGF0IHJhbiBpbiBBdXRvSUJSUyBtb2RlIGNhcnJpZXMgdGhlIGJpdCBpbnRvIHRoZSBuZXcga2VybmVsLlxcbitcXHQgKiBFeHBsaWNpdGx5IHNldCBvciBjbGVhciBpdCB0byBtYXRjaCB0aGUgc2VsZWN0ZWQgbWl0aWdhdGlvbiwgcmVnYXJkbGVzc1xcbitcXHQgKiBvZiB3aGljaCBtb2RlIGlzIGluIGVmZmVjdC4gIFRoZSBib290IENQVSBkb2VzIHRoaXMgYmVmb3JlXFxuK1xcdCAqIGluaXRfcmVhbF9tb2RlKCkgc25hcHNob3RzIEVGRVIgZm9yIHRoZSBBUCB0cmFtcG9saW5lLCBzbyBBUHMgaW5oZXJpdFxcbitcXHQgKiB0aGUgY29ycmVjdCB2YWx1ZSB0b28uXFxuK1xcdCAqL1xcbitcXHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FVVE9JQlJTKSkge1xcbitcXHRcXHRpZiAoc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpXFxuIFxcdFxcdFxcdG1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7XFxuLVxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcXG4tXFx0XFx0XFx0dXBkYXRlX3NwZWNfY3RybCh4ODZfc3BlY19jdHJsX2Jhc2UpO1xcbi1cXHRcXHR9XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoc3BlY3RyZV92Ml9pbl9pYnJzX21vZGUoc3BlY3RyZV92Ml9lbmFibGVkKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgIHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpKSkge1xcbitcXHRcXHR4ODZfc3BlY19jdHJsX2Jhc2UgfD0gU1BFQ19DVFJMX0lCUlM7XFxuK1xcdFxcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0VWX1NOUCkpXFxuK1xcdFxcdHByX3dhcm4oU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cpO1xcbitcXG4gXFx0c3dpdGNoIChzcGVjdHJlX3YyX2VuYWJsZWQpIHtcXG4gXFx0Y2FzZSBTUEVDVFJFX1YyX05PTkU6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcXG5pbmRleCBmYTQyOWYwNGYwMDNlLi44Mzg3ZDNhNDljNDNjIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcXG4rKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jXFxuQEAgLTE0OTYsMTMgKzE0OTYsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X3NldF9idWdfYml0cyhzdHJ1Y3QgY3B1aW5mb194ODYgKmMpXFxuIFxcdC8qXFxuIFxcdCAqIEFNRCdzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwncyBlSUJSUyAtIHVzZSB0aGUgSW50ZWwgZmVhdHVyZVxcbiBcXHQgKiBmbGFnIGFuZCBwcm90ZWN0IGZyb20gdmVuZG9yLXNwZWNpZmljIGJ1Z3MgdmlhIHRoZSB3aGl0ZWxpc3QuXFxuLVxcdCAqXFxuLVxcdCAqIERvbid0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxcbi1cXHQgKiB1c2Vyc3BhY2UgaW5kaXJlY3QgYnJhbmNoIHBlcmZvcm1hbmNlLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFxcdTAwMjYgQVJDSF9DQVBfSUJSU19BTEwpIHx8XFxuLVxcdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICAhY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TRVZfU05QKSkpIHtcXG4rXFx0ICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7XFxuIFxcdFxcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7XFxuIFxcdFxcdGlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICEoeDg2X2FyY2hfY2FwX21zciBcXHUwMDI2IEFSQ0hfQ0FQX1BCUlNCX05PKSlcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zZXYuYyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcXG5pbmRleCA5NDRhYWVhNjUwMWYyLi5lZTE0Nzk1YTIwYmQ5IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXFxuQEAgLTUwNCw3ICs1MDQsNyBAQCBzdGF0aWMgaW50IF9fc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3AsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKCFzbnBfYWN0aXZlKVxcbi1cXHRcXHR2YWxpZF92bXNhX2ZlYXR1cmVzIFxcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcXG4rXFx0XFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcXHUwMDI2PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7XFxuIFxcbiBcXHRpZiAoZGF0YS1cXHUwMDNldm1zYV9mZWF0dXJlcyBcXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5AQCAtMzIxOSw4ICszMjE5LDIwIEBAIHZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbiBcXHQgICAgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUCkpXFxuIFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUDtcXG4gXFxuLVxcdGlmIChzZXZfc25wX2VuYWJsZWQgXFx1MDAyNlxcdTAwMjYgdHNjX2toeiBcXHUwMDI2XFx1MDAyNiBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDKSlcXG4tXFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDO1xcbitcXHRpZiAoc2V2X3NucF9lbmFibGVkKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNvbWUgU05QLW9ubHkgZmVhdHVyZXMgc3VjaCBhcyBCVEIgSXNvbGF0aW9uIGFyZVxcbitcXHRcXHQgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcXG4rXFxuK1xcdFxcdGlmICh0c2Nfa2h6IFxcdTAwMjZcXHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxcbitcXHRcXHRcXHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XFxuK1xcbitcXHRcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWSkpXFxuK1xcdFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcXG4rXFx0fVxcbiB9XFxuIFxcbiB2b2lkIHNldl9oYXJkd2FyZV91bnNldHVwKHZvaWQpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcXG4tLS0gYS90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuKysrIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbkBAIC00NjAsNiArNDYwLDcgQEBcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BTExPV0VEX1NFVl9GRUFUVVJFUyAoMTkqMzIrMjcpIC8qIEFsbG93ZWQgU0VWIEZlYXR1cmVzICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVxcdFxcdCgxOSozMisyOCkgLyogXFxcInN2c21cXFwiIFNWU00gcHJlc2VudCAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRURcXHQoMTkqMzIrMzApIC8qIEFsbG93IFdyaXRlIHRvIGluLXVzZSBoeXBlcnZpc29yLW93bmVkIHBhZ2VzICovXFxuKyNkZWZpbmUgWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUllcXHQoMTkqMzIrMzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqL1xcbiBcXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQXFx0KDIwKjMyKyAwKSAvKiBObyBOZXN0ZWQgRGF0YSBCcmVha3BvaW50cyAqL1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbmluZGV4IDY4OTM5MGMxMGY3YzMuLmNmMjFiZmZmYWNiNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcXG5AQCAtMTMsMTcgKzEzLDI1IEBAXFxuICNpbmNsdWRlIFxcXCJzdm1fdXRpbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwia3NlbGZ0ZXN0LmhcXFwiXFxuIFxcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQIDMydVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFXFx0XFx0QklUX1VMTCgwKVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQXFx0XFx0QklUX1VMTCg1KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OXFx0QklUX1VMTCg3KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9TRUNVUkVfVFNDXFx0XFx0QklUX1VMTCg5KVxcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZXFx0QklUX1VMTCgyMSlcXG4rXFxuKy8qIEZlYXR1cmVzIHZhbGlkIG9ubHkgZm9yIFNOUCBndWVzdHMsIHJlamVjdGVkIGZvciBTRVYtRVMgYW5kIGJlbG93LiAqL1xcbisjZGVmaW5lIFNOUF9PTkxZX0ZFQVRVUkVTXFx0XFx0KFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHwgXFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04gfCBcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0IFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZKVxcbiBcXG4gLypcXG4gICogU29tZSBmZWF0dXJlcyBtYXkgaGF2ZSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBvciBtYXkgb25seSB3b3JrXFxuICAqIGZvciBjZXJ0YWluIFZNIHR5cGVzLiAgRXJyIG9uIHRoZSBzaWRlIG9mIHNhZmV0eSBhbmQgZG9uJ3RcXG4gICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmVcXG4gICogdG8gS1ZNX1NFVl9JTklUMi5cXG4tICpcXG4tICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSdzIG9ubHkgb25lLi4uKVxcbiAgKi9cXG4tI2RlZmluZSBLTk9XTl9GRUFUVVJFUyBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFxcbisjZGVmaW5lIEtOT1dOX0ZFQVRVUkVTXFx0XFx0KFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQIHwgU05QX09OTFlfRkVBVFVSRVMpXFxuIFxcbiBpbnQga3ZtX2ZkO1xcbiB1NjQgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXM7XFxuQEAgLTExMiw3ICsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXFxuIFxcdFxcdGlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyBcXHUwMDI2IEJJVF9VTEwoaSkpKVxcbiBcXHRcXHRcXHR0ZXN0X2luaXQyX2ludmFsaWQodm1fdHlwZSxcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0sXFxuLVxcdFxcdFxcdFxcdFxcXCJ1bmtub3duIGZlYXR1cmVcXFwiKTtcXG4rXFx0XFx0XFx0XFx0XFxcInVua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVxcXCIpO1xcbiBcXHRcXHRlbHNlIGlmIChLTk9XTl9GRUFUVVJFUyBcXHUwMDI2IEJJVF9VTEwoaSkpXFxuIFxcdFxcdFxcdHRlc3RfaW5pdDIodm1fdHlwZSxcXG4gXFx0XFx0XFx0XFx0XFx1MDAyNihzdHJ1Y3Qga3ZtX3Nldl9pbml0KXsgLnZtc2FfZmVhdHVyZXMgPSBCSVRfVUxMKGkpIH0pO1xcbkBAIC0xNjEsNyArMTY5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxuIFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfVk0sIDApO1xcbiBcXHRpZiAoaGF2ZV9zZXZfZXMpXFxuLVxcdFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TRVZfRVNfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTtcXG4rXFx0XFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgXFx1MDAyNiB+U05QX09OTFlfRkVBVFVSRVMpO1xcbiBcXHRpZiAoaGF2ZV9zbnApXFxuIFxcdFxcdHRlc3RfZmVhdHVyZXMoS1ZNX1g4Nl9TTlBfVk0sIHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjQxLjc5NTc1NzQ2N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMTYxMzAwNjg1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDViMmEzNzg1NTcxMWUxYzU3YzVmNWNkNDFhMTZjZTY0ZjA4ZWM1NDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDAwOjQ2OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGU3MjViNDM5ZDBhMjMuLjRiZDkxZDQxZGJiYWYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4rKysgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjQ5MiwxMiArMjQ5MiwxMyBAQCBjb25maWcgTUlUSUdBVElPTl9JQlBCX0VOVFJZXG4gXG4gY29uZmlnIE1JVElHQVRJT05fSUJSU19FTlRSWVxuIFx0Ym9vbCBcIkVuYWJsZSBJQlJTIG9uIGtlcm5lbCBlbnRyeVwiXG4tXHRkZXBlbmRzIG9uIENQVV9TVVBfSU5URUwgXHUwMDI2XHUwMDI2IFg4Nl82NFxuK1x0ZGVwZW5kcyBvbiBYODZfNjRcbiBcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBDb21waWxlIHRoZSBrZXJuZWwgd2l0aCBzdXBwb3J0IGZvciB0aGUgc3BlY3RyZV92Mj1pYnJzIG1pdGlnYXRpb24uXG4tXHQgIFRoaXMgbWl0aWdhdGVzIGJvdGggc3BlY3RyZV92MiBhbmQgcmV0YmxlZWQgYXQgZ3JlYXQgY29zdCB0b1xuLVx0ICBwZXJmb3JtYW5jZS5cbitcdCAgVGhpcyBtaXRpZ2F0ZXMgc3BlY3RyZV92MiBhdCBncmVhdCBjb3N0IHRvIHBlcmZvcm1hbmNlLiAgT24gSW50ZWwsXG4rXHQgIGl0IGFsc28gbWl0aWdhdGVzIHJldGJsZWVkLiAgT24gQU1EL0h5Z29uLCByZXRibGVlZCBtaXRpZ2F0aW9uXG4rXHQgIHJlcXVpcmVzIE1JVElHQVRJT05fVU5SRVRfRU5UUlkgb3IgTUlUSUdBVElPTl9JQlBCX0VOVFJZLlxuIFxuIGNvbmZpZyBNSVRJR0FUSU9OX1NSU09cbiBcdGJvb2wgXCJNaXRpZ2F0ZSBzcGVjdWxhdGl2ZSBSQVMgb3ZlcmZsb3cgb24gQU1EXCJcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuaW5kZXggM2QwOTQwYTNiOWYzNy4uMTFlNDA2NDRiOTY3MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC00NjAsNiArNDYwLDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FMTE9XRURfU0VWX0ZFQVRVUkVTICgxOSozMisyNykgLyogQWxsb3dlZCBTRVYgRmVhdHVyZXMgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1NWU01cdFx0KDE5KjMyKzI4KSAvKiBcInN2c21cIiBTVlNNIHByZXNlbnQgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0hWX0lOVVNFX1dSX0FMTE9XRURcdCgxOSozMiszMCkgLyogQWxsb3cgV3JpdGUgdG8gaW4tdXNlIGh5cGVydmlzb3Itb3duZWQgcGFnZXMgKi9cbisjZGVmaW5lIFg4Nl9GRUFUVVJFX1NOUF9JQlBCX09OX0VOVFJZXHQoMTkqMzIrMzEpIC8qIFNFVi1TTlAgSUJQQiBvbiBWTSBFbnRyeSAqL1xuIFxuIC8qIEFNRC1kZWZpbmVkIEV4dGVuZGVkIEZlYXR1cmUgMiBFQVgsIENQVUlEIGxldmVsIDB4ODAwMDAwMjEgKEVBWCksIHdvcmQgMjAgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQXHQoMjAqMzIrIDApIC8qIE5vIE5lc3RlZCBEYXRhIEJyZWFrcG9pbnRzICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuaW5kZXggYWE2MzQzMWJhOTJjMy4uMGRhMjIzNGI3MWM2OSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N2bS5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdm0uaFxuQEAgLTMwNSwxMSArMzA1LDE4IEBAIHN0YXRpY19hc3NlcnQoKEFWSUNfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBBVklDX01BWF9cbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfTUFYX1BIWVNJQ0FMX0lEKTtcbiBzdGF0aWNfYXNzZXJ0KChYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEIFx1MDAyNiBBVklDX1BIWVNJQ0FMX01BWF9JTkRFWF9NQVNLKSA9PSBYMkFWSUNfNEtfTUFYX1BIWVNJQ0FMX0lEKTtcbiBcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFXHRcdFx0XHRCSVQoMClcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVQoMylcbi0jZGVmaW5lIFNWTV9TRVZfRkVBVF9BTFRFUk5BVEVfSU5KRUNUSU9OXHRcdEJJVCg0KVxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcdFx0XHRcdEJJVCg1KVxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0XHRcdEJJVCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVcdFx0XHRcdEJJVF9VTEwoMClcbisjZGVmaW5lIFNWTV9TRVZfRkVBVF9SRVNUUklDVEVEX0lOSkVDVElPTlx0XHRCSVRfVUxMKDMpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfQUxURVJOQVRFX0lOSkVDVElPTlx0XHRCSVRfVUxMKDQpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFx0XHRcdFx0QklUX1VMTCg1KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05cdFx0XHRCSVRfVUxMKDcpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ1x0XHRcdFx0QklUX1VMTCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcdFx0XHRCSVRfVUxMKDIxKVxuK1xuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0tcdChTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTiB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQyB8IFxcXG4rXHRcdFx0XHRcdCBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWSlcbiBcbiAjZGVmaW5lIFZNQ0JfQUxMT1dFRF9TRVZfRkVBVFVSRVNfVkFMSURcdFx0XHRCSVRfVUxMKDYzKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbmluZGV4IGRkZjBkYjUzMjZmYTEuLjI0NWRlNGVhOGQ2MGEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbkBAIC0xMzA1LDcgKzEzMDUsMTQgQEAgc3RhdGljIHZvaWQgX19pbml0IHJldGJsZWVkX3VwZGF0ZV9taXRpZ2F0aW9uKHZvaWQpXG4gXG4gXHQvKlxuIFx0ICogTGV0IElCUlMgdHJ1bXAgYWxsIG9uIEludGVsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBlZmZlY3RzIG9mIHRoZVxuLVx0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZ1xuK1x0ICogcmV0YmxlZWQ9IGNtZGxpbmUgb3B0aW9uIGV4Y2VwdCBmb3IgY2FsbCBkZXB0aCBiYXNlZCBzdHVmZmluZy5cbitcdCAqXG4rXHQgKiBPbiBBTUQvSHlnb24sIGxlZ2FjeSBTUEVDX0NUUkwuSUJSUyB0b2dnbGluZyBkb2VzIG5vdCBtaXRpZ2F0ZSB0aGVcbitcdCAqIEJyYW5jaCBUeXBlIENvbmZ1c2lvbiBSRVRCbGVlZCB2YXJpYW50OiBSRVQgcHJlZGljdGlvbiBjb21lcyBmcm9tXG4rXHQgKiB0aGUgUmV0dXJuIEFkZHJlc3MgUHJlZGljdG9yLCBub3QgdGhlIHJlc3RyaWN0ZWQgaW5kaXJlY3QgYnJhbmNoXG4rXHQgKiBwcmVkaWN0b3JzIHRoYXQgSUJSUyBjb250cm9scy4gIFNvIGtlZXAgdGhpcyBJbnRlbC1vbmx5IGFuZCBsZWF2ZVxuK1x0ICogQU1EJ3Mgc29mdHdhcmUgcmV0dXJuLXRodW5rIG1pdGlnYXRpb24gKFVOUkVUL0lCUEIpIGluIHBsYWNlIGV2ZW5cbitcdCAqIHdoZW4gc3BlY3RyZV92Mj1pYnJzIGlzIHNlbGVjdGVkLlxuIFx0ICovXG4gXHRpZiAoYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfSU5URUwpIHtcbiBcdFx0c3dpdGNoIChzcGVjdHJlX3YyX2VuYWJsZWQpIHtcbkBAIC0xNjcyLDYgKzE2NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcmV0cG9saW5lX3NlcV9lbmFibGVkKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9XG4gI2RlZmluZSBTUEVDVFJFX1YyX0xGRU5DRV9NU0cgXCJXQVJOSU5HOiBMRkVOQ0UgbWl0aWdhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHRoaXMgQ1BVLCBkYXRhIGxlYWtzIHBvc3NpYmxlIVxcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0VCUEZfTVNHIFwiV0FSTklORzogVW5wcml2aWxlZ2VkIGVCUEYgaXMgZW5hYmxlZCB3aXRoIGVJQlJTIG9uLCBkYXRhIGxlYWtzIHBvc3NpYmxlIHZpYSBTcGVjdHJlIHYyIEJIQiBhdHRhY2tzIVxcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0VJQlJTX0xGRU5DRV9FQlBGX1NNVF9NU0cgXCJXQVJOSU5HOiBVbnByaXZpbGVnZWQgZUJQRiBpcyBlbmFibGVkIHdpdGggZUlCUlMrTEZFTkNFIG1pdGlnYXRpb24gYW5kIFNNVCwgZGF0YSBsZWFrcyBwb3NzaWJsZSB2aWEgU3BlY3RyZSB2MiBCSEIgYXR0YWNrcyFcXG5cIlxuKyNkZWZpbmUgU1BFQ1RSRV9WMl9FSUJSU19TTlBfUEVSRl9NU0cgXCJXQVJOSU5HOiBlSUJSUyBtaXRpZ2F0aW9uIGVuYWJsZXMgQXV0b0lCUlMgb24gU0VWLVNOUCBlbmFibGVkIENQVSwgdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgbG9zc1xcblwiXG4gI2RlZmluZSBTUEVDVFJFX1YyX0lCUlNfUEVSRl9NU0cgXCJXQVJOSU5HOiBJQlJTIG1pdGlnYXRpb24gc2VsZWN0ZWQgb24gRW5oYW5jZWQgSUJSUyBDUFUsIHRoaXMgbWF5IGNhdXNlIHVubmVjZXNzYXJ5IHBlcmZvcm1hbmNlIGxvc3NcXG5cIlxuIFxuICNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbkBAIC0xOTU2LDEwICsxOTY0LDggQEAgZWFybHlfcGFyYW0oXCJzcGVjdHJlX3YyXCIsIHNwZWN0cmVfdjJfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9yZXRwb2xpbmUodm9pZClcbiB7XG4tXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSkge1xuLVx0XHRwcl9lcnIoXCJLZXJuZWwgbm90IGNvbXBpbGVkIHdpdGggcmV0cG9saW5lOyBubyBtaXRpZ2F0aW9uIGF2YWlsYWJsZSFcIik7XG4rXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSlcbiBcdFx0cmV0dXJuIFNQRUNUUkVfVjJfTk9ORTtcbi1cdH1cbiBcbiBcdHJldHVybiBTUEVDVFJFX1YyX1JFVFBPTElORTtcbiB9XG5AQCAtMjE2NSwxMSArMjE3MSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcGVjdHJlX3YyX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXG4gXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbiBcdH1cbiBcbi1cdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZFTkRPUl9JTlRFTCkge1xuLVx0XHRwcl9lcnIoXCJJQlJTIHNlbGVjdGVkIGJ1dCBub3QgSW50ZWwgQ1BVLiBTd2l0Y2hpbmcgdG8gQVVUTyBzZWxlY3RcXG5cIik7XG4tXHRcdHNwZWN0cmVfdjJfY21kID0gU1BFQ1RSRV9WMl9DTURfQVVUTztcbi1cdH1cbi1cbiBcdGlmIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9JQlJTIFx1MDAyNlx1MDAyNiAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlMpKSB7XG4gXHRcdHByX2VycihcIklCUlMgc2VsZWN0ZWQgYnV0IENQVSBkb2Vzbid0IGhhdmUgSUJSUy4gU3dpdGNoaW5nIHRvIEFVVE8gc2VsZWN0XFxuXCIpO1xuIFx0XHRzcGVjdHJlX3YyX2NtZCA9IFNQRUNUUkVfVjJfQ01EX0FVVE87XG5AQCAtMjE5NCwxMiArMjE5NSwyNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9zZWxlY3RfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHRcdGJyZWFrO1xuIFx0XHRmYWxsdGhyb3VnaDtcbiBcdGNhc2UgU1BFQ1RSRV9WMl9DTURfRk9SQ0U6XG4tXHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCkpIHtcbitcdFx0LypcbitcdFx0ICogRG9uJ3QgdXNlIEF1dG9JQlJTIHdoZW4gU05QIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCBkZWdyYWRlc1xuK1x0XHQgKiBob3N0IHVzZXJzcGFjZSBpbmRpcmVjdCBicmFuY2ggcGVyZm9ybWFuY2UuXG4rXHRcdCAqL1xuK1x0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUlNfRU5IQU5DRUQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSkge1xuIFx0XHRcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcbiBcdFx0c3BlY3RyZV92Ml9lbmFibGVkID0gc3BlY3RyZV92Ml9zZWxlY3RfcmV0cG9saW5lKCk7XG4rXHRcdC8qXG4rXHRcdCAqIElmIHJldHBvbGluZSBpcyB1bmF2YWlsYWJsZSAoZS5nLiBidWlsdCB3aXRob3V0XG4rXHRcdCAqIENPTkZJR19NSVRJR0FUSU9OX1JFVFBPTElORSksIGZhbGwgYmFjayB0byBlSUJSUyBvblxuK1x0XHQgKiBBdXRvSUJSUy1jYXBhYmxlIHBhcnRzIHJhdGhlciB0aGFuIGxlYXZpbmcgU05QIGhvc3RzXG4rXHRcdCAqIHVubWl0aWdhdGVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKHNwZWN0cmVfdjJfZW5hYmxlZCA9PSBTUEVDVFJFX1YyX05PTkUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKVxuK1x0XHRcdHNwZWN0cmVfdjJfZW5hYmxlZCA9IFNQRUNUUkVfVjJfRUlCUlM7XG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBTUEVDVFJFX1YyX0NNRF9SRVRQT0xJTkVfTEZFTkNFOlxuQEAgLTIyNDcsNiArMjI2MiwxMyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIFx0XHR9XG4gXHR9XG4gXG4rXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKSBcdTAwMjZcdTAwMjZcbitcdCAgICBzcGVjdHJlX3YyX2VuYWJsZWQgPT0gU1BFQ1RSRV9WMl9OT05FIFx1MDAyNlx1MDAyNlxuK1x0ICAgIChzcGVjdHJlX3YyX2NtZCA9PSBTUEVDVFJFX1YyX0NNRF9GT1JDRSB8fFxuK1x0ICAgICAoc3BlY3RyZV92Ml9jbWQgPT0gU1BFQ1RSRV9WMl9DTURfQVVUTyBcdTAwMjZcdTAwMjZcbitcdCAgICAgIHNob3VsZF9taXRpZ2F0ZV92dWxuKFg4Nl9CVUdfU1BFQ1RSRV9WMikpKSlcbitcdFx0cHJfZXJyKFwiS2VybmVsIG5vdCBjb21waWxlZCB3aXRoIHJldHBvbGluZTsgbm8gbWl0aWdhdGlvbiBhdmFpbGFibGUhXCIpO1xuK1xuIFx0aWYgKGJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19TUEVDVFJFX1YyKSlcbiBcdFx0cHJfaW5mbyhcIiVzXFxuXCIsIHNwZWN0cmVfdjJfc3RyaW5nc1tzcGVjdHJlX3YyX2VuYWJsZWRdKTtcbiB9XG5AQCAtMjI3NywxNSArMjI5OSwzMiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gXHRpZiAoc3BlY3RyZV92Ml9lbmFibGVkID09IFNQRUNUUkVfVjJfRUlCUlMgXHUwMDI2XHUwMDI2IHVucHJpdmlsZWdlZF9lYnBmX2VuYWJsZWQoKSlcbiBcdFx0cHJfZXJyKFNQRUNUUkVfVjJfRUlCUlNfRUJQRl9NU0cpO1xuIFxuLVx0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpIHtcbi1cdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbitcdC8qXG4rXHQgKiBoZWFkXzY0LlMgcHJlc2VydmVzIEVGRVIuQVVUT0lCUlMgYWNyb3NzIGJvb3QsIHNvIGEga2V4ZWMgZnJvbSBhXG4rXHQgKiBrZXJuZWwgdGhhdCByYW4gaW4gQXV0b0lCUlMgbW9kZSBjYXJyaWVzIHRoZSBiaXQgaW50byB0aGUgbmV3IGtlcm5lbC5cbitcdCAqIEV4cGxpY2l0bHkgc2V0IG9yIGNsZWFyIGl0IHRvIG1hdGNoIHRoZSBzZWxlY3RlZCBtaXRpZ2F0aW9uLCByZWdhcmRsZXNzXG4rXHQgKiBvZiB3aGljaCBtb2RlIGlzIGluIGVmZmVjdC4gIFRoZSBib290IENQVSBkb2VzIHRoaXMgYmVmb3JlXG4rXHQgKiBpbml0X3JlYWxfbW9kZSgpIHNuYXBzaG90cyBFRkVSIGZvciB0aGUgQVAgdHJhbXBvbGluZSwgc28gQVBzIGluaGVyaXRcbitcdCAqIHRoZSBjb3JyZWN0IHZhbHVlIHRvby5cbitcdCAqL1xuK1x0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVVRPSUJSUykpIHtcbitcdFx0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpKVxuIFx0XHRcdG1zcl9zZXRfYml0KE1TUl9FRkVSLCBfRUZFUl9BVVRPSUJSUyk7XG4tXHRcdH0gZWxzZSB7XG4tXHRcdFx0eDg2X3NwZWNfY3RybF9iYXNlIHw9IFNQRUNfQ1RSTF9JQlJTO1xuLVx0XHRcdHVwZGF0ZV9zcGVjX2N0cmwoeDg2X3NwZWNfY3RybF9iYXNlKTtcbi1cdFx0fVxuK1x0XHRlbHNlXG4rXHRcdFx0bXNyX2NsZWFyX2JpdChNU1JfRUZFUiwgX0VGRVJfQVVUT0lCUlMpO1xuK1x0fVxuK1xuK1x0aWYgKHNwZWN0cmVfdjJfaW5faWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIShib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVVUT0lCUlMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgc3BlY3RyZV92Ml9pbl9laWJyc19tb2RlKHNwZWN0cmVfdjJfZW5hYmxlZCkpKSB7XG4rXHRcdHg4Nl9zcGVjX2N0cmxfYmFzZSB8PSBTUEVDX0NUUkxfSUJSUztcbitcdFx0dXBkYXRlX3NwZWNfY3RybCh4ODZfc3BlY19jdHJsX2Jhc2UpO1xuIFx0fVxuIFxuK1x0aWYgKHNwZWN0cmVfdjJfaW5fZWlicnNfbW9kZShzcGVjdHJlX3YyX2VuYWJsZWQpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TRVZfU05QKSlcbitcdFx0cHJfd2FybihTUEVDVFJFX1YyX0VJQlJTX1NOUF9QRVJGX01TRyk7XG4rXG4gXHRzd2l0Y2ggKHNwZWN0cmVfdjJfZW5hYmxlZCkge1xuIFx0Y2FzZSBTUEVDVFJFX1YyX05PTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uY1xuaW5kZXggZmE0MjlmMDRmMDAzZS4uODM4N2QzYTQ5YzQzYyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcbisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNcbkBAIC0xNDk2LDEzICsxNDk2LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IGNwdV9zZXRfYnVnX2JpdHMoc3RydWN0IGNwdWluZm9feDg2ICpjKVxuIFx0LypcbiBcdCAqIEFNRCdzIEF1dG9JQlJTIGlzIGVxdWl2YWxlbnQgdG8gSW50ZWwncyBlSUJSUyAtIHVzZSB0aGUgSW50ZWwgZmVhdHVyZVxuIFx0ICogZmxhZyBhbmQgcHJvdGVjdCBmcm9tIHZlbmRvci1zcGVjaWZpYyBidWdzIHZpYSB0aGUgd2hpdGVsaXN0LlxuLVx0ICpcbi1cdCAqIERvbid0IHVzZSBBdXRvSUJSUyB3aGVuIFNOUCBpcyBlbmFibGVkIGJlY2F1c2UgaXQgZGVncmFkZXMgaG9zdFxuLVx0ICogdXNlcnNwYWNlIGluZGlyZWN0IGJyYW5jaCBwZXJmb3JtYW5jZS5cbiBcdCAqL1xuIFx0aWYgKCh4ODZfYXJjaF9jYXBfbXNyIFx1MDAyNiBBUkNIX0NBUF9JQlJTX0FMTCkgfHxcbi1cdCAgICAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9BVVRPSUJSUykgXHUwMDI2XHUwMDI2XG4tXHQgICAgICFjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1NFVl9TTlApKSkge1xuK1x0ICAgIGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfQVVUT0lCUlMpKSB7XG4gXHRcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJSU19FTkhBTkNFRCk7XG4gXHRcdGlmICghY3B1X21hdGNoZXMoY3B1X3Z1bG5fd2hpdGVsaXN0LCBOT19FSUJSU19QQlJTQikgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhKHg4Nl9hcmNoX2NhcF9tc3IgXHUwMDI2IEFSQ0hfQ0FQX1BCUlNCX05PKSlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jIGIvYXJjaC94ODYva3ZtL3N2bS9zZXYuY1xuaW5kZXggOTQ0YWFlYTY1MDFmMi4uZWUxNDc5NWEyMGJkOSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc2V2LmNcbkBAIC01MDQsNyArNTA0LDcgQEAgc3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdGlmICghc25wX2FjdGl2ZSlcbi1cdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcbitcdFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcdTAwMjY9IH5TVk1fU0VWX0ZFQVRfU05QX09OTFlfTUFTSztcbiBcbiBcdGlmIChkYXRhLVx1MDAzZXZtc2FfZmVhdHVyZXMgXHUwMDI2IH52YWxpZF92bXNhX2ZlYXR1cmVzKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0zMjE5LDggKzMyMTksMjAgQEAgdm9pZCBfX2luaXQgc2V2X2hhcmR3YXJlX3NldHVwKHZvaWQpXG4gXHQgICAgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9OT19ORVNURURfREFUQV9CUCkpXG4gXHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUDtcbiBcbi1cdGlmIChzZXZfc25wX2VuYWJsZWQgXHUwMDI2XHUwMDI2IHRzY19raHogXHUwMDI2XHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxuLVx0XHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XG4rXHRpZiAoc2V2X3NucF9lbmFibGVkKSB7XG4rXHRcdC8qXG4rXHRcdCAqIFNvbWUgU05QLW9ubHkgZmVhdHVyZXMgc3VjaCBhcyBCVEIgSXNvbGF0aW9uIGFyZVxuK1x0XHQgKiBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMgdGhhdCBzdXBwb3J0IFNOUC5cbitcdFx0ICovXG4rXHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRSB8XG4rXHRcdFx0XHRcdCAgICAgICBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTjtcbitcbitcdFx0aWYgKHRzY19raHogXHUwMDI2XHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxuK1x0XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQztcbitcbitcdFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUlkpKVxuK1x0XHRcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcbitcdH1cbiB9XG4gXG4gdm9pZCBzZXZfaGFyZHdhcmVfdW5zZXR1cCh2b2lkKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi90b29scy9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAzZDA5NDBhM2I5ZjM3Li4xMWU0MDY0NGI5NjczIDEwMDY0NFxuLS0tIGEvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuKysrIGIvdG9vbHMvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxuQEAgLTQ2MCw2ICs0NjAsNyBAQFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQUxMT1dFRF9TRVZfRkVBVFVSRVMgKDE5KjMyKzI3KSAvKiBBbGxvd2VkIFNFViBGZWF0dXJlcyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU1ZTTVx0XHQoMTkqMzIrMjgpIC8qIFwic3ZzbVwiIFNWU00gcHJlc2VudCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfSFZfSU5VU0VfV1JfQUxMT1dFRFx0KDE5KjMyKzMwKSAvKiBBbGxvdyBXcml0ZSB0byBpbi11c2UgaHlwZXJ2aXNvci1vd25lZCBwYWdlcyAqL1xuKyNkZWZpbmUgWDg2X0ZFQVRVUkVfU05QX0lCUEJfT05fRU5UUllcdCgxOSozMiszMSkgLyogU0VWLVNOUCBJQlBCIG9uIFZNIEVudHJ5ICovXG4gXG4gLyogQU1ELWRlZmluZWQgRXh0ZW5kZWQgRmVhdHVyZSAyIEVBWCwgQ1BVSUQgbGV2ZWwgMHg4MDAwMDAyMSAoRUFYKSwgd29yZCAyMCAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfTk9fTkVTVEVEX0RBVEFfQlBcdCgyMCozMisgMCkgLyogTm8gTmVzdGVkIERhdGEgQnJlYWtwb2ludHMgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3Nldl9pbml0Ml90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXZfaW5pdDJfdGVzdHMuY1xuaW5kZXggNjg5MzkwYzEwZjdjMy4uY2YyMWJmZmZhY2I2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V2X2luaXQyX3Rlc3RzLmNcbkBAIC0xMywxNyArMTMsMjUgQEBcbiAjaW5jbHVkZSBcInN2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwia3NlbGZ0ZXN0LmhcIlxuIFxuLSNkZWZpbmUgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVAgMzJ1XG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfU05QX0FDVElWRVx0XHRCSVRfVUxMKDApXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUFx0XHRCSVRfVUxMKDUpXG4rI2RlZmluZSBTVk1fU0VWX0ZFQVRfQlRCX0lTT0xBVElPTlx0QklUX1VMTCg3KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NcdFx0QklUX1VMTCg5KVxuKyNkZWZpbmUgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUllcdEJJVF9VTEwoMjEpXG4rXG4rLyogRmVhdHVyZXMgdmFsaWQgb25seSBmb3IgU05QIGd1ZXN0cywgcmVqZWN0ZWQgZm9yIFNFVi1FUyBhbmQgYmVsb3cuICovXG4rI2RlZmluZSBTTlBfT05MWV9GRUFUVVJFU1x0XHQoU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkUgfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT04gfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0MgfCBcXFxuK1x0XHRcdFx0XHQgU1ZNX1NFVl9GRUFUX0lCUEJfT05fRU5UUlkpXG4gXG4gLypcbiAgKiBTb21lIGZlYXR1cmVzIG1heSBoYXZlIGhpZGRlbiBkZXBlbmRlbmNpZXMsIG9yIG1heSBvbmx5IHdvcmtcbiAgKiBmb3IgY2VydGFpbiBWTSB0eXBlcy4gIEVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGRvbid0XG4gICogZXhwZWN0IHRoYXQgYWxsIHN1cHBvcnRlZCBmZWF0dXJlcyBjYW4gYmUgcGFzc2VkIG9uZSBieSBvbmVcbiAgKiB0byBLVk1fU0VWX0lOSVQyLlxuLSAqXG4tICogKFdlbGwsIHJpZ2h0IG5vdyB0aGVyZSdzIG9ubHkgb25lLi4uKVxuICAqL1xuLSNkZWZpbmUgS05PV05fRkVBVFVSRVMgU1ZNX1NFVl9GRUFUX0RFQlVHX1NXQVBcbisjZGVmaW5lIEtOT1dOX0ZFQVRVUkVTXHRcdChTVk1fU0VWX0ZFQVRfREVCVUdfU1dBUCB8IFNOUF9PTkxZX0ZFQVRVUkVTKVxuIFxuIGludCBrdm1fZmQ7XG4gdTY0IHN1cHBvcnRlZF92bXNhX2ZlYXR1cmVzO1xuQEAgLTExMiw3ICsxMjAsNyBAQCB2b2lkIHRlc3RfZmVhdHVyZXModTMyIHZtX3R5cGUsIHU2NCBzdXBwb3J0ZWRfZmVhdHVyZXMpXG4gXHRcdGlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyBcdTAwMjYgQklUX1VMTChpKSkpXG4gXHRcdFx0dGVzdF9pbml0Ml9pbnZhbGlkKHZtX3R5cGUsXG4gXHRcdFx0XHRcdTAwMjYoc3RydWN0IGt2bV9zZXZfaW5pdCl7IC52bXNhX2ZlYXR1cmVzID0gQklUX1VMTChpKSB9LFxuLVx0XHRcdFx0XCJ1bmtub3duIGZlYXR1cmVcIik7XG4rXHRcdFx0XHRcInVua25vd24gb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZSBmb3IgVk0gdHlwZVwiKTtcbiBcdFx0ZWxzZSBpZiAoS05PV05fRkVBVFVSRVMgXHUwMDI2IEJJVF9VTEwoaSkpXG4gXHRcdFx0dGVzdF9pbml0Mih2bV90eXBlLFxuIFx0XHRcdFx0XHUwMDI2KHN0cnVjdCBrdm1fc2V2X2luaXQpeyAudm1zYV9mZWF0dXJlcyA9IEJJVF9VTEwoaSkgfSk7XG5AQCAtMTYxLDcgKzE2OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX1ZNLCAwKTtcbiBcdGlmIChoYXZlX3Nldl9lcylcbi1cdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NFVl9FU19WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuK1x0XHR0ZXN0X2ZlYXR1cmVzKEtWTV9YODZfU0VWX0VTX1ZNLCBzdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyBcdTAwMjYgflNOUF9PTkxZX0ZFQVRVUkVTKTtcbiBcdGlmIChoYXZlX3NucClcbiBcdFx0dGVzdF9mZWF0dXJlcyhLVk1fWDg2X1NOUF9WTSwgc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDY6NDEuNzk1NzU4NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODU0NDUzMjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIGl0J3MgdG91Y2hpbmcgYSBidW5jaCBvZiBjcnVjaWFsIHg4NiBrZXJuZWwgYXJlYXM6IEtjb25maWcsIENQVSBmZWF0dXJlIGRlZmluaXRpb25zIChgY3B1ZmVhdHVyZXMuaGApLCBTVk0gaGVhZGVycyAoYHN2bS5oYCksIENQVSBidWcgbWl0aWdhdGlvbiBjb2RlIChgYnVncy5jYCwgYGNvbW1vbi5jYCksIEtWTS9TRVYtU05QIHNwZWNpZmljIHN0dWZmIChgc2V2LmNgKSwgYW5kIHNvbWUgc3VwcG9ydGluZyB0b29scyAoYHRvb2xzL2ApLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGZvY3VzIGlzIGFyb3VuZCBtaXRpZ2F0aW5nIENQVSBidWdzIGxpa2UgU3BlY3RyZSBWMiBhbmQgUmV0YmxlZWQsIGFsb25nIHdpdGggZW5hYmxpbmcgQU1EJ3MgU0VWLVNOUCBmZWF0dXJlcyDigJMgc3BlY2lmaWNhbGx5LCBJQlBCIG9uIGVudHJ5IGFuZCBCVEIgaXNvbGF0aW9uLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiQ2FuIHdlIGZ1enogdGhpcz9cIiBTaW5jZSBJIGtub3cgdGhlc2UgYXJlYXMsIEknbSBhbHJlYWR5IHRoaW5raW5nIGFib3V0IHdoZXJlIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2VzIGFyZS4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlcyB0b3VjaCB0aGluZ3MgdGhhdCBpbml0aWFsaXplIHRoZSBDUFUgYXQgYm9vdCBhbmQgaW5pdGlhbGl6ZSB0aGUgU0VWLVNOUCBndWVzdCBkdXJpbmcgVk0gY3JlYXRpb24gbWFrZXMgbWUgdGhpbmsgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHdlIGNhbiBnZXQgc29tZSBmdXp6aW5nIGNvdmVyYWdlIGhlcmUuXG5cbkknbSBmb2N1c2luZyBpbiBvbiB0aGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IGZyb20gdGhlIGBfX3Nldl9ndWVzdF9pbml0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byB2YWxpZGF0aW5nIFZNU0EgZmVhdHVyZXMsIGFuZCB0aGVyZSdzIGEgY2hlY2sgaGVyZSB0aGF0IEkgc3VzcGVjdCBtaWdodCBiZSBieXBhc3NlZCBzb21laG93LiBJdCBsb29rcyBsaWtlIGl0J3MgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TRVZfSU5JVDJgIGlvY3RsLCB3aGljaCBjYWxscyBgX19zZXZfZ3Vlc3RfaW5pdGAgdmlhIGBzZXZfZ3Vlc3RfaW5pdDJgLlxuXG5SaWdodCwgYEtWTV9TRVZfSU5JVDJgLiBJIGtub3cgS1ZNIGlvY3RscyBhcmUgZ2VuZXJhbGx5IHJlYWNoYWJsZSwgc28gdGhhdCdzIGEgZ29vZCBzaWduLiBMZXQncyBzZWUgaWYgdGhpcyBvbmUgaGFzIGJlZW4gZnV6emVkIGJlZm9yZS4gSWYgd2UgY2FuIHJlYWNoIHRoaXMgY29kZSBwYXRoIHdoZW4gY3JlYXRpbmcgYSBWTSwgdGhhdCBvcGVucyB1cCBhIGZ1enppbmcgdGFyZ2V0LlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gbWFraW5nIHRoZSBqdWRnZW1lbnQgdGhhdCB3ZSBzaG91bGQgcHJpb3JpdGl6ZSB0aGlzIHBhdGNoLCBzaW5jZSB0aGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zZXYuY2AgYXJlIHJlYWNoYWJsZSBkdXJpbmcgVk0gY3JlYXRpb24uIFRoZSBjaGFuZ2VzIGluIHRoZSBidWcgbWl0aWdhdGlvbiBjb2RlIChlLmcuIGBidWdzLmNgKSBhcmUgcHJvYmFibHkgYm9vdC10aW1lIG9ubHksIGFuZCBzbyBub3QgYXMgZWFzeSB0byBmdXp6LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYW55IG90aGVyIGNhbGwgc2l0ZXMgdG8gYF9fc2V2X2d1ZXN0X2luaXRgIGFuZCBgc2V2X2d1ZXN0X2luaXQyYCBpbiB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1MC4zNDAyOTMzOTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4NjAwNTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fc2V2X2d1ZXN0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTQ3NT1zdGF0aWMgdm9pZCBzbnBfZ3Vlc3RfcmVxX2NsZWFudXAoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00ODgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo0ODk6c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDkwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qga3ZtX3Nldl9pbml0ICpkYXRhLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz01Nzk9c3RhdGljIGludCBzZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTk4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTk5OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIHZtX3R5cGUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAwLX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NjAyPXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MTYtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo2MTc6XFx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcXHUwMDI2ZGF0YSwga3ZtLVxcdTAwM2VhcmNoLnZtX3R5cGUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE4LX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzMwNz12b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxMy1cXHQgKlxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzMxNDpcXHQgKiBDaGVja2luZyBmb3IgU0VWKyBvdXRzaWRlIG9mIGt2bS1cXHUwMDNlbG9jayBpcyBzYWZlIGFzIF9fc2V2X2d1ZXN0X2luaXQoKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzMxNS1cXHQgKiBjYW4gb25seSBiZSBkb25lIGJlZm9yZSB2Q1BVcyBhcmUgY3JlYXRlZCwgY2FjaGVzIGNhbiBiZSBpbmNvaGVyZW50XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ2OjUwLjY4ODg5NzA0OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODI4MzAyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhpcyBjb2RlOlxuXG4qKkFuYWx5emluZyBTRVYgR3Vlc3QgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIGBfX3Nldl9ndWVzdF9pbml0YCBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGBzZXZfZ3Vlc3RfaW5pdGAgYW5kIGBzZXZfZ3Vlc3RfaW5pdDJgLiBJbnRlcmVzdGluZy4gVGhvc2UgZnVuY3Rpb25zLCBpbiB0dXJuLCBhcHBlYXIgdG8gYmUgdHJpZ2dlcmVkIGJ5IHNvbWV0aGluZyBsaWtlIGBzZXZfaXNzdWVfY21kYCDigJMgd2hpY2gsIEkgcmVjYWxsLCBpcyBsaWtlbHkgcmVhY2hlZCB0aHJvdWdoIHRoZSBgS1ZNX01FTU9SWV9FTkNSWVBUX09QYCBpb2N0bC4gVGhpcyBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSB0eXBpY2FsIFNFViBpbml0aWFsaXphdGlvbiBwYXRoLlxuXG5NeSBmb2N1cyBub3cgaXMgb24gY29uZmlybWluZyBob3cgdGhlc2UgaW5pdGlhdGlvbiBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gVGhlcmVmb3JlIEknbGwgZG91YmxlLWNoZWNrIHRoZSBjYWxsZXJzIG9mIGJvdGggYHNldl9ndWVzdF9pbml0MmAgYW5kIGBzZXZfZ3Vlc3RfaW5pdGAgdG8gc29saWRpZnkgdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgZWRnZSBjYXNlcyBvciBhbHRlcm5hdGl2ZSBlbnRyeSBwb2ludHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1NC4xNzE3MjkxODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MjMzMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldl9ndWVzdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc2V2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00NzU9c3RhdGljIHZvaWQgc25wX2d1ZXN0X3JlcV9jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NDg5OnN0YXRpYyBpbnQgX19zZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTc4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTc5OnN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01ODAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy01OTgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1OTk6XFx0cmV0dXJuIF9fc2V2X2d1ZXN0X2luaXQoa3ZtLCBhcmdwLCBcXHUwMDI2ZGF0YSwgdm1fdHlwZSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy02MDAtfVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAxLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjAyOnN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjAzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIGt2bS1cXHUwMDNlYXJjaC52bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NTgtXFx0Y2FzZSBLVk1fU0VWX0lOSVQ6XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyNjU5OlxcdFxcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NjAtXFx0XFx0YnJlYWs7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjYxLVxcdGNhc2UgS1ZNX1NFVl9JTklUMjpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjI2NjI6XFx0XFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2NjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXFx0ICpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMzMTQ6XFx0ICogQ2hlY2tpbmcgZm9yIFNFVisgb3V0c2lkZSBvZiBrdm0tXFx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXFx0ICogY2FuIG9ubHkgYmUgZG9uZSBiZWZvcmUgdkNQVXMgYXJlIGNyZWF0ZWQsIGNhY2hlcyBjYW4gYmUgaW5jb2hlcmVudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0Njo1NC40Njc5NjY4OTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjgwMjYxMTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0vU0VWLVNOUCBGZWF0dXJlIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgaW4gYGFyY2gveDg2L2t2bS9zdm0vc2V2LmNgLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGFkanVzdG1lbnQgdG8gdGhlIGZlYXR1cmUgdmFsaWRhdGlvbiBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAuICBFc3NlbnRpYWxseSwgdGhlIGNvZGUgaXMgdGlnaHRlbmluZyB1cCB0aGUgY2hlY2tzIGZvciBzcGVjaWZpYyBTRVYgZmVhdHVyZXMsIHNwZWNpZmljYWxseSB0aG9zZSByZWxhdGVkIHRvIFNOUC4gIEJlZm9yZSwgaWYgU05QIHdhc24ndCBhY3RpdmUgKGAhc25wX2FjdGl2ZWApLCB0aGUgY29kZSB3b3VsZCBtYXNrIG91dCBgU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0NgLiBOb3csIHRoZSBtYXNrIGlzIHdpZGVuZWQgdG8gY292ZXIgYFNWTV9TRVZfRkVBVF9TTlBfT05MWV9NQVNLYC4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZSBgS1ZNX1NFVl9JTklUMmAgaW9jdGwuIEl0IHNlZW1zIHdlIG5vdyBoYXZlIGEgc3RyaWN0ZXIgY2hlY2sgZm9yIGZlYXR1cmVzIHN1Ym1pdHRlZCB2aWEgdGhlIGBzdHJ1Y3Qga3ZtX3Nldl9pbml0YCBzdHJ1Y3R1cmUsIHJlamVjdGluZyBhbnl0aGluZyBmcm9tIHRoYXQgbWFzayBpZiB0aGUgY3VycmVudCBzeXN0ZW0gZG9lc24ndCBoYXZlIGFuIGFjdGl2ZSBTTlAuIFRoaXMgaXMgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCdzIGEgZGlyZWN0IGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyBLVk0gaGFuZGxlcyBmZWF0dXJlIG5lZ290aWF0aW9uIGFuZCBhY3RpdmF0aW9uLlxuXG5Nb3Zpbmcgb24gdG8gYHNldl9oYXJkd2FyZV9zZXR1cGAsIGl0IHNlZW1zIHRoYXQgd2UncmUgbm93IGFkZGluZyBtb3JlIGNhcGFiaWxpdGllcyB0byB0aGUgYHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlc2Agd2hlbiBgc2V2X3NucF9lbmFibGVkYCBpcyB0cnVlLiAgU3BlY2lmaWNhbGx5LCBgU1ZNX1NFVl9GRUFUX1NOUF9BQ1RJVkVgLCBgU1ZNX1NFVl9GRUFUX0JUQl9JU09MQVRJT05gLCBhbmQgYFNWTV9TRVZfRkVBVF9JQlBCX09OX0VOVFJZYCBhcmUgYmVpbmcgdW5jb25kaXRpb25hbGx5IGFkZGVkLiAgVGhlIGFkZGl0aW9uIG9mIGBTVk1fU0VWX0ZFQVRfU0VDVVJFX1RTQ2AgaXMgcHJlc2VydmVkIGJ1dCBub3cgY29uZGl0aW9uYWwgb24gYFg4Nl9GRUFUVVJFX1NOUF9TRUNVUkVfVFNDYC5cblxuU28sIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdXp6LXdvcnRoeT8gQWJzb2x1dGVseSwgeWVzLiBUaGUgdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGlzIGEga2V5IGFyZWEgb2YgaW50ZXJlc3QuIFRoaXMgaGFzIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgYEtWTV9TRVZfSU5JVDJgIGlvY3RsIHdoaWNoIG5vdyBtb3JlIHN0cmljdGx5IGVuZm9yY2VzIHRoaXMgZmVhdHVyZSB2YWxpZGF0aW9uIGxvZ2ljLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yLCBvciBldmVuIGJ5cGFzc2VzLCBnaXZlbiB0aGUgbmV3IGFuZCBjaGFuZ2VkIHZhbGlkYXRpb24gcnVsZXMgaXMgaGlnaCwgZXNwZWNpYWxseSBpZiB3ZSBjYW4gY3JhZnQgbWFsaWNpb3VzIGB2bXNhX2ZlYXR1cmVzYCB2YWx1ZXMuIFdlIHNob3VsZCBleHBsb3JlIHRoaXMsIHBhcnRpY3VsYXJseSBzaW5jZSBpdCBkaXJlY3RseSBtb2RpZmllcyB0aGUgS1ZNIEFQSSBiZWhhdmlvci5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHdoZXRoZXIgYEtWTV9TRVZfSU5JVDJgIGlzIGV2ZW4gcmVhY2hhYmxlIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBXaGlsZSBTRVYgYW5kIFNFVi1TTlAgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZSwgdGhlIEtWTSBBUEkgbWlnaHQgYmUgaW52b2tlZCB3aXRob3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgcmV2ZWFsIGludGVyZXN0aW5nIGJlaGF2aW91ci4gRnVydGhlciwgZG9lcyBgX19zZXZfZ3Vlc3RfaW5pdGAgY2hlY2sgYHNldl9zbnBfZW5hYmxlZGA/IFRoaXMgd291bGQgZnVydGhlciBsaW1pdCByZWFjaC4gSXQncyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgaW50ZXJhY3QuIExldCdzIGJhY2t0cmFjayB0byBgX19zZXZfZ3Vlc3RfaW5pdGAgZm9yIHRoZSBhbnN3ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjAzLjc0ODIyOTg4MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY2NzU5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3Nldl9ndWVzdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc2V2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00NzU9c3RhdGljIHZvaWQgc25wX2d1ZXN0X3JlcV9jbGVhbnVwKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNDg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NDg5OnN0YXRpYyBpbnQgX19zZXZfZ3Vlc3RfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTQ5MC1cXHRcXHRcXHQgICAgc3RydWN0IGt2bV9zZXZfaW5pdCAqZGF0YSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9NTc5PXN0YXRpYyBpbnQgc2V2X2d1ZXN0X2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3Nldl9jbWQgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU5OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjU5OTpcXHRyZXR1cm4gX19zZXZfZ3Vlc3RfaW5pdChrdm0sIGFyZ3AsIFxcdTAwMjZkYXRhLCB2bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYwMC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTYwMj1zdGF0aWMgaW50IHNldl9ndWVzdF9pbml0MihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fc2V2X2NtZCAqYXJncClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNjE2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NjE3OlxcdHJldHVybiBfX3Nldl9ndWVzdF9pbml0KGt2bSwgYXJncCwgXFx1MDAyNmRhdGEsIGt2bS1cXHUwMDNlYXJjaC52bV90eXBlKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTYxOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMzMDc9dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTMtXFx0ICpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMzMTQ6XFx0ICogQ2hlY2tpbmcgZm9yIFNFVisgb3V0c2lkZSBvZiBrdm0tXFx1MDAzZWxvY2sgaXMgc2FmZSBhcyBfX3Nldl9ndWVzdF9pbml0KClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMzMTUtXFx0ICogY2FuIG9ubHkgYmUgZG9uZSBiZWZvcmUgdkNQVXMgYXJlIGNyZWF0ZWQsIGNhY2hlcyBjYW4gYmUgaW5jb2hlcmVudFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzowMy44MDQ4OTk2MjdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk2NzMwNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgYF9fc2V2X2d1ZXN0X2luaXRgIFJlYWNoYWJpbGl0eSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluIGFuZCBzZWUgaWYgd2UgY2FuIHRyaWdnZXIgYSBjYWxsIHRvIGBfX3Nldl9ndWVzdF9pbml0YCB3aXRob3V0IGFjdHVhbGx5IGhhdmluZyBTRVYgaGFyZHdhcmUgcHJlc2VudC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGFuZCBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBvZnRlbiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHNlY3VyaXR5IGFuYWx5c2lzIOKAkyB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIGFzc3VtcHRpb25zIG1hZGUgYnkgdGhlIGNvZGUsIGVzcGVjaWFsbHkgYXJvdW5kIGZlYXR1cmVzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc29mdHdhcmUgYmVoYXZlcyBpZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlbid0IG1ldC4gU28sIHRoZSBjb3JlIHF1ZXN0aW9uIGlzOiBjYW4gYSBwcml2aWxlZ2VkIHByb2Nlc3Mgb3IgZXZlbiBhIGxlc3MtcHJpdmlsZWdlZCBndWVzdCBtYW5pcHVsYXRlIHRoZSBleGVjdXRpb24gcGF0aCB0byByZWFjaCBgX19zZXZfZ3Vlc3RfaW5pdGAgZXZlbiBvbiBhIG5vbi1TRVYgc3lzdGVtLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGluc3RhYmlsaXR5IG9yLCB3b3JzZSwgYSBieXBhc3Mgb2YgdGhlIGludGVuZGVkIHNlY3VyaXR5IGNoZWNrcz8gTGV0J3MgdHJhY2UgaXQgYW5kIGZpbmQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjU2NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjA3LjQwMTYzMjI3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTA3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODk6XFx0c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbiA0OTA6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBrdm1fc2V2X2luaXQgKmRhdGEsXFxuIDQ5MTpcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyB2bV90eXBlKVxcbiA0OTI6XFx0e1xcbiA0OTM6XFx0XFx0c3RydWN0IGt2bV9zZXZfaW5mbyAqc2V2ID0gdG9fa3ZtX3Nldl9pbmZvKGt2bSk7XFxuIDQ5NDpcXHRcXHRzdHJ1Y3Qgc2V2X3BsYXRmb3JtX2luaXRfYXJncyBpbml0X2FyZ3MgPSB7MH07XFxuIDQ5NTpcXHRcXHRib29sIGVzX2FjdGl2ZSA9IHZtX3R5cGUgIT0gS1ZNX1g4Nl9TRVZfVk07XFxuIDQ5NjpcXHRcXHRib29sIHNucF9hY3RpdmUgPSB2bV90eXBlID09IEtWTV9YODZfU05QX1ZNO1xcbiA0OTc6XFx0XFx0dTY0IHZhbGlkX3Ztc2FfZmVhdHVyZXMgPSBlc19hY3RpdmUgPyBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgOiAwO1xcbiA0OTg6XFx0XFx0aW50IHJldDtcXG4gNDk5OlxcdFxcbiA1MDA6XFx0XFx0aWYgKGt2bS1cXHUwMDNlY3JlYXRlZF92Y3B1cylcXG4gNTAxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1MDI6XFx0XFxuIDUwMzpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlZmxhZ3MpXFxuIDUwNDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTA1OlxcdFxcbiA1MDY6XFx0XFx0aWYgKCFzbnBfYWN0aXZlKVxcbiA1MDc6XFx0XFx0XFx0dmFsaWRfdm1zYV9mZWF0dXJlcyBcXHUwMDI2PSB+U1ZNX1NFVl9GRUFUX1NOUF9PTkxZX01BU0s7XFxuIDUwODpcXHRcXG4gNTA5OlxcdFxcdGlmIChkYXRhLVxcdTAwM2V2bXNhX2ZlYXR1cmVzIFxcdTAwMjYgfnZhbGlkX3Ztc2FfZmVhdHVyZXMpXFxuIDUxMDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTExOlxcdFxcbiA1MTI6XFx0XFx0aWYgKGRhdGEtXFx1MDAzZWdoY2JfdmVyc2lvbiBcXHUwMDNlIEdIQ0JfVkVSU0lPTl9NQVggfHwgKCFlc19hY3RpdmUgXFx1MDAyNlxcdTAwMjYgZGF0YS1cXHUwMDNlZ2hjYl92ZXJzaW9uKSlcXG4gNTEzOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1MTQ6XFx0XFxuIDUxNTpcXHRcXHQvKlxcbiA1MTY6XFx0XFx0ICogS1ZNIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIG1hbmRhdG9yeSBmZWF0dXJlcyBkZWZpbmVkIGJ5IHZlcnNpb25cXG4gNTE3OlxcdFxcdCAqIDIgb2YgdGhlIEdIQ0IgcHJvdG9jb2wsIHNvIGRlZmF1bHQgdG8gdGhhdCBmb3IgU0VWLUVTIGd1ZXN0cyBjcmVhdGVkXFxuIDUxODpcXHRcXHQgKiB2aWEgS1ZNX1NFVl9JTklUMiAoS1ZNX1NFVl9JTklUIGZvcmNlcyB2ZXJzaW9uIDEpLlxcbiA1MTk6XFx0XFx0ICovXFxuIDUyMDpcXHRcXHRpZiAoZXNfYWN0aXZlIFxcdTAwMjZcXHUwMDI2ICFkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24pXFxuIDUyMTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24gPSAyO1xcbiA1MjI6XFx0XFxuIDUyMzpcXHRcXHRpZiAoc25wX2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb24gXFx1MDAzYyAyKVxcbiA1MjQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdGlmICh1bmxpa2VseShzZXYtXFx1MDAzZWFjdGl2ZSkpXFxuIDUyNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0c2V2LVxcdTAwM2VhY3RpdmUgPSB0cnVlO1xcbiA1MzA6XFx0XFx0c2V2LVxcdTAwM2Vlc19hY3RpdmUgPSBlc19hY3RpdmU7XFxuIDUzMTpcXHRcXHRzZXYtXFx1MDAzZXZtc2FfZmVhdHVyZXMgPSBkYXRhLVxcdTAwM2V2bXNhX2ZlYXR1cmVzO1xcbiA1MzI6XFx0XFx0c2V2LVxcdTAwM2VnaGNiX3ZlcnNpb24gPSBkYXRhLVxcdTAwM2VnaGNiX3ZlcnNpb247XFxuIDUzMzpcXHRcXG4gNTM0OlxcdFxcdGlmIChzbnBfYWN0aXZlKVxcbiA1MzU6XFx0XFx0XFx0c2V2LVxcdTAwM2V2bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFO1xcbiA1MzY6XFx0XFxuIDUzNzpcXHRcXHRyZXQgPSBzZXZfYXNpZF9uZXcoc2V2LCB2bV90eXBlKTtcXG4gNTM4OlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAwOjQ3OjA3LjQwMTk4NDY3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU5MDA3MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0VWIEd1ZXN0IEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBTRVYgZ3Vlc3RzLCBhbmQgaXQncyBzdGFydGluZyB0byBjcnlzdGFsbGl6ZS4gVGhlIGluaXRpYWwgZnVuY3Rpb24sIGBfX3Nldl9ndWVzdF9pbml0YCwgaXMgZGVmaW5pdGVseSByZWFjaGFibGUg4oCTIHRoYXQncyB0aGUganVtcGluZy1vZmYgcG9pbnQuIEl0IHBlcmZvcm1zIHNvbWUgaW5pdGlhbCB2YWxpZGF0aW9uLCBhcyBleHBlY3RlZCwgYW5kIHRoZW4gaXQgY2FsbHMgYHNldl9hc2lkX25ld2AuIFRoYXQgbWFrZXMgc2Vuc2UuIFdlJ3JlIGdldHRpbmcgYW4gQVNJRCBhc3NpZ25lZCwgd2hpY2ggaXMgY3J1Y2lhbC5cblxuQnV0IHRoZW4sIEkgc2VlIHRoaXMgYHNldl9ndWVzdF9pbml0MmAsIGFuZCBpdCdzIGZsYWdnZWQgYXMgKm9ubHkqIGJlaW5nIHJlYWNoYWJsZSB0aHJvdWdoIGBLVk1fU0VWX0lOSVQyYC4gQWgsIHJpZ2h0LCBhIHNlY29uZGFyeSBpbml0aWFsaXphdGlvbiBwaGFzZSwgcG90ZW50aWFsbHkuIE5vdywgd2hlcmUgZG9lcyBgS1ZNX1NFVl9JTklUMmAgZml0IGludG8gdGhlIGxhcmdlciBwaWN0dXJlPyBMZXQgbWUgc2Vl4oCmIEJpbmdvISBJdCdzIGFjdHVhbGx5IGEgY29tbWFuZCBmb3IgYEtWTV9NRU1PUllfRU5DUllQVF9PUGAuIFRoYXQgY29ubmVjdGlvbiB0ZWxscyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuXG5HaXZlbiB0aGF0IGl0J3MgcmVsYXRlZCB0byBtZW1vcnkgZW5jcnlwdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZy4gVGhlIG5leHQgbG9naWNhbCBzdGVwIHdvdWxkIGJlIHRvIHJldmlldyBgc2V2X21lbV9lbmNfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBtZW1vcnkgZW5jcnlwdGlvbiBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGF0J3MgdGhlIGtleSBub3csIHRvIHNlZSBob3cgdGhhdCBjb21tYW5kIGFjdHVhbGx5IHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY3NywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTEuNDYxMDA1OTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MjUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MjU6XFx0aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuMjYyNjpcXHR7XFxuMjYyNzpcXHRcXHRzdHJ1Y3Qga3ZtX3Nldl9jbWQgc2V2X2NtZDtcXG4yNjI4OlxcdFxcdGludCByO1xcbjI2Mjk6XFx0XFxuMjYzMDpcXHRcXHRpZiAoIXNldl9lbmFibGVkKVxcbjI2MzE6XFx0XFx0XFx0cmV0dXJuIC1FTk9UVFk7XFxuMjYzMjpcXHRcXG4yNjMzOlxcdFxcdGlmICghYXJncClcXG4yNjM0OlxcdFxcdFxcdHJldHVybiAwO1xcbjI2MzU6XFx0XFxuMjYzNjpcXHRcXHRpZiAoY29weV9mcm9tX3VzZXIoXFx1MDAyNnNldl9jbWQsIGFyZ3AsIHNpemVvZihzdHJ1Y3Qga3ZtX3Nldl9jbWQpKSlcXG4yNjM3OlxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbjI2Mzg6XFx0XFxuMjYzOTpcXHRcXHRndWFyZChtdXRleCkoXFx1MDAyNmt2bS1cXHUwMDNlbG9jayk7XFxuMjY0MDpcXHRcXG4yNjQxOlxcdFxcdC8qIE9ubHkgdGhlIGVuY19jb250ZXh0X293bmVyIGhhbmRsZXMgc29tZSBtZW1vcnkgZW5jIG9wZXJhdGlvbnMuICovXFxuMjY0MjpcXHRcXHRpZiAoaXNfbWlycm9yaW5nX2VuY19jb250ZXh0KGt2bSkgXFx1MDAyNlxcdTAwMjZcXG4yNjQzOlxcdFxcdCAgICAhaXNfY21kX2FsbG93ZWRfZnJvbV9taXJyb3Ioc2V2X2NtZC5pZCkpXFxuMjY0NDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4yNjQ1OlxcdFxcbjI2NDY6XFx0XFx0LypcXG4yNjQ3OlxcdFxcdCAqIE9uY2UgS1ZNX1NFVl9JTklUMiBpbml0aWFsaXplcyBhIEtWTSBpbnN0YW5jZSBhcyBhbiBTTlAgZ3Vlc3QsIG9ubHlcXG4yNjQ4OlxcdFxcdCAqIGFsbG93IHRoZSB1c2Ugb2YgU05QLXNwZWNpZmljIGNvbW1hbmRzLlxcbjI2NDk6XFx0XFx0ICovXFxuMjY1MDpcXHRcXHRpZiAoc2V2X3NucF9ndWVzdChrdm0pIFxcdTAwMjZcXHUwMDI2IHNldl9jbWQuaWQgXFx1MDAzYyBLVk1fU0VWX1NOUF9MQVVOQ0hfU1RBUlQpXFxuMjY1MTpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbjI2NTI6XFx0XFxuMjY1MzpcXHRcXHRzd2l0Y2ggKHNldl9jbWQuaWQpIHtcXG4yNjU0OlxcdFxcdGNhc2UgS1ZNX1NFVl9FU19JTklUOlxcbjI2NTU6XFx0XFx0XFx0aWYgKCFzZXZfZXNfZW5hYmxlZClcXG4yNjU2OlxcdFxcdFxcdFxcdHJldHVybiAtRU5PVFRZO1xcbjI2NTc6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMjY1ODpcXHRcXHRjYXNlIEtWTV9TRVZfSU5JVDpcXG4yNjU5OlxcdFxcdFxcdHIgPSBzZXZfZ3Vlc3RfaW5pdChrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjYwOlxcdFxcdFxcdGJyZWFrO1xcbjI2NjE6XFx0XFx0Y2FzZSBLVk1fU0VWX0lOSVQyOlxcbjI2NjI6XFx0XFx0XFx0ciA9IHNldl9ndWVzdF9pbml0Mihrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjYzOlxcdFxcdFxcdGJyZWFrO1xcbjI2NjQ6XFx0XFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9TVEFSVDpcXG4yNjY1OlxcdFxcdFxcdHIgPSBzZXZfbGF1bmNoX3N0YXJ0KGt2bSwgXFx1MDAyNnNldl9jbWQpO1xcbjI2NjY6XFx0XFx0XFx0YnJlYWs7XFxuMjY2NzpcXHRcXHRjYXNlIEtWTV9TRVZfTEFVTkNIX1VQREFURV9EQVRBOlxcbjI2Njg6XFx0XFx0XFx0ciA9IHNldl9sYXVuY2hfdXBkYXRlX2RhdGEoa3ZtLCBcXHUwMDI2c2V2X2NtZCk7XFxuMjY2OTpcXHRcXHRcXHRicmVhaztcXG4yNjcwOlxcdFxcdGNhc2UgS1ZNX1NFVl9MQVVOQ0hfVVBEQVRFX1ZNU0E6XFxuMjY3MTpcXHRcXHRcXHRyID0gc2V2X2xhdW5jaF91cGRhdGVfdm1zYShrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG4yNjcyOlxcdFxcdFxcdGJyZWFrO1xcbjI2NzM6XFx0XFx0Y2FzZSBLVk1fU0VWX0xBVU5DSF9NRUFTVVJFOlxcbjI2NzQ6XFx0XFx0XFx0ciA9IHNldl9sYXVuY2hfbWVhc3VyZShrdm0sIFxcdTAwMjZzZXZfY21kKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTEuNDYxNTMwNjQ1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjMwNzAwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTRVYgTWVtb3J5IEVuY3J5cHRpb24gSU9DVEwqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgc2V2X21lbV9lbmNfaW9jdGxgIGZ1bmN0aW9uLiBUaGUgdmVyeSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcyB0aGlzIGNoZWNrIGZvciBgc2V2X2VuYWJsZWRgLiBJZiBpdCdzICpmYWxzZSosIGJvb20sIHdlJ3JlIHJldHVybmluZyBgLUVOT1RUWWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgYSBjbGVhciBzaWduYWwgdGhhdCB0aGUgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQgb3IgaXNuJ3QgYWN0aXZlLlxuXG5CdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGlzIGBzZXZfZW5hYmxlZGAgYWN0dWFsbHkgKnRydWUqIGluIHRoZSBlbnZpcm9ubWVudHMgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbj8gU3BlY2lmaWNhbGx5LCBRRU1VIGFuZCBHQ0UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBTRVYgZmVhdHVyZXMgYXJlIGNvbnNpc3RlbnRseSBhY3RpdmF0ZWQgaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBJdCdzIGNydWNpYWwgZm9yIG15IGFuYWx5c2lzLlxuXG5UaGVyZWZvcmUsIHRoZSBuZXh0IHN0ZXAgaXMgY3J5c3RhbCBjbGVhcjogSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGRldGVybWluZSAqaG93KiBgc2V2X2VuYWJsZWRgIGlzIGJlaW5nIHNldC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGlzIGVudGlyZSBJT0NUTCBwYXRoIGlzIGV2ZW4gcmVsZXZhbnQgdG8gbXkgbmVlZHMgaW4gdGhlc2Ugc3BlY2lmaWMgY29udGV4dHMuIExldCdzIGZpbmQgdGhhdCBhc3NpZ25tZW50IGFuZCBzZWUgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg4MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTUuNTg0NjAzNzg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxMzg3OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V2X2VuYWJsZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTU1LS8qIGVuYWJsZS9kaXNhYmxlIFNFViBzdXBwb3J0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzo1NjpzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgc2V2X2VuYWJsZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6NTc6bW9kdWxlX3BhcmFtX25hbWVkKHNldiwgc2V2X2VuYWJsZWQsIGJvb2wsIDA0NDQpO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtNTgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTI2MjU9aW50IHNldl9tZW1fZW5jX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTI2MjktXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyNjMwOlxcdGlmICghc2V2X2VuYWJsZWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yNjMxLVxcdFxcdHJldHVybiAtRU5PVFRZO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDA0PXZvaWQgX19pbml0IHNldl9zZXRfY3B1X2NhcHModm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwMDUte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzAwNjpcXHRpZiAoc2V2X2VuYWJsZWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDA3LVxcdFxcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9TRVYpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU2LVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzA1NzpcXHRpZiAoIXNldl9lbmFibGVkIHx8ICFucHRfZW5hYmxlZCB8fCAhbnJpcHMpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDU4LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTU1LW91dDpcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMxNTY6XFx0aWYgKHNldl9lbmFibGVkKSB7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTU3LVxcdFxcdGluaXRfYXJncy5wcm9iZSA9IHRydWU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTEtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjEyOlxcdHNldl9lbmFibGVkID0gc2V2X3N1cHBvcnRlZDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTMtXFx0c2V2X2VzX2VuYWJsZWQgPSBzZXZfZXNfc3VwcG9ydGVkO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMjM4PXZvaWQgc2V2X2hhcmR3YXJlX3Vuc2V0dXAodm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzkte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI0MDpcXHRpZiAoIXNldl9lbmFibGVkKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTMyNTU9aW50IHNldl9jcHVfaW5pdChzdHJ1Y3Qgc3ZtX2NwdV9kYXRhICpzZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyNTYte1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI1NzpcXHRpZiAoIXNldl9lbmFibGVkKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzI1OC1cXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NDc6MTYuMDM3NzQ3NDI3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MzU3NzU3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgU0VWIFN1cHBvcnQqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBzZXZfZW5hYmxlZGAgaXMgYmVpbmcgYXNzaWduZWQgdGhlIHZhbHVlIG9mIGBzZXZfc3VwcG9ydGVkYCB3aXRoaW4gdGhlIGBzZXZfaGFyZHdhcmVfc2V0dXBgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlLCB0aGF0IHNldHMgdGhlIHN0YWdlIGZvciBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHRvIGJlIGFjdGl2YXRlZC4gQnV0LCB0aGUgY3J1Y2lhbCBwaWVjZSBpcyBgc2V2X3N1cHBvcnRlZGAuIEkgc3VzcGVjdCB0aGF0IGlmIHRoZSBoYXJkd2FyZSAqZG9lc24ndCogc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9zdXBwb3J0ZWRgIGlzIGdvaW5nIHRvIGV2YWx1YXRlIHRvIGZhbHNlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHRoZSBhY3R1YWwgdmFsdWUgb2YgYHNldl9zdXBwb3J0ZWRgIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzoxOC45NzM1MjYwNTJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxODM2OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldl9zdXBwb3J0ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9zZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jPTkxPXN0YXRpYyB1NjQgc25wX3N1cHBvcnRlZF9wb2xpY3lfYml0cyBfX3JvX2FmdGVyX2luaXQ7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy05Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjkzOnN0YXRpYyB1NjQgc2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIF9fcm9fYWZ0ZXJfaW5pdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTk0LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz00ODk9c3RhdGljIGludCBfX3Nldl9ndWVzdF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zZXZfY21kICphcmdwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTYtXFx0Ym9vbCBzbnBfYWN0aXZlID0gdm1fdHlwZSA9PSBLVk1fWDg2X1NOUF9WTTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjQ5NzpcXHR1NjQgdmFsaWRfdm1zYV9mZWF0dXJlcyA9IGVzX2FjdGl2ZSA/IHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA6IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy00OTgtXFx0aW50IHJldDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MjE5Mj1pbnQgc2V2X2Rldl9nZXRfYXR0cih1MzIgZ3JvdXAsIHU2NCBhdHRyLCB1NjQgKnZhbClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMjE5OC1cXHRjYXNlIEtWTV9YODZfU0VWX1ZNU0FfRkVBVFVSRVM6XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzoyMTk5OlxcdFxcdCp2YWwgPSBzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXM7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0yMjAwLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMDQ4PXZvaWQgX19pbml0IHNldl9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMDUzLVxcdGJvb2wgc2V2X2VzX3N1cHBvcnRlZCA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzA1NDpcXHRib29sIHNldl9zdXBwb3J0ZWQgPSBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMwNTUtXFx0dTMyIHZtX3R5cGVzID0gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExNy1cXHR9XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTE4OlxcdHNldl9zdXBwb3J0ZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzExOS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzE2My1cXHRcXHRpZiAoc2V2X3BsYXRmb3JtX2luaXQoXFx1MDAyNmluaXRfYXJncykpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTY0OlxcdFxcdFxcdHNldl9zdXBwb3J0ZWQgPSBzZXZfZXNfc3VwcG9ydGVkID0gc2V2X3NucF9zdXBwb3J0ZWQgPSBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxNjUtXFx0XFx0ZWxzZSBpZiAoc2V2X3NucF9zdXBwb3J0ZWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMxODgtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMTg5OlxcdGlmIChzZXZfc3VwcG9ydGVkIFxcdTAwMjZcXHUwMDI2IG1pbl9zZXZfYXNpZCBcXHUwMDNjPSBtYXhfc2V2X2FzaWQpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMTkwLVxcdFxcdHZtX3R5cGVzIHw9IEJJVChLVk1fWDg2X1NFVl9WTSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMDAtXFx0XFx0cHJfaW5mbyhcXFwiU0VWICVzIChBU0lEcyAldSAtICV1KVxcXFxuXFxcIixcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMDE6XFx0XFx0XFx0c2V2X3N0cl9mZWF0dXJlX3N0YXRlKHNldl9zdXBwb3J0ZWQsIHZtX3R5cGVzIFxcdTAwMjYgQklUKEtWTV9YODZfU0VWX1ZNKSksXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjAyLVxcdFxcdFxcdG1pbl9zZXZfYXNpZCwgbWF4X3Nldl9hc2lkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMTI6XFx0c2V2X2VuYWJsZWQgPSBzZXZfc3VwcG9ydGVkO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIxMy1cXHRzZXZfZXNfZW5hYmxlZCA9IHNldl9lc19zdXBwb3J0ZWQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMTUtXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjE2OlxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyA9IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE3LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjE5LVxcdCAgICBjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX05PX05FU1RFRF9EQVRBX0JQKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjA6XFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9ERUJVR19TV0FQO1xcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyMS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIyNi1cXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyMjc6XFx0XFx0c2V2X3N1cHBvcnRlZF92bXNhX2ZlYXR1cmVzIHw9IFNWTV9TRVZfRkVBVF9TTlBfQUNUSVZFIHxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMjgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIFNWTV9TRVZfRkVBVF9CVEJfSVNPTEFUSU9OO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjMwLVxcdFxcdGlmICh0c2Nfa2h6IFxcdTAwMjZcXHUwMDI2IGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfU05QX1NFQ1VSRV9UU0MpKVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzIzMTpcXHRcXHRcXHRzZXZfc3VwcG9ydGVkX3Ztc2FfZmVhdHVyZXMgfD0gU1ZNX1NFVl9GRUFUX1NFQ1VSRV9UU0M7XFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjMyLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmMtMzIzMy1cXHRcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9TTlBfSUJQQl9PTl9FTlRSWSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYzozMjM0OlxcdFxcdFxcdHNldl9zdXBwb3J0ZWRfdm1zYV9mZWF0dXJlcyB8PSBTVk1fU0VWX0ZFQVRfSUJQQl9PTl9FTlRSWTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyMzUtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMDo0NzoxOS4wNjUzNjUwNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NzU5MDAzNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0VWLVJlbGF0ZWQgQ29kZSBQYXRocyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgc2V2X2VuYWJsZWRgIGJlaW5nIGZhbHNlIGlzIHRoZSBjcnVjaWFsIGZhY3Rvci4gSWYgdGhlIGhhcmR3YXJlIGRvZXNuJ3Qgc3VwcG9ydCBTRVYsIHRoZW4gYHNldl9lbmFibGVkYCB3aWxsIGJlIGZhbHNlLiBDb25zZXF1ZW50bHksIGBzZXZfbWVtX2VuY19pb2N0bGAgcmV0dXJucyBgLUVOT1RUWWAuIFRoaXMgbWVhbnMgdGhhdCBib3RoIGBLVk1fU0VWX0lOSVQyYCBhbmQgYF9fc2V2X2d1ZXN0X2luaXRgIHdpdGhpbiBRRU1VL0dDRSBiZWNvbWUgY29tcGxldGVseSB1bnJlYWNoYWJsZSB1bmxlc3MgdGhlIHVuZGVybHlpbmcgaG9zdCBoYXJkd2FyZSBpcyBzcGVjaWZpY2FsbHkgU0VWLWVuYWJsZWQuXG5cbldhaXQgYSBzZWNvbmQsIGNhbiBRRU1VIGV2ZW4gKmVtdWxhdGUqIFNFViBmdW5jdGlvbmFsaXR5PyBJIGtub3cgaXQncyBhIGNvbXBsaWNhdGVkIGZlYXR1cmUuIE5vLCB0aGF0J3MgcmlnaHQsIFNFViBuZWVkcyB0aGUgYWN0dWFsIEFNRCBoYXJkd2FyZSB0byBkbyB0aGUgZW5jcnlwdGlvbi4gU3l6a2FsbGVyIG9uIEdDRSBpcyB1c2luZyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZWl0aGVyIG9uIEludGVsIG9yIEFNRCwgYnV0IEkga25vdyB0aGF0IGluIHN0YW5kYXJkIEdDRSBWTXMsIFNFViBpc24ndCB1c3VhbGx5IGF2YWlsYWJsZSwgb3IgZW5hYmxlZCwgZm9yIHRob3NlIG5lc3RlZCBndWVzdHMuIFBsdXMsIFFFTVUgY2FuJ3QgZW11bGF0ZSBTRVYgd2l0aG91dCB0aGF0IGhvc3Qgc3VwcG9ydC5cblxuQWxyaWdodCwgc28gdGhlIFNFViBpbml0aWFsaXphdGlvbiBpcyBsaWtlbHkgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBtb3N0IGNvbmZpZ3VyYXRpb25zLiBMZXQgbWUgc2VlLCBpcyB0aGVyZSBhbnl0aGluZyAqZWxzZSogZnJvbSB0aGlzIHBhdGNoIHRoYXQgSSBjYW4gcmVhY2g/IFRoZSBwYXRjaCBhbHNvIGNoYW5nZXMgYGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jYCBhbmQgYGFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmNgLiBMZXQncyB0YWtlIGEgbG9vayBhdCBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgIHRvIHNlZSBpZiBhbnl0aGluZyB0aGVyZSBpcyByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5MTAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MDguODI0MzcxNzQxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzMjU3Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwZWN0cmVfdjJfYXBwbHlfbWl0aWdhdGlvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0yMjg3PXN0YXRpYyBib29sIF9faW5pdCBjcHVfd2FudHNfaWJwYl9icGYodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTIyOTYtXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MjI5NzpzdGF0aWMgdm9pZCBfX2luaXQgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMjI5OC17XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMzA4PXZvaWQgX19pbml0IGNwdV9zZWxlY3RfbWl0aWdhdGlvbnModm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMzODItXFx0c3BlY3RyZV92MV9hcHBseV9taXRpZ2F0aW9uKCk7XFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MzM4MzpcXHRzcGVjdHJlX3YyX2FwcGx5X21pdGlnYXRpb24oKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMzg0LVxcdHJldGJsZWVkX2FwcGx5X21pdGlnYXRpb24oKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MTAuMDI3NjM0MjU4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzgxMTA2Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgQW5hbHlzaXM6IE5vIFZhbHVlIEZvdW5kKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBxdWVzdGlvbiBpczogaXMgdGhlcmUgYW55ICpmdXp6YWJsZSogZnVuY3Rpb25hbGl0eSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2g/IE15IGluaXRpYWwgdGhvdWdodCBpcyBubywgYnV0IGxldCdzIGJlIG1ldGhvZGljYWwuXG5cbkZpcnN0LCBgc3BlY3RyZV92Ml9hcHBseV9taXRpZ2F0aW9uYCDigJMgdGhhdCdzIGEgYm9vdC10aW1lIHNldHVwIGZ1bmN0aW9uIChgX19pbml0YCkuIEZ1enplcnMgZG9uJ3QgZ2VuZXJhbGx5IHRhcmdldCB0aG9zZSBiZWNhdXNlIHRoZXkgcnVuIGJlZm9yZSB0aGUgZnV6emVyIGV2ZW4gZ2V0cyBhIGNoYW5jZSB0byBzdGFydCBwb2tpbmcgYXQgdGhlIHN5c3RlbSB2aWEgc3lzY2FsbHMgb3IgbmV0d29yayBpbnRlcmFjdGlvbnMuIFNvLCB0aGF0J3MgYSBub24tc3RhcnRlci5cblxuVGhlbiwgdGhlcmUncyB0aGUgU0VWIChTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uKSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYC4gVGhlIFNFViBpb2N0bHMgbG9vayBpbnRlcmVzdGluZyBhdCBmaXJzdCBnbGFuY2UuIFN5emthbGxlciAqZG9lcyogaGF2ZSBzb21lIHN1cHBvcnQgZm9yIGAvZGV2L3NldmAgYW5kIEtWTSBTRVYgaW9jdGxzLiBIb3dldmVyLCB0aGF0IHN1cHBvcnQgaXMgY29udGluZ2VudCBvbiB0aGUgaG9zdCBoYXJkd2FyZSAqYWN0dWFsbHkqIHN1cHBvcnRpbmcgU0VWLiBJZiB0aGUgaGFyZHdhcmUgZG9lc24ndCBzdXBwb3J0IGl0LCB0aGUgaW9jdGwganVzdCByZXR1cm5zIGAtRU5PVFRZYCwgd2hpY2ggaXMgYSBkZWFkIGVuZC4gRnVydGhlcm1vcmUsIG91ciBHQ0UgU3l6a2FsbGVyIGluc3RhbmNlcywgd2hpY2ggYXJlIHRoZSBtYWluIGZvY3VzLCBkb24ndCBoYXZlIFNFViBlbmFibGVkLiBFdmVuIGlmIHRoZXkgZGlkLCB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlIEknbSBsb29raW5nIGF0IGluIGBfX3Nldl9ndWVzdF9pbml0YCBpcyBhIHZlcnkgc21hbGwgYml0bWFzayBjaGFuZ2U6IGEgdmFsaWRhdGlvbiBtb2RpZmljYXRpb24uXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdGhhdCBjb2RlIHBhdGhzIHdoaWNoIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIGRvbid0IG1lcml0IGZ1enppbmcuIFNFViBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhpcyBjYXRlZ29yeS4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgQU1EIGhhcmR3YXJlLCB3aGljaCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgaG9zdCBzdXBwb3J0LiBUaGVyZWZvcmUsIEkgY2FuJ3QgdHJpZ2dlciB0aGUgU0VWIHBhdGhzIHVzaW5nIHRoZSBmdXp6ZXJzLlxuXG5JIHJlLWNoZWNrZWQgYHNldl9tZW1fZW5jX2lvY3RsYCBhbmQgY29uZmlybWVkIGBzZXZfZW5hYmxlZGAgYmVpbmcgY2hlY2tlZCwgd2l0aCBgc2V2X2VuYWJsZWRgIG9ubHkgYmVpbmcgdHJ1ZSBpZiBgc2V2X3N1cHBvcnRlZGAgaXMgdHJ1ZSwgYW5kIGBzZXZfc3VwcG9ydGVkYCBvbmx5IGJlaW5nIHRydWUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGBzZXZfcGxhdGZvcm1faW5pdGAsIHdoaWNoIG5lZWRzIFNFViBDUFUuXG5cblNvLCBTRVYgaXMgb3V0LiBXaGF0IGFib3V0IHRoZSBvdGhlciBjaGFuZ2VzPyBNb3N0IG9mIHRoZW0gYXJlIGluIGBfX2luaXRgIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZXMgaW4gYGJ1Z3MuY2AgYXJlIGBfX2luaXRgLiBUaGUgY2hhbmdlcyBpbiBgY29tbW9uLmNgIGFyZSBgX19pbml0YCB0b28uXG5cbkxldCdzIHN1bW1hcml6ZSB0aGUgY2hhbmdlcyBhZ2FpbjpcblxuKiAgIGBhcmNoL3g4Ni9LY29uZmlnYDogS2NvbmZpZyBjaGFuZ2VzLCBub3QgZnV6emFibGUuXG4qICAgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhgOiBNYWNybyBhZGRpdGlvbnMsIG5vdCBmdXp6YWJsZS5cbiogICBgYXJjaC94ODYvaW5jbHVkZS9hc20vc3ZtLmhgOiBNYWNybyBhZGRpdGlvbnMsIG5vdCBmdXp6YWJsZS5cbiogICBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgOiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYF9faW5pdGAgKHJldGJsZWVkIHVwZGF0ZSwgbWl0aWdhdGlvbiBzZWxlY3Rpb24vYXBwbGljYXRpb24pIC0gbm90IGZ1enphYmxlLlxuKiAgIGBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jYDogYGNwdV9zZXRfYnVnX2JpdHNgIGlzIGFsc28gY2FsbGVkIGF0IGBfX2luaXRgIC0gbm90IGZ1enphYmxlLlxuKiAgIGBhcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jYDogYF9fc2V2X2d1ZXN0X2luaXRgIHJlcXVpcmVzIFNFViBoYXJkd2FyZSBhbmQgaXMgbm90IGFjY2Vzc2libGUgZnJvbSBHQ0Ugb3Igc3RhbmRhcmQgUUVNVS4gYHNldl9oYXJkd2FyZV9zZXR1cGAgaXMgYF9faW5pdGAgLSBhbHNvIG5vdCBmdXp6YWJsZS5cbiogICBgdG9vbHMvLi4uYDogVGVzdCBhbmQgaGVhZGVyIGNoYW5nZXMsIG5vdCBkaXJlY3RseSBmdXp6YWJsZS5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcmVhY2hhYmxlIGNvZGUgZWl0aGVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQncyBub3QgZW11bGF0ZWQgb3IgaXMgYm9vdC10aW1lIHNldHVwLCBJIGNvbmNsdWRlIHRoYXQgdGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGVpdGhlciBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIG15IHRlc3RpbmcgZW52aXJvbm1lbnQsIG9yIGFyZSBub3QgdGFyZ2V0YWJsZSBieSBhIGZ1enplci5cblxuSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzY2LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDA6NTM6MjMuNDA4NzQzNjI0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYm9vdC10aW1lIENQVSBidWcgbWl0aWdhdGlvbiBzZXR1cCAoX19pbml0IGZ1bmN0aW9ucykgYW5kIEtWTSBTRVYtU05QIGd1ZXN0IGluaXRpYWxpemF0aW9uLiBUaGUgX19pbml0IGZ1bmN0aW9ucyBydW4gb25jZSBkdXJpbmcgYm9vdCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBieSBhIHN5c2NhbGwgZnV6emVyLiBUaGUgS1ZNIFNFVi1TTlAgY2hhbmdlcyBpbiBgX19zZXZfZ3Vlc3RfaW5pdGAgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgS1ZNX1NFVl9JTklUMiBpb2N0bCBpZiB0aGUgaG9zdCBoYXMgcGh5c2ljYWwgQU1EIFNFViBoYXJkd2FyZSBlbmFibGVkLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJvb3QtdGltZSBDUFUgYnVnIG1pdGlnYXRpb24gc2V0dXAgKF9faW5pdCBmdW5jdGlvbnMpIGFuZCBLVk0gU0VWLVNOUCBndWVzdCBpbml0aWFsaXphdGlvbi4gVGhlIF9faW5pdCBmdW5jdGlvbnMgcnVuIG9uY2UgZHVyaW5nIGJvb3QgYW5kIGNhbm5vdCBiZSB0cmlnZ2VyZWQgYnkgYSBzeXNjYWxsIGZ1enplci4gVGhlIEtWTSBTRVYtU05QIGNoYW5nZXMgaW4gYF9fc2V2X2d1ZXN0X2luaXRgIGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIEtWTV9TRVZfSU5JVDIgaW9jdGwgaWYgdGhlIGhvc3QgaGFzIHBoeXNpY2FsIEFNRCBTRVYgaGFyZHdhcmUgZW5hYmxlZCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6c6jq[1] Phase: Running StartedAt: 2026-08-05 00:53:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6c6jq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-05 00:53:34 +0000 UTC FinishedAt: 2026-08-05 00:53:39 +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,}