Name: series-workflowth5cl Phase: Failed StartedAt: 2026-08-18 06:32:50 +0000 UTC FinishedAt: 2026-08-18 07:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowth5cl[0] Phase: Succeeded StartedAt: 2026-08-18 06:32:50 +0000 UTC FinishedAt: 2026-08-18 07:14:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowth5cl[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 06:32:50 +0000 UTC FinishedAt: 2026-08-18 07:14:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0OGI5NWFmNzg2MWQ0YmMzMjRiMWRmYTJkOTZlOTVhOTU4NmM2ZTFhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6MTI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcbmluZGV4IGI2NzliZWQ5NTJkZTMuLjljOTVkZGQ3MDAyZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbkBAIC0xNjAsMTUgJiM0MzsxNjEsMjEgQEAgc3RydWN0IHdsYW5fbWJveF9kYXRhIHtcbiBcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XG4gfTtcbiBcbiYjNDM7c3RhdGljIHNpemVfdCBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplX3QgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIEFMSUdOKGxlbiwgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFx0XHRcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcbiB7XG4gXHR1MTYgY29yZSA9IDA7IC8qIEZJWE1FICovXG4gXHR1MzIgdmFsLCBvZmZzZXQgPSBjb3JlIFx1MDAzY1x1MDAzYyA0O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHRzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpO1xuIFx0aW50IHJldDtcbiBcbi1cdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFx0cmV0ID0gZG1hX21hcHBpbmdfZXJyb3IobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xOTEsNyAmIzQzOzE5OCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbiBcbi1cdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbiYjNDM7XHRkbWFfdW5tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zMzMsNyAmIzQzOzM0MCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfaW5pdChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTtcbiYjNDM7XHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTM1NCw3ICYjNDM7MzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcdGludCBlcnI7XG4gXG4tXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSk7XG4mIzQzO1x0cHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBwZV9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0zNzUsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG4gXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xuJiM0MztcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMzk5LDcgJiM0Mzs0MDYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTQzNCw3ICYjNDM7NDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0aW50IGVyciwgc2l6ZSA9IG51bV9zdGF0c19lbnRyaWVzICogc2l6ZW9mKCpucHUtXHUwMDNlc3RhdHMpO1xuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpO1xuJiM0MztcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDY2LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiBcdGludCBlcnIsIGxlbjtcbiBcbiBcdGxlbiA9IHNpemVvZigqd2xhbl9kYXRhKSAmIzQzOyBkYXRhX2xlbjtcbi1cdHdsYW5fZGF0YSA9IGt6YWxsb2MobGVuLCBnZnApO1xuJiM0MztcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcbiBcdGlmICghd2xhbl9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00ODksNyAmIzQzOzQ5Niw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19nZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXG4gXHRpbnQgZXJyLCBsZW47XG4gXG4gXHRsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47XG4tXHR3bGFuX2RhdGEgPSBremFsbG9jKGxlbiwgZ2ZwKTtcbiYjNDM7XHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XG4gXHRpZiAoIXdsYW5fZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcyB0byB0aGUgY2FjaGUgbGluZSBzaXplLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDhiOTVhZjc4NjFkNGJjMzI0YjFkZmEyZDk2ZTk1YTk1ODZjNmUxYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDA3OjEyOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMKaW5kZXggYjY3OWJlZDk1MmRlMy4uOWM5NWRkZDcwMDJlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvZGV2Y29yZWR1bXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZG1hLW1hcHBpbmcuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwpAQCAtMTYwLDE1ICYjNDM7MTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7CiAJREVDTEFSRV9GTEVYX0FSUkFZKHU4LCBkKTsKIH07CiAKJiM0MztzdGF0aWMgc2l6ZV90IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVfdCBsZW4pCiYjNDM7ewomIzQzOwlyZXR1cm4gQUxJR04obGVuLCBkbWFfZ2V0X2NhY2hlX2FsaWdubWVudCgpKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiAJCQkgICAgICAgdm9pZCAqcCwgaW50IHNpemUpCiB7CiAJdTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqLwogCXUzMiB2YWwsIG9mZnNldCA9IGNvcmUgJmx0OyZsdDsgNDsKIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwlzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpOwogCWludCByZXQ7CiAKLQlkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBwLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7CiYjNDM7CWRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LSZndDtkZXYsIHAsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTsKIAlyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtJmd0O2RldiwgZG1hX2FkZHIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xOTEsNyAmIzQzOzE5OCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCwKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7bnB1LSZndDtjb3Jlc1tjb3JlXS5sb2NrKTsKIAotCWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7CiYjNDM7CWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzMzLDcgJiM0MzszNDAsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSkKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM1NCw3ICYjNDM7MzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSkKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM3NSw3ICYjNDM7MzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM5OSw3ICYjNDM7NDA2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0FUT01JQyk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQzNCw3ICYjNDM7NDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LAogCWludCBlcnIsIHNpemUgPSBudW1fc3RhdHNfZW50cmllcyAqIHNpemVvZigqbnB1LSZndDtzdGF0cyk7CiAJc3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhOwogCi0JcHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpOwomIzQzOwlwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXBwZV9kYXRhKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNDY2LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCwKIAlpbnQgZXJyLCBsZW47CiAKIAlsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47Ci0Jd2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7CiYjNDM7CXdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTsKIAlpZiAoIXdsYW5fZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQ4OSw3ICYjNDM7NDk2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCwKIAlpbnQgZXJyLCBsZW47CiAKIAlsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47Ci0Jd2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7CiYjNDM7CXdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTsKIAlpZiAoIXdsYW5fZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBhaXJvaGFfbnB1LmNgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhYCBkaXJlY3RvcnkuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGltcHJvdmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBieSBpbnRyb2R1Y2luZyBgYWlyb2hhX25wdV9tYm94X3NpemVgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGFsaWdubWVudCB0byBgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKWAuIFJpZ2h0LCBzbyB0aGV5JiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIGFsaWducyBmb3IgRE1BIG9wZXJhdGlvbnMgd2l0aCBib3RoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYC4gVGhhdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UsIHByZXZlbnRpbmcgY2FjaGUtbGluZSBpc3N1ZXMgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB3aXRoIG5ldHdvcmtpbmcgaGFyZHdhcmUuCgpUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU43NTgxIEV0aGVybmV0IGNvbnRyb2xsZXIuIE5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGhvdyBvZnRlbiBkb2VzIHRoaXMgY29kZSBhY3R1YWxseSBydW4gaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgY2FjaGUgYWxpZ25tZW50IGlzc3VlcyB3aWxsIGJlIGEgcmVhbCBwcm9ibGVtLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgIGFuZCBwb3NzaWJseSBgYWlyb2hhX2V0aC5jYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBkZXZpY2UgaXMgZGVmaW5lZC4gTGV0JiMzOTtzIHNlZS4uLiB5ZXAsIGl0JiMzOTtzIGFuIGV0aGVybmV0IGRyaXZlci4KCk9rYXksIGxldCYjMzk7cyBqdXN0IGdyZXAgZm9yIGBhaXJvaGFfbnB1YCBpbiB0aGUgY29kZWJhc2UgYW5kIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHJlZmVyZW5jZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNzExIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOlx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY1Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NDpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4NjpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDA6XHRcdFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlx0XHRcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNDpcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cdHZhbCA9IChhZGRyWzBdIFx1MDAzY1x1MDAzYyAxNikgfCAoYWRkclsxXSBcdTAwM2NcdTAwM2MgOCkgfCBhZGRyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDY6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXHRcdFx0XHRcdHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTItXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1OTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cdHUzMiB2aXBfcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cdGlmIChlbmFibGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzE6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVx0Zm9yIChwID0gMTsgcCBcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVx1MDAzZXBvcnRzKTsgcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTgyOlx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODMtXHRcdFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVx0XHRcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVx0XHRcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTc6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNy1cdC8qIEJPT1RQICgweDQzKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVx0LyogQk9PVFAgKDB4NDQpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXHQvKiBJU0FLTVAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQwLVx0LyogREhDUHY2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDMtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0OC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cdC8qIEVUSC1cdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYxOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cdFx0XHRcdFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2OTpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXHRcdFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXHRcdFx0XHRcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODg6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVx0XHRcdFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3Olx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVx0LyogbW9kaWZ5IGFsbCByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAwOlx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVx0YWxsX3JzdiAmIzQzOz0gKHZhbCAtIG9yaWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDUtXHQvKiBtb2RpZnkgaHRoZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMi1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXHR0bXAgPSAoMyAqIHRtcCkgXHUwMDNlXHUwMDNlIDI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXHRcdHUzMiBhbGxfcnN2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1Olx0XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXHRcdGFsbF9yc3YgJiM0Mzs9IFBTRV9SU1ZfUEFHRVMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXHRcdFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cdFx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cdGZvciAocSA9IDY7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjI6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHQvKiBHRE0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjU6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2Ni1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzEtXHRcdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVx0LyogQ0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXHRmb3IgKHEgPSA0OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2Olx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cdFx0LyogUFBFMiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVx0XHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkxLVx0XHRcdFx0XHRcdFx0IHEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXHRcdFx0XHRcdFx0XHQgcSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTktXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTY6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cdFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mjk6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMzLVx0XHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcdFx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM2LVx0XHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTAtXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1Mi1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjItXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2NC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzUtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3Ny1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODctXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4OS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2Olx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXHRcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA4LVx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEzLVx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjQtXHRcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cdFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cdFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVx0XHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVx0XHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NS1cdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVx0XHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYxOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ny1cdFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY4Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ny1cdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHRcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg3Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk0Olx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cdTAwM2VxZG1hO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cdHdoaWxlIChxLVx1MDAzZXF1ZXVlZCBcdTAwM2MgcS1cdTAwM2VuZGVzYyAtIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXHRpZiAobmZyYW1lcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlx0XHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0XHRcdFx0UlhfUklOR19DUFVfSURYX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM5OmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXHR1MTYgcCwgZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjgtXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2OTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2V0YWlsXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcwOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtXHRcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOlx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjczLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XHRcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cdFx0aWYgKElTX0VSUihkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzI4LVx0XHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzI5Olx0XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVx0XHRpZiAocmVhc29uID09IFBQRV9DUFVfUkVBU09OX0hJVF9VTkJJTkRfUkFURV9SRUFDSEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XHRcdFx0YWlyb2hhX3BwZV9jaGVja19za2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHEtXHUwMDNlc2tiLCBoYXNoLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXImIzM5O3MgVmlydHVhbGl6YXRpb24gQ29tcGF0aWJpbGl0eSoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiB0aGlzIGlzIHRoZSBBaXJvaGEgRU43NTgxIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYWlyb2hhX2V0aC5jYCBhbmQgYGFpcm9oYV9ucHUuY2AgZmlsZXMuIFN0YW5kYXJkIHN0dWZmLCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQnV0IGEgcXVlc3Rpb24gcG9wcyBpbnRvIG15IGhlYWQ6IGNhbiB0aGlzIGRyaXZlciBhY3R1YWxseSAqd29yayogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgZXZlbiBkZXNpZ25lZCB3aXRoIHRoYXQgaW4gbWluZD8KClRvIGJlIHN1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBIb3BlZnVsbHksIHRoZXJlJiMzOTtzIHNvbWUgZ3VpZGFuY2UgdGhlcmUgb24gd2hldGhlciB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGhhcyBiZWVuIGNvbnNpZGVyZWQsIG9yIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIGl0LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgaHlwZXJ2aXNvciBpbnRlcmFjdGlvbnMgb3IgZGV2aWNlIHBhc3N0aHJvdWdoLiBJZiB0aGVyZSYjMzk7cyBub3RoaW5nIGV4cGxpY2l0LCB0aGF0IGNvdWxkIG1lYW4gaXQmIzM5O3MgZWl0aGVyIG5vdCBzdXBwb3J0ZWQsIG9yLCBtb3JlIGNvbmNlcm5pbmcsIHRoYXQgaXQgbWlnaHQgaGF2ZSBzb21lIGx1cmtpbmcgaXNzdWVzIGlmIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5FVF9WRU5ET1JfQUlST0hBXG4gICAzOlx0XHRib29sIFwmIzM0O0Fpcm9oYSBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVFxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIEFpcm9oYSBTb0Mgd2l0aCBldGhlcm5ldCwgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0aWYgTkVUX1ZFTkRPUl9BSVJPSEFcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVUX0FJUk9IQV9OUFVcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBOUFUgc3VwcG9ydFwmIzM0O1xuICAxMjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDEzOlx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQWlyb2hhIE5ldHdvcmsgUHJvY2Vzc29yIChOUFUpIGF2YWlsYWJsZVxuICAxNjpcdFx0ICBvbiB0aGUgQWlyb2hhIFNvYyBmYW1pbHkuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIE5FVF9BSVJPSEFcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcbiAgMjE6XHRcdHNlbGVjdCBORVRfQUlST0hBX05QVVxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2lnYWJpdCBldGhlcm5ldCBNQUNzIGluIHRoZVxuICAyNTpcdFx0ICBBaXJvaGEgU29DIGZhbWlseS5cbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgTkVUX0FJUk9IQV9GTE9XX1NUQVRTXG4gIDI4Olx0XHRkZWZhdWx0IHlcbiAgMjk6XHRcdGJvb2wgXCYjMzQ7QWlyb2hhIGZsb3cgc3RhdHNcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTkVUX0FJUk9IQSBcdTAwMjZcdTAwMjYgTkVUX0FJUk9IQV9OUFVcbiAgMzE6XHRcdGhlbHBcbiAgMzI6XHRcdCAgRW5hYmxlIEFpcm9oYSBmbG93dGFibGUgc3RhdGlzdGljIGNvdW50ZXJzLlxuICAzMzpcdFxuICAzNDpcdGVuZGlmICNORVRfVkVORE9SX0FJUk9IQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgY2F0Y2ggbXkgZXllOiBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIGZlZWxzIGxpa2UgaXTigJlzIGNvbmRpdGlvbmFsLCBlaXRoZXIgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBvdGVudGlhbGx5IHBhcnQgb2YgYSBidWlsZCB0ZXN0IHN1aXRlLiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgQWlyb2hhIEVONzU4MSBTb0MuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBhY3R1YWxseSB0ZXN0IHRoaXMgaW4gUUVNVT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gcmVwcm9kdWNlIHRoZSBlbnZpcm9ubWVudC4KCk15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgd2hldGhlciBhIHBsYXRmb3JtIGRldmljZSBpcyBldmVuIGRlZmluZWQgZm9yIGl0LiBTeXprYWxsZXIgaXMgYW1hemluZywgYnV0IGV2ZW4gaXQgaGFzIGxpbWl0YXRpb25zLiBBbHRob3VnaCwgSSYjMzk7bSByZW1pbmRpbmcgbXlzZWxmIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGl0c2VsZiB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3IgcHNldWRvLXN5c2NhbGxzIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0IGtlcm5lbCwgb3IgaWYgaXQgaXMgYSBuZXQgZGV2aWNlIEkgY2FuIHNpbXBseSBmdXp6IHRoZSBpbml0aWFsaXphdGlvbiB2aWEgYHN5el9pbml0X25ldF9kZXZpY2VgLiBXYWl0LCBubywgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkZXZpY2UsIHNvIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIG1lYXQgb2YgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgZHJpdmVyIGlzIGFjdHVhbGx5IHByb2JlZC4gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0byBzZWUgdGhlIHByb2Jpbmcgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM5NTI9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk1NDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTU1LVx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk2MS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTYyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MTE9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjEtXHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI3LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgyODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9ucHVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTE5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFN5emthbGxlciBQbGF0Zm9ybSBEcml2ZXIgTXVzaW5ncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMgYW5kIGhvdyBTeXprYWxsZXIgaGFuZGxlcyB0aGVtLiBFc3NlbnRpYWxseSwgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGVzZSwgU3l6a2FsbGVyIG5lZWRzIHRvIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRyaXZlci4gSSBrbm93IGl0IGhhcyBhIGZ1bmN0aW9uIGxpa2UgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGUgcmVhbCBjaGFsbGVuZ2UgaXMgdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGZvciBjZXJ0YWluIFNvQ3PigJRsaWtlIHRoZSBvbmVzIEkmIzM5O20gd29ya2luZyB3aXRo4oCUdXN1YWxseSBhcmVuJiMzOTt0IGluc3RhbnRpYXRlZCB1bmxlc3MgU3l6a2FsbGVyIGhhcyBhIGRlZGljYXRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlbS4KCldhaXQgYSBzZWNvbmQsIGFtIEkgZm9yZ2V0dGluZyBzb21ldGhpbmc/IERvZXMgU3l6a2FsbGVyIHVzZSBgc3l6X2RldmxpbmtgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QgdG8gYWRkcmVzcyB0aGlzIHBsYXRmb3JtIGRldmljZSBpbnN0YW50aWF0aW9uIHByb2JsZW0/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodCwgYHN5el9nZW5ldGxpbmtgIGlzIHJlbGF0ZWQsIGJ1dCB0aGF0JiMzOTtzIGZvciBnZW5ldGxpbmssIG5vdCBwbGF0Zm9ybSBkZXZpY2VzLgoKQWgsIHJpZ2h0LCBub3cgaXQmIzM5O3MgY29taW5nIGJhY2sgdG8gbWUuIFN5emthbGxlciAqY2FuKiBnZW5lcmF0ZSB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGlmIGl0IGhhcyB0aGUgbmVjZXNzYXJ5IGRlc2NyaXB0aW9ucy4gVGhhdCYjMzk7cyB0aGUga2V5LiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIHdlIGhhdmUgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGBhaXJvaGFgIFNvQyBvciByZWxldmFudCBwbGF0Zm9ybSBkZXZpY2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIEkgY2FuJiMzOTt0IHVzZSBgc3l6LWdyZXBwZXJgIG9yIHNlYXJjaCBzeXprYWxsZXItc3BlY2lmaWMgc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEZpbmUsIEkmIzM5O2xsIHdvcmsgd2l0aCB0aGUgYXZhaWxhYmxlIHRvb2xzOiBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4KClRoZSByZWFsIGlzc3VlIGhlcmUgaXMgdGhlIHByb21wdCBzYXlzIEkgc2hvdWxkIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCBidXQgdGhvc2UgdG9vbHMgYXJlIG1pc3NpbmcuIFRoYXTigJlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhpcyBgYWlyb2hhX25wdWAgZHJpdmVyLiBJcyBpdCBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwPyBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYW4gQWlyb2hhIFNvQy4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoYXQgcGFydGljdWxhciBTb0MsIG9yIGlmIHN5emthbGxlciBoYXMgYSBjdXN0b20gcHNldWRvLXN5c2NhbGwgdG8gaW5zdGFudGlhdGUgaXQuIEJ1dCwgbm8sIHN5emthbGxlciBkb2VzbiYjMzk7dCBnZW5lcmljYWxseSBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhhdC4gSXQgd291bGQgcmVxdWlyZSBleHBsaWNpdCBzdXBwb3J0IGZvciBlYWNoLgoKV2FpdCBhIHNlY29uZOKApnRoaXMgcGF0Y2ggaXMgZnJvbSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIERvZXMgdGhhdCBtZWFuIHN5emthbGxlciBmb3VuZCBzb21ldGhpbmcgaW4gdGhpcyBjb2RlPyBJdCBjZXJ0YWlubHkgc3VnZ2VzdHMgaXQgKmlzKiByZWFjaGFibGUgd2l0aGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQgaWYgaXQgd2FzIHRhcmdldGVkIGJ5IHRoZWlyIGNsdXN0ZXIuCgpCdXQgaG9sZCBvbiwgdGhpcyBjb3VsZCBqdXN0IGJlIGEgcGF0Y2ggKmJlaW5nIHRlc3RlZCogYnkgdGhlIHN5ei1jbHVzdGVyLiBJdCYjMzk7cyB1bmRlciByZXZpZXcsIGFjY29yZGluZyB0byB0aGUgZGF0ZSBhbmQgYXV0aG9yLiBJdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBidWcgKmluIHRoaXMgY29kZSogdGhhdCB3YXMgZm91bmQ7IGl0IGNvdWxkIGJlIGEgZGV2ZWxvcGVyJiMzOTtzIHBhdGNoIGJlaW5nIHZlcmlmaWVkLgoKVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYCBiZWluZyBjYWxsZWQgd2l0aCB1bmFsaWduZWQgc2l6ZXMsIHdoaWNoIG1pZ2h0IGNhdXNlIERNQSBjYWNoZSBhbGlnbm1lbnQgcHJvYmxlbXMuCgpTbywgdGhlIGJpZyBxdWVzdGlvbiBpczogaXMgdGhpcyBkcml2ZXIgd29ydGggZnV6emluZz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMsIGJ1dCBvbmx5IGlmIGl0JiMzOTtzIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBhaXJvaGFfbnB1YCAqaXMqIHJlYWNoYWJsZS4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGl0c2VsZiBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuIDc1MTpcdFxuIDc1MjpcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjb3JlLVx1MDAzZWxvY2spO1xuIDc1MzpcdFx0XHRjb3JlLVx1MDAzZW5wdSA9IG5wdTtcbiA3NTQ6XHRcbiA3NTU6XHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpICYjNDM7IDEpO1xuIDc1NjpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKVxuIDc1NzpcdFx0XHRcdHJldHVybiBpcnE7XG4gNzU4Olx0XG4gNzU5Olx0XHRcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIsXG4gNzYwOlx0XHRcdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIFwmIzM0O2Fpcm9oYS1ucHUtd2R0XCYjMzQ7LCBjb3JlKTtcbiA3NjE6XHRcdFx0aWYgKGVycilcbiA3NjI6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDc2MzpcdFxuIDc2NDpcdFx0XHRJTklUX1dPUksoXHUwMDI2Y29yZS1cdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XG4gNzY1Olx0XHR9XG4gNzY2Olx0XG4gNzY3Olx0XHQvKiB3bGFuIElSUSBsaW5lcyAqL1xuIDc2ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlaXJxcyk7IGkmIzQzOyYjNDM7KSB7XG4gNzY5Olx0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSAmIzQzOyBBUlJBWV9TSVpFKG5wdS1cdTAwM2Vjb3JlcykgJiM0MzsgMSk7XG4gNzcwOlx0XHRcdGlmIChpcnEgXHUwMDNjIDApXG4gNzcxOlx0XHRcdFx0cmV0dXJuIGlycTtcbiA3NzI6XHRcbiA3NzM6XHRcdFx0bnB1LVx1MDAzZWlycXNbaV0gPSBpcnE7XG4gNzc0Olx0XHR9XG4gNzc1Olx0XG4gNzc2Olx0XHRlcnIgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKTtcbiA3Nzc6XHRcdGlmIChlcnIpXG4gNzc4Olx0XHRcdHJldHVybiBlcnI7XG4gNzc5Olx0XG4gNzgwOlx0XHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gNzgxOlx0XHRpZiAoZXJyKVxuIDc4MjpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXG5cJiMzNDspO1xuIDc4MzpcdFxuIDc4NDpcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEwKSxcbiA3ODU6XHRcdFx0ICAgICByZXMuc3RhcnQgJiM0MzsgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFKTtcbiA3ODY6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTlBVX01JQigxMSksIDB4NDAwMDApOyAvKiBTUkFNIDI1NksgKi9cbiA3ODc6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTlBVX01JQigxMiksIDApO1xuIDc4ODpcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDIxKSwgMSk7XG4gNzg5Olx0XHRtc2xlZXAoMTAwKTtcbiA3OTA6XHRcbiA3OTE6XHRcdC8qIHNldHRpbmcgYm9vdGluZyBhZGRyZXNzICovXG4gNzkyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOUFVfTlVNX0NPUkVTOyBpJiM0MzsmIzQzOylcbiA3OTM6XHRcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9CT09UX0JBU0UoaSksIHJlcy5zdGFydCk7XG4gNzk0Olx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XG4gNzk1Olx0XG4gNzk2Olx0XHQvKiBlbmFibGUgTlBVIGNvcmVzICovXG4gNzk3Olx0XHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfQ09ORklHLCAweGZmKTtcbiA3OTg6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfQk9PVF9UUklHR0VSLCAweDEpO1xuIDc5OTpcdFx0bXNsZWVwKDEwMCk7XG4gODAwOlx0XG4gODAxOlx0XHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxuIDgwMjpcdFx0XHRcdFx0ICAgICBcdTAwMjZ2YWwsIHNpemVvZih2YWwpLCBHRlBfS0VSTkVMKSlcbiA4MDM6XHRcdFx0ZGV2X2luZm8oZGV2LCBcJiMzNDtOUFUgZncgdmVyc2lvbjogJTBkLiVkXFxuXCYjMzQ7LFxuIDgwNDpcdFx0XHRcdCAodmFsIFx1MDAzZVx1MDAzZSAxNikgXHUwMDI2IDB4ZmZmZiwgdmFsIFx1MDAyNiAweGZmZmYpO1xuIDgwNTpcdFxuIDgwNjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbnB1KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHJldHVybiAwO1xuIDgwOTpcdH1cbiA4MTA6XHRcbiA4MTE6XHRzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIDgxMjpcdHtcbiA4MTM6XHRcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiA4MTQ6XHRcdGludCBpO1xuIDgxNTpcdFxuIDgxNjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOylcbiA4MTc6XHRcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZucHUtXHUwMDNlY29yZXNbaV0ud2R0X3dvcmspO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbiA4MjE6XHRcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXG4gODIyOlx0XHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG4gODIzOlx0XHQuZHJpdmVyID0ge1xuIDgyNDpcdFx0XHQubmFtZSA9IFwmIzM0O2Fpcm9oYS1ucHVcJiMzNDssXG4gODI1Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXG4gODI2Olx0XHR9LFxuIDgyNzpcdH07XG4gODI4Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG4gODI5Olx0XG4gODMwOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQSk7XG4gODMxOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMik7XG4gODMyOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfNzk5Nl9GSVJNV0FSRV9EQVRBKTtcbiA4MzM6XHRNT0RVTEVfRklSTVdBUkUoTlBVX0VONzU4MV83OTk2X0ZJUk1XQVJFX1JWMzIpO1xuIDgzNDpcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX0RBVEEpO1xuIDgzNTpcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX1JWMzIpO1xuIDgzNjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4gODM3Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1x1MDAzZVwmIzM0Oyk7XG4gODM4Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0Fpcm9oYSBOZXR3b3JrIFByb2Nlc3NvciBVbml0IGRyaXZlclwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDY5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFpcm9oYSBOUFUgRHJpdmVyIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBgb2ZfYWlyb2hhX25wdV9tYXRjaGAgcHJvYmUgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50LCBtZWFuaW5nIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBhIGRldmljZSB0cmVlIG5vZGUgZm9yIGluc3RhbnRpYXRpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBmb3Igc3l6a2FsbGVyLCB3aGljaCwgaW4gbW9zdCBjYXNlcywgZG9lc24mIzM5O3QganVzdCBjb25qdXJlIHVwIGFyYml0cmFyeSBkZXZpY2UgdHJlZSBub2RlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWFsaXplZCBwc2V1ZG8tc3lzY2FsbCwgb3IgaXQmIzM5O3MgYmFrZWQgaW50byB0aGUgaW5pdGlhbCBRRU1VIGltYWdlLiBJJiMzOTttIHJlYXNvbmFibHkgc3VyZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgZHluYW1pY2FsbHkgaW5qZWN0IG5vZGVzLCBhdCBsZWFzdCBub3QgaW4gYW55IGdlbmVyYWwgd2F5LiBNYXliZSBzb21lIGZhbmN5IG92ZXJsYXlzLCBidXQgdXN1YWxseSwgdGhhdCYjMzk7cyBhIG5vLWdvLgoKR2l2ZW4gdGhpcyByZWxpYW5jZSBvbiB0aGUgZGV2aWNlIHRyZWUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGltaXRpbmcgYWNjZXNzLCBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwuIElmIHRoaXMgZHJpdmVyIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMsIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSBxdWlja2x5IHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBBaXJvaGEgRU43NTgxLiBObyBzdGFuZGFyZCBRRU1VIG1hY2hpbmUgZXhpc3RzIGZvciB0aGF0IHBsYXRmb3JtLiBOb3cgSSYjMzk7bSB0aGlua2luZywgY291bGQgaXQgYmUgcmVhY2hlZCB2aWEgYHN5el9nZW5ldGxpbmtgIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQ/IEJ1dCBubywgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLiBJcyBgYWlyb2hhX25wdV9wcm9iZWAgY2FsbGVkIGZyb20gKmFueXdoZXJlKiBlbHNlPyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlciBwcm9iZSBmdW5jdGlvbi4KCkhtbSwgb2theS4gT25lIGxhc3QgcXVpY2sgY2hlY2s6IGFyZSB0aGVyZSBhbnkgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEFpcm9oYSBoYXJkd2FyZT8gSWYgdGhlcmUgd2VyZSwgdGhhdCB3b3VsZCBvcGVuIGEgZG9vciwgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55LiBUaGlzIGlzIGxvb2tpbmcgbGlrZSBhIGRlYWQgZW5kIGZvciBkaXJlY3QgZnV6emluZyB0aHJvdWdoIHN5emthbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3NjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIGNvbmZpcm1lZCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBhaXJvaGFgIGRyaXZlciB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGFyZSBrZXk6IHdlJiMzOTtyZSBsb29raW5nIGZvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGhhcmR3YXJlIGVtdWxhdGlvbi4KClRoaXMgYGFpcm9oYWAgZHJpdmVyIGlzIHZlbmRvci1zcGVjaWZpYywgYW4gU29DIGV0aGVybmV0L05QVSBkcml2ZXIgZm9yIGFuIEFpcm9oYSBTb0MuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IG5lZWRzIHBoeXNpY2FsIEFpcm9oYSBoYXJkd2FyZSBvciBhIHZlcnkgc3BlY2lmaWMgUUVNVSBlbXVsYXRpb24uIERvZXMgc3RhbmRhcmQgUUVNVSBldmVuIGVtdWxhdGUgdGhlIEFpcm9oYSBFTjc1ODE/IEhpZ2hseSB1bmxpa2VseSwgZ2l2ZW4gaXRzIHJlbGF0aXZlIG9ic2N1cml0eSBhcyBhIE1lZGlhVGVrIHN1YnNpZGlhcnkmIzM5O3MgU29DLiBJIGNhbiYjMzk7dCBlYXNpbHkgY2hlY2sgdGhlIFFFTVUgc291cmNlLCBidXQgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgYSBsb25nIHNob3QuCgpUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBvcmlnaW5hdGVzIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIGdpdmVzIG1lIHBhdXNlLiBXaHkgd291bGQgc3l6a2FsbGVyIGZpbmQgYSBidWcgaGVyZSBpZiBpdCYjMzk7cyBub3QgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGU/IFRoZW4sIEkgcmVtZW1iZXIgc3l6a2FsbGVyIGNhbiBvcGVyYXRlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgcGhvbmVzIG9yIHNwZWNpZmljIHJvdXRlcnMuIENvdWxkIHN5emthbGxlciBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIEFpcm9oYSBib2FyZHM/IFBvdGVudGlhbGx5LgoKSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGNvZGUgdGhhdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgQWlyb2hhIGRyaXZlciwgbmVlZGluZyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgdmVyeSBzcGVjaWZpYywgbm9uLXN0YW5kYXJkIFFFTVUgZW11bGF0aW9uLCBjbGVhcmx5IGZpdHMgdGhhdCBkZWZpbml0aW9uLgoKTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGFza3MgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzeXprYWxsZXImIzM5O3MgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCwgYnV0IEkgY2FuJiMzOTt0IGRpcmVjdGx5IGluc3BlY3Qgc3l6a2FsbGVyJiMzOTtzIGBzeXMvKi50eHRgIGZpbGVzLiBIb3dldmVyLCBldmVuIGlmIHN5emthbGxlciBjcmVhdGVzIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGUgZHJpdmVyIHVzZXMgYGRldm1faW9yZW1hcF9yZXNvdXJjZWAsIGBwbGF0Zm9ybV9nZXRfaXJxYCwgYW5kIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIGZ1bmN0aW9ucy4gSXQgd291bGQgbmVlZCByZWFsIE1NSU8gcmVnaXN0ZXJzIHRvIHByZXZlbnQgYW4gaW1tZWRpYXRlIGNyYXNoIG9yIHByb2JlIGZhaWx1cmUuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgbmVlZCB0byBicmllZmx5IGNoZWNrIHdoYXQgYGFpcm9oYV9ucHVfcHJvYmVgIGRvZXMsIGp1c3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LCBidXQgaXQmIzM5O3MgdmVyeSBsaWtlbHkgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2ODA6XHRcdFx0Lm5hbWUgPSBOUFVfQU43NTgzX0ZJUk1XQVJFX0RBVEEsXG4gNjgxOlx0XHRcdC5tYXhfc2l6ZSA9IE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRSxcbiA2ODI6XHRcdH0sXG4gNjgzOlx0fTtcbiA2ODQ6XHRcbiA2ODU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XG4gNjg2Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWlyb2hhLGVuNzU4MS1ucHVcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuIDY4NzpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2Fpcm9oYSxhbjc1ODMtbnB1XCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcbiA2ODg6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuIDY4OTpcdH07XG4gNjkwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XG4gNjkxOlx0XG4gNjkyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XG4gNjkzOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7bnB1XCYjMzQ7LFxuIDY5NDpcdFx0LnJlZ19iaXRzXHRcdD0gMzIsXG4gNjk1Olx0XHQudmFsX2JpdHNcdFx0PSAzMixcbiA2OTY6XHRcdC5yZWdfc3RyaWRlXHRcdD0gNCxcbiA2OTc6XHRcdC5kaXNhYmxlX2xvY2tpbmdcdD0gdHJ1ZSxcbiA2OTg6XHR9O1xuIDY5OTpcdFxuIDcwMDpcdHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIDcwMTpcdHtcbiA3MDI6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDcwMzpcdFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbiA3MDQ6XHRcdHN0cnVjdCByZXNvdXJjZSByZXM7XG4gNzA1Olx0XHR2b2lkIF9faW9tZW0gKmJhc2U7XG4gNzA2Olx0XHRpbnQgaSwgaXJxLCBlcnI7XG4gNzA3Olx0XHR1MzIgdmFsO1xuIDcwODpcdFxuIDcwOTpcdFx0YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3MTA6XHRcdGlmIChJU19FUlIoYmFzZSkpXG4gNzExOlx0XHRcdHJldHVybiBQVFJfRVJSKGJhc2UpO1xuIDcxMjpcdFxuIDcxMzpcdFx0bnB1ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpucHUpLCBHRlBfS0VSTkVMKTtcbiA3MTQ6XHRcdGlmICghbnB1KVxuIDcxNTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3MTY6XHRcbiA3MTc6XHRcdG5wdS1cdTAwM2VkZXYgPSBkZXY7XG4gNzE4Olx0XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0ID0gYWlyb2hhX25wdV9wcGVfaW5pdDtcbiA3MTk6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2RlaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2RlaW5pdDtcbiA3MjA6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2luaXRfc3RhdHMgPSBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cDtcbiA3MjE6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2ZsdXNoX3NyYW1fZW50cmllcyA9IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcztcbiA3MjI6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2ZvZV9jb21taXRfZW50cnkgPSBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnk7XG4gNzIzOlx0XHRucHUtXHUwMDNlb3BzLndsYW5faW5pdF9yZXNlcnZlZF9tZW1vcnkgPSBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnk7XG4gNzI0Olx0XHRucHUtXHUwMDNlb3BzLndsYW5fc2VuZF9tc2cgPSBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQ7XG4gNzI1Olx0XHRucHUtXHUwMDNlb3BzLndsYW5fZ2V0X21zZyA9IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0O1xuIDcyNjpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2dldF9xdWV1ZV9hZGRyID0gYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0O1xuIDcyNzpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX3NldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfc2V0O1xuIDcyODpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2dldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0O1xuIDcyOTpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2VuYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZTtcbiA3MzA6XHRcdG5wdS1cdTAwM2VvcHMud2xhbl9kaXNhYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZGlzYWJsZTtcbiA3MzE6XHRcbiA3MzI6XHRcdG5wdS1cdTAwM2VyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBiYXNlLCBcdTAwMjZyZWdtYXBfY29uZmlnKTtcbiA3MzM6XHRcdGlmIChJU19FUlIobnB1LVx1MDAzZXJlZ21hcCkpXG4gNzM0Olx0XHRcdHJldHVybiBQVFJfRVJSKG5wdS1cdTAwM2VyZWdtYXApO1xuIDczNTpcdFxuIDczNjpcdFx0ZXJyID0gb2ZfcmVzZXJ2ZWRfbWVtX3JlZ2lvbl90b19yZXNvdXJjZShkZXYtXHUwMDNlb2Zfbm9kZSwgMCwgXHUwMDI2cmVzKTtcbiA3Mzc6XHRcdGlmIChlcnIpXG4gNzM4Olx0XHRcdHJldHVybiBlcnI7XG4gNzM5Olx0XG4gNzQwOlx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuIDc0MTpcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA3NDI6XHRcdFx0cmV0dXJuIGlycTtcbiA3NDM6XHRcbiA3NDQ6XHRcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfbWJveF9oYW5kbGVyLFxuIDc0NTpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgXCYjMzQ7YWlyb2hhLW5wdS1tYm94XCYjMzQ7LCBucHUpO1xuIDc0NjpcdFx0aWYgKGVycilcbiA3NDc6XHRcdFx0cmV0dXJuIGVycjtcbiA3NDg6XHRcbiA3NDk6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWNvcmVzKTsgaSYjNDM7JiM0MzspIHtcbiA3NTA6XHRcdFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tpXTtcbiA3NTE6XHRcbiA3NTI6XHRcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiA3NTM6XHRcdFx0Y29yZS1cdTAwM2VucHUgPSBucHU7XG4gNzU0Olx0XG4gNzU1Olx0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSAmIzQzOyAxKTtcbiA3NTY6XHRcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA3NTc6XHRcdFx0XHRyZXR1cm4gaXJxO1xuIDc1ODpcdFxuIDc1OTpcdFx0XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxuIDc2MDpcdFx0XHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBcJiMzNDthaXJvaGEtbnB1LXdkdFwmIzM0OywgY29yZSk7XG4gNzYxOlx0XHRcdGlmIChlcnIpXG4gNzYyOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA3NjM6XHRcbiA3NjQ6XHRcdFx0SU5JVF9XT1JLKFx1MDAyNmNvcmUtXHUwMDNld2R0X3dvcmssIGFpcm9oYV9ucHVfd2R0X3dvcmspO1xuIDc2NTpcdFx0fVxuIDc2NjpcdFxuIDc2NzpcdFx0Lyogd2xhbiBJUlEgbGluZXMgKi9cbiA3Njg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWlycXMpOyBpJiM0MzsmIzQzOykge1xuIDc2OTpcdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkgJiM0MzsgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpICYjNDM7IDEpO1xuIDc3MDpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKVxuIDc3MTpcdFx0XHRcdHJldHVybiBpcnE7XG4gNzcyOlx0XG4gNzczOlx0XHRcdG5wdS1cdTAwM2VpcnFzW2ldID0gaXJxO1xuIDc3NDpcdFx0fVxuIDc3NTpcdFxuIDc3NjpcdFx0ZXJyID0gZG1hX3NldF9jb2hlcmVudF9tYXNrKGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XG4gNzc3Olx0XHRpZiAoZXJyKVxuIDc3ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDc3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODczNAoJCQkJCQkJb3V0cHV0OiAxMjkKCQkJCQkJCXRob3VnaHRzOiAxMDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBBaXJvaGEgRU43NTgxIE5QVSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIEFpcm9oYSBFTjc1ODEgU29DJiMzOTtzIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlci4gVGhlIHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlYCwgYG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2VgLCBhbmQgYHBsYXRmb3JtX2dldF9pcnFgIHNjcmVhbXMgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGVudHJpZXMgYW5kIElSUSBjb25maWd1cmF0aW9ucywgd2hpY2ggYXJlIG5vdCByZWFkaWx5IGF2YWlsYWJsZSBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIHdpdGhvdXQgc2lnbmlmaWNhbnQgZGV2aWNlIHRyZWUgbW9kaWZpY2F0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNvbnNpZGVyIHdoZXRoZXIgc3l6a2FsbGVyIGNvdWxkIGJlIGZ1enppbmcgdGhpcyBpbmRpcmVjdGx5LiBCdXQsIHRoaXMgaXNuJiMzOTt0IGEgTmV0bGluayBmYW1pbHksIHNvIGBzeXpfZ2VuZXRsaW5rYCBpcyBvdXQuIFRoZSBwYXRjaCB0b3VjaGVzIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgYnV0IHRoYXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIG1ha2luZyBpdCBoYXJkZXIgdG8gcmVhY2ggd2l0aG91dCBkaXJlY3QgbW9kaWZpY2F0aW9uIHRvIGNhbGxpbmcgZnVuY3Rpb25zLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5wdS0mZ3Q7b3BzYCBzdHJ1Y3R1cmUgKGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgYGFpcm9oYV9ucHVfcHBlX2luaXRgLCBldGMuKSwgd2hpY2ggYXJlIHRoZW4gY2FsbGVkIGJ5IGBhaXJvaGFfZXRoLmNgLiBTbyBJJiMzOTtsbCBjaGVjayBgYWlyb2hhX2V0aC5jYC4gTG8gYW5kIGJlaG9sZCwgaXQmIzM5O3MgYWxzbyBhIHBsYXRmb3JtIGRyaXZlciB3aXRoIHRoZSBzYW1lIGhhcmR3YXJlIGRlcGVuZGVuY2llcyEgVGhlIGNvbXBsZXRlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgU3lzdGVtIG9uIGEgQ2hpcCAoU29DKS4KClNvLCBjb3VsZCBzeXprYWxsZXIgYmUgdGFyZ2V0aW5nIGEgcGh5c2ljYWwgQWlyb2hhIGJvYXJkPyBZZXMsIHN5emthbGxlciBkb2VzIHN1cHBvcnQgdGhhdC4gSG93ZXZlciwgdGhlIHByb21wdCBpcyBleHBsaWNpdDogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYy4uLiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbC4uLiBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNvQyBkcml2ZXIgKEFpcm9oYSBFTjc1ODEpIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLiBJdCYjMzk7cyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBQQ0llIHN3aXRjaC9TbWFydE5JQyBkcml2ZXJzIG1lbnRpb25lZCBpbiB0aGUgcHJvbXB0LiBUaGVyZWZvcmUsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIHN1cmUgdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBBaXJvaGEgU29DLiBXaGlsZSBJIGRvbiYjMzk7dCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBJIGtub3cgdGhhdCBBaXJvaGEgRU43NTgxIGlzIGFuIEFSTSBDb3J0ZXgtQTUzIFNvQywgbGlrZWx5IGZyb20gdGhlIE1lZGlhVGVrIE1UNzk4MS9NVDc5ODYgZmFtaWx5LCBhbmQgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgcGxhdGZvcm0uCgpFdmVuIGlmIEkgYXNzdW1lIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZGlyZWN0bHkgaW50ZXJhY3RzIHdpdGggTU1JTyByZWdpc3RlcnMgdXNpbmcgYHJlZ21hcF93cml0ZWAsIGBhaXJvaGFfZmVfd3JgLCBldGMuLCBhbmQgZXhwZWN0cyBzcGVjaWZpYyBoYXJkd2FyZSByZXNwb25zZXMuIFdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgaXQgd291bGQganVzdCBoYW5nIG9yIGZhaWwgaW1tZWRpYXRlbHkuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgbW9yZSBjbG9zZWx5LiBJdCBhZGRzIGBhaXJvaGFfbnB1X21ib3hfc2l6ZWAgYW5kIHVzZXMgaXQgZm9yIERNQSBidWZmZXIgc2l6ZSBhbGlnbm1lbnQgd2l0aCBgZG1hX21hcF9zaW5nbGVgIGFuZCBga3phbGxvY2AuIFRoaXMgaXMgYSBETUEgY2FjaGUgYWxpZ25tZW50IGlzc3VlIGZpeC4gU2luY2UgaXQmIzM5O3MgaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCYjMzk7cyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBhbmFseXNpcy4gSSYjMzk7bSBzdGlja2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSW4gc3VtbWFyeTogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYCkgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcy4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiBUaGUgYHNldC1yZXN1bHRzYCB0b29sIHNob3VsZCBiZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcyB0byB0aGUgY2FjaGUgbGluZSBzaXplLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEVONzU4MSBTb0MgbmV0d29yayBwcm9jZXNzb3IgKE5QVSkgZHJpdmVyIHRvIGFsaWduIERNQSBidWZmZXIgc2l6ZXMgdG8gdGhlIGNhY2hlIGxpbmUgc2l6ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEyOjU2LjA2MDIxMzQ3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MTA5MDY1NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEyOjU2LjA2MDIyMDYyNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0OTE4NjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ4Yjk1YWY3ODYxZDRiYzMyNGIxZGZhMmQ5NmU5NWE5NTg2YzZlMWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6MTI6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcXG5pbmRleCBiNjc5YmVkOTUyZGUzLi45Yzk1ZGRkNzAwMmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuQEAgLTUsNiArNSw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmNvcmVkdW1wLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuQEAgLTE2MCwxNSArMTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XFxuIFxcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XFxuIH07XFxuIFxcbitzdGF0aWMgc2l6ZV90IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVfdCBsZW4pXFxuK3tcXG4rXFx0cmV0dXJuIEFMSUdOKGxlbiwgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcXG4gXFx0XFx0XFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxcbiB7XFxuIFxcdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cXG4gXFx0dTMyIHZhbCwgb2Zmc2V0ID0gY29yZSBcXHUwMDNjXFx1MDAzYyA0O1xcbiBcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbitcXHRzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtXFx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xcbitcXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBwLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkcik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTE5MSw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuIFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcXG4gXFxuLVxcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7XFxuK1xcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTMzMyw3ICszNDAsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zNTQsNyArMzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zNzUsNyArMzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zOTksNyArNDA2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC00MzQsNyArNDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbiBcXHRpbnQgZXJyLCBzaXplID0gbnVtX3N0YXRzX2VudHJpZXMgKiBzaXplb2YoKm5wdS1cXHUwMDNlc3RhdHMpO1xcbiBcXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XFxuIFxcbi1cXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSwgR0ZQX0FUT01JQyk7XFxuK1xcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xcbiBcXHRpZiAoIXBwZV9kYXRhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTQ2Niw3ICs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcXG4gXFx0aW50IGVyciwgbGVuO1xcbiBcXG4gXFx0bGVuID0gc2l6ZW9mKCp3bGFuX2RhdGEpICsgZGF0YV9sZW47XFxuLVxcdHdsYW5fZGF0YSA9IGt6YWxsb2MobGVuLCBnZnApO1xcbitcXHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XFxuIFxcdGlmICghd2xhbl9kYXRhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTQ4OSw3ICs0OTYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcbiBcXHRpbnQgZXJyLCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgKyBkYXRhX2xlbjtcXG4tXFx0d2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7XFxuK1xcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcXG4gXFx0aWYgKCF3bGFuX2RhdGEpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTI6NTcuNTEwMzI4MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTY1ODkzMzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4Yjk1YWY3ODYxZDRiYzMyNGIxZGZhMmQ5NmU5NWE5NTg2YzZlMWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzoxMjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5pbmRleCBiNjc5YmVkOTUyZGUzLi45Yzk1ZGRkNzAwMmU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuQEAgLTUsNiArNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuQEAgLTE2MCwxNSArMTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4gXHRERUNMQVJFX0ZMRVhfQVJSQVkodTgsIGQpO1xuIH07XG4gXG4rc3RhdGljIHNpemVfdCBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplX3QgbGVuKVxuK3tcbitcdHJldHVybiBBTElHTihsZW4sIGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KCkpO1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXG4gXHRcdFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxuIHtcbiBcdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cbiBcdHUzMiB2YWwsIG9mZnNldCA9IGNvcmUgXHUwMDNjXHUwMDNjIDQ7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuK1x0c2l6ZV90IG1hcF9sZW4gPSBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplKTtcbiBcdGludCByZXQ7XG4gXG4tXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIHAsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFx0cmV0ID0gZG1hX21hcHBpbmdfZXJyb3IobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xOTEsNyArMTk4LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2NvcmVdLmxvY2spO1xuIFxuLVx0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuK1x0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzMzLDcgKzM0MCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfaW5pdChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMzU0LDcgKzM2MSw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG4gXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xuK1x0cHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBwZV9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0zNzUsNyArMzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcdGludCBlcnI7XG4gXG4tXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSk7XG4rXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTM5OSw3ICs0MDYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDM0LDcgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfc3RhdHNfc2V0dXAoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcbiBcdGludCBlcnIsIHNpemUgPSBudW1fc3RhdHNfZW50cmllcyAqIHNpemVvZigqbnB1LVx1MDAzZXN0YXRzKTtcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDY2LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0aW50IGVyciwgbGVuO1xuIFxuIFx0bGVuID0gc2l6ZW9mKCp3bGFuX2RhdGEpICsgZGF0YV9sZW47XG4tXHR3bGFuX2RhdGEgPSBremFsbG9jKGxlbiwgZ2ZwKTtcbitcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcbiBcdGlmICghd2xhbl9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00ODksNyArNDk2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiBcdGludCBlcnIsIGxlbjtcbiBcbiBcdGxlbiA9IHNpemVvZigqd2xhbl9kYXRhKSArIGRhdGFfbGVuO1xuLVx0d2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7XG4rXHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XG4gXHRpZiAoIXdsYW5fZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMjo1Ny41MTAzMzA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTAyNjczMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGFpcm9oYV9ucHUuY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGFgIGRpcmVjdG9yeS4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBpbXByb3ZlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYnkgaW50cm9kdWNpbmcgYGFpcm9oYV9ucHVfbWJveF9zaXplYC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBhbGlnbm1lbnQgdG8gYGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KClgLiBSaWdodCwgc28gdGhleSdyZSBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIGFsaWducyBmb3IgRE1BIG9wZXJhdGlvbnMgd2l0aCBib3RoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYC4gVGhhdCdzIGEgZ29vZCBwcmFjdGljZSwgcHJldmVudGluZyBjYWNoZS1saW5lIGlzc3VlcyB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IHdpdGggbmV0d29ya2luZyBoYXJkd2FyZS5cblxuVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVONzU4MSBFdGhlcm5ldCBjb250cm9sbGVyLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBob3cgb2Z0ZW4gZG9lcyB0aGlzIGNvZGUgYWN0dWFsbHkgcnVuIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiB1c2VkIGluIGFuIGVudmlyb25tZW50IHdoZXJlIGNhY2hlIGFsaWdubWVudCBpc3N1ZXMgd2lsbCBiZSBhIHJlYWwgcHJvYmxlbS4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgIGFuZCBwb3NzaWJseSBgYWlyb2hhX2V0aC5jYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBkZXZpY2UgaXMgZGVmaW5lZC4gTGV0J3Mgc2VlLi4uIHllcCwgaXQncyBhbiBldGhlcm5ldCBkcml2ZXIuXG5cbk9rYXksIGxldCdzIGp1c3QgZ3JlcCBmb3IgYGFpcm9oYV9ucHVgIGluIHRoZSBjb2RlYmFzZSBhbmQgc2VlIHdoZXJlIGVsc2UgaXQncyByZWZlcmVuY2VkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzowMy4xMjA2MDEyMzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2NzgwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNzExIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYyOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcxOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc2LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTkyLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjkzOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcXHRcXHRcXHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlxcdFxcdFxcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0OlxcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzUtXFx0dmFsID0gKGFkZHJbMF0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBhZGRyWzJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM2OlxcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFx0XFx0XFx0XFx0XFx0dTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MjpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjMtXFx0dTMyIHZpcF9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjYtXFx0aWYgKGVuYWJsZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVxcdGZvciAocCA9IDE7IHAgXFx1MDAzYz0gQVJSQVlfU0laRShldGgtXFx1MDAzZXBvcnRzKTsgcCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRcXHRcXHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVxcdFxcdFxcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODU6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk0OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVxcdC8qIEJPT1RQICgweDQzKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjE4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVxcdC8qIEJPT1RQICgweDQ0KSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI5LVxcdC8qIElTQUtNUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNy1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXFx0LyogREhDUHY2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cXHQvKiBFVEgtXFx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxcdFxcdFxcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc5LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTQ6XFx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVxcdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3OlxcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVxcdC8qIG1vZGlmeSBhbGwgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHRhbGxfcnN2ICs9ICh2YWwgLSBvcmlnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAzLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHQvKiBtb2RpZnkgaHRoZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA2OlxcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA5LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE2LVxcdHRtcCA9ICgzICogdG1wKSBcXHUwMDNlXFx1MDAzZSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTgtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDE6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXFx0XFx0dTMyIGFsbF9yc3Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0NC1cXHRcXHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NTpcXHRcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ2LVxcdFxcdGFsbF9yc3YgKz0gUFNFX1JTVl9QQUdFUyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXFx0XFx0XFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0ODpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDktXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjEtXFx0Zm9yIChxID0gNjsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cXHQvKiBHRE0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjQtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzA6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Mi1cXHQvKiBDRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXFx0Zm9yIChxID0gNDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHQvKiBQUEUyICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4OS1cXHRcXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cXHRcXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA4OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIwOlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMTpcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyMi1cXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXFx0XFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzU6XFx0XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXFx0XFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYwLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDYzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MS1cXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDczLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg1LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NDpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2OlxcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXFx0LyogUFNFIElRIHJlc2VydmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXFx0XFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwNi1cXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXFx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cXHRcXHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTIyLVxcdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHRcXHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cXHRcXHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cXHRcXHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlxcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MTpcXHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cXHRcXHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVxcdFxcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Mi1cXHRcXHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVxcdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVxcdFxcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYyOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2NC1cXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVxcdFxcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY5LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcXHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVxcdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXFx0XFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4My1cXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cXHRpbnQgcWlkID0gcSAtIFxcdTAwMjZxZG1hLVxcdTAwM2VxX3J4WzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTgtXFx0d2hpbGUgKHEtXFx1MDAzZXF1ZXVlZCBcXHUwMDNjIHEtXFx1MDAzZW5kZXNjIC0gMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMwLVxcdGlmIChuZnJhbWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlxcdFxcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVxcdFxcdFxcdFxcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzg6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXFx0dTE2IHAsIGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MDpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcWRtYS1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNldGFpbF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cXHRcXHR1MzIgaGFzaCwgcmVhc29uLCBtc2cxLCBkZXNjX2N0cmw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njk1OlxcdFxcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTYtXFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXFx0XFx0aWYgKG5ldGRldl91c2VzX2RzYShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVxcdFxcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XFx0XFx0XFx0YWlyb2hhX3BwZV9jaGVja19za2IoXFx1MDAyNmV0aC1cXHUwMDNlcHBlLVxcdTAwM2VkZXYsIHEtXFx1MDAzZXNrYiwgaGFzaCxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MDMuMTg2MjgzMDQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5MTk1NjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyJ3MgVmlydHVhbGl6YXRpb24gQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIHRoaXMgaXMgdGhlIEFpcm9oYSBFTjc1ODEgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX25wdS5jYCBmaWxlcy4gU3RhbmRhcmQgc3R1ZmYsIG5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0LiBCdXQgYSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogY2FuIHRoaXMgZHJpdmVyIGFjdHVhbGx5ICp3b3JrKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyBpdCBldmVuIGRlc2lnbmVkIHdpdGggdGhhdCBpbiBtaW5kP1xuXG5UbyBiZSBzdXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBIb3BlZnVsbHksIHRoZXJlJ3Mgc29tZSBndWlkYW5jZSB0aGVyZSBvbiB3aGV0aGVyIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgaGFzIGJlZW4gY29uc2lkZXJlZCwgb3IgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgaXQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IGh5cGVydmlzb3IgaW50ZXJhY3Rpb25zIG9yIGRldmljZSBwYXNzdGhyb3VnaC4gSWYgdGhlcmUncyBub3RoaW5nIGV4cGxpY2l0LCB0aGF0IGNvdWxkIG1lYW4gaXQncyBlaXRoZXIgbm90IHN1cHBvcnRlZCwgb3IsIG1vcmUgY29uY2VybmluZywgdGhhdCBpdCBtaWdodCBoYXZlIHNvbWUgbHVya2luZyBpc3N1ZXMgaWYgdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTY5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MDguNTc4MjQyMDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX1ZFTkRPUl9BSVJPSEFcXG4gICAzOlxcdFxcdGJvb2wgXFxcIkFpcm9oYSBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCBDT01QSUxFX1RFU1RcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBBaXJvaGEgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRpZiBORVRfVkVORE9SX0FJUk9IQVxcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgTkVUX0FJUk9IQV9OUFVcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJBaXJvaGEgTlBVIHN1cHBvcnRcXFwiXFxuICAxMjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgKE5QVSkgYXZhaWxhYmxlXFxuICAxNjpcXHRcXHQgIG9uIHRoZSBBaXJvaGEgU29jIGZhbWlseS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5FVF9BSVJPSEFcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbiAgMjE6XFx0XFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXFxuICAyMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXFxuICAyNTpcXHRcXHQgIEFpcm9oYSBTb0MgZmFtaWx5LlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgTkVUX0FJUk9IQV9GTE9XX1NUQVRTXFxuICAyODpcXHRcXHRkZWZhdWx0IHlcXG4gIDI5OlxcdFxcdGJvb2wgXFxcIkFpcm9oYSBmbG93IHN0YXRzXFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBIFxcdTAwMjZcXHUwMDI2IE5FVF9BSVJPSEFfTlBVXFxuICAzMTpcXHRcXHRoZWxwXFxuICAzMjpcXHRcXHQgIEVuYWJsZSBBaXJvaGEgZmxvd3RhYmxlIHN0YXRpc3RpYyBjb3VudGVycy5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0ZW5kaWYgI05FVF9WRU5ET1JfQUlST0hBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjA4LjU3ODMwNzk3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzOTI2NTQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgY2F0Y2ggbXkgZXllOiBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIGZlZWxzIGxpa2UgaXTigJlzIGNvbmRpdGlvbmFsLCBlaXRoZXIgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBvdGVudGlhbGx5IHBhcnQgb2YgYSBidWlsZCB0ZXN0IHN1aXRlLiBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBaXJvaGEgRU43NTgxIFNvQy4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBRRU1VPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiByZXByb2R1Y2UgdGhlIGVudmlyb25tZW50LlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYSBwbGF0Zm9ybSBkZXZpY2UgaXMgZXZlbiBkZWZpbmVkIGZvciBpdC4gU3l6a2FsbGVyIGlzIGFtYXppbmcsIGJ1dCBldmVuIGl0IGhhcyBsaW1pdGF0aW9ucy4gQWx0aG91Z2gsIEknbSByZW1pbmRpbmcgbXlzZWxmIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGl0c2VsZiB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3IgcHNldWRvLXN5c2NhbGxzIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0IGtlcm5lbCwgb3IgaWYgaXQgaXMgYSBuZXQgZGV2aWNlIEkgY2FuIHNpbXBseSBmdXp6IHRoZSBpbml0aWFsaXphdGlvbiB2aWEgYHN5el9pbml0X25ldF9kZXZpY2VgLiBXYWl0LCBubywgaXQncyBhIHBsYXRmb3JtIGRldmljZSwgc28gdGhhdCdzIG5vdCBxdWl0ZSByaWdodC5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgbWVhdCBvZiBpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgcHJvYmVkLiBMZXQncyBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0byBzZWUgdGhlIHByb2Jpbmcgc2VxdWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MTMuOTcwOTY1NDYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIzMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9Mzk1Mj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NTQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NTUtXFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTYxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTYyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MTE9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODIxLVxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyNy19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODI4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzoxNC4wMzA3OTQwNzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzc5MzU2MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFN5emthbGxlciBQbGF0Zm9ybSBEcml2ZXIgTXVzaW5ncyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBwbGF0Zm9ybSBkcml2ZXJzIGFuZCBob3cgU3l6a2FsbGVyIGhhbmRsZXMgdGhlbS4gRXNzZW50aWFsbHksIHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UsIFN5emthbGxlciBuZWVkcyB0byBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIHRoZSBkcml2ZXIuIEkga25vdyBpdCBoYXMgYSBmdW5jdGlvbiBsaWtlIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhlIHJlYWwgY2hhbGxlbmdlIGlzIHRoYXQgc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBmb3IgY2VydGFpbiBTb0Nz4oCUbGlrZSB0aGUgb25lcyBJJ20gd29ya2luZyB3aXRo4oCUdXN1YWxseSBhcmVuJ3QgaW5zdGFudGlhdGVkIHVubGVzcyBTeXprYWxsZXIgaGFzIGEgZGVkaWNhdGVkIGRlc2NyaXB0aW9uIGZvciB0aGVtLlxuXG5XYWl0IGEgc2Vjb25kLCBhbSBJIGZvcmdldHRpbmcgc29tZXRoaW5nPyBEb2VzIFN5emthbGxlciB1c2UgYHN5el9kZXZsaW5rYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRvIGFkZHJlc3MgdGhpcyBwbGF0Zm9ybSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9ibGVtPyBObywgdGhhdCdzIG5vdCByaWdodCwgYHN5el9nZW5ldGxpbmtgIGlzIHJlbGF0ZWQsIGJ1dCB0aGF0J3MgZm9yIGdlbmV0bGluaywgbm90IHBsYXRmb3JtIGRldmljZXMuXG5cbkFoLCByaWdodCwgbm93IGl0J3MgY29taW5nIGJhY2sgdG8gbWUuIFN5emthbGxlciAqY2FuKiBnZW5lcmF0ZSB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGlmIGl0IGhhcyB0aGUgbmVjZXNzYXJ5IGRlc2NyaXB0aW9ucy4gVGhhdCdzIHRoZSBrZXkuIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgd2UgaGF2ZSBhbnkgZXhpc3RpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgYGFpcm9oYWAgU29DIG9yIHJlbGV2YW50IHBsYXRmb3JtIGRldmljZXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MTksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MTkuODEwMTUzNTE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDg2OTMyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjE5Ljg5MTAzMjE1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzgyMjQxMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIEkgY2FuJ3QgdXNlIGBzeXotZ3JlcHBlcmAgb3Igc2VhcmNoIHN5emthbGxlci1zcGVjaWZpYyBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gRmluZSwgSSdsbCB3b3JrIHdpdGggdGhlIGF2YWlsYWJsZSB0b29sczogYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuXG5cblRoZSByZWFsIGlzc3VlIGhlcmUgaXMgdGhlIHByb21wdCBzYXlzIEkgc2hvdWxkIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCBidXQgdGhvc2UgdG9vbHMgYXJlIG1pc3NpbmcuIFRoYXTigJlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoaXMgYGFpcm9oYV9ucHVgIGRyaXZlci4gSXMgaXQgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cD8gSXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYW4gQWlyb2hhIFNvQy4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoYXQgcGFydGljdWxhciBTb0MsIG9yIGlmIHN5emthbGxlciBoYXMgYSBjdXN0b20gcHNldWRvLXN5c2NhbGwgdG8gaW5zdGFudGlhdGUgaXQuIEJ1dCwgbm8sIHN5emthbGxlciBkb2Vzbid0IGdlbmVyaWNhbGx5IGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGF0LiBJdCB3b3VsZCByZXF1aXJlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIGVhY2guXG5cbldhaXQgYSBzZWNvbmTigKZ0aGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gRG9lcyB0aGF0IG1lYW4gc3l6a2FsbGVyIGZvdW5kIHNvbWV0aGluZyBpbiB0aGlzIGNvZGU/IEl0IGNlcnRhaW5seSBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudCBpZiBpdCB3YXMgdGFyZ2V0ZWQgYnkgdGhlaXIgY2x1c3Rlci5cblxuQnV0IGhvbGQgb24sIHRoaXMgY291bGQganVzdCBiZSBhIHBhdGNoICpiZWluZyB0ZXN0ZWQqIGJ5IHRoZSBzeXotY2x1c3Rlci4gSXQncyB1bmRlciByZXZpZXcsIGFjY29yZGluZyB0byB0aGUgZGF0ZSBhbmQgYXV0aG9yLiBJdCdzIG5vdCBuZWNlc3NhcmlseSBhIGJ1ZyAqaW4gdGhpcyBjb2RlKiB0aGF0IHdhcyBmb3VuZDsgaXQgY291bGQgYmUgYSBkZXZlbG9wZXIncyBwYXRjaCBiZWluZyB2ZXJpZmllZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYCBiZWluZyBjYWxsZWQgd2l0aCB1bmFsaWduZWQgc2l6ZXMsIHdoaWNoIG1pZ2h0IGNhdXNlIERNQSBjYWNoZSBhbGlnbm1lbnQgcHJvYmxlbXMuXG5cblNvLCB0aGUgYmlnIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGRyaXZlciB3b3J0aCBmdXp6aW5nPyBUaGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcywgYnV0IG9ubHkgaWYgaXQncyByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiBgYWlyb2hhX25wdWAgKmlzKiByZWFjaGFibGUuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBpdHNlbGYgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM0MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzoyOC42NzMyNzU1NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzUwOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXTtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNvcmUtXFx1MDAzZWxvY2spO1xcbiA3NTM6XFx0XFx0XFx0Y29yZS1cXHUwMDNlbnB1ID0gbnB1O1xcbiA3NTQ6XFx0XFxuIDc1NTpcXHRcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkgKyAxKTtcXG4gNzU2OlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiA3NTc6XFx0XFx0XFx0XFx0cmV0dXJuIGlycTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0XFx0ZXJyID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIGlycSwgYWlyb2hhX25wdV93ZHRfaGFuZGxlcixcXG4gNzYwOlxcdFxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgXFxcImFpcm9oYS1ucHUtd2R0XFxcIiwgY29yZSk7XFxuIDc2MTpcXHRcXHRcXHRpZiAoZXJyKVxcbiA3NjI6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzYzOlxcdFxcbiA3NjQ6XFx0XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZjb3JlLVxcdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XFxuIDc2NTpcXHRcXHR9XFxuIDc2NjpcXHRcXG4gNzY3OlxcdFxcdC8qIHdsYW4gSVJRIGxpbmVzICovXFxuIDc2ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShucHUtXFx1MDAzZWlycXMpOyBpKyspIHtcXG4gNzY5OlxcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSArIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3JlcykgKyAxKTtcXG4gNzcwOlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiA3NzE6XFx0XFx0XFx0XFx0cmV0dXJuIGlycTtcXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0XFx0bnB1LVxcdTAwM2VpcnFzW2ldID0gaXJxO1xcbiA3NzQ6XFx0XFx0fVxcbiA3NzU6XFx0XFxuIDc3NjpcXHRcXHRlcnIgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4gNzc3OlxcdFxcdGlmIChlcnIpXFxuIDc3ODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3Nzk6XFx0XFxuIDc4MDpcXHRcXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFxcdTAwMjZyZXMpO1xcbiA3ODE6XFx0XFx0aWYgKGVycilcXG4gNzgyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwiZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXFxcblxcXCIpO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEwKSxcXG4gNzg1OlxcdFxcdFxcdCAgICAgcmVzLnN0YXJ0ICsgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFKTtcXG4gNzg2OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX05QVV9NSUIoMTEpLCAweDQwMDAwKTsgLyogU1JBTSAyNTZLICovXFxuIDc4NzpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEyKSwgMCk7XFxuIDc4ODpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDIxKSwgMSk7XFxuIDc4OTpcXHRcXHRtc2xlZXAoMTAwKTtcXG4gNzkwOlxcdFxcbiA3OTE6XFx0XFx0Lyogc2V0dGluZyBib290aW5nIGFkZHJlc3MgKi9cXG4gNzkyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOUFVfTlVNX0NPUkVTOyBpKyspXFxuIDc5MzpcXHRcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9CT09UX0JBU0UoaSksIHJlcy5zdGFydCk7XFxuIDc5NDpcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XFxuIDc5NTpcXHRcXG4gNzk2OlxcdFxcdC8qIGVuYWJsZSBOUFUgY29yZXMgKi9cXG4gNzk3OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfQ09ORklHLCAweGZmKTtcXG4gNzk4OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfVFJJR0dFUiwgMHgxKTtcXG4gNzk5OlxcdFxcdG1zbGVlcCgxMDApO1xcbiA4MDA6XFx0XFxuIDgwMTpcXHRcXHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxcbiA4MDI6XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpXFxuIDgwMzpcXHRcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJOUFUgZncgdmVyc2lvbjogJTBkLiVkXFxcXG5cXFwiLFxcbiA4MDQ6XFx0XFx0XFx0XFx0ICh2YWwgXFx1MDAzZVxcdTAwM2UgMTYpIFxcdTAwMjYgMHhmZmZmLCB2YWwgXFx1MDAyNiAweGZmZmYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBucHUpO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHRyZXR1cm4gMDtcXG4gODA5OlxcdH1cXG4gODEwOlxcdFxcbiA4MTE6XFx0c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gODEyOlxcdHtcXG4gODEzOlxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gODE0OlxcdFxcdGludCBpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShucHUtXFx1MDAzZWNvcmVzKTsgaSsrKVxcbiA4MTc6XFx0XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXS53ZHRfd29yayk7XFxuIDgxODpcXHR9XFxuIDgxOTpcXHRcXG4gODIwOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbiA4MjE6XFx0XFx0LnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSxcXG4gODIyOlxcdFxcdC5yZW1vdmUgPSBhaXJvaGFfbnB1X3JlbW92ZSxcXG4gODIzOlxcdFxcdC5kcml2ZXIgPSB7XFxuIDgyNDpcXHRcXHRcXHQubmFtZSA9IFxcXCJhaXJvaGEtbnB1XFxcIixcXG4gODI1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXFxuIDgyNjpcXHRcXHR9LFxcbiA4Mjc6XFx0fTtcXG4gODI4OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbiA4Mjk6XFx0XFxuIDgzMDpcXHRNT0RVTEVfRklSTVdBUkUoTlBVX0VONzU4MV9GSVJNV0FSRV9EQVRBKTtcXG4gODMxOlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfRU43NTgxX0ZJUk1XQVJFX1JWMzIpO1xcbiA4MzI6XFx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfNzk5Nl9GSVJNV0FSRV9EQVRBKTtcXG4gODMzOlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfRU43NTgxXzc5OTZfRklSTVdBUkVfUlYzMik7XFxuIDgzNDpcXHRNT0RVTEVfRklSTVdBUkUoTlBVX0FONzU4M19GSVJNV0FSRV9EQVRBKTtcXG4gODM1OlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX1JWMzIpO1xcbiA4MzY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiA4Mzc6XFx0TU9EVUxFX0FVVEhPUihcXFwiTG9yZW56byBCaWFuY29uaSBcXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXFx1MDAzZVxcXCIpO1xcbiA4Mzg6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgVW5pdCBkcml2ZXJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MjguNjczMzcxNjU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MjYyMjM4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQWlyb2hhIE5QVSBEcml2ZXIgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgYG9mX2Fpcm9oYV9ucHVfbWF0Y2hgIHByb2JlIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgbWVhbmluZyB0aGlzIGRyaXZlciByZWxpZXMgb24gYSBkZXZpY2UgdHJlZSBub2RlIGZvciBpbnN0YW50aWF0aW9uLiBUaGF0J3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBmb3Igc3l6a2FsbGVyLCB3aGljaCwgaW4gbW9zdCBjYXNlcywgZG9lc24ndCBqdXN0IGNvbmp1cmUgdXAgYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgcHNldWRvLXN5c2NhbGwsIG9yIGl0J3MgYmFrZWQgaW50byB0aGUgaW5pdGlhbCBRRU1VIGltYWdlLiBJJ20gcmVhc29uYWJseSBzdXJlIHN5emthbGxlciBkb2Vzbid0IGR5bmFtaWNhbGx5IGluamVjdCBub2RlcywgYXQgbGVhc3Qgbm90IGluIGFueSBnZW5lcmFsIHdheS4gTWF5YmUgc29tZSBmYW5jeSBvdmVybGF5cywgYnV0IHVzdWFsbHksIHRoYXQncyBhIG5vLWdvLlxuXG5HaXZlbiB0aGlzIHJlbGlhbmNlIG9uIHRoZSBkZXZpY2UgdHJlZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaW1pdGluZyBhY2Nlc3MsIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbC4gSWYgdGhpcyBkcml2ZXIgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdHlwaWNhbCBmdXp6aW5nIGVudmlyb25tZW50cywgSSBzaG91bGQgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQgbWUgcXVpY2tseSBzZWUgaWYgdGhlcmUncyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBBaXJvaGEgRU43NTgxLiBObyBzdGFuZGFyZCBRRU1VIG1hY2hpbmUgZXhpc3RzIGZvciB0aGF0IHBsYXRmb3JtLiBOb3cgSSdtIHRoaW5raW5nLCBjb3VsZCBpdCBiZSByZWFjaGVkIHZpYSBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIGxpa2UgdGhhdD8gQnV0IG5vLCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2suIElzIGBhaXJvaGFfbnB1X3Byb2JlYCBjYWxsZWQgZnJvbSAqYW55d2hlcmUqIGVsc2U/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3MgYSBzdGFuZGFyZCBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uXG5cbkhtbSwgb2theS4gT25lIGxhc3QgcXVpY2sgY2hlY2s6IGFyZSB0aGVyZSBhbnkgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEFpcm9oYSBoYXJkd2FyZT8gSWYgdGhlcmUgd2VyZSwgdGhhdCB3b3VsZCBvcGVuIGEgZG9vciwgYnV0IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkuIFRoaXMgaXMgbG9va2luZyBsaWtlIGEgZGVhZCBlbmQgZm9yIGRpcmVjdCBmdXp6aW5nIHRocm91Z2ggc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTA2OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjM3LjA5OTU5Nzk3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MDI0MTkxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MzcuMjA3NjMwODczWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDM3ODc5NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlciBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgY29uZmlybWVkIHRoZSBwcmVzZW5jZSBvZiB0aGUgYGFpcm9oYWAgZHJpdmVyIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gVGhlIHByb21wdCdzIGNyaXRlcmlhIGFyZSBrZXk6IHdlJ3JlIGxvb2tpbmcgZm9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5UaGlzIGBhaXJvaGFgIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMsIGFuIFNvQyBldGhlcm5ldC9OUFUgZHJpdmVyIGZvciBhbiBBaXJvaGEgU29DLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBJdCBuZWVkcyBwaHlzaWNhbCBBaXJvaGEgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBEb2VzIHN0YW5kYXJkIFFFTVUgZXZlbiBlbXVsYXRlIHRoZSBBaXJvaGEgRU43NTgxPyBIaWdobHkgdW5saWtlbHksIGdpdmVuIGl0cyByZWxhdGl2ZSBvYnNjdXJpdHkgYXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5J3MgU29DLiBJIGNhbid0IGVhc2lseSBjaGVjayB0aGUgUUVNVSBzb3VyY2UsIGJ1dCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBpdCdzIGEgbG9uZyBzaG90LlxuXG5UaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBvcmlnaW5hdGVzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBnaXZlcyBtZSBwYXVzZS4gV2h5IHdvdWxkIHN5emthbGxlciBmaW5kIGEgYnVnIGhlcmUgaWYgaXQncyBub3QgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGU/IFRoZW4sIEkgcmVtZW1iZXIgc3l6a2FsbGVyIGNhbiBvcGVyYXRlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgcGhvbmVzIG9yIHNwZWNpZmljIHJvdXRlcnMuIENvdWxkIHN5emthbGxlciBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIEFpcm9oYSBib2FyZHM/IFBvdGVudGlhbGx5LlxuXG5Ib3dldmVyLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgY29kZSB0aGF0J3MgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIEFpcm9oYSBkcml2ZXIsIG5lZWRpbmcgZWl0aGVyIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHZlcnkgc3BlY2lmaWMsIG5vbi1zdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiwgY2xlYXJseSBmaXRzIHRoYXQgZGVmaW5pdGlvbi5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGFza3MgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzeXprYWxsZXIncyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCBidXQgSSBjYW4ndCBkaXJlY3RseSBpbnNwZWN0IHN5emthbGxlcidzIGBzeXMvKi50eHRgIGZpbGVzLiBIb3dldmVyLCBldmVuIGlmIHN5emthbGxlciBjcmVhdGVzIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGUgZHJpdmVyIHVzZXMgYGRldm1faW9yZW1hcF9yZXNvdXJjZWAsIGBwbGF0Zm9ybV9nZXRfaXJxYCwgYW5kIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIGZ1bmN0aW9ucy4gSXQgd291bGQgbmVlZCByZWFsIE1NSU8gcmVnaXN0ZXJzIHRvIHByZXZlbnQgYW4gaW1tZWRpYXRlIGNyYXNoIG9yIHByb2JlIGZhaWx1cmUuXG5cblRvIGJlIHRob3JvdWdoLCBJJ2xsIG5lZWQgdG8gYnJpZWZseSBjaGVjayB3aGF0IGBhaXJvaGFfbnB1X3Byb2JlYCBkb2VzLCBqdXN0IHRvIGNvbmZpcm0gbXkgYXNzZXNzbWVudCwgYnV0IGl0J3MgdmVyeSBsaWtlbHkgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc2MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzo0Ny42NDU1MTM5NDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY4MDpcXHRcXHRcXHQubmFtZSA9IE5QVV9BTjc1ODNfRklSTVdBUkVfREFUQSxcXG4gNjgxOlxcdFxcdFxcdC5tYXhfc2l6ZSA9IE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRSxcXG4gNjgyOlxcdFxcdH0sXFxuIDY4MzpcXHR9O1xcbiA2ODQ6XFx0XFxuIDY4NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XFxuIDY4NjpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtbnB1XFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxcbiA2ODc6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsYW43NTgzLW5wdVxcXCIsIC5kYXRhID0gXFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcXG4gNjg4OlxcdFxcdHsgLyogc2VudGluZWwgKi8gfVxcbiA2ODk6XFx0fTtcXG4gNjkwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9ucHVfbWF0Y2gpO1xcbiA2OTE6XFx0XFxuIDY5MjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgcmVnbWFwX2NvbmZpZyA9IHtcXG4gNjkzOlxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibnB1XFxcIixcXG4gNjk0OlxcdFxcdC5yZWdfYml0c1xcdFxcdD0gMzIsXFxuIDY5NTpcXHRcXHQudmFsX2JpdHNcXHRcXHQ9IDMyLFxcbiA2OTY6XFx0XFx0LnJlZ19zdHJpZGVcXHRcXHQ9IDQsXFxuIDY5NzpcXHRcXHQuZGlzYWJsZV9sb2NraW5nXFx0PSB0cnVlLFxcbiA2OTg6XFx0fTtcXG4gNjk5OlxcdFxcbiA3MDA6XFx0c3RhdGljIGludCBhaXJvaGFfbnB1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDcwMTpcXHR7XFxuIDcwMjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3MDM6XFx0XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcXG4gNzA0OlxcdFxcdHN0cnVjdCByZXNvdXJjZSByZXM7XFxuIDcwNTpcXHRcXHR2b2lkIF9faW9tZW0gKmJhc2U7XFxuIDcwNjpcXHRcXHRpbnQgaSwgaXJxLCBlcnI7XFxuIDcwNzpcXHRcXHR1MzIgdmFsO1xcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHRiYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbiA3MTA6XFx0XFx0aWYgKElTX0VSUihiYXNlKSlcXG4gNzExOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGJhc2UpO1xcbiA3MTI6XFx0XFxuIDcxMzpcXHRcXHRucHUgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm5wdSksIEdGUF9LRVJORUwpO1xcbiA3MTQ6XFx0XFx0aWYgKCFucHUpXFxuIDcxNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzE2OlxcdFxcbiA3MTc6XFx0XFx0bnB1LVxcdTAwM2VkZXYgPSBkZXY7XFxuIDcxODpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2luaXQ7XFxuIDcxOTpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfZGVpbml0ID0gYWlyb2hhX25wdV9wcGVfZGVpbml0O1xcbiA3MjA6XFx0XFx0bnB1LVxcdTAwM2VvcHMucHBlX2luaXRfc3RhdHMgPSBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cDtcXG4gNzIxOlxcdFxcdG5wdS1cXHUwMDNlb3BzLnBwZV9mbHVzaF9zcmFtX2VudHJpZXMgPSBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXM7XFxuIDcyMjpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfZm9lX2NvbW1pdF9lbnRyeSA9IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeTtcXG4gNzIzOlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5faW5pdF9yZXNlcnZlZF9tZW1vcnkgPSBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnk7XFxuIDcyNDpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX3NlbmRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kO1xcbiA3MjU6XFx0XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9nZXRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19nZXQ7XFxuIDcyNjpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX2dldF9xdWV1ZV9hZGRyID0gYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0O1xcbiA3Mjc6XFx0XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9zZXRfaXJxX3N0YXR1cyA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX3NldDtcXG4gNzI4OlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X2lycV9zdGF0dXMgPSBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19nZXQ7XFxuIDcyOTpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX2VuYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZTtcXG4gNzMwOlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZGlzYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGU7XFxuIDczMTpcXHRcXG4gNzMyOlxcdFxcdG5wdS1cXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgYmFzZSwgXFx1MDAyNnJlZ21hcF9jb25maWcpO1xcbiA3MzM6XFx0XFx0aWYgKElTX0VSUihucHUtXFx1MDAzZXJlZ21hcCkpXFxuIDczNDpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihucHUtXFx1MDAzZXJlZ21hcCk7XFxuIDczNTpcXHRcXG4gNzM2OlxcdFxcdGVyciA9IG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2UoZGV2LVxcdTAwM2VvZl9ub2RlLCAwLCBcXHUwMDI2cmVzKTtcXG4gNzM3OlxcdFxcdGlmIChlcnIpXFxuIDczODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xcbiA3NDE6XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc0MjpcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NDM6XFx0XFxuIDc0NDpcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcXG4gNzQ1OlxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgXFxcImFpcm9oYS1ucHUtbWJveFxcXCIsIG5wdSk7XFxuIDc0NjpcXHRcXHRpZiAoZXJyKVxcbiA3NDc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzQ4OlxcdFxcbiA3NDk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbiA3NTA6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFxcdTAwMjZucHUtXFx1MDAzZWNvcmVzW2ldO1xcbiA3NTE6XFx0XFxuIDc1MjpcXHRcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2Y29yZS1cXHUwMDNlbG9jayk7XFxuIDc1MzpcXHRcXHRcXHRjb3JlLVxcdTAwM2VucHUgPSBucHU7XFxuIDc1NDpcXHRcXG4gNzU1OlxcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSArIDEpO1xcbiA3NTY6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc1NzpcXHRcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxcbiA3NjA6XFx0XFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBcXFwiYWlyb2hhLW5wdS13ZHRcXFwiLCBjb3JlKTtcXG4gNzYxOlxcdFxcdFxcdGlmIChlcnIpXFxuIDc2MjpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3NjM6XFx0XFxuIDc2NDpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNmNvcmUtXFx1MDAzZXdkdF93b3JrLCBhaXJvaGFfbnB1X3dkdF93b3JrKTtcXG4gNzY1OlxcdFxcdH1cXG4gNzY2OlxcdFxcbiA3Njc6XFx0XFx0Lyogd2xhbiBJUlEgbGluZXMgKi9cXG4gNzY4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cXHUwMDNlaXJxcyk7IGkrKykge1xcbiA3Njk6XFx0XFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpICsgQVJSQVlfU0laRShucHUtXFx1MDAzZWNvcmVzKSArIDEpO1xcbiA3NzA6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc3MTpcXHRcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRcXHRucHUtXFx1MDAzZWlycXNbaV0gPSBpcnE7XFxuIDc3NDpcXHRcXHR9XFxuIDc3NTpcXHRcXG4gNzc2OlxcdFxcdGVyciA9IGRtYV9zZXRfY29oZXJlbnRfbWFzayhkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiA3Nzc6XFx0XFx0aWYgKGVycilcXG4gNzc4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6NDcuNjQ1NzYyNDUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTIzNDU4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBBaXJvaGEgRU43NTgxIE5QVSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBwYXRjaCB0YXJnZXRzIHRoZSBBaXJvaGEgRU43NTgxIFNvQydzIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlci4gVGhlIHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlYCwgYG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2VgLCBhbmQgYHBsYXRmb3JtX2dldF9pcnFgIHNjcmVhbXMgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGVudHJpZXMgYW5kIElSUSBjb25maWd1cmF0aW9ucywgd2hpY2ggYXJlIG5vdCByZWFkaWx5IGF2YWlsYWJsZSBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIHdpdGhvdXQgc2lnbmlmaWNhbnQgZGV2aWNlIHRyZWUgbW9kaWZpY2F0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY29uc2lkZXIgd2hldGhlciBzeXprYWxsZXIgY291bGQgYmUgZnV6emluZyB0aGlzIGluZGlyZWN0bHkuIEJ1dCwgdGhpcyBpc24ndCBhIE5ldGxpbmsgZmFtaWx5LCBzbyBgc3l6X2dlbmV0bGlua2AgaXMgb3V0LiBUaGUgcGF0Y2ggdG91Y2hlcyBgYWlyb2hhX25wdV9zZW5kX21zZ2AsIGJ1dCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIG1ha2luZyBpdCBoYXJkZXIgdG8gcmVhY2ggd2l0aG91dCBkaXJlY3QgbW9kaWZpY2F0aW9uIHRvIGNhbGxpbmcgZnVuY3Rpb25zLlxuXG5UaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgbnB1LVx1MDAzZW9wc2Agc3RydWN0dXJlIChgYWlyb2hhX25wdV9zZW5kX21zZ2AsIGBhaXJvaGFfbnB1X3BwZV9pbml0YCwgZXRjLiksIHdoaWNoIGFyZSB0aGVuIGNhbGxlZCBieSBgYWlyb2hhX2V0aC5jYC4gU28gSSdsbCBjaGVjayBgYWlyb2hhX2V0aC5jYC4gTG8gYW5kIGJlaG9sZCwgaXQncyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggdGhlIHNhbWUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzISBUaGUgY29tcGxldGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgYSBzcGVjaWZpYyBTeXN0ZW0gb24gYSBDaGlwIChTb0MpLlxuXG5TbywgY291bGQgc3l6a2FsbGVyIGJlIHRhcmdldGluZyBhIHBoeXNpY2FsIEFpcm9oYSBib2FyZD8gWWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IHRoYXQuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgaXMgZXhwbGljaXQ6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMuLi4gZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwuLi4gaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTb0MgZHJpdmVyIChBaXJvaGEgRU43NTgxKSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBJdCdzIGluIHRoZSBzYW1lIGNhdGVnb3J5IGFzIFBDSWUgc3dpdGNoL1NtYXJ0TklDIGRyaXZlcnMgbWVudGlvbmVkIGluIHRoZSBwcm9tcHQuIFRoZXJlZm9yZSwgSSdtIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSSB3YW50IHRvIGJlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSBvYnNjdXJlIFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIEFpcm9oYSBTb0MuIFdoaWxlIEkgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgSSBrbm93IHRoYXQgQWlyb2hhIEVONzU4MSBpcyBhbiBBUk0gQ29ydGV4LUE1MyBTb0MsIGxpa2VseSBmcm9tIHRoZSBNZWRpYVRlayBNVDc5ODEvTVQ3OTg2IGZhbWlseSwgYW5kIHN0YW5kYXJkIFFFTVUgZG9lc24ndCBvZmZlciBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgcGxhdGZvcm0uXG5cbkV2ZW4gaWYgSSBhc3N1bWUgc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlIGRyaXZlciBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCBNTUlPIHJlZ2lzdGVycyB1c2luZyBgcmVnbWFwX3dyaXRlYCwgYGFpcm9oYV9mZV93cmAsIGV0Yy4sIGFuZCBleHBlY3RzIHNwZWNpZmljIGhhcmR3YXJlIHJlc3BvbnNlcy4gV2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBqdXN0IGhhbmcgb3IgZmFpbCBpbW1lZGlhdGVseS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgbW9yZSBjbG9zZWx5LiBJdCBhZGRzIGBhaXJvaGFfbnB1X21ib3hfc2l6ZWAgYW5kIHVzZXMgaXQgZm9yIERNQSBidWZmZXIgc2l6ZSBhbGlnbm1lbnQgd2l0aCBgZG1hX21hcF9zaW5nbGVgIGFuZCBga3phbGxvY2AuIFRoaXMgaXMgYSBETUEgY2FjaGUgYWxpZ25tZW50IGlzc3VlIGZpeC4gU2luY2UgaXQncyBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0J3MgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYW5hbHlzaXMuIEknbSBzdGlja2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JbiBzdW1tYXJ5OiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgKSB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuIFRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgc2hvdWxkIGJlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzM0LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxNDowMy4xNjkyMjQ4NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEVONzU4MSBTb0MgbmV0d29yayBwcm9jZXNzb3IgKE5QVSkgZHJpdmVyIHRvIGFsaWduIERNQSBidWZmZXIgc2l6ZXMgdG8gdGhlIGNhY2hlIGxpbmUgc2l6ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjE0OjAzLjE2OTI2NDM4NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowth5cl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 06:32:50 +0000 UTC FinishedAt: 2026-08-18 07:14:04 +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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0OGI5NWFmNzg2MWQ0YmMzMjRiMWRmYTJkOTZlOTVhOTU4NmM2ZTFhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6MTI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcbmluZGV4IGI2NzliZWQ5NTJkZTMuLjljOTVkZGQ3MDAyZTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbkBAIC0xNjAsMTUgJiM0MzsxNjEsMjEgQEAgc3RydWN0IHdsYW5fbWJveF9kYXRhIHtcbiBcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XG4gfTtcbiBcbiYjNDM7c3RhdGljIHNpemVfdCBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplX3QgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIEFMSUdOKGxlbiwgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFx0XHRcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcbiB7XG4gXHR1MTYgY29yZSA9IDA7IC8qIEZJWE1FICovXG4gXHR1MzIgdmFsLCBvZmZzZXQgPSBjb3JlIFx1MDAzY1x1MDAzYyA0O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHRzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpO1xuIFx0aW50IHJldDtcbiBcbi1cdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFx0cmV0ID0gZG1hX21hcHBpbmdfZXJyb3IobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xOTEsNyAmIzQzOzE5OCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiBcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbiBcbi1cdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbiYjNDM7XHRkbWFfdW5tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC0zMzMsNyAmIzQzOzM0MCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfaW5pdChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTtcbiYjNDM7XHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTM1NCw3ICYjNDM7MzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcdGludCBlcnI7XG4gXG4tXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSk7XG4mIzQzO1x0cHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBwZV9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0zNzUsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG4gXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xuJiM0MztcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMzk5LDcgJiM0Mzs0MDYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTQzNCw3ICYjNDM7NDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0aW50IGVyciwgc2l6ZSA9IG51bV9zdGF0c19lbnRyaWVzICogc2l6ZW9mKCpucHUtXHUwMDNlc3RhdHMpO1xuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpO1xuJiM0MztcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDY2LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiBcdGludCBlcnIsIGxlbjtcbiBcbiBcdGxlbiA9IHNpemVvZigqd2xhbl9kYXRhKSAmIzQzOyBkYXRhX2xlbjtcbi1cdHdsYW5fZGF0YSA9IGt6YWxsb2MobGVuLCBnZnApO1xuJiM0MztcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcbiBcdGlmICghd2xhbl9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00ODksNyAmIzQzOzQ5Niw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19nZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXG4gXHRpbnQgZXJyLCBsZW47XG4gXG4gXHRsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47XG4tXHR3bGFuX2RhdGEgPSBremFsbG9jKGxlbiwgZ2ZwKTtcbiYjNDM7XHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XG4gXHRpZiAoIXdsYW5fZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcyB0byB0aGUgY2FjaGUgbGluZSBzaXplLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDhiOTVhZjc4NjFkNGJjMzI0YjFkZmEyZDk2ZTk1YTk1ODZjNmUxYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDA3OjEyOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMKaW5kZXggYjY3OWJlZDk1MmRlMy4uOWM5NWRkZDcwMDJlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvZGV2Y29yZWR1bXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZG1hLW1hcHBpbmcuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwpAQCAtMTYwLDE1ICYjNDM7MTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7CiAJREVDTEFSRV9GTEVYX0FSUkFZKHU4LCBkKTsKIH07CiAKJiM0MztzdGF0aWMgc2l6ZV90IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVfdCBsZW4pCiYjNDM7ewomIzQzOwlyZXR1cm4gQUxJR04obGVuLCBkbWFfZ2V0X2NhY2hlX2FsaWdubWVudCgpKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiAJCQkgICAgICAgdm9pZCAqcCwgaW50IHNpemUpCiB7CiAJdTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqLwogCXUzMiB2YWwsIG9mZnNldCA9IGNvcmUgJmx0OyZsdDsgNDsKIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwlzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpOwogCWludCByZXQ7CiAKLQlkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBwLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7CiYjNDM7CWRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LSZndDtkZXYsIHAsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTsKIAlyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtJmd0O2RldiwgZG1hX2FkZHIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xOTEsNyAmIzQzOzE5OCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCwKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7bnB1LSZndDtjb3Jlc1tjb3JlXS5sb2NrKTsKIAotCWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7CiYjNDM7CWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMzMzLDcgJiM0MzszNDAsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSkKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM1NCw3ICYjNDM7MzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSkKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM3NSw3ICYjNDM7MzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTM5OSw3ICYjNDM7NDA2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwKIAlzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7CiAJaW50IGVycjsKIAotCXBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTsKJiM0MzsJcHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0FUT01JQyk7CiAJaWYgKCFwcGVfZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQzNCw3ICYjNDM7NDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LAogCWludCBlcnIsIHNpemUgPSBudW1fc3RhdHNfZW50cmllcyAqIHNpemVvZigqbnB1LSZndDtzdGF0cyk7CiAJc3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhOwogCi0JcHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpOwomIzQzOwlwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTsKIAlpZiAoIXBwZV9kYXRhKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNDY2LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCwKIAlpbnQgZXJyLCBsZW47CiAKIAlsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47Ci0Jd2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7CiYjNDM7CXdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTsKIAlpZiAoIXdsYW5fZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTQ4OSw3ICYjNDM7NDk2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCwKIAlpbnQgZXJyLCBsZW47CiAKIAlsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgJiM0MzsgZGF0YV9sZW47Ci0Jd2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7CiYjNDM7CXdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTsKIAlpZiAoIXdsYW5fZGF0YSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBhaXJvaGFfbnB1LmNgIGZpbGUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhYCBkaXJlY3RvcnkuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGltcHJvdmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBieSBpbnRyb2R1Y2luZyBgYWlyb2hhX25wdV9tYm94X3NpemVgLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhlIGFsaWdubWVudCB0byBgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKWAuIFJpZ2h0LCBzbyB0aGV5JiMzOTtyZSBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIGFsaWducyBmb3IgRE1BIG9wZXJhdGlvbnMgd2l0aCBib3RoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYC4gVGhhdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UsIHByZXZlbnRpbmcgY2FjaGUtbGluZSBpc3N1ZXMgd2hpY2ggaXMgZXNzZW50aWFsIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB3aXRoIG5ldHdvcmtpbmcgaGFyZHdhcmUuCgpUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU43NTgxIEV0aGVybmV0IGNvbnRyb2xsZXIuIE5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGhvdyBvZnRlbiBkb2VzIHRoaXMgY29kZSBhY3R1YWxseSBydW4gaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0PyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHVzZWQgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgY2FjaGUgYWxpZ25tZW50IGlzc3VlcyB3aWxsIGJlIGEgcmVhbCBwcm9ibGVtLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgIGFuZCBwb3NzaWJseSBgYWlyb2hhX2V0aC5jYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBkZXZpY2UgaXMgZGVmaW5lZC4gTGV0JiMzOTtzIHNlZS4uLiB5ZXAsIGl0JiMzOTtzIGFuIGV0aGVybmV0IGRyaXZlci4KCk9rYXksIGxldCYjMzk7cyBqdXN0IGdyZXAgZm9yIGBhaXJvaGFfbnB1YCBpbiB0aGUgY29kZWJhc2UgYW5kIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHJlZmVyZW5jZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgb2YgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNzExIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOlx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY1Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NDpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4NjpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDA6XHRcdFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlx0XHRcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNDpcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cdHZhbCA9IChhZGRyWzBdIFx1MDAzY1x1MDAzYyAxNikgfCAoYWRkclsxXSBcdTAwM2NcdTAwM2MgOCkgfCBhZGRyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDY6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXHRcdFx0XHRcdHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTItXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1OTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cdHUzMiB2aXBfcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cdGlmIChlbmFibGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzE6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVx0Zm9yIChwID0gMTsgcCBcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVx1MDAzZXBvcnRzKTsgcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTgyOlx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODMtXHRcdFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVx0XHRcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVx0XHRcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTc6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNy1cdC8qIEJPT1RQICgweDQzKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVx0LyogQk9PVFAgKDB4NDQpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXHQvKiBJU0FLTVAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQwLVx0LyogREhDUHY2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDMtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0OC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cdC8qIEVUSC1cdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYxOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cdFx0XHRcdFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2OTpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXHRcdFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXHRcdFx0XHRcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODg6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVx0XHRcdFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3Olx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVx0LyogbW9kaWZ5IGFsbCByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAwOlx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVx0YWxsX3JzdiAmIzQzOz0gKHZhbCAtIG9yaWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDUtXHQvKiBtb2RpZnkgaHRoZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMi1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXHR0bXAgPSAoMyAqIHRtcCkgXHUwMDNlXHUwMDNlIDI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXHRcdHUzMiBhbGxfcnN2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1Olx0XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXHRcdGFsbF9yc3YgJiM0Mzs9IFBTRV9SU1ZfUEFHRVMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXHRcdFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cdFx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cdGZvciAocSA9IDY7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjI6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHQvKiBHRE0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjU6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2Ni1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzEtXHRcdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVx0LyogQ0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXHRmb3IgKHEgPSA0OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2Olx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cdFx0LyogUFBFMiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVx0XHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkxLVx0XHRcdFx0XHRcdFx0IHEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXHRcdFx0XHRcdFx0XHQgcSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTktXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTY6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cdFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mjk6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMzLVx0XHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcdFx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM2LVx0XHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTAtXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1Mi1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjItXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2NC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzUtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3Ny1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODctXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4OS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2Olx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXHRcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA4LVx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEzLVx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjQtXHRcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cdFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cdFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVx0XHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVx0XHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NS1cdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVx0XHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYxOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ny1cdFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY4Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ny1cdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHRcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg3Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk0Olx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cdTAwM2VxZG1hO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cdHdoaWxlIChxLVx1MDAzZXF1ZXVlZCBcdTAwM2MgcS1cdTAwM2VuZGVzYyAtIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXHRpZiAobmZyYW1lcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlx0XHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0XHRcdFx0UlhfUklOR19DUFVfSURYX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM5OmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXHR1MTYgcCwgZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjgtXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2OTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2V0YWlsXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcwOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtXHRcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOlx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjczLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XHRcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cdFx0aWYgKElTX0VSUihkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzI4LVx0XHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzI5Olx0XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVx0XHRpZiAocmVhc29uID09IFBQRV9DUFVfUkVBU09OX0hJVF9VTkJJTkRfUkFURV9SRUFDSEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XHRcdFx0YWlyb2hhX3BwZV9jaGVja19za2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHEtXHUwMDNlc2tiLCBoYXNoLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIEFpcm9oYSBFdGhlcm5ldCBEcml2ZXImIzM5O3MgVmlydHVhbGl6YXRpb24gQ29tcGF0aWJpbGl0eSoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiB0aGlzIGlzIHRoZSBBaXJvaGEgRU43NTgxIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgYWlyb2hhX2V0aC5jYCBhbmQgYGFpcm9oYV9ucHUuY2AgZmlsZXMuIFN0YW5kYXJkIHN0dWZmLCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQnV0IGEgcXVlc3Rpb24gcG9wcyBpbnRvIG15IGhlYWQ6IGNhbiB0aGlzIGRyaXZlciBhY3R1YWxseSAqd29yayogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgaXQgZXZlbiBkZXNpZ25lZCB3aXRoIHRoYXQgaW4gbWluZD8KClRvIGJlIHN1cmUsIEkgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBIb3BlZnVsbHksIHRoZXJlJiMzOTtzIHNvbWUgZ3VpZGFuY2UgdGhlcmUgb24gd2hldGhlciB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IGhhcyBiZWVuIGNvbnNpZGVyZWQsIG9yIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIGl0LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgaHlwZXJ2aXNvciBpbnRlcmFjdGlvbnMgb3IgZGV2aWNlIHBhc3N0aHJvdWdoLiBJZiB0aGVyZSYjMzk7cyBub3RoaW5nIGV4cGxpY2l0LCB0aGF0IGNvdWxkIG1lYW4gaXQmIzM5O3MgZWl0aGVyIG5vdCBzdXBwb3J0ZWQsIG9yLCBtb3JlIGNvbmNlcm5pbmcsIHRoYXQgaXQgbWlnaHQgaGF2ZSBzb21lIGx1cmtpbmcgaXNzdWVzIGlmIHVzZWQgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5FVF9WRU5ET1JfQUlST0hBXG4gICAzOlx0XHRib29sIFwmIzM0O0Fpcm9oYSBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IENPTVBJTEVfVEVTVFxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIEFpcm9oYSBTb0Mgd2l0aCBldGhlcm5ldCwgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0aWYgTkVUX1ZFTkRPUl9BSVJPSEFcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVUX0FJUk9IQV9OUFVcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBOUFUgc3VwcG9ydFwmIzM0O1xuICAxMjpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDEzOlx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQWlyb2hhIE5ldHdvcmsgUHJvY2Vzc29yIChOUFUpIGF2YWlsYWJsZVxuICAxNjpcdFx0ICBvbiB0aGUgQWlyb2hhIFNvYyBmYW1pbHkuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIE5FVF9BSVJPSEFcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0Fpcm9oYSBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0EgfHwgIU5FVF9EU0FcbiAgMjE6XHRcdHNlbGVjdCBORVRfQUlST0hBX05QVVxuICAyMjpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZ2lnYWJpdCBldGhlcm5ldCBNQUNzIGluIHRoZVxuICAyNTpcdFx0ICBBaXJvaGEgU29DIGZhbWlseS5cbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgTkVUX0FJUk9IQV9GTE9XX1NUQVRTXG4gIDI4Olx0XHRkZWZhdWx0IHlcbiAgMjk6XHRcdGJvb2wgXCYjMzQ7QWlyb2hhIGZsb3cgc3RhdHNcJiMzNDtcbiAgMzA6XHRcdGRlcGVuZHMgb24gTkVUX0FJUk9IQSBcdTAwMjZcdTAwMjYgTkVUX0FJUk9IQV9OUFVcbiAgMzE6XHRcdGhlbHBcbiAgMzI6XHRcdCAgRW5hYmxlIEFpcm9oYSBmbG93dGFibGUgc3RhdGlzdGljIGNvdW50ZXJzLlxuICAzMzpcdFxuICAzNDpcdGVuZGlmICNORVRfVkVORE9SX0FJUk9IQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTg4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgY2F0Y2ggbXkgZXllOiBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIGZlZWxzIGxpa2UgaXTigJlzIGNvbmRpdGlvbmFsLCBlaXRoZXIgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBvdGVudGlhbGx5IHBhcnQgb2YgYSBidWlsZCB0ZXN0IHN1aXRlLiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgQWlyb2hhIEVONzU4MSBTb0MuIFRoZSBmaXJzdCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBhY3R1YWxseSB0ZXN0IHRoaXMgaW4gUUVNVT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gcmVwcm9kdWNlIHRoZSBlbnZpcm9ubWVudC4KCk15IG5leHQgbW92ZSBpcyB0byB2ZXJpZnkgd2hldGhlciBhIHBsYXRmb3JtIGRldmljZSBpcyBldmVuIGRlZmluZWQgZm9yIGl0LiBTeXprYWxsZXIgaXMgYW1hemluZywgYnV0IGV2ZW4gaXQgaGFzIGxpbWl0YXRpb25zLiBBbHRob3VnaCwgSSYjMzk7bSByZW1pbmRpbmcgbXlzZWxmIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGl0c2VsZiB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3IgcHNldWRvLXN5c2NhbGxzIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0IGtlcm5lbCwgb3IgaWYgaXQgaXMgYSBuZXQgZGV2aWNlIEkgY2FuIHNpbXBseSBmdXp6IHRoZSBpbml0aWFsaXphdGlvbiB2aWEgYHN5el9pbml0X25ldF9kZXZpY2VgLiBXYWl0LCBubywgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkZXZpY2UsIHNvIHRoYXQmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIG1lYXQgb2YgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgZHJpdmVyIGlzIGFjdHVhbGx5IHByb2JlZC4gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0byBzZWUgdGhlIHByb2Jpbmcgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jPTM5NTI9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzk1NDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTU1LVx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk2MS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTYyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MTE9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjEtXHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI3LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjgyODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFpcm9oYV9ucHVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTE5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFN5emthbGxlciBQbGF0Zm9ybSBEcml2ZXIgTXVzaW5ncyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHBsYXRmb3JtIGRyaXZlcnMgYW5kIGhvdyBTeXprYWxsZXIgaGFuZGxlcyB0aGVtLiBFc3NlbnRpYWxseSwgdG8gZWZmZWN0aXZlbHkgZnV6eiB0aGVzZSwgU3l6a2FsbGVyIG5lZWRzIHRvIGJlIGFibGUgdG8gaW5zdGFudGlhdGUgdGhlIGRyaXZlci4gSSBrbm93IGl0IGhhcyBhIGZ1bmN0aW9uIGxpa2UgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGUgcmVhbCBjaGFsbGVuZ2UgaXMgdGhhdCBzcGVjaWZpYyBwbGF0Zm9ybSBkZXZpY2VzIGZvciBjZXJ0YWluIFNvQ3PigJRsaWtlIHRoZSBvbmVzIEkmIzM5O20gd29ya2luZyB3aXRo4oCUdXN1YWxseSBhcmVuJiMzOTt0IGluc3RhbnRpYXRlZCB1bmxlc3MgU3l6a2FsbGVyIGhhcyBhIGRlZGljYXRlZCBkZXNjcmlwdGlvbiBmb3IgdGhlbS4KCldhaXQgYSBzZWNvbmQsIGFtIEkgZm9yZ2V0dGluZyBzb21ldGhpbmc/IERvZXMgU3l6a2FsbGVyIHVzZSBgc3l6X2RldmxpbmtgIG9yIGEgc2ltaWxhciBjb25zdHJ1Y3QgdG8gYWRkcmVzcyB0aGlzIHBsYXRmb3JtIGRldmljZSBpbnN0YW50aWF0aW9uIHByb2JsZW0/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodCwgYHN5el9nZW5ldGxpbmtgIGlzIHJlbGF0ZWQsIGJ1dCB0aGF0JiMzOTtzIGZvciBnZW5ldGxpbmssIG5vdCBwbGF0Zm9ybSBkZXZpY2VzLgoKQWgsIHJpZ2h0LCBub3cgaXQmIzM5O3MgY29taW5nIGJhY2sgdG8gbWUuIFN5emthbGxlciAqY2FuKiBnZW5lcmF0ZSB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGlmIGl0IGhhcyB0aGUgbmVjZXNzYXJ5IGRlc2NyaXB0aW9ucy4gVGhhdCYjMzk7cyB0aGUga2V5LiBTbywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIGlmIHdlIGhhdmUgYW55IGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBmb3IgdGhlIGBhaXJvaGFgIFNvQyBvciByZWxldmFudCBwbGF0Zm9ybSBkZXZpY2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3ZlIGdvdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNDEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIEkgY2FuJiMzOTt0IHVzZSBgc3l6LWdyZXBwZXJgIG9yIHNlYXJjaCBzeXprYWxsZXItc3BlY2lmaWMgc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEZpbmUsIEkmIzM5O2xsIHdvcmsgd2l0aCB0aGUgYXZhaWxhYmxlIHRvb2xzOiBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGByZWFkLWZpbGVgLCBhbmQgYHNldC1yZXN1bHRzYC4KClRoZSByZWFsIGlzc3VlIGhlcmUgaXMgdGhlIHByb21wdCBzYXlzIEkgc2hvdWxkIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCBidXQgdGhvc2UgdG9vbHMgYXJlIG1pc3NpbmcuIFRoYXTigJlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhpcyBgYWlyb2hhX25wdWAgZHJpdmVyLiBJcyBpdCBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBmdXp6aW5nIHNldHVwPyBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYW4gQWlyb2hhIFNvQy4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoYXQgcGFydGljdWxhciBTb0MsIG9yIGlmIHN5emthbGxlciBoYXMgYSBjdXN0b20gcHNldWRvLXN5c2NhbGwgdG8gaW5zdGFudGlhdGUgaXQuIEJ1dCwgbm8sIHN5emthbGxlciBkb2VzbiYjMzk7dCBnZW5lcmljYWxseSBpbnN0YW50aWF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGxpa2UgdGhhdC4gSXQgd291bGQgcmVxdWlyZSBleHBsaWNpdCBzdXBwb3J0IGZvciBlYWNoLgoKV2FpdCBhIHNlY29uZOKApnRoaXMgcGF0Y2ggaXMgZnJvbSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuIERvZXMgdGhhdCBtZWFuIHN5emthbGxlciBmb3VuZCBzb21ldGhpbmcgaW4gdGhpcyBjb2RlPyBJdCBjZXJ0YWlubHkgc3VnZ2VzdHMgaXQgKmlzKiByZWFjaGFibGUgd2l0aGluIHRoZSBzeXprYWxsZXIgZW52aXJvbm1lbnQgaWYgaXQgd2FzIHRhcmdldGVkIGJ5IHRoZWlyIGNsdXN0ZXIuCgpCdXQgaG9sZCBvbiwgdGhpcyBjb3VsZCBqdXN0IGJlIGEgcGF0Y2ggKmJlaW5nIHRlc3RlZCogYnkgdGhlIHN5ei1jbHVzdGVyLiBJdCYjMzk7cyB1bmRlciByZXZpZXcsIGFjY29yZGluZyB0byB0aGUgZGF0ZSBhbmQgYXV0aG9yLiBJdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBidWcgKmluIHRoaXMgY29kZSogdGhhdCB3YXMgZm91bmQ7IGl0IGNvdWxkIGJlIGEgZGV2ZWxvcGVyJiMzOTtzIHBhdGNoIGJlaW5nIHZlcmlmaWVkLgoKVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYCBiZWluZyBjYWxsZWQgd2l0aCB1bmFsaWduZWQgc2l6ZXMsIHdoaWNoIG1pZ2h0IGNhdXNlIERNQSBjYWNoZSBhbGlnbm1lbnQgcHJvYmxlbXMuCgpTbywgdGhlIGJpZyBxdWVzdGlvbiBpczogaXMgdGhpcyBkcml2ZXIgd29ydGggZnV6emluZz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMsIGJ1dCBvbmx5IGlmIGl0JiMzOTtzIHJlYWNoYWJsZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBhaXJvaGFfbnB1YCAqaXMqIHJlYWNoYWJsZS4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIGl0c2VsZiBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFx0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuIDc1MTpcdFxuIDc1MjpcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZjb3JlLVx1MDAzZWxvY2spO1xuIDc1MzpcdFx0XHRjb3JlLVx1MDAzZW5wdSA9IG5wdTtcbiA3NTQ6XHRcbiA3NTU6XHRcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpICYjNDM7IDEpO1xuIDc1NjpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKVxuIDc1NzpcdFx0XHRcdHJldHVybiBpcnE7XG4gNzU4Olx0XG4gNzU5Olx0XHRcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIsXG4gNzYwOlx0XHRcdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIFwmIzM0O2Fpcm9oYS1ucHUtd2R0XCYjMzQ7LCBjb3JlKTtcbiA3NjE6XHRcdFx0aWYgKGVycilcbiA3NjI6XHRcdFx0XHRyZXR1cm4gZXJyO1xuIDc2MzpcdFxuIDc2NDpcdFx0XHRJTklUX1dPUksoXHUwMDI2Y29yZS1cdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XG4gNzY1Olx0XHR9XG4gNzY2Olx0XG4gNzY3Olx0XHQvKiB3bGFuIElSUSBsaW5lcyAqL1xuIDc2ODpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlaXJxcyk7IGkmIzQzOyYjNDM7KSB7XG4gNzY5Olx0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSAmIzQzOyBBUlJBWV9TSVpFKG5wdS1cdTAwM2Vjb3JlcykgJiM0MzsgMSk7XG4gNzcwOlx0XHRcdGlmIChpcnEgXHUwMDNjIDApXG4gNzcxOlx0XHRcdFx0cmV0dXJuIGlycTtcbiA3NzI6XHRcbiA3NzM6XHRcdFx0bnB1LVx1MDAzZWlycXNbaV0gPSBpcnE7XG4gNzc0Olx0XHR9XG4gNzc1Olx0XG4gNzc2Olx0XHRlcnIgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKTtcbiA3Nzc6XHRcdGlmIChlcnIpXG4gNzc4Olx0XHRcdHJldHVybiBlcnI7XG4gNzc5Olx0XG4gNzgwOlx0XHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gNzgxOlx0XHRpZiAoZXJyKVxuIDc4MjpcdFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXG5cJiMzNDspO1xuIDc4MzpcdFxuIDc4NDpcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEwKSxcbiA3ODU6XHRcdFx0ICAgICByZXMuc3RhcnQgJiM0MzsgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFKTtcbiA3ODY6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTlBVX01JQigxMSksIDB4NDAwMDApOyAvKiBTUkFNIDI1NksgKi9cbiA3ODc6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTlBVX01JQigxMiksIDApO1xuIDc4ODpcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDIxKSwgMSk7XG4gNzg5Olx0XHRtc2xlZXAoMTAwKTtcbiA3OTA6XHRcbiA3OTE6XHRcdC8qIHNldHRpbmcgYm9vdGluZyBhZGRyZXNzICovXG4gNzkyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBOUFVfTlVNX0NPUkVTOyBpJiM0MzsmIzQzOylcbiA3OTM6XHRcdFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9CT09UX0JBU0UoaSksIHJlcy5zdGFydCk7XG4gNzk0Olx0XHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XG4gNzk1Olx0XG4gNzk2Olx0XHQvKiBlbmFibGUgTlBVIGNvcmVzICovXG4gNzk3Olx0XHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfQ09ORklHLCAweGZmKTtcbiA3OTg6XHRcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfQk9PVF9UUklHR0VSLCAweDEpO1xuIDc5OTpcdFx0bXNsZWVwKDEwMCk7XG4gODAwOlx0XG4gODAxOlx0XHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxuIDgwMjpcdFx0XHRcdFx0ICAgICBcdTAwMjZ2YWwsIHNpemVvZih2YWwpLCBHRlBfS0VSTkVMKSlcbiA4MDM6XHRcdFx0ZGV2X2luZm8oZGV2LCBcJiMzNDtOUFUgZncgdmVyc2lvbjogJTBkLiVkXFxuXCYjMzQ7LFxuIDgwNDpcdFx0XHRcdCAodmFsIFx1MDAzZVx1MDAzZSAxNikgXHUwMDI2IDB4ZmZmZiwgdmFsIFx1MDAyNiAweGZmZmYpO1xuIDgwNTpcdFxuIDgwNjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgbnB1KTtcbiA4MDc6XHRcbiA4MDg6XHRcdHJldHVybiAwO1xuIDgwOTpcdH1cbiA4MTA6XHRcbiA4MTE6XHRzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIDgxMjpcdHtcbiA4MTM6XHRcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiA4MTQ6XHRcdGludCBpO1xuIDgxNTpcdFxuIDgxNjpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOylcbiA4MTc6XHRcdFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZucHUtXHUwMDNlY29yZXNbaV0ud2R0X3dvcmspO1xuIDgxODpcdH1cbiA4MTk6XHRcbiA4MjA6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhaXJvaGFfbnB1X2RyaXZlciA9IHtcbiA4MjE6XHRcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXG4gODIyOlx0XHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG4gODIzOlx0XHQuZHJpdmVyID0ge1xuIDgyNDpcdFx0XHQubmFtZSA9IFwmIzM0O2Fpcm9oYS1ucHVcJiMzNDssXG4gODI1Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXG4gODI2Olx0XHR9LFxuIDgyNzpcdH07XG4gODI4Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG4gODI5Olx0XG4gODMwOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQSk7XG4gODMxOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMik7XG4gODMyOlx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfNzk5Nl9GSVJNV0FSRV9EQVRBKTtcbiA4MzM6XHRNT0RVTEVfRklSTVdBUkUoTlBVX0VONzU4MV83OTk2X0ZJUk1XQVJFX1JWMzIpO1xuIDgzNDpcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX0RBVEEpO1xuIDgzNTpcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX1JWMzIpO1xuIDgzNjpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4gODM3Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtMb3JlbnpvIEJpYW5jb25pIFx1MDAzY2xvcmVuem9Aa2VybmVsLm9yZ1x1MDAzZVwmIzM0Oyk7XG4gODM4Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0Fpcm9oYSBOZXR3b3JrIFByb2Nlc3NvciBVbml0IGRyaXZlclwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDY5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEFpcm9oYSBOUFUgRHJpdmVyIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBgb2ZfYWlyb2hhX25wdV9tYXRjaGAgcHJvYmUgZnVuY3Rpb24gaXMgdGhlIGVudHJ5IHBvaW50LCBtZWFuaW5nIHRoaXMgZHJpdmVyIHJlbGllcyBvbiBhIGRldmljZSB0cmVlIG5vZGUgZm9yIGluc3RhbnRpYXRpb24uIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBmb3Igc3l6a2FsbGVyLCB3aGljaCwgaW4gbW9zdCBjYXNlcywgZG9lc24mIzM5O3QganVzdCBjb25qdXJlIHVwIGFyYml0cmFyeSBkZXZpY2UgdHJlZSBub2RlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWFsaXplZCBwc2V1ZG8tc3lzY2FsbCwgb3IgaXQmIzM5O3MgYmFrZWQgaW50byB0aGUgaW5pdGlhbCBRRU1VIGltYWdlLiBJJiMzOTttIHJlYXNvbmFibHkgc3VyZSBzeXprYWxsZXIgZG9lc24mIzM5O3QgZHluYW1pY2FsbHkgaW5qZWN0IG5vZGVzLCBhdCBsZWFzdCBub3QgaW4gYW55IGdlbmVyYWwgd2F5LiBNYXliZSBzb21lIGZhbmN5IG92ZXJsYXlzLCBidXQgdXN1YWxseSwgdGhhdCYjMzk7cyBhIG5vLWdvLgoKR2l2ZW4gdGhpcyByZWxpYW5jZSBvbiB0aGUgZGV2aWNlIHRyZWUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGltaXRpbmcgYWNjZXNzLCBJIG5lZWQgdG8gbWFrZSBhIGp1ZGdtZW50IGNhbGwuIElmIHRoaXMgZHJpdmVyIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudHMsIEkgc2hvdWxkIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkxldCBtZSBxdWlja2x5IHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBBaXJvaGEgRU43NTgxLiBObyBzdGFuZGFyZCBRRU1VIG1hY2hpbmUgZXhpc3RzIGZvciB0aGF0IHBsYXRmb3JtLiBOb3cgSSYjMzk7bSB0aGlua2luZywgY291bGQgaXQgYmUgcmVhY2hlZCB2aWEgYHN5el9nZW5ldGxpbmtgIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQ/IEJ1dCBubywgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLiBJcyBgYWlyb2hhX25wdV9wcm9iZWAgY2FsbGVkIGZyb20gKmFueXdoZXJlKiBlbHNlPyBObywgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIHN0YW5kYXJkIHBsYXRmb3JtIGRyaXZlciBwcm9iZSBmdW5jdGlvbi4KCkhtbSwgb2theS4gT25lIGxhc3QgcXVpY2sgY2hlY2s6IGFyZSB0aGVyZSBhbnkgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEFpcm9oYSBoYXJkd2FyZT8gSWYgdGhlcmUgd2VyZSwgdGhhdCB3b3VsZCBvcGVuIGEgZG9vciwgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYW55LiBUaGlzIGlzIGxvb2tpbmcgbGlrZSBhIGRlYWQgZW5kIGZvciBkaXJlY3QgZnV6emluZyB0aHJvdWdoIHN5emthbGxlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3NjEKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA1ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIGNvbmZpcm1lZCB0aGUgcHJlc2VuY2Ugb2YgdGhlIGBhaXJvaGFgIGRyaXZlciB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBUaGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhIGFyZSBrZXk6IHdlJiMzOTtyZSBsb29raW5nIGZvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIGhhcmR3YXJlIGVtdWxhdGlvbi4KClRoaXMgYGFpcm9oYWAgZHJpdmVyIGlzIHZlbmRvci1zcGVjaWZpYywgYW4gU29DIGV0aGVybmV0L05QVSBkcml2ZXIgZm9yIGFuIEFpcm9oYSBTb0MuIFRoYXQgaW1tZWRpYXRlbHkgcmFpc2VzIGEgcmVkIGZsYWcuIEl0IG5lZWRzIHBoeXNpY2FsIEFpcm9oYSBoYXJkd2FyZSBvciBhIHZlcnkgc3BlY2lmaWMgUUVNVSBlbXVsYXRpb24uIERvZXMgc3RhbmRhcmQgUUVNVSBldmVuIGVtdWxhdGUgdGhlIEFpcm9oYSBFTjc1ODE/IEhpZ2hseSB1bmxpa2VseSwgZ2l2ZW4gaXRzIHJlbGF0aXZlIG9ic2N1cml0eSBhcyBhIE1lZGlhVGVrIHN1YnNpZGlhcnkmIzM5O3MgU29DLiBJIGNhbiYjMzk7dCBlYXNpbHkgY2hlY2sgdGhlIFFFTVUgc291cmNlLCBidXQgYmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgYSBsb25nIHNob3QuCgpUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBvcmlnaW5hdGVzIGZyb20gYHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDtgIGdpdmVzIG1lIHBhdXNlLiBXaHkgd291bGQgc3l6a2FsbGVyIGZpbmQgYSBidWcgaGVyZSBpZiBpdCYjMzk7cyBub3QgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGU/IFRoZW4sIEkgcmVtZW1iZXIgc3l6a2FsbGVyIGNhbiBvcGVyYXRlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgcGhvbmVzIG9yIHNwZWNpZmljIHJvdXRlcnMuIENvdWxkIHN5emthbGxlciBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIEFpcm9oYSBib2FyZHM/IFBvdGVudGlhbGx5LgoKSG93ZXZlciwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgY2FsbHMgb3V0IGNvZGUgdGhhdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgQWlyb2hhIGRyaXZlciwgbmVlZGluZyBlaXRoZXIgcGh5c2ljYWwgaGFyZHdhcmUgb3IgdmVyeSBzcGVjaWZpYywgbm9uLXN0YW5kYXJkIFFFTVUgZW11bGF0aW9uLCBjbGVhcmx5IGZpdHMgdGhhdCBkZWZpbml0aW9uLgoKTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGFza3MgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzeXprYWxsZXImIzM5O3MgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCwgYnV0IEkgY2FuJiMzOTt0IGRpcmVjdGx5IGluc3BlY3Qgc3l6a2FsbGVyJiMzOTtzIGBzeXMvKi50eHRgIGZpbGVzLiBIb3dldmVyLCBldmVuIGlmIHN5emthbGxlciBjcmVhdGVzIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGUgZHJpdmVyIHVzZXMgYGRldm1faW9yZW1hcF9yZXNvdXJjZWAsIGBwbGF0Zm9ybV9nZXRfaXJxYCwgYW5kIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIGZ1bmN0aW9ucy4gSXQgd291bGQgbmVlZCByZWFsIE1NSU8gcmVnaXN0ZXJzIHRvIHByZXZlbnQgYW4gaW1tZWRpYXRlIGNyYXNoIG9yIHByb2JlIGZhaWx1cmUuCgpUbyBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgbmVlZCB0byBicmllZmx5IGNoZWNrIHdoYXQgYGFpcm9oYV9ucHVfcHJvYmVgIGRvZXMsIGp1c3QgdG8gY29uZmlybSBteSBhc3Nlc3NtZW50LCBidXQgaXQmIzM5O3MgdmVyeSBsaWtlbHkgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2ODA6XHRcdFx0Lm5hbWUgPSBOUFVfQU43NTgzX0ZJUk1XQVJFX0RBVEEsXG4gNjgxOlx0XHRcdC5tYXhfc2l6ZSA9IE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRSxcbiA2ODI6XHRcdH0sXG4gNjgzOlx0fTtcbiA2ODQ6XHRcbiA2ODU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XG4gNjg2Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWlyb2hhLGVuNzU4MS1ucHVcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuIDY4NzpcdFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O2Fpcm9oYSxhbjc1ODMtbnB1XCYjMzQ7LCAuZGF0YSA9IFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcbiA2ODg6XHRcdHsgLyogc2VudGluZWwgKi8gfVxuIDY4OTpcdH07XG4gNjkwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XG4gNjkxOlx0XG4gNjkyOlx0c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XG4gNjkzOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7bnB1XCYjMzQ7LFxuIDY5NDpcdFx0LnJlZ19iaXRzXHRcdD0gMzIsXG4gNjk1Olx0XHQudmFsX2JpdHNcdFx0PSAzMixcbiA2OTY6XHRcdC5yZWdfc3RyaWRlXHRcdD0gNCxcbiA2OTc6XHRcdC5kaXNhYmxlX2xvY2tpbmdcdD0gdHJ1ZSxcbiA2OTg6XHR9O1xuIDY5OTpcdFxuIDcwMDpcdHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIDcwMTpcdHtcbiA3MDI6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDcwMzpcdFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbiA3MDQ6XHRcdHN0cnVjdCByZXNvdXJjZSByZXM7XG4gNzA1Olx0XHR2b2lkIF9faW9tZW0gKmJhc2U7XG4gNzA2Olx0XHRpbnQgaSwgaXJxLCBlcnI7XG4gNzA3Olx0XHR1MzIgdmFsO1xuIDcwODpcdFxuIDcwOTpcdFx0YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTtcbiA3MTA6XHRcdGlmIChJU19FUlIoYmFzZSkpXG4gNzExOlx0XHRcdHJldHVybiBQVFJfRVJSKGJhc2UpO1xuIDcxMjpcdFxuIDcxMzpcdFx0bnB1ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpucHUpLCBHRlBfS0VSTkVMKTtcbiA3MTQ6XHRcdGlmICghbnB1KVxuIDcxNTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3MTY6XHRcbiA3MTc6XHRcdG5wdS1cdTAwM2VkZXYgPSBkZXY7XG4gNzE4Olx0XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0ID0gYWlyb2hhX25wdV9wcGVfaW5pdDtcbiA3MTk6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2RlaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2RlaW5pdDtcbiA3MjA6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2luaXRfc3RhdHMgPSBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cDtcbiA3MjE6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2ZsdXNoX3NyYW1fZW50cmllcyA9IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcztcbiA3MjI6XHRcdG5wdS1cdTAwM2VvcHMucHBlX2ZvZV9jb21taXRfZW50cnkgPSBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnk7XG4gNzIzOlx0XHRucHUtXHUwMDNlb3BzLndsYW5faW5pdF9yZXNlcnZlZF9tZW1vcnkgPSBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnk7XG4gNzI0Olx0XHRucHUtXHUwMDNlb3BzLndsYW5fc2VuZF9tc2cgPSBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQ7XG4gNzI1Olx0XHRucHUtXHUwMDNlb3BzLndsYW5fZ2V0X21zZyA9IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0O1xuIDcyNjpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2dldF9xdWV1ZV9hZGRyID0gYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0O1xuIDcyNzpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX3NldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfc2V0O1xuIDcyODpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2dldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0O1xuIDcyOTpcdFx0bnB1LVx1MDAzZW9wcy53bGFuX2VuYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZTtcbiA3MzA6XHRcdG5wdS1cdTAwM2VvcHMud2xhbl9kaXNhYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZGlzYWJsZTtcbiA3MzE6XHRcbiA3MzI6XHRcdG5wdS1cdTAwM2VyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBiYXNlLCBcdTAwMjZyZWdtYXBfY29uZmlnKTtcbiA3MzM6XHRcdGlmIChJU19FUlIobnB1LVx1MDAzZXJlZ21hcCkpXG4gNzM0Olx0XHRcdHJldHVybiBQVFJfRVJSKG5wdS1cdTAwM2VyZWdtYXApO1xuIDczNTpcdFxuIDczNjpcdFx0ZXJyID0gb2ZfcmVzZXJ2ZWRfbWVtX3JlZ2lvbl90b19yZXNvdXJjZShkZXYtXHUwMDNlb2Zfbm9kZSwgMCwgXHUwMDI2cmVzKTtcbiA3Mzc6XHRcdGlmIChlcnIpXG4gNzM4Olx0XHRcdHJldHVybiBlcnI7XG4gNzM5Olx0XG4gNzQwOlx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xuIDc0MTpcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA3NDI6XHRcdFx0cmV0dXJuIGlycTtcbiA3NDM6XHRcbiA3NDQ6XHRcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfbWJveF9oYW5kbGVyLFxuIDc0NTpcdFx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgXCYjMzQ7YWlyb2hhLW5wdS1tYm94XCYjMzQ7LCBucHUpO1xuIDc0NjpcdFx0aWYgKGVycilcbiA3NDc6XHRcdFx0cmV0dXJuIGVycjtcbiA3NDg6XHRcbiA3NDk6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWNvcmVzKTsgaSYjNDM7JiM0MzspIHtcbiA3NTA6XHRcdFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tpXTtcbiA3NTE6XHRcbiA3NTI6XHRcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiA3NTM6XHRcdFx0Y29yZS1cdTAwM2VucHUgPSBucHU7XG4gNzU0Olx0XG4gNzU1Olx0XHRcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSAmIzQzOyAxKTtcbiA3NTY6XHRcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA3NTc6XHRcdFx0XHRyZXR1cm4gaXJxO1xuIDc1ODpcdFxuIDc1OTpcdFx0XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxuIDc2MDpcdFx0XHRcdFx0ICAgICAgIElSUUZfU0hBUkVELCBcJiMzNDthaXJvaGEtbnB1LXdkdFwmIzM0OywgY29yZSk7XG4gNzYxOlx0XHRcdGlmIChlcnIpXG4gNzYyOlx0XHRcdFx0cmV0dXJuIGVycjtcbiA3NjM6XHRcbiA3NjQ6XHRcdFx0SU5JVF9XT1JLKFx1MDAyNmNvcmUtXHUwMDNld2R0X3dvcmssIGFpcm9oYV9ucHVfd2R0X3dvcmspO1xuIDc2NTpcdFx0fVxuIDc2NjpcdFxuIDc2NzpcdFx0Lyogd2xhbiBJUlEgbGluZXMgKi9cbiA3Njg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWlycXMpOyBpJiM0MzsmIzQzOykge1xuIDc2OTpcdFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkgJiM0MzsgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpICYjNDM7IDEpO1xuIDc3MDpcdFx0XHRpZiAoaXJxIFx1MDAzYyAwKVxuIDc3MTpcdFx0XHRcdHJldHVybiBpcnE7XG4gNzcyOlx0XG4gNzczOlx0XHRcdG5wdS1cdTAwM2VpcnFzW2ldID0gaXJxO1xuIDc3NDpcdFx0fVxuIDc3NTpcdFxuIDc3NjpcdFx0ZXJyID0gZG1hX3NldF9jb2hlcmVudF9tYXNrKGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XG4gNzc3Olx0XHRpZiAoZXJyKVxuIDc3ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDc3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODczNAoJCQkJCQkJb3V0cHV0OiAxMjkKCQkJCQkJCXRob3VnaHRzOiAxMDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBBaXJvaGEgRU43NTgxIE5QVSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIEFpcm9oYSBFTjc1ODEgU29DJiMzOTtzIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlci4gVGhlIHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlYCwgYG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2VgLCBhbmQgYHBsYXRmb3JtX2dldF9pcnFgIHNjcmVhbXMgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGVudHJpZXMgYW5kIElSUSBjb25maWd1cmF0aW9ucywgd2hpY2ggYXJlIG5vdCByZWFkaWx5IGF2YWlsYWJsZSBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIHdpdGhvdXQgc2lnbmlmaWNhbnQgZGV2aWNlIHRyZWUgbW9kaWZpY2F0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGNvbnNpZGVyIHdoZXRoZXIgc3l6a2FsbGVyIGNvdWxkIGJlIGZ1enppbmcgdGhpcyBpbmRpcmVjdGx5LiBCdXQsIHRoaXMgaXNuJiMzOTt0IGEgTmV0bGluayBmYW1pbHksIHNvIGBzeXpfZ2VuZXRsaW5rYCBpcyBvdXQuIFRoZSBwYXRjaCB0b3VjaGVzIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgYnV0IHRoYXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIG1ha2luZyBpdCBoYXJkZXIgdG8gcmVhY2ggd2l0aG91dCBkaXJlY3QgbW9kaWZpY2F0aW9uIHRvIGNhbGxpbmcgZnVuY3Rpb25zLgoKVGhlIHBhdGNoIG1vZGlmaWVzIHNldmVyYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYG5wdS0mZ3Q7b3BzYCBzdHJ1Y3R1cmUgKGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgYGFpcm9oYV9ucHVfcHBlX2luaXRgLCBldGMuKSwgd2hpY2ggYXJlIHRoZW4gY2FsbGVkIGJ5IGBhaXJvaGFfZXRoLmNgLiBTbyBJJiMzOTtsbCBjaGVjayBgYWlyb2hhX2V0aC5jYC4gTG8gYW5kIGJlaG9sZCwgaXQmIzM5O3MgYWxzbyBhIHBsYXRmb3JtIGRyaXZlciB3aXRoIHRoZSBzYW1lIGhhcmR3YXJlIGRlcGVuZGVuY2llcyEgVGhlIGNvbXBsZXRlIEFpcm9oYSBldGhlcm5ldCBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgc3BlY2lmaWMgU3lzdGVtIG9uIGEgQ2hpcCAoU29DKS4KClNvLCBjb3VsZCBzeXprYWxsZXIgYmUgdGFyZ2V0aW5nIGEgcGh5c2ljYWwgQWlyb2hhIGJvYXJkPyBZZXMsIHN5emthbGxlciBkb2VzIHN1cHBvcnQgdGhhdC4gSG93ZXZlciwgdGhlIHByb21wdCBpcyBleHBsaWNpdDogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYy4uLiBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbC4uLiBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNvQyBkcml2ZXIgKEFpcm9oYSBFTjc1ODEpIHRoYXQgcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLiBJdCYjMzk7cyBpbiB0aGUgc2FtZSBjYXRlZ29yeSBhcyBQQ0llIHN3aXRjaC9TbWFydE5JQyBkcml2ZXJzIG1lbnRpb25lZCBpbiB0aGUgcHJvbXB0LiBUaGVyZWZvcmUsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSSB3YW50IHRvIGJlIHN1cmUgdGhlcmUgaXNuJiMzOTt0IHNvbWUgb2JzY3VyZSBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBBaXJvaGEgU29DLiBXaGlsZSBJIGRvbiYjMzk7dCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gUUVNVSBzb3VyY2UgcmlnaHQgbm93LCBJIGtub3cgdGhhdCBBaXJvaGEgRU43NTgxIGlzIGFuIEFSTSBDb3J0ZXgtQTUzIFNvQywgbGlrZWx5IGZyb20gdGhlIE1lZGlhVGVrIE1UNzk4MS9NVDc5ODYgZmFtaWx5LCBhbmQgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgcGxhdGZvcm0uCgpFdmVuIGlmIEkgYXNzdW1lIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZGlyZWN0bHkgaW50ZXJhY3RzIHdpdGggTU1JTyByZWdpc3RlcnMgdXNpbmcgYHJlZ21hcF93cml0ZWAsIGBhaXJvaGFfZmVfd3JgLCBldGMuLCBhbmQgZXhwZWN0cyBzcGVjaWZpYyBoYXJkd2FyZSByZXNwb25zZXMuIFdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSwgaXQgd291bGQganVzdCBoYW5nIG9yIGZhaWwgaW1tZWRpYXRlbHkuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgbW9yZSBjbG9zZWx5LiBJdCBhZGRzIGBhaXJvaGFfbnB1X21ib3hfc2l6ZWAgYW5kIHVzZXMgaXQgZm9yIERNQSBidWZmZXIgc2l6ZSBhbGlnbm1lbnQgd2l0aCBgZG1hX21hcF9zaW5nbGVgIGFuZCBga3phbGxvY2AuIFRoaXMgaXMgYSBETUEgY2FjaGUgYWxpZ25tZW50IGlzc3VlIGZpeC4gU2luY2UgaXQmIzM5O3MgaW4gYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCYjMzk7cyB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCBhbmFseXNpcy4gSSYjMzk7bSBzdGlja2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSW4gc3VtbWFyeTogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYCkgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcy4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiBUaGUgYHNldC1yZXN1bHRzYCB0b29sIHNob3VsZCBiZSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgRU43NTgxIFNvQyBuZXR3b3JrIHByb2Nlc3NvciAoTlBVKSBkcml2ZXIgdG8gYWxpZ24gRE1BIGJ1ZmZlciBzaXplcyB0byB0aGUgY2FjaGUgbGluZSBzaXplLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEVONzU4MSBTb0MgbmV0d29yayBwcm9jZXNzb3IgKE5QVSkgZHJpdmVyIHRvIGFsaWduIERNQSBidWZmZXIgc2l6ZXMgdG8gdGhlIGNhY2hlIGxpbmUgc2l6ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEyOjU2LjA2MDIxMzQ3NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3MTA5MDY1NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEyOjU2LjA2MDIyMDYyNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0OTE4NjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ4Yjk1YWY3ODYxZDRiYzMyNGIxZGZhMmQ5NmU5NWE5NTg2YzZlMWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6MTI6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcXG5pbmRleCBiNjc5YmVkOTUyZGUzLi45Yzk1ZGRkNzAwMmU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuQEAgLTUsNiArNSw3IEBAXFxuICAqL1xcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmNvcmVkdW1wLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlybXdhcmUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuQEAgLTE2MCwxNSArMTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XFxuIFxcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XFxuIH07XFxuIFxcbitzdGF0aWMgc2l6ZV90IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVfdCBsZW4pXFxuK3tcXG4rXFx0cmV0dXJuIEFMSUdOKGxlbiwgZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQoKSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcXG4gXFx0XFx0XFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxcbiB7XFxuIFxcdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cXG4gXFx0dTMyIHZhbCwgb2Zmc2V0ID0gY29yZSBcXHUwMDNjXFx1MDAzYyA0O1xcbiBcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbitcXHRzaXplX3QgbWFwX2xlbiA9IGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemUpO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtXFx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xcbitcXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBwLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkcik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuQEAgLTE5MSw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuIFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcXG4gXFxuLVxcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7XFxuK1xcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuQEAgLTMzMyw3ICszNDAsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zNTQsNyArMzYxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9kZWluaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zNzUsNyArMzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC0zOTksNyArNDA2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG4gXFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEsIEdGUF9BVE9NSUMpO1xcbitcXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFwcGVfZGF0YSlcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbkBAIC00MzQsNyArNDQxLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbiBcXHRpbnQgZXJyLCBzaXplID0gbnVtX3N0YXRzX2VudHJpZXMgKiBzaXplb2YoKm5wdS1cXHUwMDNlc3RhdHMpO1xcbiBcXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XFxuIFxcbi1cXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSwgR0ZQX0FUT01JQyk7XFxuK1xcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xcbiBcXHRpZiAoIXBwZV9kYXRhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTQ2Niw3ICs0NzMsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcXG4gXFx0aW50IGVyciwgbGVuO1xcbiBcXG4gXFx0bGVuID0gc2l6ZW9mKCp3bGFuX2RhdGEpICsgZGF0YV9sZW47XFxuLVxcdHdsYW5fZGF0YSA9IGt6YWxsb2MobGVuLCBnZnApO1xcbitcXHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XFxuIFxcdGlmICghd2xhbl9kYXRhKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTQ4OSw3ICs0OTYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcbiBcXHRpbnQgZXJyLCBsZW47XFxuIFxcbiBcXHRsZW4gPSBzaXplb2YoKndsYW5fZGF0YSkgKyBkYXRhX2xlbjtcXG4tXFx0d2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7XFxuK1xcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcXG4gXFx0aWYgKCF3bGFuX2RhdGEpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTI6NTcuNTEwMzI4MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTY1ODkzMzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4Yjk1YWY3ODYxZDRiYzMyNGIxZGZhMmQ5NmU5NWE5NTg2YzZlMWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzoxMjo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5pbmRleCBiNjc5YmVkOTUyZGUzLi45Yzk1ZGRkNzAwMmU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuQEAgLTUsNiArNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuQEAgLTE2MCwxNSArMTYxLDIxIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4gXHRERUNMQVJFX0ZMRVhfQVJSQVkodTgsIGQpO1xuIH07XG4gXG4rc3RhdGljIHNpemVfdCBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplX3QgbGVuKVxuK3tcbitcdHJldHVybiBBTElHTihsZW4sIGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KCkpO1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXG4gXHRcdFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxuIHtcbiBcdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cbiBcdHUzMiB2YWwsIG9mZnNldCA9IGNvcmUgXHUwMDNjXHUwMDNjIDQ7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuK1x0c2l6ZV90IG1hcF9sZW4gPSBhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplKTtcbiBcdGludCByZXQ7XG4gXG4tXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIHAsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFx0cmV0ID0gZG1hX21hcHBpbmdfZXJyb3IobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0xOTEsNyArMTk4LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2NvcmVdLmxvY2spO1xuIFxuLVx0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuK1x0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtMzMzLDcgKzM0MCw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfaW5pdChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtMzU0LDcgKzM2MSw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG4gXHRzdHJ1Y3QgcHBlX21ib3hfZGF0YSAqcHBlX2RhdGE7XG4gXHRpbnQgZXJyO1xuIFxuLVx0cHBlX2RhdGEgPSBremFsbG9jX29iaigqcHBlX2RhdGEpO1xuK1x0cHBlX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKHNpemVvZigqcHBlX2RhdGEpKSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXBwZV9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC0zNzUsNyArMzgyLDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXMoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcdGludCBlcnI7XG4gXG4tXHRwcGVfZGF0YSA9IGt6YWxsb2Nfb2JqKCpwcGVfZGF0YSk7XG4rXHRwcGVfZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUoc2l6ZW9mKCpwcGVfZGF0YSkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHBlX2RhdGEpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTM5OSw3ICs0MDYsNyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuIFx0c3RydWN0IHBwZV9tYm94X2RhdGEgKnBwZV9kYXRhO1xuIFx0aW50IGVycjtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDM0LDcgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfc3RhdHNfc2V0dXAoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcbiBcdGludCBlcnIsIHNpemUgPSBudW1fc3RhdHNfZW50cmllcyAqIHNpemVvZigqbnB1LVx1MDAzZXN0YXRzKTtcbiBcdHN0cnVjdCBwcGVfbWJveF9kYXRhICpwcGVfZGF0YTtcbiBcbi1cdHBwZV9kYXRhID0ga3phbGxvY19vYmooKnBwZV9kYXRhLCBHRlBfQVRPTUlDKTtcbitcdHBwZV9kYXRhID0ga3phbGxvYyhhaXJvaGFfbnB1X21ib3hfc2l6ZShzaXplb2YoKnBwZV9kYXRhKSksIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFwcGVfZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtNDY2LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0aW50IGVyciwgbGVuO1xuIFxuIFx0bGVuID0gc2l6ZW9mKCp3bGFuX2RhdGEpICsgZGF0YV9sZW47XG4tXHR3bGFuX2RhdGEgPSBremFsbG9jKGxlbiwgZ2ZwKTtcbitcdHdsYW5fZGF0YSA9IGt6YWxsb2MoYWlyb2hhX25wdV9tYm94X3NpemUobGVuKSwgZ2ZwKTtcbiBcdGlmICghd2xhbl9kYXRhKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbkBAIC00ODksNyArNDk2LDcgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcbiBcdGludCBlcnIsIGxlbjtcbiBcbiBcdGxlbiA9IHNpemVvZigqd2xhbl9kYXRhKSArIGRhdGFfbGVuO1xuLVx0d2xhbl9kYXRhID0ga3phbGxvYyhsZW4sIGdmcCk7XG4rXHR3bGFuX2RhdGEgPSBremFsbG9jKGFpcm9oYV9ucHVfbWJveF9zaXplKGxlbiksIGdmcCk7XG4gXHRpZiAoIXdsYW5fZGF0YSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMjo1Ny41MTAzMzA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTAyNjczMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGFpcm9oYV9ucHUuY2AgZmlsZSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGFgIGRpcmVjdG9yeS4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBpbXByb3ZlIG1lbW9yeSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYnkgaW50cm9kdWNpbmcgYGFpcm9oYV9ucHVfbWJveF9zaXplYC4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoZSBhbGlnbm1lbnQgdG8gYGRtYV9nZXRfY2FjaGVfYWxpZ25tZW50KClgLiBSaWdodCwgc28gdGhleSdyZSBtYWtpbmcgc3VyZSB0aGUgbGVuZ3RoIGFsaWducyBmb3IgRE1BIG9wZXJhdGlvbnMgd2l0aCBib3RoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYC4gVGhhdCdzIGEgZ29vZCBwcmFjdGljZSwgcHJldmVudGluZyBjYWNoZS1saW5lIGlzc3VlcyB3aGljaCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IHdpdGggbmV0d29ya2luZyBoYXJkd2FyZS5cblxuVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVONzU4MSBFdGhlcm5ldCBjb250cm9sbGVyLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBob3cgb2Z0ZW4gZG9lcyB0aGlzIGNvZGUgYWN0dWFsbHkgcnVuIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiB1c2VkIGluIGFuIGVudmlyb25tZW50IHdoZXJlIGNhY2hlIGFsaWdubWVudCBpc3N1ZXMgd2lsbCBiZSBhIHJlYWwgcHJvYmxlbS4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbGwgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdgIGFuZCBwb3NzaWJseSBgYWlyb2hhX2V0aC5jYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBkZXZpY2UgaXMgZGVmaW5lZC4gTGV0J3Mgc2VlLi4uIHllcCwgaXQncyBhbiBldGhlcm5ldCBkcml2ZXIuXG5cbk9rYXksIGxldCdzIGp1c3QgZ3JlcCBmb3IgYGFpcm9oYV9ucHVgIGluIHRoZSBjb2RlYmFzZSBhbmQgc2VlIHdoZXJlIGVsc2UgaXQncyByZWZlcmVuY2VkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzowMy4xMjA2MDEyMzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2NzgwNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNzExIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYyOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcxOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc2LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTkyLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjkzOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcXHRcXHRcXHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlxcdFxcdFxcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0OlxcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzUtXFx0dmFsID0gKGFkZHJbMF0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBhZGRyWzJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM2OlxcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFx0XFx0XFx0XFx0XFx0dTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MjpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjMtXFx0dTMyIHZpcF9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjYtXFx0aWYgKGVuYWJsZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVxcdGZvciAocCA9IDE7IHAgXFx1MDAzYz0gQVJSQVlfU0laRShldGgtXFx1MDAzZXBvcnRzKTsgcCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRcXHRcXHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVxcdFxcdFxcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODU6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk0OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVxcdC8qIEJPT1RQICgweDQzKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjE4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVxcdC8qIEJPT1RQICgweDQ0KSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI5LVxcdC8qIElTQUtNUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNy1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXFx0LyogREhDUHY2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cXHQvKiBFVEgtXFx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxcdFxcdFxcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc5LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTQ6XFx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVxcdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3OlxcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVxcdC8qIG1vZGlmeSBhbGwgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHRhbGxfcnN2ICs9ICh2YWwgLSBvcmlnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAzLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHQvKiBtb2RpZnkgaHRoZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA2OlxcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA5LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE2LVxcdHRtcCA9ICgzICogdG1wKSBcXHUwMDNlXFx1MDAzZSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTgtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDE6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXFx0XFx0dTMyIGFsbF9yc3Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0NC1cXHRcXHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NTpcXHRcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ2LVxcdFxcdGFsbF9yc3YgKz0gUFNFX1JTVl9QQUdFUyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXFx0XFx0XFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0ODpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDktXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjEtXFx0Zm9yIChxID0gNjsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cXHQvKiBHRE0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjQtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzA6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Mi1cXHQvKiBDRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXFx0Zm9yIChxID0gNDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHQvKiBQUEUyICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4OS1cXHRcXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cXHRcXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA4OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIwOlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMTpcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyMi1cXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXFx0XFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzU6XFx0XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXFx0XFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYwLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDYzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MS1cXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDczLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg1LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NDpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2OlxcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXFx0LyogUFNFIElRIHJlc2VydmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXFx0XFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwNi1cXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXFx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cXHRcXHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTIyLVxcdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHRcXHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cXHRcXHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cXHRcXHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlxcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MTpcXHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cXHRcXHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVxcdFxcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Mi1cXHRcXHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVxcdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVxcdFxcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYyOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2NC1cXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVxcdFxcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY5LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcXHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVxcdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXFx0XFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4My1cXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cXHRpbnQgcWlkID0gcSAtIFxcdTAwMjZxZG1hLVxcdTAwM2VxX3J4WzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTgtXFx0d2hpbGUgKHEtXFx1MDAzZXF1ZXVlZCBcXHUwMDNjIHEtXFx1MDAzZW5kZXNjIC0gMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMwLVxcdGlmIChuZnJhbWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlxcdFxcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVxcdFxcdFxcdFxcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzg6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXFx0dTE2IHAsIGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MDpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcWRtYS1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNldGFpbF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cXHRcXHR1MzIgaGFzaCwgcmVhc29uLCBtc2cxLCBkZXNjX2N0cmw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njk1OlxcdFxcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTYtXFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXFx0XFx0aWYgKG5ldGRldl91c2VzX2RzYShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVxcdFxcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XFx0XFx0XFx0YWlyb2hhX3BwZV9jaGVja19za2IoXFx1MDAyNmV0aC1cXHUwMDNlcHBlLVxcdTAwM2VkZXYsIHEtXFx1MDAzZXNrYiwgaGFzaCxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MDMuMTg2MjgzMDQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM5MTk1NjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBaXJvaGEgRXRoZXJuZXQgRHJpdmVyJ3MgVmlydHVhbGl6YXRpb24gQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIHRoaXMgaXMgdGhlIEFpcm9oYSBFTjc1ODEgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBhaXJvaGFfZXRoLmNgIGFuZCBgYWlyb2hhX25wdS5jYCBmaWxlcy4gU3RhbmRhcmQgc3R1ZmYsIG5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0LiBCdXQgYSBxdWVzdGlvbiBwb3BzIGludG8gbXkgaGVhZDogY2FuIHRoaXMgZHJpdmVyIGFjdHVhbGx5ICp3b3JrKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJcyBpdCBldmVuIGRlc2lnbmVkIHdpdGggdGhhdCBpbiBtaW5kP1xuXG5UbyBiZSBzdXJlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGBLY29uZmlnYCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLiBIb3BlZnVsbHksIHRoZXJlJ3Mgc29tZSBndWlkYW5jZSB0aGVyZSBvbiB3aGV0aGVyIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgaGFzIGJlZW4gY29uc2lkZXJlZCwgb3IgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgaXQuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIGFib3V0IGh5cGVydmlzb3IgaW50ZXJhY3Rpb25zIG9yIGRldmljZSBwYXNzdGhyb3VnaC4gSWYgdGhlcmUncyBub3RoaW5nIGV4cGxpY2l0LCB0aGF0IGNvdWxkIG1lYW4gaXQncyBlaXRoZXIgbm90IHN1cHBvcnRlZCwgb3IsIG1vcmUgY29uY2VybmluZywgdGhhdCBpdCBtaWdodCBoYXZlIHNvbWUgbHVya2luZyBpc3N1ZXMgaWYgdXNlZCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTY5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MDguNTc4MjQyMDQyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTkVUX1ZFTkRPUl9BSVJPSEFcXG4gICAzOlxcdFxcdGJvb2wgXFxcIkFpcm9oYSBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCBDT01QSUxFX1RFU1RcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBBaXJvaGEgU29DIHdpdGggZXRoZXJuZXQsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRpZiBORVRfVkVORE9SX0FJUk9IQVxcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgTkVUX0FJUk9IQV9OUFVcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJBaXJvaGEgTlBVIHN1cHBvcnRcXFwiXFxuICAxMjpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRUdNQVBfTU1JT1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgKE5QVSkgYXZhaWxhYmxlXFxuICAxNjpcXHRcXHQgIG9uIHRoZSBBaXJvaGEgU29jIGZhbWlseS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5FVF9BSVJPSEFcXG4gIDE5OlxcdFxcdHRyaXN0YXRlIFxcXCJBaXJvaGEgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQSB8fCAhTkVUX0RTQVxcbiAgMjE6XFx0XFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXFxuICAyMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBnaWdhYml0IGV0aGVybmV0IE1BQ3MgaW4gdGhlXFxuICAyNTpcXHRcXHQgIEFpcm9oYSBTb0MgZmFtaWx5LlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgTkVUX0FJUk9IQV9GTE9XX1NUQVRTXFxuICAyODpcXHRcXHRkZWZhdWx0IHlcXG4gIDI5OlxcdFxcdGJvb2wgXFxcIkFpcm9oYSBmbG93IHN0YXRzXFxcIlxcbiAgMzA6XFx0XFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBIFxcdTAwMjZcXHUwMDI2IE5FVF9BSVJPSEFfTlBVXFxuICAzMTpcXHRcXHRoZWxwXFxuICAzMjpcXHRcXHQgIEVuYWJsZSBBaXJvaGEgZmxvd3RhYmxlIHN0YXRpc3RpYyBjb3VudGVycy5cXG4gIDMzOlxcdFxcbiAgMzQ6XFx0ZW5kaWYgI05FVF9WRU5ET1JfQUlST0hBXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjA4LjU3ODMwNzk3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzOTI2NTQ0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIGFuZCBpbW1lZGlhdGVseSB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgY2F0Y2ggbXkgZXllOiBgQVJDSF9BSVJPSEFgIG9yIGBDT01QSUxFX1RFU1RgLiBUaGlzIGZlZWxzIGxpa2UgaXTigJlzIGNvbmRpdGlvbmFsLCBlaXRoZXIgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBvdGVudGlhbGx5IHBhcnQgb2YgYSBidWlsZCB0ZXN0IHN1aXRlLiBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBBaXJvaGEgRU43NTgxIFNvQy4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGFjdHVhbGx5IHRlc3QgdGhpcyBpbiBRRU1VPyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiByZXByb2R1Y2UgdGhlIGVudmlyb25tZW50LlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgYSBwbGF0Zm9ybSBkZXZpY2UgaXMgZXZlbiBkZWZpbmVkIGZvciBpdC4gU3l6a2FsbGVyIGlzIGFtYXppbmcsIGJ1dCBldmVuIGl0IGhhcyBsaW1pdGF0aW9ucy4gQWx0aG91Z2gsIEknbSByZW1pbmRpbmcgbXlzZWxmIHRoYXQgc3l6a2FsbGVyIGNhbiBnZW5lcmF0ZSBwbGF0Zm9ybSBkZXZpY2VzIGl0c2VsZiB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3IgcHNldWRvLXN5c2NhbGxzIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0IGtlcm5lbCwgb3IgaWYgaXQgaXMgYSBuZXQgZGV2aWNlIEkgY2FuIHNpbXBseSBmdXp6IHRoZSBpbml0aWFsaXphdGlvbiB2aWEgYHN5el9pbml0X25ldF9kZXZpY2VgLiBXYWl0LCBubywgaXQncyBhIHBsYXRmb3JtIGRldmljZSwgc28gdGhhdCdzIG5vdCBxdWl0ZSByaWdodC5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgbWVhdCBvZiBpdC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogdGhpcyBkcml2ZXIgaXMgYWN0dWFsbHkgcHJvYmVkLiBMZXQncyBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0byBzZWUgdGhlIHByb2Jpbmcgc2VxdWVuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTg4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MTMuOTcwOTY1NDYyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIzMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9Mzk1Mj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NTQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYWlyb2hhX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NTUtXFx0LnByb2JlID0gYWlyb2hhX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTYxLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTYyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTYzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz04MTE9c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODIwOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODIxLVxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyNy19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODI4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzoxNC4wMzA3OTQwNzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Nzc5MzU2MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFN5emthbGxlciBQbGF0Zm9ybSBEcml2ZXIgTXVzaW5ncyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBwbGF0Zm9ybSBkcml2ZXJzIGFuZCBob3cgU3l6a2FsbGVyIGhhbmRsZXMgdGhlbS4gRXNzZW50aWFsbHksIHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UsIFN5emthbGxlciBuZWVkcyB0byBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIHRoZSBkcml2ZXIuIEkga25vdyBpdCBoYXMgYSBmdW5jdGlvbiBsaWtlIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhlIHJlYWwgY2hhbGxlbmdlIGlzIHRoYXQgc3BlY2lmaWMgcGxhdGZvcm0gZGV2aWNlcyBmb3IgY2VydGFpbiBTb0Nz4oCUbGlrZSB0aGUgb25lcyBJJ20gd29ya2luZyB3aXRo4oCUdXN1YWxseSBhcmVuJ3QgaW5zdGFudGlhdGVkIHVubGVzcyBTeXprYWxsZXIgaGFzIGEgZGVkaWNhdGVkIGRlc2NyaXB0aW9uIGZvciB0aGVtLlxuXG5XYWl0IGEgc2Vjb25kLCBhbSBJIGZvcmdldHRpbmcgc29tZXRoaW5nPyBEb2VzIFN5emthbGxlciB1c2UgYHN5el9kZXZsaW5rYCBvciBhIHNpbWlsYXIgY29uc3RydWN0IHRvIGFkZHJlc3MgdGhpcyBwbGF0Zm9ybSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9ibGVtPyBObywgdGhhdCdzIG5vdCByaWdodCwgYHN5el9nZW5ldGxpbmtgIGlzIHJlbGF0ZWQsIGJ1dCB0aGF0J3MgZm9yIGdlbmV0bGluaywgbm90IHBsYXRmb3JtIGRldmljZXMuXG5cbkFoLCByaWdodCwgbm93IGl0J3MgY29taW5nIGJhY2sgdG8gbWUuIFN5emthbGxlciAqY2FuKiBnZW5lcmF0ZSB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGlmIGl0IGhhcyB0aGUgbmVjZXNzYXJ5IGRlc2NyaXB0aW9ucy4gVGhhdCdzIHRoZSBrZXkuIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgd2UgaGF2ZSBhbnkgZXhpc3RpbmcgZGVzY3JpcHRpb25zIGZvciB0aGUgYGFpcm9oYWAgU29DIG9yIHJlbGV2YW50IHBsYXRmb3JtIGRldmljZXMuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MTksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MTkuODEwMTUzNTE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDg2OTMyOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInN5cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjE5Ljg5MTAzMjE1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzgyMjQxMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIEkgY2FuJ3QgdXNlIGBzeXotZ3JlcHBlcmAgb3Igc2VhcmNoIHN5emthbGxlci1zcGVjaWZpYyBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gRmluZSwgSSdsbCB3b3JrIHdpdGggdGhlIGF2YWlsYWJsZSB0b29sczogYGdyZXBwZXJgLCBgY29kZXNlYXJjaC1kaXItaW5kZXhgLCBgcmVhZC1maWxlYCwgYW5kIGBzZXQtcmVzdWx0c2AuXG5cblRoZSByZWFsIGlzc3VlIGhlcmUgaXMgdGhlIHByb21wdCBzYXlzIEkgc2hvdWxkIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBhbmQgYHN5ei1ncmVwcGVyYCBidXQgdGhvc2UgdG9vbHMgYXJlIG1pc3NpbmcuIFRoYXTigJlzIGEgYml0IG9mIGEgcm9hZGJsb2NrLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoaXMgYGFpcm9oYV9ucHVgIGRyaXZlci4gSXMgaXQgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgZnV6emluZyBzZXR1cD8gSXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYW4gQWlyb2hhIFNvQy4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgZHJpdmVycyBhcmUgb25seSByZWFjaGFibGUgaWYgdGhlIFFFTVUgZW52aXJvbm1lbnQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoYXQgcGFydGljdWxhciBTb0MsIG9yIGlmIHN5emthbGxlciBoYXMgYSBjdXN0b20gcHNldWRvLXN5c2NhbGwgdG8gaW5zdGFudGlhdGUgaXQuIEJ1dCwgbm8sIHN5emthbGxlciBkb2Vzbid0IGdlbmVyaWNhbGx5IGluc3RhbnRpYXRlIHBsYXRmb3JtIGRldmljZXMgbGlrZSB0aGF0LiBJdCB3b3VsZCByZXF1aXJlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIGVhY2guXG5cbldhaXQgYSBzZWNvbmTigKZ0aGlzIHBhdGNoIGlzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gRG9lcyB0aGF0IG1lYW4gc3l6a2FsbGVyIGZvdW5kIHNvbWV0aGluZyBpbiB0aGlzIGNvZGU/IEl0IGNlcnRhaW5seSBzdWdnZXN0cyBpdCAqaXMqIHJlYWNoYWJsZSB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudCBpZiBpdCB3YXMgdGFyZ2V0ZWQgYnkgdGhlaXIgY2x1c3Rlci5cblxuQnV0IGhvbGQgb24sIHRoaXMgY291bGQganVzdCBiZSBhIHBhdGNoICpiZWluZyB0ZXN0ZWQqIGJ5IHRoZSBzeXotY2x1c3Rlci4gSXQncyB1bmRlciByZXZpZXcsIGFjY29yZGluZyB0byB0aGUgZGF0ZSBhbmQgYXV0aG9yLiBJdCdzIG5vdCBuZWNlc3NhcmlseSBhIGJ1ZyAqaW4gdGhpcyBjb2RlKiB0aGF0IHdhcyBmb3VuZDsgaXQgY291bGQgYmUgYSBkZXZlbG9wZXIncyBwYXRjaCBiZWluZyB2ZXJpZmllZC5cblxuVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGBkbWFfbWFwX3NpbmdsZWAgYW5kIGBremFsbG9jYCBiZWluZyBjYWxsZWQgd2l0aCB1bmFsaWduZWQgc2l6ZXMsIHdoaWNoIG1pZ2h0IGNhdXNlIERNQSBjYWNoZSBhbGlnbm1lbnQgcHJvYmxlbXMuXG5cblNvLCB0aGUgYmlnIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGRyaXZlciB3b3J0aCBmdXp6aW5nPyBUaGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcywgYnV0IG9ubHkgaWYgaXQncyByZWFjaGFibGUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiBgYWlyb2hhX25wdWAgKmlzKiByZWFjaGFibGUuIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBpdHNlbGYgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM0MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzoyOC42NzMyNzU1NTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzUwOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXTtcXG4gNzUxOlxcdFxcbiA3NTI6XFx0XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNvcmUtXFx1MDAzZWxvY2spO1xcbiA3NTM6XFx0XFx0XFx0Y29yZS1cXHUwMDNlbnB1ID0gbnB1O1xcbiA3NTQ6XFx0XFxuIDc1NTpcXHRcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIGkgKyAxKTtcXG4gNzU2OlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiA3NTc6XFx0XFx0XFx0XFx0cmV0dXJuIGlycTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0XFx0ZXJyID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIGlycSwgYWlyb2hhX25wdV93ZHRfaGFuZGxlcixcXG4gNzYwOlxcdFxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgXFxcImFpcm9oYS1ucHUtd2R0XFxcIiwgY29yZSk7XFxuIDc2MTpcXHRcXHRcXHRpZiAoZXJyKVxcbiA3NjI6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzYzOlxcdFxcbiA3NjQ6XFx0XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZjb3JlLVxcdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XFxuIDc2NTpcXHRcXHR9XFxuIDc2NjpcXHRcXG4gNzY3OlxcdFxcdC8qIHdsYW4gSVJRIGxpbmVzICovXFxuIDc2ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShucHUtXFx1MDAzZWlycXMpOyBpKyspIHtcXG4gNzY5OlxcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSArIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3JlcykgKyAxKTtcXG4gNzcwOlxcdFxcdFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiA3NzE6XFx0XFx0XFx0XFx0cmV0dXJuIGlycTtcXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0XFx0bnB1LVxcdTAwM2VpcnFzW2ldID0gaXJxO1xcbiA3NzQ6XFx0XFx0fVxcbiA3NzU6XFx0XFxuIDc3NjpcXHRcXHRlcnIgPSBkbWFfc2V0X2NvaGVyZW50X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKTtcXG4gNzc3OlxcdFxcdGlmIChlcnIpXFxuIDc3ODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3Nzk6XFx0XFxuIDc4MDpcXHRcXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFxcdTAwMjZyZXMpO1xcbiA3ODE6XFx0XFx0aWYgKGVycilcXG4gNzgyOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCBcXFwiZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXFxcblxcXCIpO1xcbiA3ODM6XFx0XFxuIDc4NDpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEwKSxcXG4gNzg1OlxcdFxcdFxcdCAgICAgcmVzLnN0YXJ0ICsgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFKTtcXG4gNzg2OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX05QVV9NSUIoMTEpLCAweDQwMDAwKTsgLyogU1JBTSAyNTZLICovXFxuIDc4NzpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDEyKSwgMCk7XFxuIDc4ODpcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9OUFVfTUlCKDIxKSwgMSk7XFxuIDc4OTpcXHRcXHRtc2xlZXAoMTAwKTtcXG4gNzkwOlxcdFxcbiA3OTE6XFx0XFx0Lyogc2V0dGluZyBib290aW5nIGFkZHJlc3MgKi9cXG4gNzkyOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOUFVfTlVNX0NPUkVTOyBpKyspXFxuIDc5MzpcXHRcXHRcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9CT09UX0JBU0UoaSksIHJlcy5zdGFydCk7XFxuIDc5NDpcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgMjAwMCk7XFxuIDc5NTpcXHRcXG4gNzk2OlxcdFxcdC8qIGVuYWJsZSBOUFUgY29yZXMgKi9cXG4gNzk3OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfQ09ORklHLCAweGZmKTtcXG4gNzk4OlxcdFxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX0JPT1RfVFJJR0dFUiwgMHgxKTtcXG4gNzk5OlxcdFxcdG1zbGVlcCgxMDApO1xcbiA4MDA6XFx0XFxuIDgwMTpcXHRcXHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxcbiA4MDI6XFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpXFxuIDgwMzpcXHRcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJOUFUgZncgdmVyc2lvbjogJTBkLiVkXFxcXG5cXFwiLFxcbiA4MDQ6XFx0XFx0XFx0XFx0ICh2YWwgXFx1MDAzZVxcdTAwM2UgMTYpIFxcdTAwMjYgMHhmZmZmLCB2YWwgXFx1MDAyNiAweGZmZmYpO1xcbiA4MDU6XFx0XFxuIDgwNjpcXHRcXHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBucHUpO1xcbiA4MDc6XFx0XFxuIDgwODpcXHRcXHRyZXR1cm4gMDtcXG4gODA5OlxcdH1cXG4gODEwOlxcdFxcbiA4MTE6XFx0c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gODEyOlxcdHtcXG4gODEzOlxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gODE0OlxcdFxcdGludCBpO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShucHUtXFx1MDAzZWNvcmVzKTsgaSsrKVxcbiA4MTc6XFx0XFx0XFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXS53ZHRfd29yayk7XFxuIDgxODpcXHR9XFxuIDgxOTpcXHRcXG4gODIwOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbiA4MjE6XFx0XFx0LnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSxcXG4gODIyOlxcdFxcdC5yZW1vdmUgPSBhaXJvaGFfbnB1X3JlbW92ZSxcXG4gODIzOlxcdFxcdC5kcml2ZXIgPSB7XFxuIDgyNDpcXHRcXHRcXHQubmFtZSA9IFxcXCJhaXJvaGEtbnB1XFxcIixcXG4gODI1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXFxuIDgyNjpcXHRcXHR9LFxcbiA4Mjc6XFx0fTtcXG4gODI4OlxcdG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xcbiA4Mjk6XFx0XFxuIDgzMDpcXHRNT0RVTEVfRklSTVdBUkUoTlBVX0VONzU4MV9GSVJNV0FSRV9EQVRBKTtcXG4gODMxOlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfRU43NTgxX0ZJUk1XQVJFX1JWMzIpO1xcbiA4MzI6XFx0TU9EVUxFX0ZJUk1XQVJFKE5QVV9FTjc1ODFfNzk5Nl9GSVJNV0FSRV9EQVRBKTtcXG4gODMzOlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfRU43NTgxXzc5OTZfRklSTVdBUkVfUlYzMik7XFxuIDgzNDpcXHRNT0RVTEVfRklSTVdBUkUoTlBVX0FONzU4M19GSVJNV0FSRV9EQVRBKTtcXG4gODM1OlxcdE1PRFVMRV9GSVJNV0FSRShOUFVfQU43NTgzX0ZJUk1XQVJFX1JWMzIpO1xcbiA4MzY6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiA4Mzc6XFx0TU9EVUxFX0FVVEhPUihcXFwiTG9yZW56byBCaWFuY29uaSBcXHUwMDNjbG9yZW56b0BrZXJuZWwub3JnXFx1MDAzZVxcXCIpO1xcbiA4Mzg6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJBaXJvaGEgTmV0d29yayBQcm9jZXNzb3IgVW5pdCBkcml2ZXJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MjguNjczMzcxNjU1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MjYyMjM4NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQWlyb2hhIE5QVSBEcml2ZXIgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgYG9mX2Fpcm9oYV9ucHVfbWF0Y2hgIHByb2JlIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgbWVhbmluZyB0aGlzIGRyaXZlciByZWxpZXMgb24gYSBkZXZpY2UgdHJlZSBub2RlIGZvciBpbnN0YW50aWF0aW9uLiBUaGF0J3MgaW1tZWRpYXRlbHkgYSByZWQgZmxhZyBmb3Igc3l6a2FsbGVyLCB3aGljaCwgaW4gbW9zdCBjYXNlcywgZG9lc24ndCBqdXN0IGNvbmp1cmUgdXAgYXJiaXRyYXJ5IGRldmljZSB0cmVlIG5vZGVzIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgcHNldWRvLXN5c2NhbGwsIG9yIGl0J3MgYmFrZWQgaW50byB0aGUgaW5pdGlhbCBRRU1VIGltYWdlLiBJJ20gcmVhc29uYWJseSBzdXJlIHN5emthbGxlciBkb2Vzbid0IGR5bmFtaWNhbGx5IGluamVjdCBub2RlcywgYXQgbGVhc3Qgbm90IGluIGFueSBnZW5lcmFsIHdheS4gTWF5YmUgc29tZSBmYW5jeSBvdmVybGF5cywgYnV0IHVzdWFsbHksIHRoYXQncyBhIG5vLWdvLlxuXG5HaXZlbiB0aGlzIHJlbGlhbmNlIG9uIHRoZSBkZXZpY2UgdHJlZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaW1pdGluZyBhY2Nlc3MsIEkgbmVlZCB0byBtYWtlIGEganVkZ21lbnQgY2FsbC4gSWYgdGhpcyBkcml2ZXIgaXMgZWZmZWN0aXZlbHkgdW5yZWFjaGFibGUgaW4gdHlwaWNhbCBmdXp6aW5nIGVudmlyb25tZW50cywgSSBzaG91bGQgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5MZXQgbWUgcXVpY2tseSBzZWUgaWYgdGhlcmUncyBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBBaXJvaGEgRU43NTgxLiBObyBzdGFuZGFyZCBRRU1VIG1hY2hpbmUgZXhpc3RzIGZvciB0aGF0IHBsYXRmb3JtLiBOb3cgSSdtIHRoaW5raW5nLCBjb3VsZCBpdCBiZSByZWFjaGVkIHZpYSBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIGxpa2UgdGhhdD8gQnV0IG5vLCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGVwIGJhY2suIElzIGBhaXJvaGFfbnB1X3Byb2JlYCBjYWxsZWQgZnJvbSAqYW55d2hlcmUqIGVsc2U/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3MgYSBzdGFuZGFyZCBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uXG5cbkhtbSwgb2theS4gT25lIGxhc3QgcXVpY2sgY2hlY2s6IGFyZSB0aGVyZSBhbnkgYHN5el9gIHBzZXVkby1zeXNjYWxscyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEFpcm9oYSBoYXJkd2FyZT8gSWYgdGhlcmUgd2VyZSwgdGhhdCB3b3VsZCBvcGVuIGEgZG9vciwgYnV0IEkgZG9uJ3QgcmVjYWxsIHNlZWluZyBhbnkuIFRoaXMgaXMgbG9va2luZyBsaWtlIGEgZGVhZCBlbmQgZm9yIGRpcmVjdCBmdXp6aW5nIHRocm91Z2ggc3l6a2FsbGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTA2OSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjEzOjM3LjA5OTU5Nzk3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MDI0MTkxLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6MzcuMjA3NjMwODczWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDM3ODc5NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWlyb2hhIEV0aGVybmV0IERyaXZlciBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgY29uZmlybWVkIHRoZSBwcmVzZW5jZSBvZiB0aGUgYGFpcm9oYWAgZHJpdmVyIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gVGhlIHByb21wdCdzIGNyaXRlcmlhIGFyZSBrZXk6IHdlJ3JlIGxvb2tpbmcgZm9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5UaGlzIGBhaXJvaGFgIGRyaXZlciBpcyB2ZW5kb3Itc3BlY2lmaWMsIGFuIFNvQyBldGhlcm5ldC9OUFUgZHJpdmVyIGZvciBhbiBBaXJvaGEgU29DLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBJdCBuZWVkcyBwaHlzaWNhbCBBaXJvaGEgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBEb2VzIHN0YW5kYXJkIFFFTVUgZXZlbiBlbXVsYXRlIHRoZSBBaXJvaGEgRU43NTgxPyBIaWdobHkgdW5saWtlbHksIGdpdmVuIGl0cyByZWxhdGl2ZSBvYnNjdXJpdHkgYXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5J3MgU29DLiBJIGNhbid0IGVhc2lseSBjaGVjayB0aGUgUUVNVSBzb3VyY2UsIGJ1dCBiYXNlZCBvbiBteSBleHBlcmllbmNlLCBpdCdzIGEgbG9uZyBzaG90LlxuXG5UaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBvcmlnaW5hdGVzIGZyb20gYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYCBnaXZlcyBtZSBwYXVzZS4gV2h5IHdvdWxkIHN5emthbGxlciBmaW5kIGEgYnVnIGhlcmUgaWYgaXQncyBub3QgbGlrZWx5IHRvIGJlIGFjY2Vzc2libGU/IFRoZW4sIEkgcmVtZW1iZXIgc3l6a2FsbGVyIGNhbiBvcGVyYXRlIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBsaWtlIEFuZHJvaWQgcGhvbmVzIG9yIHNwZWNpZmljIHJvdXRlcnMuIENvdWxkIHN5emthbGxlciBiZSBydW5uaW5nIG9uIHBoeXNpY2FsIEFpcm9oYSBib2FyZHM/IFBvdGVudGlhbGx5LlxuXG5Ib3dldmVyLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgY29kZSB0aGF0J3MgKmltcG9zc2libGUqIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIEFpcm9oYSBkcml2ZXIsIG5lZWRpbmcgZWl0aGVyIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHZlcnkgc3BlY2lmaWMsIG5vbi1zdGFuZGFyZCBRRU1VIGVtdWxhdGlvbiwgY2xlYXJseSBmaXRzIHRoYXQgZGVmaW5pdGlvbi5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIGFza3MgYWJvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIHJlYWNoaW5nIHRoaXMgdGhyb3VnaCBzeXprYWxsZXIncyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYCBvciBhIHNpbWlsYXIgY29uc3RydWN0LCBidXQgSSBjYW4ndCBkaXJlY3RseSBpbnNwZWN0IHN5emthbGxlcidzIGBzeXMvKi50eHRgIGZpbGVzLiBIb3dldmVyLCBldmVuIGlmIHN5emthbGxlciBjcmVhdGVzIGEgcGxhdGZvcm0gZGV2aWNlLCB0aGUgZHJpdmVyIHVzZXMgYGRldm1faW9yZW1hcF9yZXNvdXJjZWAsIGBwbGF0Zm9ybV9nZXRfaXJxYCwgYW5kIG90aGVyIGhhcmR3YXJlLXNwZWNpZmljIGZ1bmN0aW9ucy4gSXQgd291bGQgbmVlZCByZWFsIE1NSU8gcmVnaXN0ZXJzIHRvIHByZXZlbnQgYW4gaW1tZWRpYXRlIGNyYXNoIG9yIHByb2JlIGZhaWx1cmUuXG5cblRvIGJlIHRob3JvdWdoLCBJJ2xsIG5lZWQgdG8gYnJpZWZseSBjaGVjayB3aGF0IGBhaXJvaGFfbnB1X3Byb2JlYCBkb2VzLCBqdXN0IHRvIGNvbmZpcm0gbXkgYXNzZXNzbWVudCwgYnV0IGl0J3MgdmVyeSBsaWtlbHkgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc2MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxMzo0Ny42NDU1MTM5NDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY4MDpcXHRcXHRcXHQubmFtZSA9IE5QVV9BTjc1ODNfRklSTVdBUkVfREFUQSxcXG4gNjgxOlxcdFxcdFxcdC5tYXhfc2l6ZSA9IE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRSxcXG4gNjgyOlxcdFxcdH0sXFxuIDY4MzpcXHR9O1xcbiA2ODQ6XFx0XFxuIDY4NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XFxuIDY4NjpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcImFpcm9oYSxlbjc1ODEtbnB1XFxcIiwgLmRhdGEgPSBcXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxcbiA2ODc6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsYW43NTgzLW5wdVxcXCIsIC5kYXRhID0gXFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcXG4gNjg4OlxcdFxcdHsgLyogc2VudGluZWwgKi8gfVxcbiA2ODk6XFx0fTtcXG4gNjkwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2Fpcm9oYV9ucHVfbWF0Y2gpO1xcbiA2OTE6XFx0XFxuIDY5MjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgcmVnbWFwX2NvbmZpZyA9IHtcXG4gNjkzOlxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwibnB1XFxcIixcXG4gNjk0OlxcdFxcdC5yZWdfYml0c1xcdFxcdD0gMzIsXFxuIDY5NTpcXHRcXHQudmFsX2JpdHNcXHRcXHQ9IDMyLFxcbiA2OTY6XFx0XFx0LnJlZ19zdHJpZGVcXHRcXHQ9IDQsXFxuIDY5NzpcXHRcXHQuZGlzYWJsZV9sb2NraW5nXFx0PSB0cnVlLFxcbiA2OTg6XFx0fTtcXG4gNjk5OlxcdFxcbiA3MDA6XFx0c3RhdGljIGludCBhaXJvaGFfbnB1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDcwMTpcXHR7XFxuIDcwMjpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiA3MDM6XFx0XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcXG4gNzA0OlxcdFxcdHN0cnVjdCByZXNvdXJjZSByZXM7XFxuIDcwNTpcXHRcXHR2b2lkIF9faW9tZW0gKmJhc2U7XFxuIDcwNjpcXHRcXHRpbnQgaSwgaXJxLCBlcnI7XFxuIDcwNzpcXHRcXHR1MzIgdmFsO1xcbiA3MDg6XFx0XFxuIDcwOTpcXHRcXHRiYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbiA3MTA6XFx0XFx0aWYgKElTX0VSUihiYXNlKSlcXG4gNzExOlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKGJhc2UpO1xcbiA3MTI6XFx0XFxuIDcxMzpcXHRcXHRucHUgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm5wdSksIEdGUF9LRVJORUwpO1xcbiA3MTQ6XFx0XFx0aWYgKCFucHUpXFxuIDcxNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gNzE2OlxcdFxcbiA3MTc6XFx0XFx0bnB1LVxcdTAwM2VkZXYgPSBkZXY7XFxuIDcxODpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2luaXQ7XFxuIDcxOTpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfZGVpbml0ID0gYWlyb2hhX25wdV9wcGVfZGVpbml0O1xcbiA3MjA6XFx0XFx0bnB1LVxcdTAwM2VvcHMucHBlX2luaXRfc3RhdHMgPSBhaXJvaGFfbnB1X3BwZV9zdGF0c19zZXR1cDtcXG4gNzIxOlxcdFxcdG5wdS1cXHUwMDNlb3BzLnBwZV9mbHVzaF9zcmFtX2VudHJpZXMgPSBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXM7XFxuIDcyMjpcXHRcXHRucHUtXFx1MDAzZW9wcy5wcGVfZm9lX2NvbW1pdF9lbnRyeSA9IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeTtcXG4gNzIzOlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5faW5pdF9yZXNlcnZlZF9tZW1vcnkgPSBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnk7XFxuIDcyNDpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX3NlbmRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kO1xcbiA3MjU6XFx0XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9nZXRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19nZXQ7XFxuIDcyNjpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX2dldF9xdWV1ZV9hZGRyID0gYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0O1xcbiA3Mjc6XFx0XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9zZXRfaXJxX3N0YXR1cyA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX3NldDtcXG4gNzI4OlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X2lycV9zdGF0dXMgPSBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19nZXQ7XFxuIDcyOTpcXHRcXHRucHUtXFx1MDAzZW9wcy53bGFuX2VuYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZTtcXG4gNzMwOlxcdFxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZGlzYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGU7XFxuIDczMTpcXHRcXG4gNzMyOlxcdFxcdG5wdS1cXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgYmFzZSwgXFx1MDAyNnJlZ21hcF9jb25maWcpO1xcbiA3MzM6XFx0XFx0aWYgKElTX0VSUihucHUtXFx1MDAzZXJlZ21hcCkpXFxuIDczNDpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihucHUtXFx1MDAzZXJlZ21hcCk7XFxuIDczNTpcXHRcXG4gNzM2OlxcdFxcdGVyciA9IG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2UoZGV2LVxcdTAwM2VvZl9ub2RlLCAwLCBcXHUwMDI2cmVzKTtcXG4gNzM3OlxcdFxcdGlmIChlcnIpXFxuIDczODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3Mzk6XFx0XFxuIDc0MDpcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xcbiA3NDE6XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc0MjpcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NDM6XFx0XFxuIDc0NDpcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcXG4gNzQ1OlxcdFxcdFxcdFxcdCAgICAgICBJUlFGX1NIQVJFRCwgXFxcImFpcm9oYS1ucHUtbWJveFxcXCIsIG5wdSk7XFxuIDc0NjpcXHRcXHRpZiAoZXJyKVxcbiA3NDc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNzQ4OlxcdFxcbiA3NDk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbiA3NTA6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFxcdTAwMjZucHUtXFx1MDAzZWNvcmVzW2ldO1xcbiA3NTE6XFx0XFxuIDc1MjpcXHRcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2Y29yZS1cXHUwMDNlbG9jayk7XFxuIDc1MzpcXHRcXHRcXHRjb3JlLVxcdTAwM2VucHUgPSBucHU7XFxuIDc1NDpcXHRcXG4gNzU1OlxcdFxcdFxcdGlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgaSArIDEpO1xcbiA3NTY6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc1NzpcXHRcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NTg6XFx0XFxuIDc1OTpcXHRcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxcbiA3NjA6XFx0XFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBcXFwiYWlyb2hhLW5wdS13ZHRcXFwiLCBjb3JlKTtcXG4gNzYxOlxcdFxcdFxcdGlmIChlcnIpXFxuIDc2MjpcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA3NjM6XFx0XFxuIDc2NDpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNmNvcmUtXFx1MDAzZXdkdF93b3JrLCBhaXJvaGFfbnB1X3dkdF93b3JrKTtcXG4gNzY1OlxcdFxcdH1cXG4gNzY2OlxcdFxcbiA3Njc6XFx0XFx0Lyogd2xhbiBJUlEgbGluZXMgKi9cXG4gNzY4OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cXHUwMDNlaXJxcyk7IGkrKykge1xcbiA3Njk6XFx0XFx0XFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBpICsgQVJSQVlfU0laRShucHUtXFx1MDAzZWNvcmVzKSArIDEpO1xcbiA3NzA6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDc3MTpcXHRcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRcXHRucHUtXFx1MDAzZWlycXNbaV0gPSBpcnE7XFxuIDc3NDpcXHRcXHR9XFxuIDc3NTpcXHRcXG4gNzc2OlxcdFxcdGVyciA9IGRtYV9zZXRfY29oZXJlbnRfbWFzayhkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiA3Nzc6XFx0XFx0aWYgKGVycilcXG4gNzc4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDc3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6MTM6NDcuNjQ1NzYyNDUyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTIzNDU4MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBBaXJvaGEgRU43NTgxIE5QVSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpczogdGhpcyBwYXRjaCB0YXJnZXRzIHRoZSBBaXJvaGEgRU43NTgxIFNvQydzIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlci4gVGhlIHVzZSBvZiBmdW5jdGlvbnMgbGlrZSBgZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlYCwgYG9mX3Jlc2VydmVkX21lbV9yZWdpb25fdG9fcmVzb3VyY2VgLCBhbmQgYHBsYXRmb3JtX2dldF9pcnFgIHNjcmVhbXMgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGltcGxpZXMgYSBkZXBlbmRlbmN5IG9uIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCBhc3NvY2lhdGVkIGRldmljZSB0cmVlIGVudHJpZXMgYW5kIElSUSBjb25maWd1cmF0aW9ucywgd2hpY2ggYXJlIG5vdCByZWFkaWx5IGF2YWlsYWJsZSBpbiB0eXBpY2FsIFFFTVUgc2V0dXBzIHdpdGhvdXQgc2lnbmlmaWNhbnQgZGV2aWNlIHRyZWUgbW9kaWZpY2F0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gY29uc2lkZXIgd2hldGhlciBzeXprYWxsZXIgY291bGQgYmUgZnV6emluZyB0aGlzIGluZGlyZWN0bHkuIEJ1dCwgdGhpcyBpc24ndCBhIE5ldGxpbmsgZmFtaWx5LCBzbyBgc3l6X2dlbmV0bGlua2AgaXMgb3V0LiBUaGUgcGF0Y2ggdG91Y2hlcyBgYWlyb2hhX25wdV9zZW5kX21zZ2AsIGJ1dCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIG1ha2luZyBpdCBoYXJkZXIgdG8gcmVhY2ggd2l0aG91dCBkaXJlY3QgbW9kaWZpY2F0aW9uIHRvIGNhbGxpbmcgZnVuY3Rpb25zLlxuXG5UaGUgcGF0Y2ggbW9kaWZpZXMgc2V2ZXJhbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgbnB1LVx1MDAzZW9wc2Agc3RydWN0dXJlIChgYWlyb2hhX25wdV9zZW5kX21zZ2AsIGBhaXJvaGFfbnB1X3BwZV9pbml0YCwgZXRjLiksIHdoaWNoIGFyZSB0aGVuIGNhbGxlZCBieSBgYWlyb2hhX2V0aC5jYC4gU28gSSdsbCBjaGVjayBgYWlyb2hhX2V0aC5jYC4gTG8gYW5kIGJlaG9sZCwgaXQncyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGggdGhlIHNhbWUgaGFyZHdhcmUgZGVwZW5kZW5jaWVzISBUaGUgY29tcGxldGUgQWlyb2hhIGV0aGVybmV0IGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgYSBzcGVjaWZpYyBTeXN0ZW0gb24gYSBDaGlwIChTb0MpLlxuXG5TbywgY291bGQgc3l6a2FsbGVyIGJlIHRhcmdldGluZyBhIHBoeXNpY2FsIEFpcm9oYSBib2FyZD8gWWVzLCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IHRoYXQuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgaXMgZXhwbGljaXQ6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLiBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMuLi4gZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwuLi4gaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTb0MgZHJpdmVyIChBaXJvaGEgRU43NTgxKSB0aGF0IHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBJdCdzIGluIHRoZSBzYW1lIGNhdGVnb3J5IGFzIFBDSWUgc3dpdGNoL1NtYXJ0TklDIGRyaXZlcnMgbWVudGlvbmVkIGluIHRoZSBwcm9tcHQuIFRoZXJlZm9yZSwgSSdtIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSSB3YW50IHRvIGJlIHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSBvYnNjdXJlIFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIEFpcm9oYSBTb0MuIFdoaWxlIEkgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIFFFTVUgc291cmNlIHJpZ2h0IG5vdywgSSBrbm93IHRoYXQgQWlyb2hhIEVONzU4MSBpcyBhbiBBUk0gQ29ydGV4LUE1MyBTb0MsIGxpa2VseSBmcm9tIHRoZSBNZWRpYVRlayBNVDc5ODEvTVQ3OTg2IGZhbWlseSwgYW5kIHN0YW5kYXJkIFFFTVUgZG9lc24ndCBvZmZlciBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgcGxhdGZvcm0uXG5cbkV2ZW4gaWYgSSBhc3N1bWUgc29tZSBzb3J0IG9mIHNvZnR3YXJlIGVtdWxhdGlvbiwgdGhlIGRyaXZlciBkaXJlY3RseSBpbnRlcmFjdHMgd2l0aCBNTUlPIHJlZ2lzdGVycyB1c2luZyBgcmVnbWFwX3dyaXRlYCwgYGFpcm9oYV9mZV93cmAsIGV0Yy4sIGFuZCBleHBlY3RzIHNwZWNpZmljIGhhcmR3YXJlIHJlc3BvbnNlcy4gV2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlLCBpdCB3b3VsZCBqdXN0IGhhbmcgb3IgZmFpbCBpbW1lZGlhdGVseS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgbW9yZSBjbG9zZWx5LiBJdCBhZGRzIGBhaXJvaGFfbnB1X21ib3hfc2l6ZWAgYW5kIHVzZXMgaXQgZm9yIERNQSBidWZmZXIgc2l6ZSBhbGlnbm1lbnQgd2l0aCBgZG1hX21hcF9zaW5nbGVgIGFuZCBga3phbGxvY2AuIFRoaXMgaXMgYSBETUEgY2FjaGUgYWxpZ25tZW50IGlzc3VlIGZpeC4gU2luY2UgaXQncyBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0J3MgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB0aGF0IGNvbmZpcm1zIG15IGluaXRpYWwgYW5hbHlzaXMuIEknbSBzdGlja2luZyB3aXRoIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JbiBzdW1tYXJ5OiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgKSB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBTb0MgaGFyZHdhcmUgdG8gcHJvYmUgYW5kIGV4ZWN1dGUuIEl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcywgTU1JTyByZWdpc3RlcnMsIGFuZCBJUlFzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIHN0YW5kYXJkIGZ1enppbmcuIFRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgc2hvdWxkIGJlIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzM0LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzoxNDowMy4xNjkyMjQ4NjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIEVONzU4MSBTb0MgbmV0d29yayBwcm9jZXNzb3IgKE5QVSkgZHJpdmVyIHRvIGFsaWduIERNQSBidWZmZXIgc2l6ZXMgdG8gdGhlIGNhY2hlIGxpbmUgc2l6ZS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgU29DIGhhcmR3YXJlIHRvIHByb2JlIGFuZCBleGVjdXRlLiBJdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMsIE1NSU8gcmVnaXN0ZXJzLCBhbmQgSVJRcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBzdGFuZGFyZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBFTjc1ODEgU29DIG5ldHdvcmsgcHJvY2Vzc29yIChOUFUpIGRyaXZlciB0byBhbGlnbiBETUEgYnVmZmVyIHNpemVzIHRvIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFNvQyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgZXhlY3V0ZS4gSXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzLCBNTUlPIHJlZ2lzdGVycywgYW5kIElSUXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgc3RhbmRhcmQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjE0OjAzLjE2OTI2NDM4NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowth5cl[1] Phase: Running StartedAt: 2026-08-18 07:14:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowth5cl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-18 07:14:14 +0000 UTC FinishedAt: 2026-08-18 07:14:19 +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,}