Name: series-workflow4jfxm Phase: Failed StartedAt: 2026-09-11 11:33:20 +0000 UTC FinishedAt: 2026-09-11 12:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4jfxm[0] Phase: Succeeded StartedAt: 2026-09-11 11:33:20 +0000 UTC FinishedAt: 2026-09-11 12:03:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4jfxm[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 11:33:20 +0000 UTC FinishedAt: 2026-09-11 12:03:59 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMTBjZTllNDU2MjA4NDM0ZDEzNWE2NWIxODQxMTU0YzQxYzg4ZDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTI6MDI6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTU0OCw4ICYjNDM7NTQ4LDEyIEBAIHN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIFx0c3dpdGNoIChlbnRyeS1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIE9QX1dSSVRFOlxuLVx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIGRldiwgYWRkcixcbi1cdFx0XHRcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuJiM0MztcdFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpO1xuJiM0MztcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxMGNlOWU0NTYyMDg0MzRkMTM1YTY1YjE4NDExNTRjNDFjODhkNjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAxMjowMjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKQEAgLTU0OCw4ICYjNDM7NTQ4LDEyIEBAIHN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiAJc3dpdGNoIChlbnRyeS0mZ3Q7dHlwZSkgewogCWNhc2UgT1BfV1JJVEU6Ci0JCXJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLAotCQkJCSAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSAmbHQ7Jmx0OyBsc2IpICZhbXA7IEdFTk1BU0sobXNiLCBsc2IpKTsKJiM0MzsJCWlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApCiYjNDM7CQkJcmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLAomIzQzOwkJCQkJICAgICAodmFsdWUgJmx0OyZsdDsgbHNiKSAmYW1wOyBHRU5NQVNLKG1zYiwgbHNiKSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpOwomIzQzOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGJlaW5nIGNoYW5nZWQgaW4gdGhlIGBydGw4MjYxeGAgUEhZIGRyaXZlciwgYW5kIHdoeS4gVGhlIGRpZmYgaXRzZWxmIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLiBJJiMzOTttIHNlZWluZyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgTU1EIChNYW5hZ2VtZW50IE1vZGUgRGF0YSkgcmVnaXN0ZXIgd3JpdGVzIHdpdGhpbiB0aGUgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGZ1bmN0aW9uLgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgY29uZGl0aW9uYWwgaGFzIGJlZW4gaW50cm9kdWNlZCB3aXRoaW4gdGhlIGBPUF9XUklURWAgY2FzZS4gQmVmb3JlLCBpdCBzZWVtcyB3ZSBhbHdheXMgY2FsbGVkIGBwaHlfbW9kaWZ5X21tZGAuIE5vdywgdGhlcmUmIzM5O3MgYSBjaGVjazogYGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApYC4gSWYgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSwgd2Ugc3RpbGwgY2FsbCBgcGh5X21vZGlmeV9tbWRgLiBIb3dldmVyLCBpZiBgbXNiYCBpcyAxNSBhbmQgYGxzYmAgaXMgMCwgd2UmIzM5O3JlIG5vdyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYCBpbnN0ZWFkLgoKTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzIGxpa2VseSBoYXMgdG8gZG8gd2l0aCBob3cgd2UmIzM5O3JlIHdyaXRpbmcgdG8gc3BlY2lmaWMgTU1EIHJlZ2lzdGVycy4gVGhlIG9yaWdpbmFsIGBwaHlfbW9kaWZ5X21tZGAgcHJlc3VtYWJseSBoYW5kbGVzIGJpdC1maWVsZCBtb2RpZmljYXRpb25zIHdpdGhpbiBhbiBNTUQgcmVnaXN0ZXIuIFRoZSBuZXcgYHBoeV93cml0ZV9tbWRgLCBpbiBjb250cmFzdCwgbWlnaHQgYmUgaW50ZW5kZWQgZm9yIGZ1bGwgcmVnaXN0ZXIgd3JpdGVzIHdoZW4gYWxsIGJpdHMgYXJlIGJlaW5nIHNldC4gVGhlIGNoZWNrIGAobXNiICE9IDE1IHx8IGxzYiAhPSAwKWAgcHJvYmFibHkgaW5kaWNhdGVzIHdlJiMzOTtyZSBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIG1vZGlmeWluZyBhIHN1YnNldCBvZiBiaXRzIGFuZCB3cml0aW5nIHRoZSBlbnRpcmUgcmVnaXN0ZXIgY29udGVudHMuCgpJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIHByb2JhYmx5IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIHRvIGJlIHN1cmUgLSBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNvcnJlY3RuZXNzIGZpeC4gTWF5YmUgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGhhZCBzb21lIGFzc3VtcHRpb25zIGFyb3VuZCBmdWxsIHJlZ2lzdGVyIHdyaXRlcyB0aGF0IHdlcmUgaW5jb3JyZWN0LiBPciwgcG9zc2libHksIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudGlyZSBmaWxlLiBFaXRoZXIgd2F5LCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRoYXQgZGVzZXJ2ZXMgY2FyZWZ1bCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MzA6XHRcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbiA1MzE6XHRcdGxzYiA9IGVudHJ5LVx1MDAzZWxzYjtcbiA1MzI6XHRcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXHUwMDNldmFsdWUpO1xuIDUzMzpcdFx0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuIDUzNDpcdFx0cG9sbF9zZXQgPSBlbnRyeS1cdTAwM2Vwb2xsX3NldDtcbiA1MzU6XHRcbiA1MzY6XHRcdGlmICh0aW1lb3V0X21zID09IDApXG4gNTM3Olx0XHRcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XG4gNTM4Olx0XG4gNTM5Olx0XHRpZiAoZGV2IFx1MDAzZSBSVEw4MjYxWF9NQVhfTU1EX0RFVikge1xuIDU0MDpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7aW52YWxpZCBmaXJtd2FyZSBNTUQgZGV2aWNlOiBkZXY9JXVcXG5cJiMzNDssIGRldik7XG4gNTQxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU0MjpcdFx0fVxuIDU0MzpcdFxuIDU0NDpcdFx0aWYgKG1zYiBcdTAwM2UgMTUgfHwgbHNiIFx1MDAzZSBtc2IpIHtcbiA1NDU6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSV1LCBsc2I9JXVcXG5cJiMzNDssIG1zYiwgbHNiKTtcbiA1NDY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTQ3Olx0XHR9XG4gNTQ4Olx0XG4gNTQ5Olx0XHRzd2l0Y2ggKGVudHJ5LVx1MDAzZXR5cGUpIHtcbiA1NTA6XHRcdGNhc2UgT1BfV1JJVEU6XG4gNTUxOlx0XHRcdGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApXG4gNTUyOlx0XHRcdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxuIDU1MzpcdFx0XHRcdFx0XHQgICAgICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuIDU1NDpcdFx0XHRlbHNlXG4gNTU1Olx0XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpO1xuIDU1NjpcdFxuIDU1NzpcdFx0XHRpZiAocmV0KVxuIDU1ODpcdFx0XHRcdHJldHVybiByZXQ7XG4gNTU5Olx0XHRcdGJyZWFrO1xuIDU2MDpcdFxuIDU2MTpcdFx0Y2FzZSBPUF9QT0xMOlxuIDU2MjpcdFx0XHRiaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7XG4gNTYzOlx0XHRcdGV4cGVjdF92YWwgPSAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IGJpdHM7XG4gNTY0Olx0XG4gNTY1Olx0XHRcdGlmIChwb2xsX3NldClcbiA1NjY6XHRcdFx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXG4gNTY3Olx0XHRcdFx0XHRcdFx0XHQodmFsIFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxuIDU2ODpcdFx0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiA1Njk6XHRcdFx0ZWxzZVxuIDU3MDpcdFx0XHRcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcbiA1NzE6XHRcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXG4gNTcyOlx0XHRcdFx0XHRcdFx0XHQxMDAwLCB0aW1lb3V0X21zICogMTAwMCwgZmFsc2UpO1xuIDU3MzpcdFx0XHRpZiAocmV0KVxuIDU3NDpcdFx0XHRcdHJldHVybiByZXQ7XG4gNTc1Olx0XHRcdGJyZWFrO1xuIDU3NjpcdFxuIDU3NzpcdFx0ZGVmYXVsdDpcbiA1Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTc5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSBDYWxsKioKCk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZG8gaXMgdHJhY2UgZG93biB3aGVyZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgaXMgYWN0dWFsbHkgKmNhbGxlZCouIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgbGFyZ2VyIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQmIzM5O3MgcGFydCBvZiBhIFJlYWx0ZWsgbmV0d29yayBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIHVzaW5nIHRoZSBgcnRsODI2MXhgIGNoaXBzZXQsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGxpa2VseSBpbnZvbHZlcyBhIGhhcmR3YXJlIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGRyaXZlciBkb2VzLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGFzc29jaWF0ZWQgY29kZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgdGhlIGVudHJ5IHBvaW50LiBPbmNlIEkgZG8gdGhhdCwgSSYjMzk7bGwgcmV2aWV3IGhvdyBpdCYjMzk7cyBleGVjdXRlZCwgaG93IHRoZSBkYXRhIGlzIGhhbmRsZWQsIGFuZCB3aGF0IGlucHV0cyBhbmQgb3V0cHV0cyBhcmUgdXNlZC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYW55IGRhdGEgb3IgdmFsdWVzIGludm9sdmVkLCBhcyB0aGF0IHdpbGwgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz00NzM9c3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1MjA6c3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MjEtXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTg0PXN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwOTpcdFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYxMC1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgcnRsODI2MXhfZndfbG9hZCBGdW5jdGlvbiBDYWxsZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCBvZiBgcnRsODI2MXhfZndfbG9hZGAuIExldCYjMzk7cyBnZXQgcmlnaHQgdG8gaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2ssIHRvIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBgcnRsODI2MXhfZndfbG9hZGAgZnVuY3Rpb24gaXRzZWxmIGlzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGVudHJ5IHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hvKiBvciAqd2hhdCogaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYXRpbmcgdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGltbWVkaWF0ZSBjYWxsZXJzLCBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJyb2FkZXIgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aG9zZSBjYWxscyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgZmlybXdhcmUgbG9hZCBhbmQgd2hhdCBldmVudHMgYXJlIGRyaXZpbmcgdGhpcyBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTIwPXN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4My1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NzAwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MDgtXHRpZiAocHJpdi1cdTAwM2Vmd19uYW1lIFx1MDAyNlx1MDAyNiAhcHJpdi1cdTAwM2Vmd19sb2FkZWQpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDk6XHRcdHJldHVybiBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgUEhZIERyaXZlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgaGVhcnQgb2YgaXQg4oCTIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGBwaHlfZHJpdmVyYCBkZWZpbml0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgUEhZIGRldmljZSBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIExpbnV4IG5ldHdvcmsgc3Vic3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBkcml2ZXIgc3RydWN0dXJlOiB0aGUgcHJvYmUsIHJlbW92ZSwgYW5kIHBvc3NpYmx5IHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucy4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgdGhlIHNwZWNpZmljIGBpZF90YWJsZWAgb3Igb3RoZXIgaWRlbnRpZmljYXRpb24gbWVjaGFuaXNtIHVzZWQgdG8gbWF0Y2ggdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuIEnigJlsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoZXJlIHRoYXQgbGVhZHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgyNjF4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI5Mj1NT0RVTEVfRklSTVdBUkUoUlRMODI2MUNfQ0VfRldfTkFNRSk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTMtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTQ6ZW51bSBydGw4MjYxeF9md19vcCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTUtXHRPUF9XUklURSA9IDB4MDAsXHQvKiBXcml0ZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5OTpzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMC1cdF9fbGUzMiBtYWluX21hZ2ljO1x0LyogTWFpbiBtYWdpYyBudW1iZXIgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMDk6c3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5IHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMC1cdF9fdTggIHR5cGU7XHRcdC8qIE9wZXJhdGlvbiB0eXBlIChPUF8qKSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMTojZGVmaW5lIEZXX0hFQURFUl9TSVpFXHRcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIyOiNkZWZpbmUgRldfRU5UUllfU0laRVx0XHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMzMT1zdHJ1Y3QgcnRsODIxeF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDEtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDI6c3RydWN0IHJ0bDgyNjF4X3ByaXYge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQzLVx0Y29uc3QgY2hhciAqZndfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zNzI9c3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzg2LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mzg3OnN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4OC17XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zODktXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozOTA6XHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5MS1cdGludCBzdWJfcGh5X2lkLCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDI3LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDI4OnN0YXRpYyBpbnQgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ0NzpzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00NDgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3MzpzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDc0LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3NTpcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKmhkcjtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Ni1cdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg1LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDg2Olx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUxOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMTpcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeSlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUyMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTgzLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg0OnN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg1LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NjpcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1ODc6XHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg4Olx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg5LVx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDAtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDE6XHRyZXQgPSBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUocGh5ZGV2LCBmdyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwNTpcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwNzpcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cdTAwM2VkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwOTpcdFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYxMC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYyMi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYyMzpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MjQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY0OC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjY0OTpzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjUwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Njk6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjcwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02OTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDA6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzAxLXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwMjpcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzA4LVx0aWYgKHByaXYtXHUwMDNlZndfbmFtZSBcdTAwMjZcdTAwMjYgIXByaXYtXHUwMDNlZndfbG9hZGVkKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NzA5Olx0XHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzEwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzNTUtXHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWVwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTY6XHRcdC5wcm9iZVx0XHRcdD0gcnRsODI2MXhfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU3Olx0XHQuY29uZmlnX2luaXRcdFx0PSBydGw4MjYxeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTg6XHRcdC5nZXRfZmVhdHVyZXNcdFx0PSBydGw4MjYxeF9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU5Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNjA6XHRcdC5yZWFkX3N0YXR1c1x0XHQ9IHJ0bDgyNjF4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM2MTpcdFx0LmNvbmZpZ19pbnRyXHRcdD0gcnRsODI2MXhfY29uZmlnX2ludHIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzYyOlx0XHQuaGFuZGxlX2ludGVycnVwdFx0PSBydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM2My1cdFx0LnNvZnRfcmVzZXRcdFx0PSBnZW5waHlfYzQ1X3BtYV9zb2Z0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODc2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBQSFkgZHJpdmVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCDigJMgYW4gTURJTyBQSFkgY2hpcC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBNRElPIFBIWXMgaW4gZ2VuZXJhbCwgb3IgUmVhbHRlayBvbmVzIHNwZWNpZmljYWxseSwgYXJlIGVtdWxhdGVkIGF0IGFsbCBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIG9yIGlmIHRoaXMgaXMgdGllZCB0byBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuCgpIb2xkIG9uLCBsZXQgbWUgdGFrZSBhIHN0ZXAgYmFjayBhbmQgdGhpbmsgYWJvdXQgaG93IFBIWSBkZXZpY2VzIGFyZSB0eXBpY2FsbHkgaW5zdGFudGlhdGVkLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgbGlrZSBtZGlvLWdwaW8sIG1kaW8tYml0YmFuZywgYSBkdW1teSBQSFksIG9yIGV2ZW4gYSBmaXhlZCBQSFk/IE9yIGNhbiBzeXprYWxsZXIgZXZlbiAqY3JlYXRlKiBNRElPIGRldmljZXMgb3IgdGVzdCBFdGhlcm5ldCBkcml2ZXJzPyBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uLgoKUmlnaHQsIHRpbWUgdG8gZ28gYmFjayB0byBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gU2VjdGlvbiAyIG9mIHRob3NlIGluc3RydWN0aW9ucyBhZ2FpbiwgdGhlIHJlYWNoYWJpbGl0eSBzZWN0aW9uLiBUaGlzIGlzIGtleSwgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyBhbGwgYWJvdXQgd2hhdCYjMzk7cyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiB0aGlzIFJlYWx0ZWsgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSDigJMgaWYgaXQmIzM5O3MgdGllZCB0byBoYXJkd2FyZSB0aGF0JiMzOTtzICpub3QqIGVtdWxhdGVkIOKAkyB0aGVuIHRoZXJlJiMzOTtzIG5vIHBvaW50IGV2ZW4gdHJ5aW5nIHRvIGZ1enogaXQuIEl0IHN0YXRlcyB0aGF0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LgoKQW5kIG5vdywgb25lIG1vcmUgdGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IFJlYWx0ZWsgbW9kZWxzIGFyZSBzaW1pbGFyIHRvIHRoaXMgUlRMODI2MU4gLyBSVEw4MjYxQyAvIFJUTDgyNjQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGNsdWVzIHRoZXJlLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggZmVhdHVyZXMgYXJlIHNoYXJlZCBhbmQgd2hhdCB0aGUgb3B0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQUxURUtfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05Nj1vYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk4LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzo4OmlmIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEyOlx0ZGVwZW5kcyBvbiBIV01PTiBcdTAwMjZcdTAwMjYgIShSRUFMVEVLX1BIWT15IFx1MDAyNlx1MDAyNiBIV01PTj1tKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFJFQUxURUtfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU9Mj1yZWFsdGVrLXlcdFx0XHQmIzQzOz0gcmVhbHRla19tYWluLm9cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjM6cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgJiM0Mzs9IHJlYWx0ZWtfaHdtb24ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXHQmIzQzOz0gcmVhbHRlay5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTgxMj1zdGF0aWMgaW50IHJ0bDgyMnhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MTMte1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgxNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODE1LVx0ICAgIHBoeWRldi1cdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzE4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSRUFMVEVLX1BIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBSRUFMVEVLX1BIWWAgZHJpdmVyLiBJdCYjMzk7cyBmb3IgdGhvc2UgUmVhbHRlayBFdGhlcm5ldCBQSFkgY2hpcHMg4oCTIHRoZSBSVEw4MjExLCBSVEw4MjYxLCBhbmQgc2ltaWxhciBtb2RlbHMg4oCTIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGludGVyZmFjZSB2aWEgdGhlIE1ESU8gYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbi4KCk15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgYHJ0bDgyNjF4X3Byb2JlYCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YCBhcmUgdXRpbGl6ZWQsIGFuZCB3aGV0aGVyIHRoZWlyIGV4ZWN1dGlvbiBkZXBlbmRzIG9uIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbm5lY3RlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byBgcnRsODI2MXhfcHJvYmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzODY6XHRcbiAzODc6XHRzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gMzg4Olx0e1xuIDM4OTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuIDM5MDpcdFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4gMzkxOlx0XHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xuIDM5MjpcdFxuIDM5MzpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIDM5NDpcdFx0aWYgKCFwcml2KVxuIDM5NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzOTY6XHRcbiAzOTc6XHRcdHBoeWRldi1cdTAwM2Vwcml2ID0gcHJpdjtcbiAzOTg6XHRcbiAzOTk6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuIDQwMDpcdFx0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbiA0MDE6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDAyOlx0XHRcdHJldHVybiByZXQ7XG4gNDAzOlx0XG4gNDA0Olx0XHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTtcbiA0MDU6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDA2Olx0XHRcdHJldHVybiByZXQ7XG4gNDA3Olx0XG4gNDA4Olx0XHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4gNDA5Olx0XG4gNDEwOlx0XHRzd2l0Y2ggKHN1Yl9waHlfaWQpIHtcbiA0MTE6XHRcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4gNDEyOlx0XHRcdHByaXYtXHUwMDNlZndfbmFtZSA9IFJUTDgyNjFDX0NFX0ZXX05BTUU7XG4gNDEzOlx0XHRcdHBoeWRldl9pbmZvKHBoeWRldiwgXCYjMzQ7UlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxuXCYjMzQ7LCBzdWJfcGh5X2lkKTtcbiA0MTQ6XHRcdFx0YnJlYWs7XG4gNDE1Olx0XG4gNDE2Olx0XHRjYXNlIFJUTDgyNjFEX01PREVMOlxuIDQxNzpcdFx0XHRwaHlkZXZfaW5mbyhwaHlkZXYsIFwmIzM0O1JUTDgyNjFEIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4gNDE4Olx0XHRcdGJyZWFrO1xuIDQxOTpcdFxuIDQyMDpcdFx0ZGVmYXVsdDpcbiA0MjE6XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuIDQyMjpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA0MjM6XHRcdH1cbiA0MjQ6XHRcbiA0MjU6XHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFJUTDgyNjF4IEVtdWxhdGlvbiBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHJ0bDgyNjF4YCwgd2hpY2ggYXMgSSByZWNhbGwsIGlzIGEgc3BlY2lmaWMgUmVhbHRlayAxMEdicHMgUEhZIGNoaXAsIHNwZWNpZmljYWxseSB0aGUgUlRMODI2MUMgb3IgUlRMODI2MUQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb2ZmZXIgYW55IGtpbmQgb2YgZW11bGF0ZWQgZGV2aWNlIHRoYXQgbW9kZWxzIHRoaXMgUEhZPyBUaGUgcXVpY2sgYW5zd2VyIGlzIG5vLCBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhvc2UgUmVhbHRlayBjaGlwcy4gVGhhdCYjMzk7cyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgUEhZLWxldmVsIGludGVyYWN0aW9ucy4KClRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIGlzIHdoZXRoZXIgSSBjYW4gY3JlYXRlIGFuIE1ESU8gUEhZIGRldmljZSBpbiB1c2Vyc3BhY2UuIENhbiBJIGFjaGlldmUgdGhpcyB1c2luZyBuZXRsaW5rLCBzeXNmcywgZGVidWdmcywgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBtZGlvL3BoeSBzdWJzeXN0ZW0gZG9jdW1lbnRhdGlvbiB0byBzZWUgd2hhdCYjMzk7cyBwb3NzaWJsZSBoZXJlLiBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLCBlc3BlY2lhbGx5IGlmIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZGV2aWNlIG1hbnVhbGx5IHRvIGJlaGF2ZSBsaWtlIGFuIFJUTDgyNjEgUEhZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9fYnVzX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgUEhZIGRldmljZSBwcm9iaW5nIHByb2Nlc3MuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG1kaW9idXNfcmVnaXN0ZXJgLiBJIGtub3cgdGhlcmUmIzM5O3MgYSBsb3QgdGhhdCBoYXBwZW5zIGluIHRoYXQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBQSFkgZGV2aWNlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBNRElPIGJ1cyBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZHJpdmVyIGZpbmRzIGFuZCBjb25maWd1cmVzIHRoZSBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkLCBhbmQgd2hhdCBzdGVwcyBhcmUgdGFrZW4gdG8gaW5pdGlhbGl6ZSBhbmQgY29ubmVjdCBhIG5ldyBQSFk/IFRoaXMgc2hvdWxkIGxlYWQgbWUgaW50byBob3cgZGV2aWNlcyBhcmUgYWN0dWFsbHkgZGV0ZWN0ZWQuIEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY2hhc2UgZG93biBmdW5jdGlvbiBjYWxscyByZWxhdGVkIHRvIHByb2JpbmcgYW5kIGlkZW50aWZpY2F0aW9uIG9mIFBIWXMuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIHBpY3R1cmUgaW4gbXkgaGVhZCBvZiB0aGUgd29ya2Zsb3csIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSBhbmQgdHJvdWJsZXNob290IGFueSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzU2PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDI4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODk9eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDYtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDc6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDA4LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz01MjA9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzctXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1Mzg6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTM5LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjMzNz1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzc0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc1PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDE6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcdHJldHVybiBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg9MzA3PXZvaWQgc2phMTEwNV9mcmFtZV9tZW1vcnlfcGFydGl0aW9uaW5nKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oOjMxMDppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYz0zMDI2PXN0YXRpYyBpbnQgc2phMTEwNV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMwNjg6XHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjU4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdHhfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyODg6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5Ny1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTQzOT1zdGF0aWMgdm9pZCBzamExMTA1X21kaW9idXNfcGNzX3VucmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzo0NTk6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpZGV2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cdHNucHJpbnRmKG1paS1cdTAwM2VpZCwgc2l6ZW9mKG1paS1cdTAwM2VpZCksIFwmIzM0OyVzXCYjMzQ7LCBkZXZfbmFtZShwZGF0YS1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcdFx0ZGV2X2VycihwZGF0YS1cdTAwM2VkZXYsIFwmIzM0O21kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4MTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXHRcdFx0XHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4Olx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXHUwMDNlbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cdGlmIChpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cdGlmIChtZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1Olx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XHRcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5Olx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBkYi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSB+KDFVIFx1MDAzY1x1MDAzYyBtYWMtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cdFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXHRhZGFwdGVyLVx1MDAzZW1paV9idXMgPSBidXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5Olx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVx0XHQgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlcGRldi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVx0XHRlcnIgPSAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXHRwZXAtXHUwMDNlc21pX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXHUwMDNlc21pX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXHRkZXZfZGJnKGV0aC1cdTAwM2VkZXYsIFwmIzM0O01EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxuXCYjMzQ7LCBNRENfTUFYX0ZSRVEgLyBldGgtXHUwMDNlbWRjX2RpdmlkZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzQyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgcnRsODI2MXhfcHJvYmVgLCB3aGljaCBpcyBhIHByb2JlIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgd2l0aGluIHRoYXQgYHJlYWx0ZWtfZHJ2c2AgYXJyYXkuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgaW5pdGlhbGl6ZSBhIHNwZWNpZmljIFJlYWx0ZWsgUEhZLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGV4YWN0bHkgKndoaWNoKiBSZWFsdGVrIFBIWSB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGhhbmRsZS4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGNoZWNrIHRob3NlIFBIWSBJRHMuIEtub3dpbmcgdGhlIGV4YWN0IElEcyB0aGlzIHByb2JlIGlzIGFzc29jaWF0ZWQgd2l0aCBpcyBjcnVjaWFsLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgSURzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMXzgyNjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ2LSNkZWZpbmUgUlRMODI2MVhfRVhUX0RBVEFfUkVHXHRcdFx0MHhhNDM4XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNDc6I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXHRcdDB4ODAxZFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI1Ny0jZGVmaW5lIFJUTF84MjUxQlx0XHRcdFx0MHgwMDFjYzg2MlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjU4OiNkZWZpbmUgUlRMXzgyNjFDXHRcdFx0XHQweDAwMWNjODkwXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTk6I2RlZmluZSBSVExfODI2MUNfQ0dcdFx0XHRcdDB4MDAxY2M4OThcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zODc9c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5OS1cdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDAwOlx0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mjg0Mj1zdGF0aWMgaW50IHJ0bF9pbnRlcm5hbF9uYmFzZXRfbWF0Y2hfcGh5X2RldmljZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTEtXHRjYXNlIFJUTF84MjUxQjpcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTI6XHRjYXNlIFJUTF84MjYxQzpcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTMtXHRjYXNlIDB4MDAxY2M4NDE6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MzA1MD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1My1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTQ6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChSVExfODI2MUNfQ0cpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1NS1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1JlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY4MwoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAxMDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFJUTDgyNjFDX0NHIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBSVExfODI2MUNfQ0dgLCBhIDEwR2JwcyBQSFkuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBkcml2ZXIgZm9yIHRoaXMgUEhZLCBzcGVjaWZpY2FsbHkgYHJlYWx0ZWsua29gLCBjYW4gZXZlciBiZSBoaXQgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBhY3R1YWwgUmVhbHRlayBoYXJkd2FyZS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBiaW5kcy4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdXNlcyB2aXJ0aW8tbmV0LCBlMTAwMCwgaWdiLCBldGMuIE1ESU8gYnVzIFBIWSBkcml2ZXJzLCBsaWtlIHRoZSBSZWFsdGVrIG9uZSwgcmVseSBvbiBhbiBNRElPIGJ1cyBzY2FuIChvciBkZXZpY2UgdHJlZS9BQ1BJKSB0aGF0IHJlYWRzIHRoZSBQSFkgSUQgcmVnaXN0ZXJzIChNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIpLiBUaGUgYHJ0bDgyNjF4X3Byb2JlYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbmx5IHdoZW4gYSBwaHlzaWNhbCBkZXZpY2Ugd2l0aCBJRCBgMHgwMDFjYzg5OGAgaXMgcHJlc2VudCBvbiB0aGUgTURJTyBidXMuIEFmdGVyIHByb2JpbmcsIGludGVyZmFjZSBVUCBjYWxscyBgY29uZmlnX2luaXRgIHdoaWNoIGxvYWRzIGZpcm13YXJlIGBydGw4MjYxY19jZS5md2AgYW5kIGV4ZWN1dGVzIGZpcm13YXJlIGVudHJpZXMgdGhyb3VnaCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAuCgpOZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZSBhcmUgdmlydHVhbCBidXMgb3Igc3l6a2FsbGVyIG1lY2hhbmlzbXMgdG8gbW9jayB0aGVzZSBNRElPIFBIWSBkZXZpY2VzLiBTYWRseSwgdGhlcmUgYXJlbiYjMzk7dC4gVW5saWtlIFVTQiAod2l0aCBpdHMgRHVtbXkgSENEL1Jhdy1HYWRnZXQpLCBNRElPIGRvZXNuJiMzOTt0IGhhdmUgYSB1c2Vyc3BhY2UgaW5qZWN0aW9uIGludGVyZmFjZSB0byBlbXVsYXRlIGFyYml0cmFyeSBQSFkgaGFyZHdhcmUuCgpOb3csIEkgcmUtZm9jdXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGFuZCDigJxVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHPigJ0uIEkgemVyb2VkIGluIG9uIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoaXMgY29udGV4dC4gSXMgaXQgb25seSByZWFjaGVkIHdoZW4gdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCBjaGlwIGlzIHByZXNlbnQ/CgpJbmRlZWQuIEFmdGVyIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUsIGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCBpcyBjYWxsZWQgZXhjbHVzaXZlbHkgYnkgYHJ0bDgyNjF4X2Z3X2xvYWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YCwgd2hpY2ggaW4gdHVybiBpcyBvbmx5IHJlZmVyZW5jZWQgd2l0aGluIHRoZSBgcmVhbHRla19kcnZzYCB0YWJsZSBlbnRyeSBmb3IgYFJUTF84MjYxQ19DR2AuIEl0JiMzOTtzIGFsbCB0aWVkIHRvIHRoaXMgc3BlY2lmaWMgUEhZLiBTbywgdG8gaGl0IGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCB5b3UgbmVlZCBhIFJlYWx0ZWsgUlRMODI2MUMvRC4KClRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgbGl2ZXMgd2l0aGluIGEgZHJpdmVyIGZvciAqc3BlY2lmaWMqIHBoeXNpY2FsIGhhcmR3YXJlIChSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWSkgdGhhdCBuZWVkcyB0aGlzIGNoaXAgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VL0dDRSwgdGhlcmVmb3JlIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoKSBpbiBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZmlybXdhcmUgbG9hZGVyIGZvciB0aGUgUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24vaW5pdGlhbGl6YXRpb24gb2YgcGh5c2ljYWwgUmVhbHRlayBSVEw4MjYxIFBIWSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAyOjU4LjgzMjY2NTM3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDA4NTY1NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAyOjU4LjgzMjY3MTg4NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5OTcwNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDEwY2U5ZTQ1NjIwODQzNGQxMzVhNjViMTg0MTE1NGM0MWM4OGQ2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAxMjowMjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTU0OCw4ICs1NDgsMTIgQEAgc3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcbiBcXHRzd2l0Y2ggKGVudHJ5LVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgT1BfV1JJVEU6XFxuLVxcdFxcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxcbi1cXHRcXHRcXHRcXHQgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgXFx1MDAzY1xcdTAwM2MgbHNiKSBcXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcXG4rXFx0XFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcXG4rXFx0XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICh2YWx1ZSBcXHUwMDNjXFx1MDAzYyBsc2IpIFxcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbHVlKTtcXG4rXFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMjo1OS4zMjM1MzU0NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ5NTE3NjgzNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMTBjZTllNDU2MjA4NDM0ZDEzNWE2NWIxODQxMTU0YzQxYzg4ZDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTI6MDI6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAyN2UzMWE3OTllMmMzLi45N2IwYjY3Yjk5MDBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtNTQ4LDggKzU0OCwxMiBAQCBzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcbiBcdHN3aXRjaCAoZW50cnktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBPUF9XUklURTpcbi1cdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsXG4tXHRcdFx0XHQgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcbitcdFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcbitcdFx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIGRldiwgYWRkciwgR0VOTUFTSyhtc2IsIGxzYiksXG4rXHRcdFx0XHRcdCAgICAgKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XG4rXHRcdGVsc2VcbitcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCB2YWx1ZSk7XG4rXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0YnJlYWs7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMjo1OS4zMjM1MzY4NjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5NDUwMzQ3NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBiZWluZyBjaGFuZ2VkIGluIHRoZSBgcnRsODI2MXhgIFBIWSBkcml2ZXIsIGFuZCB3aHkuIFRoZSBkaWZmIGl0c2VsZiBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIG9mIGNvdXJzZS4gSSdtIHNlZWluZyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSdyZSBoYW5kbGluZyBNTUQgKE1hbmFnZW1lbnQgTW9kZSBEYXRhKSByZWdpc3RlciB3cml0ZXMgd2l0aGluIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24uXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGhhcyBiZWVuIGludHJvZHVjZWQgd2l0aGluIHRoZSBgT1BfV1JJVEVgIGNhc2UuIEJlZm9yZSwgaXQgc2VlbXMgd2UgYWx3YXlzIGNhbGxlZCBgcGh5X21vZGlmeV9tbWRgLiBOb3csIHRoZXJlJ3MgYSBjaGVjazogYGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApYC4gSWYgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSwgd2Ugc3RpbGwgY2FsbCBgcGh5X21vZGlmeV9tbWRgLiBIb3dldmVyLCBpZiBgbXNiYCBpcyAxNSBhbmQgYGxzYmAgaXMgMCwgd2UncmUgbm93IGNhbGxpbmcgYHBoeV93cml0ZV9tbWRgIGluc3RlYWQuXG5cbk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBsaWtlbHkgaGFzIHRvIGRvIHdpdGggaG93IHdlJ3JlIHdyaXRpbmcgdG8gc3BlY2lmaWMgTU1EIHJlZ2lzdGVycy4gVGhlIG9yaWdpbmFsIGBwaHlfbW9kaWZ5X21tZGAgcHJlc3VtYWJseSBoYW5kbGVzIGJpdC1maWVsZCBtb2RpZmljYXRpb25zIHdpdGhpbiBhbiBNTUQgcmVnaXN0ZXIuIFRoZSBuZXcgYHBoeV93cml0ZV9tbWRgLCBpbiBjb250cmFzdCwgbWlnaHQgYmUgaW50ZW5kZWQgZm9yIGZ1bGwgcmVnaXN0ZXIgd3JpdGVzIHdoZW4gYWxsIGJpdHMgYXJlIGJlaW5nIHNldC4gVGhlIGNoZWNrIGAobXNiICE9IDE1IHx8IGxzYiAhPSAwKWAgcHJvYmFibHkgaW5kaWNhdGVzIHdlJ3JlIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gbW9kaWZ5aW5nIGEgc3Vic2V0IG9mIGJpdHMgYW5kIHdyaXRpbmcgdGhlIGVudGlyZSByZWdpc3RlciBjb250ZW50cy5cblxuSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIHByb2JhYmx5IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIHRvIGJlIHN1cmUgLSBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNvcnJlY3RuZXNzIGZpeC4gTWF5YmUgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGhhZCBzb21lIGFzc3VtcHRpb25zIGFyb3VuZCBmdWxsIHJlZ2lzdGVyIHdyaXRlcyB0aGF0IHdlcmUgaW5jb3JyZWN0LiBPciwgcG9zc2libHksIHRoZXJlJ3Mgc29tZSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIGZpbGUuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdGhhdCBkZXNlcnZlcyBjYXJlZnVsIGV4YW1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MDguNzczODg3MjY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUzMDpcXHRcXHRtc2IgPSBlbnRyeS1cXHUwMDNlbXNiO1xcbiA1MzE6XFx0XFx0bHNiID0gZW50cnktXFx1MDAzZWxzYjtcXG4gNTMyOlxcdFxcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXFx1MDAzZXZhbHVlKTtcXG4gNTMzOlxcdFxcdHRpbWVvdXRfbXMgPSBsZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNldGltZW91dF9tcyk7XFxuIDUzNDpcXHRcXHRwb2xsX3NldCA9IGVudHJ5LVxcdTAwM2Vwb2xsX3NldDtcXG4gNTM1OlxcdFxcbiA1MzY6XFx0XFx0aWYgKHRpbWVvdXRfbXMgPT0gMClcXG4gNTM3OlxcdFxcdFxcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdGlmIChkZXYgXFx1MDAzZSBSVEw4MjYxWF9NQVhfTU1EX0RFVikge1xcbiA1NDA6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJpbnZhbGlkIGZpcm13YXJlIE1NRCBkZXZpY2U6IGRldj0ldVxcXFxuXFxcIiwgZGV2KTtcXG4gNTQxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NDI6XFx0XFx0fVxcbiA1NDM6XFx0XFxuIDU0NDpcXHRcXHRpZiAobXNiIFxcdTAwM2UgMTUgfHwgbHNiIFxcdTAwM2UgbXNiKSB7XFxuIDU0NTpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcImludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSV1LCBsc2I9JXVcXFxcblxcXCIsIG1zYiwgbHNiKTtcXG4gNTQ2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NDc6XFx0XFx0fVxcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRzd2l0Y2ggKGVudHJ5LVxcdTAwM2V0eXBlKSB7XFxuIDU1MDpcXHRcXHRjYXNlIE9QX1dSSVRFOlxcbiA1NTE6XFx0XFx0XFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcXG4gNTUyOlxcdFxcdFxcdFxcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCBHRU5NQVNLKG1zYiwgbHNiKSxcXG4gNTUzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKHZhbHVlIFxcdTAwM2NcXHUwMDNjIGxzYikgXFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XFxuIDU1NDpcXHRcXHRcXHRlbHNlXFxuIDU1NTpcXHRcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCB2YWx1ZSk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdFxcdGlmIChyZXQpXFxuIDU1ODpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NTk6XFx0XFx0XFx0YnJlYWs7XFxuIDU2MDpcXHRcXG4gNTYxOlxcdFxcdGNhc2UgT1BfUE9MTDpcXG4gNTYyOlxcdFxcdFxcdGJpdHMgPSBHRU5NQVNLKG1zYiwgbHNiKTtcXG4gNTYzOlxcdFxcdFxcdGV4cGVjdF92YWwgPSAodmFsdWUgXFx1MDAzY1xcdTAwM2MgbHNiKSBcXHUwMDI2IGJpdHM7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdFxcdGlmIChwb2xsX3NldClcXG4gNTY2OlxcdFxcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4gNTY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxcbiA1Njg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcXG4gNTY5OlxcdFxcdFxcdGVsc2VcXG4gNTcwOlxcdFxcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4gNTcxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSAhPSBleHBlY3RfdmFsLFxcbiA1NzI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcXG4gNTczOlxcdFxcdFxcdGlmIChyZXQpXFxuIDU3NDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NzU6XFx0XFx0XFx0YnJlYWs7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdGRlZmF1bHQ6XFxuIDU3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTc5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MDguNzc0Mzc4NDg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAxMjQ1NjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5IENhbGwqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIGRvIGlzIHRyYWNlIGRvd24gd2hlcmUgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgbGFyZ2VyIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCdzIHBhcnQgb2YgYSBSZWFsdGVrIG5ldHdvcmsgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IHNvbWV0aGluZyB1c2luZyB0aGUgYHJ0bDgyNjF4YCBjaGlwc2V0LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy5cblxuSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5IGludm9sdmVzIGEgaGFyZHdhcmUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZHJpdmVyIGRvZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBhc3NvY2lhdGVkIGNvZGUgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBlbnRyeSBwb2ludC4gT25jZSBJIGRvIHRoYXQsIEknbGwgcmV2aWV3IGhvdyBpdCdzIGV4ZWN1dGVkLCBob3cgdGhlIGRhdGEgaXMgaGFuZGxlZCwgYW5kIHdoYXQgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZSB1c2VkLiBJJ2xsIG1ha2Ugc3VyZSB0byBub3RlIGFueSBkYXRhIG9yIHZhbHVlcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njk0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoxMC43ODY4Mzc5NzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTA0MjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTQ3Mz1zdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MjEtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTg0PXN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjA4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZTE2X3RvX2NwdShoZHItXFx1MDAzZW51bV9lbnRyaWVzKTsgaSsrLCBlbnRyeSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjA5OlxcdFxcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjEwLVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MTIuNjQ1ODg4Mzk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0ODY0NzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIHJ0bDgyNjF4X2Z3X2xvYWQgRnVuY3Rpb24gQ2FsbGVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCBvZiBgcnRsODI2MXhfZndfbG9hZGAuIExldCdzIGdldCByaWdodCB0byBpdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2UgYmFjaywgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhlIGBydGw4MjYxeF9md19sb2FkYCBmdW5jdGlvbiBpdHNlbGYgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aG8qIG9yICp3aGF0KiBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBpbW1lZGlhdGUgY2FsbGVycywgYW5kIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhvc2UgY2FsbHMgd2lsbCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIGZpcm13YXJlIGxvYWQgYW5kIHdoYXQgZXZlbnRzIGFyZSBkcml2aW5nIHRoaXMgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjE1LjA5NDUzNzMzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc3ODIxMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgyNjF4X2Z3X2xvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTIwPXN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NzAwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwOC1cXHRpZiAocHJpdi1cXHUwMDNlZndfbmFtZSBcXHUwMDI2XFx1MDAyNiAhcHJpdi1cXHUwMDNlZndfbG9hZGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwOTpcXHRcXHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcxMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MTYuODcyMzYzNTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg3OTkyNTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgaGVhcnQgb2YgaXQg4oCTIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGBwaHlfZHJpdmVyYCBkZWZpbml0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGFydGljdWxhciBQSFkgZGV2aWNlIGlzIGludGVncmF0ZWQgaW50byB0aGUgTGludXggbmV0d29yayBzdWJzeXN0ZW0uIEknbSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgZHJpdmVyIHN0cnVjdHVyZTogdGhlIHByb2JlLCByZW1vdmUsIGFuZCBwb3NzaWJseSBzdXNwZW5kL3Jlc3VtZSBmdW5jdGlvbnMuIEknbGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgdGhlIHNwZWNpZmljIGBpZF90YWJsZWAgb3Igb3RoZXIgaWRlbnRpZmljYXRpb24gbWVjaGFuaXNtIHVzZWQgdG8gbWF0Y2ggdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuIEnigJlsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoZXJlIHRoYXQgbGVhZHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoxOC43NTIyOTM4MTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTQyOTc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODI2MXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjkyPU1PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTMtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk0OmVudW0gcnRsODI2MXhfZndfb3Age1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NS1cXHRPUF9XUklURSA9IDB4MDAsXFx0LyogV3JpdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5OC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTk6c3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwLVxcdF9fbGUzMiBtYWluX21hZ2ljO1xcdC8qIE1haW4gbWFnaWMgbnVtYmVyICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzA5OnN0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEwLVxcdF9fdTggIHR5cGU7XFx0XFx0LyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjAtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxOiNkZWZpbmUgRldfSEVBREVSX1NJWkVcXHRcXHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlcilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjI6I2RlZmluZSBGV19FTlRSWV9TSVpFXFx0XFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMzE9c3RydWN0IHJ0bDgyMXhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzQyOnN0cnVjdCBydGw4MjYxeF9wcml2IHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDMtXFx0Y29uc3QgY2hhciAqZndfbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTM3Mj1zdGF0aWMgaW50IHJ0bDgyMXhfbW9kaWZ5X2V4dF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBleHRfcGFnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4Ni1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozODc6c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4OC17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzg5LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjM5MDpcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zOTEtXFx0aW50IHN1Yl9waHlfaWQsIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQyNy1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0Mjg6c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ0NzpzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Mi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0NzM6c3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00NzQte1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3NTpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDc2LVxcdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00ODUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDg2OlxcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1MjE6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01ODMtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg0OnN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4NS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg2OlxcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NzpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4ODpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg5LVxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDAtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjAxOlxcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDU6XFx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDYtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjA3OlxcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cXHUwMDNlbnVtX2VudHJpZXMpOyBpKyssIGVudHJ5KyspIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDk6XFx0XFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MTAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYyMzpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY0OC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2NDk6c3RhdGljIGlycXJldHVybl90IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjY2OTpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY5OS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDA6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwMS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NzAyOlxcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwOC1cXHRpZiAocHJpdi1cXHUwMDNlZndfbmFtZSBcXHUwMDI2XFx1MDAyNiAhcHJpdi1cXHUwMDNlZndfbG9hZGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwOTpcXHRcXHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1NS1cXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIlJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU2OlxcdFxcdC5wcm9iZVxcdFxcdFxcdD0gcnRsODI2MXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM1NzpcXHRcXHQuY29uZmlnX2luaXRcXHRcXHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTg6XFx0XFx0LmdldF9mZWF0dXJlc1xcdFxcdD0gcnRsODI2MXhfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTk6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzYwOlxcdFxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gcnRsODI2MXhfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM2MTpcXHRcXHQuY29uZmlnX2ludHJcXHRcXHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbnRyLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNjI6XFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM2My1cXHRcXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X2M0NV9wbWFfc29mdF9yZXNldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjAuMzQ2NTk4ODY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MjYyNDYxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBQSFkgZHJpdmVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCDigJMgYW4gTURJTyBQSFkgY2hpcC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gVGhhdCdzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIE1ESU8gUEhZcyBpbiBnZW5lcmFsLCBvciBSZWFsdGVrIG9uZXMgc3BlY2lmaWNhbGx5LCBhcmUgZW11bGF0ZWQgYXQgYWxsIGluIHRoZXNlIGVudmlyb25tZW50cywgb3IgaWYgdGhpcyBpcyB0aWVkIHRvIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSG9sZCBvbiwgbGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIHRoaW5rIGFib3V0IGhvdyBQSFkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IGluc3RhbnRpYXRlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc29tZXRoaW5nIGxpa2UgbWRpby1ncGlvLCBtZGlvLWJpdGJhbmcsIGEgZHVtbXkgUEhZLCBvciBldmVuIGEgZml4ZWQgUEhZPyBPciBjYW4gc3l6a2FsbGVyIGV2ZW4gKmNyZWF0ZSogTURJTyBkZXZpY2VzIG9yIHRlc3QgRXRoZXJuZXQgZHJpdmVycz8gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi5cblxuUmlnaHQsIHRpbWUgdG8gZ28gYmFjayB0byBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gU2VjdGlvbiAyIG9mIHRob3NlIGluc3RydWN0aW9ucyBhZ2FpbiwgdGhlIHJlYWNoYWJpbGl0eSBzZWN0aW9uLiBUaGlzIGlzIGtleSwgaXNuJ3QgaXQ/IEl0J3MgYWxsIGFib3V0IHdoYXQncyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiB0aGlzIFJlYWx0ZWsgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSDigJMgaWYgaXQncyB0aWVkIHRvIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCDigJMgdGhlbiB0aGVyZSdzIG5vIHBvaW50IGV2ZW4gdHJ5aW5nIHRvIGZ1enogaXQuIEl0IHN0YXRlcyB0aGF0IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLlxuXG5BbmQgbm93LCBvbmUgbW9yZSB0aGluZy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCBSZWFsdGVrIG1vZGVscyBhcmUgc2ltaWxhciB0byB0aGlzIFJUTDgyNjFOIC8gUlRMODI2MUMgLyBSVEw4MjY0LiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGNsdWVzIHRoZXJlLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggZmVhdHVyZXMgYXJlIHNoYXJlZCBhbmQgd2hhdCB0aGUgb3B0aW9ucyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjQuMjcyODQ3NDA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ1MDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSRUFMVEVLX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTk2PW9iai0kKENPTkZJR19RU0VNSV9QSFkpXFx0XFx0Kz0gcXNlbWkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXFx0Kz0gcmVhbHRlay9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtOTgtb2JqLSQoQ09ORklHX1JFTkVTQVNfUEhZKVxcdCs9IHVQRDYwNjIwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzo4OmlmIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoUkVBTFRFS19QSFk9eSBcXHUwMDI2XFx1MDAyNiBIV01PTj1tKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xNS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjE2OmVuZGlmICMgUkVBTFRFS19QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTI9cmVhbHRlay15XFx0XFx0XFx0Kz0gcmVhbHRla19tYWluLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTozOnJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICs9IHJlYWx0ZWtfaHdtb24ub1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTgxMj1zdGF0aWMgaW50IHJ0bDgyMnhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODEzLXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODE0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODE1LVxcdCAgICBwaHlkZXYtXFx1MDAzZXBoeV9pZCAhPSBSVExfR0VORVJJQ19QSFlJRClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjQuMzI4MzAyNTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMTE4MDEwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSRUFMVEVLX1BIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgUkVBTFRFS19QSFlgIGRyaXZlci4gSXQncyBmb3IgdGhvc2UgUmVhbHRlayBFdGhlcm5ldCBQSFkgY2hpcHMg4oCTIHRoZSBSVEw4MjExLCBSVEw4MjYxLCBhbmQgc2ltaWxhciBtb2RlbHMg4oCTIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGludGVyZmFjZSB2aWEgdGhlIE1ESU8gYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbi5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBgcnRsODI2MXhfcHJvYmVgIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgIGFyZSB1dGlsaXplZCwgYW5kIHdoZXRoZXIgdGhlaXIgZXhlY3V0aW9uIGRlcGVuZHMgb24gdGhlIHByZXNlbmNlIG9mIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYHJ0bDgyNjF4X3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoyNi42NDAxMDY5ODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4NixcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4NjpcXHRcXG4gMzg3OlxcdHN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzg4OlxcdHtcXG4gMzg5OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbiAzOTA6XFx0XFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XFxuIDM5MTpcXHRcXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xcbiAzOTI6XFx0XFxuIDM5MzpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIDM5NDpcXHRcXHRpZiAoIXByaXYpXFxuIDM5NTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzk2OlxcdFxcbiAzOTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMzk4OlxcdFxcbiAzOTk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfQUREUl9SRUcsXFxuIDQwMDpcXHRcXHRcXHRcXHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XFxuIDQwMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbiA0MDU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MDc6XFx0XFxuIDQwODpcXHRcXHRzdWJfcGh5X2lkID0gKHJldCBcXHUwMDNlXFx1MDAzZSA4KSBcXHUwMDI2IDB4ZmY7XFxuIDQwOTpcXHRcXG4gNDEwOlxcdFxcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbiA0MTE6XFx0XFx0Y2FzZSBSVEw4MjYxQ19DRV9NT0RFTDpcXG4gNDEyOlxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xcbiA0MTM6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE0OlxcdFxcdFxcdGJyZWFrO1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHRjYXNlIFJUTDgyNjFEX01PREVMOlxcbiA0MTc6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUQgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE4OlxcdFxcdFxcdGJyZWFrO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRkZWZhdWx0OlxcbiA0MjE6XFx0XFx0XFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcXFwiVW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDIyOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0MjM6XFx0XFx0fVxcbiA0MjQ6XFx0XFxuIDQyNTpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjYuNjQwMjYxMDM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MDQ3MTcxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBSVEw4MjYxeCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgcnRsODI2MXhgLCB3aGljaCBhcyBJIHJlY2FsbCwgaXMgYSBzcGVjaWZpYyBSZWFsdGVrIDEwR2JwcyBQSFkgY2hpcCwgc3BlY2lmaWNhbGx5IHRoZSBSVEw4MjYxQyBvciBSVEw4MjYxRC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgZG9lcyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvZmZlciBhbnkga2luZCBvZiBlbXVsYXRlZCBkZXZpY2UgdGhhdCBtb2RlbHMgdGhpcyBQSFk/IFRoZSBxdWljayBhbnN3ZXIgaXMgbm8sIFFFTVUgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRob3NlIFJlYWx0ZWsgY2hpcHMuIFRoYXQncyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgUEhZLWxldmVsIGludGVyYWN0aW9ucy5cblxuVGhlIG5leHQgYXZlbnVlIHRvIGV4cGxvcmUgaXMgd2hldGhlciBJIGNhbiBjcmVhdGUgYW4gTURJTyBQSFkgZGV2aWNlIGluIHVzZXJzcGFjZS4gQ2FuIEkgYWNoaWV2ZSB0aGlzIHVzaW5nIG5ldGxpbmssIHN5c2ZzLCBkZWJ1Z2ZzLCBvciBzb21lIG90aGVyIGludGVyZmFjZT8gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIG1kaW8vcGh5IHN1YnN5c3RlbSBkb2N1bWVudGF0aW9uIHRvIHNlZSB3aGF0J3MgcG9zc2libGUgaGVyZS4gSXQncyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLCBlc3BlY2lhbGx5IGlmIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZGV2aWNlIG1hbnVhbGx5IHRvIGJlaGF2ZSBsaWtlIGFuIFJUTDgyNjEgUEhZLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjI5LjI0NDk4MDU4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMzM2ODQzMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb19idXNfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjMwLjg0ODM1Njg0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTgwOTkwODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBQSFkgZGV2aWNlIHByb2JpbmcgcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtZGlvYnVzX3JlZ2lzdGVyYC4gSSBrbm93IHRoZXJlJ3MgYSBsb3QgdGhhdCBoYXBwZW5zIGluIHRoYXQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBQSFkgZGV2aWNlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBNRElPIGJ1cyBmcmFtZXdvcmsuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgZmluZHMgYW5kIGNvbmZpZ3VyZXMgdGhlIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycy4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQsIGFuZCB3aGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBpbml0aWFsaXplIGFuZCBjb25uZWN0IGEgbmV3IFBIWT8gVGhpcyBzaG91bGQgbGVhZCBtZSBpbnRvIGhvdyBkZXZpY2VzIGFyZSBhY3R1YWxseSBkZXRlY3RlZC4gSSdsbCBwcm9iYWJseSBuZWVkIHRvIGNoYXNlIGRvd24gZnVuY3Rpb24gY2FsbHMgcmVsYXRlZCB0byBwcm9iaW5nIGFuZCBpZGVudGlmaWNhdGlvbiBvZiBQSFlzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIGluIG15IGhlYWQgb2YgdGhlIHdvcmtmbG93LCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgYW5kIHRyb3VibGVzaG9vdCBhbnkgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY1OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjMzLjAyOTM1MDM0MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NTY2MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzU2PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQyNy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDI4OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODk9eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwNi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDc6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDgtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTUyMD15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzODpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTUzOS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzMzc9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzc0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XFx0cmV0dXJuIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODQyPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE3OS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMTUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTAzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0OlxcdHJjID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODYtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc1PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDE6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4OlxcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTYxNz1zdGF0aWMgaW50IGFkaW4xMTQwX21kaW9fcmVnaXN0ZXIoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjM3OlxcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaWRldi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVxcdHNucHJpbnRmKG1paS1cXHUwMDNlaWQsIHNpemVvZihtaWktXFx1MDAzZWlkKSwgXFxcIiVzXFxcIiwgZGV2X25hbWUocGRhdGEtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XFx0XFx0ZGV2X2VycihwZGF0YS1cXHUwMDNlZGV2LCBcXFwibWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gMHgxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcXHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXFx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4OlxcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVxcdTAwM2VtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cXHRpZiAoaSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cXHRpZiAobWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XFx0XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XFx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgZGItXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcXHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1kaW9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMDg9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0MzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cXHUwMDNlbWlpX2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVxcdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXFx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxVSBcXHUwMDNjXFx1MDAzYyBtYWMtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVxcdGFkYXB0ZXItXFx1MDAzZW1paV9idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cXHRcXHQgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlbmFtZSwgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlxcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXFx0XFx0ZXJyID0gLUVOWElPO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXFx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXFx0cGVwLVxcdTAwM2VzbWlfYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cXHUwMDNlc21pX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjM0Ljk3NTAzODM0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjM4MTk3NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRMODI2MXggUHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggYHJ0bDgyNjF4X3Byb2JlYCwgd2hpY2ggaXMgYSBwcm9iZSBmdW5jdGlvbiByZWdpc3RlcmVkIHdpdGhpbiB0aGF0IGByZWFsdGVrX2RydnNgIGFycmF5LiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQncyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgaW5pdGlhbGl6ZSBhIHNwZWNpZmljIFJlYWx0ZWsgUEhZLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGV4YWN0bHkgKndoaWNoKiBSZWFsdGVrIFBIWSB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGhhbmRsZS4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGNoZWNrIHRob3NlIFBIWSBJRHMuIEtub3dpbmcgdGhlIGV4YWN0IElEcyB0aGlzIHByb2JlIGlzIGFzc29jaWF0ZWQgd2l0aCBpcyBjcnVjaWFsLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBJRHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc0MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjQwLjIxMzIzODczM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTA3NDcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfODI2MVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNDYtI2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcXHRcXHRcXHQweGE0MzhcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNDc6I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXFx0XFx0MHg4MDFkXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU3LSNkZWZpbmUgUlRMXzgyNTFCXFx0XFx0XFx0XFx0MHgwMDFjYzg2MlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI1ODojZGVmaW5lIFJUTF84MjYxQ1xcdFxcdFxcdFxcdDB4MDAxY2M4OTBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTk6I2RlZmluZSBSVExfODI2MUNfQ0dcXHRcXHRcXHRcXHQweDAwMWNjODk4XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjYwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mzg3PXN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5OS1cXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0MDA6XFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI4NDI9c3RhdGljIGludCBydGxfaW50ZXJuYWxfbmJhc2V0X21hdGNoX3BoeV9kZXZpY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTEtXFx0Y2FzZSBSVExfODI1MUI6XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjg1MjpcXHRjYXNlIFJUTF84MjYxQzpcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yODUzLVxcdGNhc2UgMHgwMDFjYzg0MTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1My1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM1NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyNjFDX0NHKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzU1LVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFlcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0MS43NzQzMTc5NTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzA2Njg3NjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBSVEw4MjYxQ19DRyBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFJUTF84MjYxQ19DR2AsIGEgMTBHYnBzIFBIWS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGRyaXZlciBmb3IgdGhpcyBQSFksIHNwZWNpZmljYWxseSBgcmVhbHRlay5rb2AsIGNhbiBldmVyIGJlIGhpdCBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGFjdHVhbCBSZWFsdGVrIGhhcmR3YXJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgYmluZHMuIFN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHVzZXMgdmlydGlvLW5ldCwgZTEwMDAsIGlnYiwgZXRjLiBNRElPIGJ1cyBQSFkgZHJpdmVycywgbGlrZSB0aGUgUmVhbHRlayBvbmUsIHJlbHkgb24gYW4gTURJTyBidXMgc2NhbiAob3IgZGV2aWNlIHRyZWUvQUNQSSkgdGhhdCByZWFkcyB0aGUgUEhZIElEIHJlZ2lzdGVycyAoTUlJX1BIWVNJRDEgYW5kIE1JSV9QSFlTSUQyKS4gVGhlIGBydGw4MjYxeF9wcm9iZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgb25seSB3aGVuIGEgcGh5c2ljYWwgZGV2aWNlIHdpdGggSUQgYDB4MDAxY2M4OThgIGlzIHByZXNlbnQgb24gdGhlIE1ESU8gYnVzLiBBZnRlciBwcm9iaW5nLCBpbnRlcmZhY2UgVVAgY2FsbHMgYGNvbmZpZ19pbml0YCB3aGljaCBsb2FkcyBmaXJtd2FyZSBgcnRsODI2MWNfY2UuZndgIGFuZCBleGVjdXRlcyBmaXJtd2FyZSBlbnRyaWVzIHRocm91Z2ggYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgLlxuXG5OZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZSBhcmUgdmlydHVhbCBidXMgb3Igc3l6a2FsbGVyIG1lY2hhbmlzbXMgdG8gbW9jayB0aGVzZSBNRElPIFBIWSBkZXZpY2VzLiBTYWRseSwgdGhlcmUgYXJlbid0LiBVbmxpa2UgVVNCICh3aXRoIGl0cyBEdW1teSBIQ0QvUmF3LUdhZGdldCksIE1ESU8gZG9lc24ndCBoYXZlIGEgdXNlcnNwYWNlIGluamVjdGlvbiBpbnRlcmZhY2UgdG8gZW11bGF0ZSBhcmJpdHJhcnkgUEhZIGhhcmR3YXJlLlxuXG5Ob3csIEkgcmUtZm9jdXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTcGVjaWZpY2FsbHksIHRoZSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5IGFuZCDigJxVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHPigJ0uIEkgemVyb2VkIGluIG9uIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoaXMgY29udGV4dC4gSXMgaXQgb25seSByZWFjaGVkIHdoZW4gdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCBjaGlwIGlzIHByZXNlbnQ/XG5cbkluZGVlZC4gQWZ0ZXIgYSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSwgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGlzIGNhbGxlZCBleGNsdXNpdmVseSBieSBgcnRsODI2MXhfZndfbG9hZGAsIHdoaWNoIGlzIGNhbGxlZCBieSBgcnRsODI2MXhfY29uZmlnX2luaXRgLCB3aGljaCBpbiB0dXJuIGlzIG9ubHkgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGByZWFsdGVrX2RydnNgIHRhYmxlIGVudHJ5IGZvciBgUlRMXzgyNjFDX0NHYC4gSXQncyBhbGwgdGllZCB0byB0aGlzIHNwZWNpZmljIFBIWS4gU28sIHRvIGhpdCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgeW91IG5lZWQgYSBSZWFsdGVrIFJUTDgyNjFDL0QuXG5cblRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgbGl2ZXMgd2l0aGluIGEgZHJpdmVyIGZvciAqc3BlY2lmaWMqIHBoeXNpY2FsIGhhcmR3YXJlIChSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWSkgdGhhdCBuZWVkcyB0aGlzIGNoaXAgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VL0dDRSwgdGhlcmVmb3JlIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU2ODMsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0OC44NDExOTY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoKSBpbiBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZmlybXdhcmUgbG9hZGVyIGZvciB0aGUgUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24vaW5pdGlhbGl6YXRpb24gb2YgcGh5c2ljYWwgUmVhbHRlayBSVEw4MjYxIFBIWSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0OC44NDEyMjA2NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4jfxm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 11:33:20 +0000 UTC FinishedAt: 2026-09-11 12:03:50 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMTBjZTllNDU2MjA4NDM0ZDEzNWE2NWIxODQxMTU0YzQxYzg4ZDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTI6MDI6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xuQEAgLTU0OCw4ICYjNDM7NTQ4LDEyIEBAIHN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFxuIFx0c3dpdGNoIChlbnRyeS1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIE9QX1dSSVRFOlxuLVx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIGRldiwgYWRkcixcbi1cdFx0XHRcdCAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuJiM0MztcdFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxuJiM0MztcdFx0XHRcdFx0ICAgICAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpO1xuJiM0MztcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxMGNlOWU0NTYyMDg0MzRkMTM1YTY1YjE4NDExNTRjNDFjODhkNjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAxMjowMjo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMKQEAgLTU0OCw4ICYjNDM7NTQ4LDEyIEBAIHN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCiAJc3dpdGNoIChlbnRyeS0mZ3Q7dHlwZSkgewogCWNhc2UgT1BfV1JJVEU6Ci0JCXJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLAotCQkJCSAgICAgR0VOTUFTSyhtc2IsIGxzYiksICh2YWx1ZSAmbHQ7Jmx0OyBsc2IpICZhbXA7IEdFTk1BU0sobXNiLCBsc2IpKTsKJiM0MzsJCWlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApCiYjNDM7CQkJcmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLAomIzQzOwkJCQkJICAgICAodmFsdWUgJmx0OyZsdDsgbHNiKSAmYW1wOyBHRU5NQVNLKG1zYiwgbHNiKSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJcmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpOwomIzQzOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5OTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGJlaW5nIGNoYW5nZWQgaW4gdGhlIGBydGw4MjYxeGAgUEhZIGRyaXZlciwgYW5kIHdoeS4gVGhlIGRpZmYgaXRzZWxmIGlzIHRoZSBzdGFydGluZyBwb2ludCwgb2YgY291cnNlLiBJJiMzOTttIHNlZWluZyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgTU1EIChNYW5hZ2VtZW50IE1vZGUgRGF0YSkgcmVnaXN0ZXIgd3JpdGVzIHdpdGhpbiB0aGUgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGZ1bmN0aW9uLgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgY29uZGl0aW9uYWwgaGFzIGJlZW4gaW50cm9kdWNlZCB3aXRoaW4gdGhlIGBPUF9XUklURWAgY2FzZS4gQmVmb3JlLCBpdCBzZWVtcyB3ZSBhbHdheXMgY2FsbGVkIGBwaHlfbW9kaWZ5X21tZGAuIE5vdywgdGhlcmUmIzM5O3MgYSBjaGVjazogYGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApYC4gSWYgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSwgd2Ugc3RpbGwgY2FsbCBgcGh5X21vZGlmeV9tbWRgLiBIb3dldmVyLCBpZiBgbXNiYCBpcyAxNSBhbmQgYGxzYmAgaXMgMCwgd2UmIzM5O3JlIG5vdyBjYWxsaW5nIGBwaHlfd3JpdGVfbW1kYCBpbnN0ZWFkLgoKTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzIGxpa2VseSBoYXMgdG8gZG8gd2l0aCBob3cgd2UmIzM5O3JlIHdyaXRpbmcgdG8gc3BlY2lmaWMgTU1EIHJlZ2lzdGVycy4gVGhlIG9yaWdpbmFsIGBwaHlfbW9kaWZ5X21tZGAgcHJlc3VtYWJseSBoYW5kbGVzIGJpdC1maWVsZCBtb2RpZmljYXRpb25zIHdpdGhpbiBhbiBNTUQgcmVnaXN0ZXIuIFRoZSBuZXcgYHBoeV93cml0ZV9tbWRgLCBpbiBjb250cmFzdCwgbWlnaHQgYmUgaW50ZW5kZWQgZm9yIGZ1bGwgcmVnaXN0ZXIgd3JpdGVzIHdoZW4gYWxsIGJpdHMgYXJlIGJlaW5nIHNldC4gVGhlIGNoZWNrIGAobXNiICE9IDE1IHx8IGxzYiAhPSAwKWAgcHJvYmFibHkgaW5kaWNhdGVzIHdlJiMzOTtyZSBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIG1vZGlmeWluZyBhIHN1YnNldCBvZiBiaXRzIGFuZCB3cml0aW5nIHRoZSBlbnRpcmUgcmVnaXN0ZXIgY29udGVudHMuCgpJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIHByb2JhYmx5IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIHRvIGJlIHN1cmUgLSBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNvcnJlY3RuZXNzIGZpeC4gTWF5YmUgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGhhZCBzb21lIGFzc3VtcHRpb25zIGFyb3VuZCBmdWxsIHJlZ2lzdGVyIHdyaXRlcyB0aGF0IHdlcmUgaW5jb3JyZWN0LiBPciwgcG9zc2libHksIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIGVudGlyZSBmaWxlLiBFaXRoZXIgd2F5LCB0aGlzIGlzIGEgbW9kaWZpY2F0aW9uIHRoYXQgZGVzZXJ2ZXMgY2FyZWZ1bCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MzA6XHRcdG1zYiA9IGVudHJ5LVx1MDAzZW1zYjtcbiA1MzE6XHRcdGxzYiA9IGVudHJ5LVx1MDAzZWxzYjtcbiA1MzI6XHRcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXHUwMDNldmFsdWUpO1xuIDUzMzpcdFx0dGltZW91dF9tcyA9IGxlMTZfdG9fY3B1KGVudHJ5LVx1MDAzZXRpbWVvdXRfbXMpO1xuIDUzNDpcdFx0cG9sbF9zZXQgPSBlbnRyeS1cdTAwM2Vwb2xsX3NldDtcbiA1MzU6XHRcbiA1MzY6XHRcdGlmICh0aW1lb3V0X21zID09IDApXG4gNTM3Olx0XHRcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XG4gNTM4Olx0XG4gNTM5Olx0XHRpZiAoZGV2IFx1MDAzZSBSVEw4MjYxWF9NQVhfTU1EX0RFVikge1xuIDU0MDpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7aW52YWxpZCBmaXJtd2FyZSBNTUQgZGV2aWNlOiBkZXY9JXVcXG5cJiMzNDssIGRldik7XG4gNTQxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU0MjpcdFx0fVxuIDU0MzpcdFxuIDU0NDpcdFx0aWYgKG1zYiBcdTAwM2UgMTUgfHwgbHNiIFx1MDAzZSBtc2IpIHtcbiA1NDU6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSV1LCBsc2I9JXVcXG5cJiMzNDssIG1zYiwgbHNiKTtcbiA1NDY6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTQ3Olx0XHR9XG4gNTQ4Olx0XG4gNTQ5Olx0XHRzd2l0Y2ggKGVudHJ5LVx1MDAzZXR5cGUpIHtcbiA1NTA6XHRcdGNhc2UgT1BfV1JJVEU6XG4gNTUxOlx0XHRcdGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApXG4gNTUyOlx0XHRcdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxuIDU1MzpcdFx0XHRcdFx0XHQgICAgICh2YWx1ZSBcdTAwM2NcdTAwM2MgbHNiKSBcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xuIDU1NDpcdFx0XHRlbHNlXG4gNTU1Olx0XHRcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIGRldiwgYWRkciwgdmFsdWUpO1xuIDU1NjpcdFxuIDU1NzpcdFx0XHRpZiAocmV0KVxuIDU1ODpcdFx0XHRcdHJldHVybiByZXQ7XG4gNTU5Olx0XHRcdGJyZWFrO1xuIDU2MDpcdFxuIDU2MTpcdFx0Y2FzZSBPUF9QT0xMOlxuIDU2MjpcdFx0XHRiaXRzID0gR0VOTUFTSyhtc2IsIGxzYik7XG4gNTYzOlx0XHRcdGV4cGVjdF92YWwgPSAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IGJpdHM7XG4gNTY0Olx0XG4gNTY1Olx0XHRcdGlmIChwb2xsX3NldClcbiA1NjY6XHRcdFx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgZGV2LCBhZGRyLCB2YWwsXG4gNTY3Olx0XHRcdFx0XHRcdFx0XHQodmFsIFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxuIDU2ODpcdFx0XHRcdFx0XHRcdFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcbiA1Njk6XHRcdFx0ZWxzZVxuIDU3MDpcdFx0XHRcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcbiA1NzE6XHRcdFx0XHRcdFx0XHRcdCh2YWwgXHUwMDI2IGJpdHMpICE9IGV4cGVjdF92YWwsXG4gNTcyOlx0XHRcdFx0XHRcdFx0XHQxMDAwLCB0aW1lb3V0X21zICogMTAwMCwgZmFsc2UpO1xuIDU3MzpcdFx0XHRpZiAocmV0KVxuIDU3NDpcdFx0XHRcdHJldHVybiByZXQ7XG4gNTc1Olx0XHRcdGJyZWFrO1xuIDU3NjpcdFxuIDU3NzpcdFx0ZGVmYXVsdDpcbiA1Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNTc5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY5NAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSBDYWxsKioKCk9rYXksIHNvIHRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZG8gaXMgdHJhY2UgZG93biB3aGVyZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgaXMgYWN0dWFsbHkgKmNhbGxlZCouIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgbGFyZ2VyIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQmIzM5O3MgcGFydCBvZiBhIFJlYWx0ZWsgbmV0d29yayBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIHVzaW5nIHRoZSBgcnRsODI2MXhgIGNoaXBzZXQsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGlzLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGxpa2VseSBpbnZvbHZlcyBhIGhhcmR3YXJlIGRyaXZlciwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGRyaXZlciBkb2VzLiBJJiMzOTtsbCBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGFzc29jaWF0ZWQgY29kZSBhbmQgc2VlIGlmIEkgY2FuIGZpbmQgdGhlIGVudHJ5IHBvaW50LiBPbmNlIEkgZG8gdGhhdCwgSSYjMzk7bGwgcmV2aWV3IGhvdyBpdCYjMzk7cyBleGVjdXRlZCwgaG93IHRoZSBkYXRhIGlzIGhhbmRsZWQsIGFuZCB3aGF0IGlucHV0cyBhbmQgb3V0cHV0cyBhcmUgdXNlZC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIG5vdGUgYW55IGRhdGEgb3IgdmFsdWVzIGludm9sdmVkLCBhcyB0aGF0IHdpbGwgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz00NzM9c3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1MjA6c3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MjEtXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqZW50cnkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTg0PXN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwOTpcdFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYxMC1cdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgcnRsODI2MXhfZndfbG9hZCBGdW5jdGlvbiBDYWxsZXJzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCBvZiBgcnRsODI2MXhfZndfbG9hZGAuIExldCYjMzk7cyBnZXQgcmlnaHQgdG8gaXQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2ssIHRvIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBgcnRsODI2MXhfZndfbG9hZGAgZnVuY3Rpb24gaXRzZWxmIGlzIHRoZSBzdGFydGluZyBwb2ludCwgdGhlIGVudHJ5IHBvaW50IG9mIGludGVyZXN0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hvKiBvciAqd2hhdCogaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYXRpbmcgdGhpcyBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGltbWVkaWF0ZSBjYWxsZXJzLCBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJyb2FkZXIgZHJpdmVyIGFyY2hpdGVjdHVyZS4gS25vd2luZyB0aGUgY29udGV4dCBvZiB0aG9zZSBjYWxscyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBiYXNlIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgZmlybXdhcmUgbG9hZCBhbmQgd2hhdCBldmVudHMgYXJlIGRyaXZpbmcgdGhpcyBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgyNjF4X2Z3X2xvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTIwPXN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4My1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NzAwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MDgtXHRpZiAocHJpdi1cdTAwM2Vmd19uYW1lIFx1MDAyNlx1MDAyNiAhcHJpdi1cdTAwM2Vmd19sb2FkZWQpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDk6XHRcdHJldHVybiBydGw4MjYxeF9md19sb2FkKHBoeWRldik7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgUEhZIERyaXZlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIFJlYWx0ZWsgUEhZIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgaGVhcnQgb2YgaXQg4oCTIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGBwaHlfZHJpdmVyYCBkZWZpbml0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBhcnRpY3VsYXIgUEhZIGRldmljZSBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIExpbnV4IG5ldHdvcmsgc3Vic3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBzdGFuZGFyZCBkcml2ZXIgc3RydWN0dXJlOiB0aGUgcHJvYmUsIHJlbW92ZSwgYW5kIHBvc3NpYmx5IHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucy4gSSYjMzk7bGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgdGhlIHNwZWNpZmljIGBpZF90YWJsZWAgb3Igb3RoZXIgaWRlbnRpZmljYXRpb24gbWVjaGFuaXNtIHVzZWQgdG8gbWF0Y2ggdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuIEnigJlsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoZXJlIHRoYXQgbGVhZHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgyNjF4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI5Mj1NT0RVTEVfRklSTVdBUkUoUlRMODI2MUNfQ0VfRldfTkFNRSk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTMtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTQ6ZW51bSBydGw4MjYxeF9md19vcCB7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTUtXHRPUF9XUklURSA9IDB4MDAsXHQvKiBXcml0ZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5OC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI5OTpzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMwMC1cdF9fbGUzMiBtYWluX21hZ2ljO1x0LyogTWFpbiBtYWdpYyBudW1iZXIgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMDk6c3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5IHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMxMC1cdF9fdTggIHR5cGU7XHRcdC8qIE9wZXJhdGlvbiB0eXBlIChPUF8qKSAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMyMC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMyMTojZGVmaW5lIEZXX0hFQURFUl9TSVpFXHRcdHNpemVvZihzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIyOiNkZWZpbmUgRldfRU5UUllfU0laRVx0XHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzIzLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMzMT1zdHJ1Y3QgcnRsODIxeF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDEtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozNDI6c3RydWN0IHJ0bDgyNjF4X3ByaXYge1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzQzLVx0Y29uc3QgY2hhciAqZndfbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zNzI9c3RhdGljIGludCBydGw4MjF4X21vZGlmeV9leHRfcGFnZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgZXh0X3BhZ2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzg2LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mzg3OnN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4OC17XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zODktXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozOTA6XHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5MS1cdGludCBzdWJfcGh5X2lkLCByZXQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDI3LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDI4OnN0YXRpYyBpbnQgcnRsODI2MXhfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ0NzpzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00NDgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Mi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3MzpzdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDc0LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3NTpcdGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKmhkcjtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Ni1cdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg1LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDg2Olx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cdTAwM2VkYXRhO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUxOS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMTpcdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2VudHJ5ICplbnRyeSlcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUyMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTgzLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg0OnN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg1LXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NjpcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1ODc6XHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg4Olx0Y29uc3Qgc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg5LVx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDAtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDE6XHRyZXQgPSBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUocGh5ZGV2LCBmdyk7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwNTpcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXHUwMDNlZGF0YTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwNzpcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cdTAwM2VkYXRhICYjNDM7IEZXX0hFQURFUl9TSVpFKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cdTAwM2VudW1fZW50cmllcyk7IGkmIzQzOyYjNDM7LCBlbnRyeSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYwOTpcdFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYxMC1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYyMi1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYyMzpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MjQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY0OC1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjY0OTpzdGF0aWMgaXJxcmV0dXJuX3QgcnRsODI2MXhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjUwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2Njk6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjcwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02OTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDA6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzAxLXtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwMjpcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy03MDMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzA4LVx0aWYgKHByaXYtXHUwMDNlZndfbmFtZSBcdTAwMjZcdTAwMjYgIXByaXYtXHUwMDNlZndfbG9hZGVkKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NzA5Olx0XHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNzEwLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTMzNTUtXHRcdC5uYW1lXHRcdFx0PSBcJiMzNDtSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWVwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTY6XHRcdC5wcm9iZVx0XHRcdD0gcnRsODI2MXhfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU3Olx0XHQuY29uZmlnX2luaXRcdFx0PSBydGw4MjYxeF9jb25maWdfaW5pdCxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTg6XHRcdC5nZXRfZmVhdHVyZXNcdFx0PSBydGw4MjYxeF9nZXRfZmVhdHVyZXMsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU5Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNjA6XHRcdC5yZWFkX3N0YXR1c1x0XHQ9IHJ0bDgyNjF4X3JlYWRfc3RhdHVzLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM2MTpcdFx0LmNvbmZpZ19pbnRyXHRcdD0gcnRsODI2MXhfY29uZmlnX2ludHIsXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzYyOlx0XHQuaGFuZGxlX2ludGVycnVwdFx0PSBydGw4MjYxeF9oYW5kbGVfaW50ZXJydXB0LFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM2My1cdFx0LnNvZnRfcmVzZXRcdFx0PSBnZW5waHlfYzQ1X3BtYV9zb2Z0X3Jlc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODc2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUEhZIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBQSFkgZHJpdmVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCDigJMgYW4gTURJTyBQSFkgY2hpcC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBNRElPIFBIWXMgaW4gZ2VuZXJhbCwgb3IgUmVhbHRlayBvbmVzIHNwZWNpZmljYWxseSwgYXJlIGVtdWxhdGVkIGF0IGFsbCBpbiB0aGVzZSBlbnZpcm9ubWVudHMsIG9yIGlmIHRoaXMgaXMgdGllZCB0byBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuCgpIb2xkIG9uLCBsZXQgbWUgdGFrZSBhIHN0ZXAgYmFjayBhbmQgdGhpbmsgYWJvdXQgaG93IFBIWSBkZXZpY2VzIGFyZSB0eXBpY2FsbHkgaW5zdGFudGlhdGVkLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgbGlrZSBtZGlvLWdwaW8sIG1kaW8tYml0YmFuZywgYSBkdW1teSBQSFksIG9yIGV2ZW4gYSBmaXhlZCBQSFk/IE9yIGNhbiBzeXprYWxsZXIgZXZlbiAqY3JlYXRlKiBNRElPIGRldmljZXMgb3IgdGVzdCBFdGhlcm5ldCBkcml2ZXJzPyBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uLgoKUmlnaHQsIHRpbWUgdG8gZ28gYmFjayB0byBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gU2VjdGlvbiAyIG9mIHRob3NlIGluc3RydWN0aW9ucyBhZ2FpbiwgdGhlIHJlYWNoYWJpbGl0eSBzZWN0aW9uLiBUaGlzIGlzIGtleSwgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyBhbGwgYWJvdXQgd2hhdCYjMzk7cyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiB0aGlzIFJlYWx0ZWsgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSDigJMgaWYgaXQmIzM5O3MgdGllZCB0byBoYXJkd2FyZSB0aGF0JiMzOTtzICpub3QqIGVtdWxhdGVkIOKAkyB0aGVuIHRoZXJlJiMzOTtzIG5vIHBvaW50IGV2ZW4gdHJ5aW5nIHRvIGZ1enogaXQuIEl0IHN0YXRlcyB0aGF0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LgoKQW5kIG5vdywgb25lIG1vcmUgdGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IFJlYWx0ZWsgbW9kZWxzIGFyZSBzaW1pbGFyIHRvIHRoaXMgUlRMODI2MU4gLyBSVEw4MjYxQyAvIFJUTDgyNjQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGNsdWVzIHRoZXJlLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggZmVhdHVyZXMgYXJlIHNoYXJlZCBhbmQgd2hhdCB0aGUgb3B0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JFQUxURUtfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT05Nj1vYmotJChDT05GSUdfUVNFTUlfUEhZKVx0XHQmIzQzOz0gcXNlbWkub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjk3Om9iai0kKENPTkZJR19SRUFMVEVLX1BIWSlcdCYjNDM7PSByZWFsdGVrL1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTk4LW9iai0kKENPTkZJR19SRU5FU0FTX1BIWSlcdCYjNDM7PSB1UEQ2MDYyMC5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoyOmNvbmZpZyBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBQSFlzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy03LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzo4OmlmIFJFQUxURUtfUEhZXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEwOmNvbmZpZyBSRUFMVEVLX1BIWV9IV01PTlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7SFdNT04gc3VwcG9ydCBmb3IgUmVhbHRlayBQSFlzXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjEyOlx0ZGVwZW5kcyBvbiBIV01PTiBcdTAwMjZcdTAwMjYgIShSRUFMVEVLX1BIWT15IFx1MDAyNlx1MDAyNiBIV01PTj1tKVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTE1LVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFJFQUxURUtfUEhZXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU9Mj1yZWFsdGVrLXlcdFx0XHQmIzQzOz0gcmVhbHRla19tYWluLm9cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjM6cmVhbHRlay0kKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgJiM0Mzs9IHJlYWx0ZWtfaHdtb24ub1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXHQmIzQzOz0gcmVhbHRlay5vXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTgxMj1zdGF0aWMgaW50IHJ0bDgyMnhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTE4MTMte1xuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MTgxNDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODE1LVx0ICAgIHBoeWRldi1cdTAwM2VwaHlfaWQgIT0gUlRMX0dFTkVSSUNfUEhZSUQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzE4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSRUFMVEVLX1BIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBSRUFMVEVLX1BIWWAgZHJpdmVyLiBJdCYjMzk7cyBmb3IgdGhvc2UgUmVhbHRlayBFdGhlcm5ldCBQSFkgY2hpcHMg4oCTIHRoZSBSVEw4MjExLCBSVEw4MjYxLCBhbmQgc2ltaWxhciBtb2RlbHMg4oCTIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGludGVyZmFjZSB2aWEgdGhlIE1ESU8gYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbi4KCk15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgYHJ0bDgyNjF4X3Byb2JlYCBhbmQgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YCBhcmUgdXRpbGl6ZWQsIGFuZCB3aGV0aGVyIHRoZWlyIGV4ZWN1dGlvbiBkZXBlbmRzIG9uIHRoZSBwcmVzZW5jZSBvZiB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbm5lY3RlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZWVwIGRpdmUgaW50byBgcnRsODI2MXhfcHJvYmVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzg2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzODY6XHRcbiAzODc6XHRzdGF0aWMgaW50IHJ0bDgyNjF4X3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gMzg4Olx0e1xuIDM4OTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2O1xuIDM5MDpcdFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XG4gMzkxOlx0XHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xuIDM5MjpcdFxuIDM5MzpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIDM5NDpcdFx0aWYgKCFwcml2KVxuIDM5NTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAzOTY6XHRcbiAzOTc6XHRcdHBoeWRldi1cdTAwM2Vwcml2ID0gcHJpdjtcbiAzOTg6XHRcbiAzOTk6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuIDQwMDpcdFx0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbiA0MDE6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDAyOlx0XHRcdHJldHVybiByZXQ7XG4gNDAzOlx0XG4gNDA0Olx0XHRyZXQgPSBwaHlfcmVhZF9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0RBVEFfUkVHKTtcbiA0MDU6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gNDA2Olx0XHRcdHJldHVybiByZXQ7XG4gNDA3Olx0XG4gNDA4Olx0XHRzdWJfcGh5X2lkID0gKHJldCBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4ZmY7XG4gNDA5Olx0XG4gNDEwOlx0XHRzd2l0Y2ggKHN1Yl9waHlfaWQpIHtcbiA0MTE6XHRcdGNhc2UgUlRMODI2MUNfQ0VfTU9ERUw6XG4gNDEyOlx0XHRcdHByaXYtXHUwMDNlZndfbmFtZSA9IFJUTDgyNjFDX0NFX0ZXX05BTUU7XG4gNDEzOlx0XHRcdHBoeWRldl9pbmZvKHBoeWRldiwgXCYjMzQ7UlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxuXCYjMzQ7LCBzdWJfcGh5X2lkKTtcbiA0MTQ6XHRcdFx0YnJlYWs7XG4gNDE1Olx0XG4gNDE2Olx0XHRjYXNlIFJUTDgyNjFEX01PREVMOlxuIDQxNzpcdFx0XHRwaHlkZXZfaW5mbyhwaHlkZXYsIFwmIzM0O1JUTDgyNjFEIGRldGVjdGVkIChzdWJfaWQgMHglMDJ4KVxcblwmIzM0Oywgc3ViX3BoeV9pZCk7XG4gNDE4Olx0XHRcdGJyZWFrO1xuIDQxOTpcdFxuIDQyMDpcdFx0ZGVmYXVsdDpcbiA0MjE6XHRcdFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcJiMzNDtVbmtub3duIHN1Yl9pZCAweCUwMngsIGRlZmF1bHQgYmVoYXZpb3JcXG5cJiMzNDssIHN1Yl9waHlfaWQpO1xuIDQyMjpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA0MjM6XHRcdH1cbiA0MjQ6XHRcbiA0MjU6XHRcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI4NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFJUTDgyNjF4IEVtdWxhdGlvbiBQb3NzaWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYHJ0bDgyNjF4YCwgd2hpY2ggYXMgSSByZWNhbGwsIGlzIGEgc3BlY2lmaWMgUmVhbHRlayAxMEdicHMgUEhZIGNoaXAsIHNwZWNpZmljYWxseSB0aGUgUlRMODI2MUMgb3IgUlRMODI2MUQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGRvZXMgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb2ZmZXIgYW55IGtpbmQgb2YgZW11bGF0ZWQgZGV2aWNlIHRoYXQgbW9kZWxzIHRoaXMgUEhZPyBUaGUgcXVpY2sgYW5zd2VyIGlzIG5vLCBRRU1VIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGVtdWxhdGUgdGhvc2UgUmVhbHRlayBjaGlwcy4gVGhhdCYjMzk7cyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgUEhZLWxldmVsIGludGVyYWN0aW9ucy4KClRoZSBuZXh0IGF2ZW51ZSB0byBleHBsb3JlIGlzIHdoZXRoZXIgSSBjYW4gY3JlYXRlIGFuIE1ESU8gUEhZIGRldmljZSBpbiB1c2Vyc3BhY2UuIENhbiBJIGFjaGlldmUgdGhpcyB1c2luZyBuZXRsaW5rLCBzeXNmcywgZGVidWdmcywgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/IEkgc2hvdWxkIHByb2JhYmx5IGRpZyBpbnRvIHRoZSBtZGlvL3BoeSBzdWJzeXN0ZW0gZG9jdW1lbnRhdGlvbiB0byBzZWUgd2hhdCYjMzk7cyBwb3NzaWJsZSBoZXJlLiBJdCYjMzk7cyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLCBlc3BlY2lhbGx5IGlmIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZGV2aWNlIG1hbnVhbGx5IHRvIGJlaGF2ZSBsaWtlIGFuIFJUTDgyNjEgUEhZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9fYnVzX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NTgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgUEhZIGRldmljZSBwcm9iaW5nIHByb2Nlc3MuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYG1kaW9idXNfcmVnaXN0ZXJgLiBJIGtub3cgdGhlcmUmIzM5O3MgYSBsb3QgdGhhdCBoYXBwZW5zIGluIHRoYXQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBQSFkgZGV2aWNlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBNRElPIGJ1cyBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgZHJpdmVyIGZpbmRzIGFuZCBjb25maWd1cmVzIHRoZSBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMuIFdoYXQgYXJlIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkLCBhbmQgd2hhdCBzdGVwcyBhcmUgdGFrZW4gdG8gaW5pdGlhbGl6ZSBhbmQgY29ubmVjdCBhIG5ldyBQSFk/IFRoaXMgc2hvdWxkIGxlYWQgbWUgaW50byBob3cgZGV2aWNlcyBhcmUgYWN0dWFsbHkgZGV0ZWN0ZWQuIEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gY2hhc2UgZG93biBmdW5jdGlvbiBjYWxscyByZWxhdGVkIHRvIHByb2JpbmcgYW5kIGlkZW50aWZpY2F0aW9uIG9mIFBIWXMuIEkgd2FudCB0byBidWlsZCBhIGNsZWFyIHBpY3R1cmUgaW4gbXkgaGVhZCBvZiB0aGUgd29ya2Zsb3csIHNvIEkgY2FuIGJldHRlciB1bmRlcnN0YW5kIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSBhbmQgdHJvdWJsZXNob290IGFueSBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW9idXNfcmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdD0zNDk9TURJT1xuLS1cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTEtICBkZXZtX21kaW9idXNfYWxsb2Nfc2l6ZSgpXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3Q6MzUyOiAgZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKClcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0LTM1NC1cbi0tXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0OjEzOmBgZndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KClgYCkuIE1BQy1zaWRlIGNvbm5lY3Rpb24gcHJvcGVydGllcyBzdWNoIGFzXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdC0xNC1gYHBoeS1oYW5kbGVgYCBhbmQgYGBwaHktbW9kZWBgIGFyZSBkb2N1bWVudGVkIGluIFthY3BpLW1kaW8tcGh5XV8uXG4tLVxuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0PTc9VGhlIFBIWXMgb24gYW4gTURJTyBidXMgW3BoeV0gYXJlIHByb2JlZCBhbmQgcmVnaXN0ZXJlZCB1c2luZ1xuRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2RzZC9waHkucnN0Ojg6Zndub2RlX21kaW9idXNfcmVnaXN0ZXJfcGh5KCkuXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD00MD1yZWdpc3RlcmVkIGFzIGEgZGlzdGluY3QgZGV2aWNlLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTU2LSAgIGRyaXZlciBuZWVkcywgc2V0dXAgdGhlIG1paV9idXMgc3RydWN0dXJlLCBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgUEFMIHVzaW5nXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDo1NzogICBtZGlvYnVzX3JlZ2lzdGVyLiAgU2ltaWxhcmx5LCB0aGVyZSYjMzk7cyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtNTgtICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYz0xMDk9c3RhdGljIGludCBlcDgyNDhlX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jOjEzMzpcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBvZmRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgyeHgvZXA4MjQ4ZS5jLTEzNC1cdGlmIChyZXQpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmM9MjA3PXN0YXRpYyBpbnQgZ3Bpb19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jOjI0NDpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NjA3PXN0YXRpYyBpbnQgYmNtX3NmMl9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4My1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6Njg0Olx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZXVzZXJfbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTY4NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTg3PXN0YXRpYyBpbnQgZ3N3aXBfbWRpbyhzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoyMTQ6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjE1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTM0MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYtXHUwMDNlZGV2LCBidXMpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzU2PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjctXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDI4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jLTc1NS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRzLVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODk9eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDYtXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDc6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNDA4LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz01MjA9eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy01MzctXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo1Mzg6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTM5LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjMzNz1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzc0LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2MS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XHRyZXR1cm4gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jPTM4NDI9c3RhdGljIGludCBtdjg4ZTZ4eHhfbWRpb19yZWdpc3RlcihzdHJ1Y3QgbXY4OGU2eHh4X2NoaXAgKmNoaXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jOjM4OTY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTc5LVxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9OTU3PXN0YXRpYyBpbnQgdnNjOTk1OV9tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDMtXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0Olx0cmMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXHRpZiAocmMgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXHRvZl9ub2RlX3B1dChtbnApO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4Ni1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc1PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDE6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0My1cbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcdHJldHVybiBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQ1LX1cbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1Lmg9MzA3PXZvaWQgc2phMTEwNV9mcmFtZV9tZW1vcnlfcGFydGl0aW9uaW5nKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oOjMxMDppbnQgc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzExLXZvaWQgc2phMTEwNV9tZGlvYnVzX3VucmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYz0zMDI2PXN0YXRpYyBpbnQgc2phMTEwNV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjMwNjg6XHRyYyA9IHNqYTExMDVfbWRpb2J1c19yZWdpc3Rlcihkcyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MjU4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdHhfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzoyODg6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0My1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM0NS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTM2OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19wY3NfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozOTY6XHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTM5Ny1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTQzOT1zdGF0aWMgdm9pZCBzamExMTA1X21kaW9idXNfcGNzX3VucmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzo0NTk6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpZGV2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cdHNucHJpbnRmKG1paS1cdTAwM2VpZCwgc2l6ZW9mKG1paS1cdTAwM2VpZCksIFwmIzM0OyVzXCYjMzQ7LCBkZXZfbmFtZShwZGF0YS1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcdFx0ZGV2X2VycihwZGF0YS1cdTAwM2VkZXYsIFwmIzM0O21kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4MTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXHRcdFx0XHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4Olx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXHUwMDNlbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cdGlmIChpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cdGlmIChtZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1Olx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XHRcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5Olx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBkYi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSB+KDFVIFx1MDAzY1x1MDAzYyBtYWMtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cdFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXHRhZGFwdGVyLVx1MDAzZW1paV9idXMgPSBidXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5Olx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVx0XHQgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlcGRldi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVx0XHRlcnIgPSAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXHRwZXAtXHUwMDNlc21pX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXHUwMDNlc21pX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXHRkZXZfZGJnKGV0aC1cdTAwM2VkZXYsIFwmIzM0O01EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxuXCYjMzQ7LCBNRENfTUFYX0ZSRVEgLyBldGgtXHUwMDNlbWRjX2RpdmlkZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDEyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzQyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSVEw4MjYxeCBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgcnRsODI2MXhfcHJvYmVgLCB3aGljaCBpcyBhIHByb2JlIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgd2l0aGluIHRoYXQgYHJlYWx0ZWtfZHJ2c2AgYXJyYXkuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlIOKAkyBpdCYjMzk7cyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgaW5pdGlhbGl6ZSBhIHNwZWNpZmljIFJlYWx0ZWsgUEhZLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGV4YWN0bHkgKndoaWNoKiBSZWFsdGVrIFBIWSB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGhhbmRsZS4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGNoZWNrIHRob3NlIFBIWSBJRHMuIEtub3dpbmcgdGhlIGV4YWN0IElEcyB0aGlzIHByb2JlIGlzIGFzc29jaWF0ZWQgd2l0aCBpcyBjcnVjaWFsLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhvc2UgSURzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlRMXzgyNjEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ2LSNkZWZpbmUgUlRMODI2MVhfRVhUX0RBVEFfUkVHXHRcdFx0MHhhNDM4XG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNDc6I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXHRcdDB4ODAxZFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI1Ny0jZGVmaW5lIFJUTF84MjUxQlx0XHRcdFx0MHgwMDFjYzg2MlxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MjU4OiNkZWZpbmUgUlRMXzgyNjFDXHRcdFx0XHQweDAwMWNjODkwXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTk6I2RlZmluZSBSVExfODI2MUNfQ0dcdFx0XHRcdDB4MDAxY2M4OThcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI2MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zODc9c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5OS1cdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgUlRMODI2MVhfRVhUX0FERFJfUkVHLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDAwOlx0XHRcdCAgICBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSKTtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mjg0Mj1zdGF0aWMgaW50IHJ0bF9pbnRlcm5hbF9uYmFzZXRfbWF0Y2hfcGh5X2RldmljZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTEtXHRjYXNlIFJUTF84MjUxQjpcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI4NTI6XHRjYXNlIFJUTF84MjYxQzpcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTMtXHRjYXNlIDB4MDAxY2M4NDE6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MzA1MD1zdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgcmVhbHRla19kcnZzW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1My1cdH0sIHtcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTQ6XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChSVExfODI2MUNfQ0cpLFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1NS1cdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O1JlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY4MwoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAxMDAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFJUTDgyNjFDX0NHIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBSVExfODI2MUNfQ0dgLCBhIDEwR2JwcyBQSFkuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBkcml2ZXIgZm9yIHRoaXMgUEhZLCBzcGVjaWZpY2FsbHkgYHJlYWx0ZWsua29gLCBjYW4gZXZlciBiZSBoaXQgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBhY3R1YWwgUmVhbHRlayBoYXJkd2FyZS4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBiaW5kcy4gU3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdXNlcyB2aXJ0aW8tbmV0LCBlMTAwMCwgaWdiLCBldGMuIE1ESU8gYnVzIFBIWSBkcml2ZXJzLCBsaWtlIHRoZSBSZWFsdGVrIG9uZSwgcmVseSBvbiBhbiBNRElPIGJ1cyBzY2FuIChvciBkZXZpY2UgdHJlZS9BQ1BJKSB0aGF0IHJlYWRzIHRoZSBQSFkgSUQgcmVnaXN0ZXJzIChNSUlfUEhZU0lEMSBhbmQgTUlJX1BIWVNJRDIpLiBUaGUgYHJ0bDgyNjF4X3Byb2JlYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbmx5IHdoZW4gYSBwaHlzaWNhbCBkZXZpY2Ugd2l0aCBJRCBgMHgwMDFjYzg5OGAgaXMgcHJlc2VudCBvbiB0aGUgTURJTyBidXMuIEFmdGVyIHByb2JpbmcsIGludGVyZmFjZSBVUCBjYWxscyBgY29uZmlnX2luaXRgIHdoaWNoIGxvYWRzIGZpcm13YXJlIGBydGw4MjYxY19jZS5md2AgYW5kIGV4ZWN1dGVzIGZpcm13YXJlIGVudHJpZXMgdGhyb3VnaCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAuCgpOZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZSBhcmUgdmlydHVhbCBidXMgb3Igc3l6a2FsbGVyIG1lY2hhbmlzbXMgdG8gbW9jayB0aGVzZSBNRElPIFBIWSBkZXZpY2VzLiBTYWRseSwgdGhlcmUgYXJlbiYjMzk7dC4gVW5saWtlIFVTQiAod2l0aCBpdHMgRHVtbXkgSENEL1Jhdy1HYWRnZXQpLCBNRElPIGRvZXNuJiMzOTt0IGhhdmUgYSB1c2Vyc3BhY2UgaW5qZWN0aW9uIGludGVyZmFjZSB0byBlbXVsYXRlIGFyYml0cmFyeSBQSFkgaGFyZHdhcmUuCgpOb3csIEkgcmUtZm9jdXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTcGVjaWZpY2FsbHksIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGFuZCDigJxVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHPigJ0uIEkgemVyb2VkIGluIG9uIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoaXMgY29udGV4dC4gSXMgaXQgb25seSByZWFjaGVkIHdoZW4gdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCBjaGlwIGlzIHByZXNlbnQ/CgpJbmRlZWQuIEFmdGVyIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUsIGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCBpcyBjYWxsZWQgZXhjbHVzaXZlbHkgYnkgYHJ0bDgyNjF4X2Z3X2xvYWRgLCB3aGljaCBpcyBjYWxsZWQgYnkgYHJ0bDgyNjF4X2NvbmZpZ19pbml0YCwgd2hpY2ggaW4gdHVybiBpcyBvbmx5IHJlZmVyZW5jZWQgd2l0aGluIHRoZSBgcmVhbHRla19kcnZzYCB0YWJsZSBlbnRyeSBmb3IgYFJUTF84MjYxQ19DR2AuIEl0JiMzOTtzIGFsbCB0aWVkIHRvIHRoaXMgc3BlY2lmaWMgUEhZLiBTbywgdG8gaGl0IGBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5YCB5b3UgbmVlZCBhIFJlYWx0ZWsgUlRMODI2MUMvRC4KClRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgbGl2ZXMgd2l0aGluIGEgZHJpdmVyIGZvciAqc3BlY2lmaWMqIHBoeXNpY2FsIGhhcmR3YXJlIChSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWSkgdGhhdCBuZWVkcyB0aGlzIGNoaXAgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VL0dDRSwgdGhlcmVmb3JlIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAxMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoKSBpbiBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZmlybXdhcmUgbG9hZGVyIGZvciB0aGUgUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24vaW5pdGlhbGl6YXRpb24gb2YgcGh5c2ljYWwgUmVhbHRlayBSVEw4MjYxIFBIWSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMTI6MDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAyOjU4LjgzMjY2NTM3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDA4NTY1NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAyOjU4LjgzMjY3MTg4NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5OTcwNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDEwY2U5ZTQ1NjIwODQzNGQxMzVhNjViMTg0MTE1NGM0MWM4OGQ2M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCAxMSAxMjowMjo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuaW5kZXggMjdlMzFhNzk5ZTJjMy4uOTdiMGI2N2I5OTAwYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXFxuQEAgLTU0OCw4ICs1NDgsMTIgQEAgc3RhdGljIGludCBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuIFxcbiBcXHRzd2l0Y2ggKGVudHJ5LVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgT1BfV1JJVEU6XFxuLVxcdFxcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLFxcbi1cXHRcXHRcXHRcXHQgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgXFx1MDAzY1xcdTAwM2MgbHNiKSBcXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcXG4rXFx0XFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcXG4rXFx0XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIEdFTk1BU0sobXNiLCBsc2IpLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICh2YWx1ZSBcXHUwMDNjXFx1MDAzYyBsc2IpIFxcdTAwMjYgR0VOTUFTSyhtc2IsIGxzYikpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbHVlKTtcXG4rXFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMjo1OS4zMjM1MzU0NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ5NTE3NjgzNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5KCkgaW4gZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGZpcm13YXJlIGxvYWRlciBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZLiBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBjb25maWd1cmF0aW9uL2luaXRpYWxpemF0aW9uIG9mIHBoeXNpY2FsIFJlYWx0ZWsgUlRMODI2MSBQSFkgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMTBjZTllNDU2MjA4NDM0ZDEzNWE2NWIxODQxMTU0YzQxYzg4ZDYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgMTEgMTI6MDI6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5pbmRleCAyN2UzMWE3OTllMmMzLi45N2IwYjY3Yjk5MDBjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXG5AQCAtNTQ4LDggKzU0OCwxMiBAQCBzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcbiBcdHN3aXRjaCAoZW50cnktXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBPUF9XUklURTpcbi1cdFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBkZXYsIGFkZHIsXG4tXHRcdFx0XHQgICAgIEdFTk1BU0sobXNiLCBsc2IpLCAodmFsdWUgXHUwMDNjXHUwMDNjIGxzYikgXHUwMDI2IEdFTk1BU0sobXNiLCBsc2IpKTtcbitcdFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcbitcdFx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIGRldiwgYWRkciwgR0VOTUFTSyhtc2IsIGxzYiksXG4rXHRcdFx0XHRcdCAgICAgKHZhbHVlIFx1MDAzY1x1MDAzYyBsc2IpIFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XG4rXHRcdGVsc2VcbitcdFx0XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCB2YWx1ZSk7XG4rXG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdFx0YnJlYWs7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMjo1OS4zMjM1MzY4NjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5NDUwMzQ3NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBiZWluZyBjaGFuZ2VkIGluIHRoZSBgcnRsODI2MXhgIFBIWSBkcml2ZXIsIGFuZCB3aHkuIFRoZSBkaWZmIGl0c2VsZiBpcyB0aGUgc3RhcnRpbmcgcG9pbnQsIG9mIGNvdXJzZS4gSSdtIHNlZWluZyBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jYC4gVGhlIGNvcmUgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSdyZSBoYW5kbGluZyBNTUQgKE1hbmFnZW1lbnQgTW9kZSBEYXRhKSByZWdpc3RlciB3cml0ZXMgd2l0aGluIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24uXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGhhcyBiZWVuIGludHJvZHVjZWQgd2l0aGluIHRoZSBgT1BfV1JJVEVgIGNhc2UuIEJlZm9yZSwgaXQgc2VlbXMgd2UgYWx3YXlzIGNhbGxlZCBgcGh5X21vZGlmeV9tbWRgLiBOb3csIHRoZXJlJ3MgYSBjaGVjazogYGlmIChtc2IgIT0gMTUgfHwgbHNiICE9IDApYC4gSWYgdGhhdCBjb25kaXRpb24gaXMgdHJ1ZSwgd2Ugc3RpbGwgY2FsbCBgcGh5X21vZGlmeV9tbWRgLiBIb3dldmVyLCBpZiBgbXNiYCBpcyAxNSBhbmQgYGxzYmAgaXMgMCwgd2UncmUgbm93IGNhbGxpbmcgYHBoeV93cml0ZV9tbWRgIGluc3RlYWQuXG5cbk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBsaWtlbHkgaGFzIHRvIGRvIHdpdGggaG93IHdlJ3JlIHdyaXRpbmcgdG8gc3BlY2lmaWMgTU1EIHJlZ2lzdGVycy4gVGhlIG9yaWdpbmFsIGBwaHlfbW9kaWZ5X21tZGAgcHJlc3VtYWJseSBoYW5kbGVzIGJpdC1maWVsZCBtb2RpZmljYXRpb25zIHdpdGhpbiBhbiBNTUQgcmVnaXN0ZXIuIFRoZSBuZXcgYHBoeV93cml0ZV9tbWRgLCBpbiBjb250cmFzdCwgbWlnaHQgYmUgaW50ZW5kZWQgZm9yIGZ1bGwgcmVnaXN0ZXIgd3JpdGVzIHdoZW4gYWxsIGJpdHMgYXJlIGJlaW5nIHNldC4gVGhlIGNoZWNrIGAobXNiICE9IDE1IHx8IGxzYiAhPSAwKWAgcHJvYmFibHkgaW5kaWNhdGVzIHdlJ3JlIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gbW9kaWZ5aW5nIGEgc3Vic2V0IG9mIGJpdHMgYW5kIHdyaXRpbmcgdGhlIGVudGlyZSByZWdpc3RlciBjb250ZW50cy5cblxuSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyAtIHByb2JhYmx5IGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgY29udGV4dCBhcm91bmQgdGhlIGZ1bmN0aW9uIHRvIGJlIHN1cmUgLSBidXQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciBhIGNvcnJlY3RuZXNzIGZpeC4gTWF5YmUgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGhhZCBzb21lIGFzc3VtcHRpb25zIGFyb3VuZCBmdWxsIHJlZ2lzdGVyIHdyaXRlcyB0aGF0IHdlcmUgaW5jb3JyZWN0LiBPciwgcG9zc2libHksIHRoZXJlJ3Mgc29tZSBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgZW50aXJlIGZpbGUuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gdGhhdCBkZXNlcnZlcyBjYXJlZnVsIGV4YW1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MDguNzczODg3MjY2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUzMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUzMDpcXHRcXHRtc2IgPSBlbnRyeS1cXHUwMDNlbXNiO1xcbiA1MzE6XFx0XFx0bHNiID0gZW50cnktXFx1MDAzZWxzYjtcXG4gNTMyOlxcdFxcdHZhbHVlID0gbGUxNl90b19jcHUoZW50cnktXFx1MDAzZXZhbHVlKTtcXG4gNTMzOlxcdFxcdHRpbWVvdXRfbXMgPSBsZTE2X3RvX2NwdShlbnRyeS1cXHUwMDNldGltZW91dF9tcyk7XFxuIDUzNDpcXHRcXHRwb2xsX3NldCA9IGVudHJ5LVxcdTAwM2Vwb2xsX3NldDtcXG4gNTM1OlxcdFxcbiA1MzY6XFx0XFx0aWYgKHRpbWVvdXRfbXMgPT0gMClcXG4gNTM3OlxcdFxcdFxcdHRpbWVvdXRfbXMgPSBSVEw4MjYxWF9QT0xMX1RJTUVPVVRfTVM7XFxuIDUzODpcXHRcXG4gNTM5OlxcdFxcdGlmIChkZXYgXFx1MDAzZSBSVEw4MjYxWF9NQVhfTU1EX0RFVikge1xcbiA1NDA6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJpbnZhbGlkIGZpcm13YXJlIE1NRCBkZXZpY2U6IGRldj0ldVxcXFxuXFxcIiwgZGV2KTtcXG4gNTQxOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NDI6XFx0XFx0fVxcbiA1NDM6XFx0XFxuIDU0NDpcXHRcXHRpZiAobXNiIFxcdTAwM2UgMTUgfHwgbHNiIFxcdTAwM2UgbXNiKSB7XFxuIDU0NTpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcImludmFsaWQgZmlybXdhcmUgYml0czogbXNiPSV1LCBsc2I9JXVcXFxcblxcXCIsIG1zYiwgbHNiKTtcXG4gNTQ2OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NDc6XFx0XFx0fVxcbiA1NDg6XFx0XFxuIDU0OTpcXHRcXHRzd2l0Y2ggKGVudHJ5LVxcdTAwM2V0eXBlKSB7XFxuIDU1MDpcXHRcXHRjYXNlIE9QX1dSSVRFOlxcbiA1NTE6XFx0XFx0XFx0aWYgKG1zYiAhPSAxNSB8fCBsc2IgIT0gMClcXG4gNTUyOlxcdFxcdFxcdFxcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCBHRU5NQVNLKG1zYiwgbHNiKSxcXG4gNTUzOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKHZhbHVlIFxcdTAwM2NcXHUwMDNjIGxzYikgXFx1MDAyNiBHRU5NQVNLKG1zYiwgbHNiKSk7XFxuIDU1NDpcXHRcXHRcXHRlbHNlXFxuIDU1NTpcXHRcXHRcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgZGV2LCBhZGRyLCB2YWx1ZSk7XFxuIDU1NjpcXHRcXG4gNTU3OlxcdFxcdFxcdGlmIChyZXQpXFxuIDU1ODpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NTk6XFx0XFx0XFx0YnJlYWs7XFxuIDU2MDpcXHRcXG4gNTYxOlxcdFxcdGNhc2UgT1BfUE9MTDpcXG4gNTYyOlxcdFxcdFxcdGJpdHMgPSBHRU5NQVNLKG1zYiwgbHNiKTtcXG4gNTYzOlxcdFxcdFxcdGV4cGVjdF92YWwgPSAodmFsdWUgXFx1MDAzY1xcdTAwM2MgbHNiKSBcXHUwMDI2IGJpdHM7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdFxcdGlmIChwb2xsX3NldClcXG4gNTY2OlxcdFxcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4gNTY3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSA9PSBleHBlY3RfdmFsLFxcbiA1Njg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcXG4gNTY5OlxcdFxcdFxcdGVsc2VcXG4gNTcwOlxcdFxcdFxcdFxcdHJldCA9IHBoeV9yZWFkX21tZF9wb2xsX3RpbWVvdXQocGh5ZGV2LCBkZXYsIGFkZHIsIHZhbCxcXG4gNTcxOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCh2YWwgXFx1MDAyNiBiaXRzKSAhPSBleHBlY3RfdmFsLFxcbiA1NzI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0MTAwMCwgdGltZW91dF9tcyAqIDEwMDAsIGZhbHNlKTtcXG4gNTczOlxcdFxcdFxcdGlmIChyZXQpXFxuIDU3NDpcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NzU6XFx0XFx0XFx0YnJlYWs7XFxuIDU3NjpcXHRcXG4gNTc3OlxcdFxcdGRlZmF1bHQ6XFxuIDU3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNTc5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MDguNzc0Mzc4NDg3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAxMjQ1NjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBydGw4MjYxeF9md19leGVjdXRlX2VudHJ5IENhbGwqKlxuXG5Pa2F5LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIGRvIGlzIHRyYWNlIGRvd24gd2hlcmUgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGlzIGFjdHVhbGx5ICpjYWxsZWQqLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCwgYnkgZXh0ZW5zaW9uLCB0aGUgbGFyZ2VyIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGlzLiBJJ20gYXNzdW1pbmcgdGhhdCBpdCdzIHBhcnQgb2YgYSBSZWFsdGVrIG5ldHdvcmsgY29udHJvbGxlciwgc3BlY2lmaWNhbGx5IHNvbWV0aGluZyB1c2luZyB0aGUgYHJ0bDgyNjF4YCBjaGlwc2V0LCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy5cblxuSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5IGludm9sdmVzIGEgaGFyZHdhcmUgZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoYXQgZHJpdmVyIGRvZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBhc3NvY2lhdGVkIGNvZGUgYW5kIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBlbnRyeSBwb2ludC4gT25jZSBJIGRvIHRoYXQsIEknbGwgcmV2aWV3IGhvdyBpdCdzIGV4ZWN1dGVkLCBob3cgdGhlIGRhdGEgaXMgaGFuZGxlZCwgYW5kIHdoYXQgaW5wdXRzIGFuZCBvdXRwdXRzIGFyZSB1c2VkLiBJJ2xsIG1ha2Ugc3VyZSB0byBub3RlIGFueSBkYXRhIG9yIHZhbHVlcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njk0LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoxMC43ODY4Mzc5NzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1OTA0MjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MjYxeF9md19leGVjdXRlX2VudHJ5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTQ3Mz1zdGF0aWMgaW50IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01MjEtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTg0PXN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjA4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZTE2X3RvX2NwdShoZHItXFx1MDAzZW51bV9lbnRyaWVzKTsgaSsrLCBlbnRyeSsrKSB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjA5OlxcdFxcdHJldCA9IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkocGh5ZGV2LCBlbnRyeSk7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjEwLVxcdFxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MTIuNjQ1ODg4Mzk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0ODY0NzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIHJ0bDgyNjF4X2Z3X2xvYWQgRnVuY3Rpb24gQ2FsbGVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gcGF0aCBvZiBgcnRsODI2MXhfZndfbG9hZGAuIExldCdzIGdldCByaWdodCB0byBpdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2UgYmFjaywgdG8gc2VlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhlIGBydGw4MjYxeF9md19sb2FkYCBmdW5jdGlvbiBpdHNlbGYgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LCB0aGUgZW50cnkgcG9pbnQgb2YgaW50ZXJlc3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aG8qIG9yICp3aGF0KiBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhdGluZyB0aGlzIGZpcm13YXJlIGxvYWRpbmcgcHJvY2Vzcy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBpbW1lZGlhdGUgY2FsbGVycywgYW5kIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBicm9hZGVyIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhvc2UgY2FsbHMgd2lsbCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBwYXJ0aWN1bGFyIGZpcm13YXJlIGxvYWQgYW5kIHdoYXQgZXZlbnRzIGFyZSBkcml2aW5nIHRoaXMgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjE1LjA5NDUzNzMzM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzc3ODIxMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgyNjF4X2Z3X2xvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NTIwPXN0YXRpYyBpbnQgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTgzLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2xvYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9NzAwPXN0YXRpYyBpbnQgcnRsODI2MXhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwOC1cXHRpZiAocHJpdi1cXHUwMDNlZndfbmFtZSBcXHUwMDI2XFx1MDAyNiAhcHJpdi1cXHUwMDNlZndfbG9hZGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwOTpcXHRcXHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcxMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MTYuODcyMzYzNTkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg3OTkyNTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBQSFkgRHJpdmVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBSZWFsdGVrIFBIWSBkcml2ZXIgaW1wbGVtZW50YXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgaGVhcnQgb2YgaXQg4oCTIHRoZSBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmNgIGZpbGUuIEkgd2FudCB0byB6ZXJvIGluIG9uIHRoZSBjb3JlIGBwaHlfZHJpdmVyYCBkZWZpbml0aW9ucyB3aXRoaW4gdGhhdCBtb2R1bGUuIFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgcGFydGljdWxhciBQSFkgZGV2aWNlIGlzIGludGVncmF0ZWQgaW50byB0aGUgTGludXggbmV0d29yayBzdWJzeXN0ZW0uIEknbSBsb29raW5nIGZvciB0aGUgc3RhbmRhcmQgZHJpdmVyIHN0cnVjdHVyZTogdGhlIHByb2JlLCByZW1vdmUsIGFuZCBwb3NzaWJseSBzdXNwZW5kL3Jlc3VtZSBmdW5jdGlvbnMuIEknbGwgYmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgdGhlIHNwZWNpZmljIGBpZF90YWJsZWAgb3Igb3RoZXIgaWRlbnRpZmljYXRpb24gbWVjaGFuaXNtIHVzZWQgdG8gbWF0Y2ggdGhlIGRyaXZlciB0byB0aGUgaGFyZHdhcmUuIEnigJlsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoZXJlIHRoYXQgbGVhZHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoxOC43NTIyOTM4MTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTQyOTc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODI2MXhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MjkyPU1PRFVMRV9GSVJNV0FSRShSVEw4MjYxQ19DRV9GV19OQU1FKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yOTMtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjk0OmVudW0gcnRsODI2MXhfZndfb3Age1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5NS1cXHRPUF9XUklURSA9IDB4MDAsXFx0LyogV3JpdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI5OC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyOTk6c3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlciB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzAwLVxcdF9fbGUzMiBtYWluX21hZ2ljO1xcdC8qIE1haW4gbWFnaWMgbnVtYmVyICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMDgtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzA5OnN0cnVjdCBydGw4MjYxeF9md19lbnRyeSB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzEwLVxcdF9fdTggIHR5cGU7XFx0XFx0LyogT3BlcmF0aW9uIHR5cGUgKE9QXyopICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjAtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzIxOiNkZWZpbmUgRldfSEVBREVSX1NJWkVcXHRcXHRzaXplb2Yoc3RydWN0IHJ0bDgyNjF4X2Z3X2hlYWRlcilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMjI6I2RlZmluZSBGV19FTlRSWV9TSVpFXFx0XFx0c2l6ZW9mKHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYz0zMzE9c3RydWN0IHJ0bDgyMXhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDEtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzQyOnN0cnVjdCBydGw4MjYxeF9wcml2IHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zNDMtXFx0Y29uc3QgY2hhciAqZndfbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTM3Mj1zdGF0aWMgaW50IHJ0bDgyMXhfbW9kaWZ5X2V4dF9wYWdlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiBleHRfcGFnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4Ni1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozODc6c3RhdGljIGludCBydGw4MjYxeF9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM4OC17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzg5LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjM5MDpcXHRzdHJ1Y3QgcnRsODI2MXhfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zOTEtXFx0aW50IHN1Yl9waHlfaWQsIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQyNy1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0Mjg6c3RhdGljIGludCBydGw4MjYxeF9nZXRfZmVhdHVyZXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDQ2LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ0NzpzdGF0aWMgaW50IHJ0bDgyNjF4X3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQ3Mi1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0NzM6c3RhdGljIGludCBydGw4MjYxeF92ZXJpZnlfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00NzQte1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjQ3NTpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDc2LVxcdHUzMiBtYWluX21hZ2ljLCBzdWJfbWFnaWM7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy00ODUtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NDg2OlxcdGhkciA9IChjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICopZnctXFx1MDAzZWRhdGE7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNDg3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTE5LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjUyMDpzdGF0aWMgaW50IHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo1MjE6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTUyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy01ODMtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg0OnN0YXRpYyBpbnQgcnRsODI2MXhfZndfbG9hZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTU4NS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NTg2OlxcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4NzpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfZW50cnkgKmVudHJ5O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjU4ODpcXHRjb25zdCBzdHJ1Y3QgcnRsODI2MXhfZndfaGVhZGVyICpoZHI7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNTg5LVxcdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDAtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjAxOlxcdHJldCA9IHJ0bDgyNjF4X3ZlcmlmeV9maXJtd2FyZShwaHlkZXYsIGZ3KTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTYwNC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDU6XFx0aGRyID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19oZWFkZXIgKilmdy1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDYtXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NjA3OlxcdGVudHJ5ID0gKGNvbnN0IHN0cnVjdCBydGw4MjYxeF9md19lbnRyeSAqKShmdy1cXHUwMDNlZGF0YSArIEZXX0hFQURFUl9TSVpFKTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MDgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMTZfdG9fY3B1KGhkci1cXHUwMDNlbnVtX2VudHJpZXMpOyBpKyssIGVudHJ5KyspIHtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2MDk6XFx0XFx0cmV0ID0gcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeShwaHlkZXYsIGVudHJ5KTtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02MTAtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjYyMzpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY0OC1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo2NDk6c3RhdGljIGlycXJldHVybl90IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy02NTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjY2OTpzdGF0aWMgaW50IHJ0bDgyNjF4X2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtNjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTY5OS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo3MDA6c3RhdGljIGludCBydGw4MjYxeF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwMS17XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6NzAyOlxcdHN0cnVjdCBydGw4MjYxeF9wcml2ICpwcml2ID0gcGh5ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcwOC1cXHRpZiAocHJpdi1cXHUwMDNlZndfbmFtZSBcXHUwMDI2XFx1MDAyNiAhcHJpdi1cXHUwMDNlZndfbG9hZGVkKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjcwOTpcXHRcXHRyZXR1cm4gcnRsODI2MXhfZndfbG9hZChwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTcxMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1NS1cXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIlJlYWx0ZWsgUlRMODI2MUMvRCAxMEdicHMgUEhZXFxcIixcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzU2OlxcdFxcdC5wcm9iZVxcdFxcdFxcdD0gcnRsODI2MXhfcHJvYmUsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM1NzpcXHRcXHQuY29uZmlnX2luaXRcXHRcXHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbml0LFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTg6XFx0XFx0LmdldF9mZWF0dXJlc1xcdFxcdD0gcnRsODI2MXhfZ2V0X2ZlYXR1cmVzLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNTk6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBydGw4MjYxeF9jb25maWdfYW5lZyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzozMzYwOlxcdFxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gcnRsODI2MXhfcmVhZF9zdGF0dXMsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM2MTpcXHRcXHQuY29uZmlnX2ludHJcXHRcXHQ9IHJ0bDgyNjF4X2NvbmZpZ19pbnRyLFxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjMzNjI6XFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IHJ0bDgyNjF4X2hhbmRsZV9pbnRlcnJ1cHQsXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM2My1cXHRcXHQuc29mdF9yZXNldFxcdFxcdD0gZ2VucGh5X2M0NV9wbWFfc29mdF9yZXNldCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjAuMzQ2NTk4ODY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5MjYyNDYxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBQSFkgZHJpdmVyIGhlcmUsIHNwZWNpZmljYWxseSBmb3IgdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCDigJMgYW4gTURJTyBQSFkgY2hpcC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciB3aXRob3V0IGFjdHVhbCBoYXJkd2FyZT8gVGhhdCdzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIE1ESU8gUEhZcyBpbiBnZW5lcmFsLCBvciBSZWFsdGVrIG9uZXMgc3BlY2lmaWNhbGx5LCBhcmUgZW11bGF0ZWQgYXQgYWxsIGluIHRoZXNlIGVudmlyb25tZW50cywgb3IgaWYgdGhpcyBpcyB0aWVkIHRvIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSG9sZCBvbiwgbGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIHRoaW5rIGFib3V0IGhvdyBQSFkgZGV2aWNlcyBhcmUgdHlwaWNhbGx5IGluc3RhbnRpYXRlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc29tZXRoaW5nIGxpa2UgbWRpby1ncGlvLCBtZGlvLWJpdGJhbmcsIGEgZHVtbXkgUEhZLCBvciBldmVuIGEgZml4ZWQgUEhZPyBPciBjYW4gc3l6a2FsbGVyIGV2ZW4gKmNyZWF0ZSogTURJTyBkZXZpY2VzIG9yIHRlc3QgRXRoZXJuZXQgZHJpdmVycz8gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbi5cblxuUmlnaHQsIHRpbWUgdG8gZ28gYmFjayB0byBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gU2VjdGlvbiAyIG9mIHRob3NlIGluc3RydWN0aW9ucyBhZ2FpbiwgdGhlIHJlYWNoYWJpbGl0eSBzZWN0aW9uLiBUaGlzIGlzIGtleSwgaXNuJ3QgaXQ/IEl0J3MgYWxsIGFib3V0IHdoYXQncyBhY3R1YWxseSAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJZiB0aGlzIFJlYWx0ZWsgZHJpdmVyIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSDigJMgaWYgaXQncyB0aWVkIHRvIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCDigJMgdGhlbiB0aGVyZSdzIG5vIHBvaW50IGV2ZW4gdHJ5aW5nIHRvIGZ1enogaXQuIEl0IHN0YXRlcyB0aGF0IFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLlxuXG5BbmQgbm93LCBvbmUgbW9yZSB0aGluZy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgd2hhdCBSZWFsdGVrIG1vZGVscyBhcmUgc2ltaWxhciB0byB0aGlzIFJUTDgyNjFOIC8gUlRMODI2MUMgLyBSVEw4MjY0LiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZ2Agb3IgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGNsdWVzIHRoZXJlLiBUaGlzIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2hpY2ggZmVhdHVyZXMgYXJlIHNoYXJlZCBhbmQgd2hhdCB0aGUgb3B0aW9ucyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjQuMjcyODQ3NDA4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ1MDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSRUFMVEVLX1BIWVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTk2PW9iai0kKENPTkZJR19RU0VNSV9QSFkpXFx0XFx0Kz0gcXNlbWkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfUkVBTFRFS19QSFkpXFx0Kz0gcmVhbHRlay9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtOTgtb2JqLSQoQ09ORklHX1JFTkVTQVNfUEhZKVxcdCs9IHVQRDYwNjIwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjI6Y29uZmlnIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFBIWXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnLTctXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzo4OmlmIFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWc6MTA6Y29uZmlnIFJFQUxURUtfUEhZX0hXTU9OXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJIV01PTiBzdXBwb3J0IGZvciBSZWFsdGVrIFBIWXNcXFwiXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoUkVBTFRFS19QSFk9eSBcXHUwMDI2XFx1MDAyNiBIV01PTj1tKVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvS2NvbmZpZy0xNS1cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9LY29uZmlnOjE2OmVuZGlmICMgUkVBTFRFS19QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlPTI9cmVhbHRlay15XFx0XFx0XFx0Kz0gcmVhbHRla19tYWluLm9cXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9NYWtlZmlsZTozOnJlYWx0ZWstJChDT05GSUdfUkVBTFRFS19QSFlfSFdNT04pICs9IHJlYWx0ZWtfaHdtb24ub1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1JFQUxURUtfUEhZKVxcdCs9IHJlYWx0ZWsub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9MTgxMj1zdGF0aWMgaW50IHJ0bDgyMnhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODEzLXtcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxODE0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19SRUFMVEVLX1BIWV9IV01PTikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xODE1LVxcdCAgICBwaHlkZXYtXFx1MDAzZXBoeV9pZCAhPSBSVExfR0VORVJJQ19QSFlJRClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjQuMzI4MzAyNTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMTE4MDEwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSRUFMVEVLX1BIWSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgUkVBTFRFS19QSFlgIGRyaXZlci4gSXQncyBmb3IgdGhvc2UgUmVhbHRlayBFdGhlcm5ldCBQSFkgY2hpcHMg4oCTIHRoZSBSVEw4MjExLCBSVEw4MjYxLCBhbmQgc2ltaWxhciBtb2RlbHMg4oCTIHNwZWNpZmljYWxseSB0aGUgb25lcyB0aGF0IGludGVyZmFjZSB2aWEgdGhlIE1ESU8gYnVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbi5cblxuTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGhvdyBgcnRsODI2MXhfcHJvYmVgIGFuZCBgcnRsODI2MXhfY29uZmlnX2luaXRgIGFyZSB1dGlsaXplZCwgYW5kIHdoZXRoZXIgdGhlaXIgZXhlY3V0aW9uIGRlcGVuZHMgb24gdGhlIHByZXNlbmNlIG9mIHRoZSBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaW5ncyBhcmUgY29ubmVjdGVkLiBMZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gYHJ0bDgyNjF4X3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMTgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzoyNi42NDAxMDY5ODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4NixcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4NjpcXHRcXG4gMzg3OlxcdHN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzg4OlxcdHtcXG4gMzg5OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2O1xcbiAzOTA6XFx0XFx0c3RydWN0IHJ0bDgyNjF4X3ByaXYgKnByaXY7XFxuIDM5MTpcXHRcXHRpbnQgc3ViX3BoeV9pZCwgcmV0O1xcbiAzOTI6XFx0XFxuIDM5MzpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIDM5NDpcXHRcXHRpZiAoIXByaXYpXFxuIDM5NTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMzk2OlxcdFxcbiAzOTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMzk4OlxcdFxcbiAzOTk6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfQUREUl9SRUcsXFxuIDQwMDpcXHRcXHRcXHRcXHQgICAgUlRMXzgyNjFYX1NVQl9QSFlfSURfQUREUik7XFxuIDQwMTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gNDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDQwMzpcXHRcXG4gNDA0OlxcdFxcdHJldCA9IHBoeV9yZWFkX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBSVEw4MjYxWF9FWFRfREFUQV9SRUcpO1xcbiA0MDU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQwNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0MDc6XFx0XFxuIDQwODpcXHRcXHRzdWJfcGh5X2lkID0gKHJldCBcXHUwMDNlXFx1MDAzZSA4KSBcXHUwMDI2IDB4ZmY7XFxuIDQwOTpcXHRcXG4gNDEwOlxcdFxcdHN3aXRjaCAoc3ViX3BoeV9pZCkge1xcbiA0MTE6XFx0XFx0Y2FzZSBSVEw4MjYxQ19DRV9NT0RFTDpcXG4gNDEyOlxcdFxcdFxcdHByaXYtXFx1MDAzZWZ3X25hbWUgPSBSVEw4MjYxQ19DRV9GV19OQU1FO1xcbiA0MTM6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUMgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE0OlxcdFxcdFxcdGJyZWFrO1xcbiA0MTU6XFx0XFxuIDQxNjpcXHRcXHRjYXNlIFJUTDgyNjFEX01PREVMOlxcbiA0MTc6XFx0XFx0XFx0cGh5ZGV2X2luZm8ocGh5ZGV2LCBcXFwiUlRMODI2MUQgZGV0ZWN0ZWQgKHN1Yl9pZCAweCUwMngpXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDE4OlxcdFxcdFxcdGJyZWFrO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRkZWZhdWx0OlxcbiA0MjE6XFx0XFx0XFx0cGh5ZGV2X3dhcm4ocGh5ZGV2LCBcXFwiVW5rbm93biBzdWJfaWQgMHglMDJ4LCBkZWZhdWx0IGJlaGF2aW9yXFxcXG5cXFwiLCBzdWJfcGh5X2lkKTtcXG4gNDIyOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA0MjM6XFx0XFx0fVxcbiA0MjQ6XFx0XFxuIDQyNTpcXHRcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMTI6MDM6MjYuNjQwMjYxMDM2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI2MDQ3MTcxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBSVEw4MjYxeCBFbXVsYXRpb24gUG9zc2liaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgcnRsODI2MXhgLCB3aGljaCBhcyBJIHJlY2FsbCwgaXMgYSBzcGVjaWZpYyBSZWFsdGVrIDEwR2JwcyBQSFkgY2hpcCwgc3BlY2lmaWNhbGx5IHRoZSBSVEw4MjYxQyBvciBSVEw4MjYxRC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgZG9lcyBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvZmZlciBhbnkga2luZCBvZiBlbXVsYXRlZCBkZXZpY2UgdGhhdCBtb2RlbHMgdGhpcyBQSFk/IFRoZSBxdWljayBhbnN3ZXIgaXMgbm8sIFFFTVUgZG9lc24ndCBkaXJlY3RseSBlbXVsYXRlIHRob3NlIFJlYWx0ZWsgY2hpcHMuIFRoYXQncyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgUEhZLWxldmVsIGludGVyYWN0aW9ucy5cblxuVGhlIG5leHQgYXZlbnVlIHRvIGV4cGxvcmUgaXMgd2hldGhlciBJIGNhbiBjcmVhdGUgYW4gTURJTyBQSFkgZGV2aWNlIGluIHVzZXJzcGFjZS4gQ2FuIEkgYWNoaWV2ZSB0aGlzIHVzaW5nIG5ldGxpbmssIHN5c2ZzLCBkZWJ1Z2ZzLCBvciBzb21lIG90aGVyIGludGVyZmFjZT8gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIG1kaW8vcGh5IHN1YnN5c3RlbSBkb2N1bWVudGF0aW9uIHRvIHNlZSB3aGF0J3MgcG9zc2libGUgaGVyZS4gSXQncyBhIGxvbmcgc2hvdCwgYnV0IHdvcnRoIGNoZWNraW5nLCBlc3BlY2lhbGx5IGlmIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZGV2aWNlIG1hbnVhbGx5IHRvIGJlaGF2ZSBsaWtlIGFuIFJUTDgyNjEgUEhZLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTI4NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjI5LjI0NDk4MDU4NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMzM2ODQzMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb19idXNfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjMwLjg0ODM1Njg0NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTgwOTkwODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBQSFkgZGV2aWNlIHByb2JpbmcgcHJvY2Vzcy4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBtZGlvYnVzX3JlZ2lzdGVyYC4gSSBrbm93IHRoZXJlJ3MgYSBsb3QgdGhhdCBoYXBwZW5zIGluIHRoYXQgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBQSFkgZGV2aWNlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBNRElPIGJ1cyBmcmFtZXdvcmsuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBkcml2ZXIgZmluZHMgYW5kIGNvbmZpZ3VyZXMgdGhlIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycy4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQsIGFuZCB3aGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBpbml0aWFsaXplIGFuZCBjb25uZWN0IGEgbmV3IFBIWT8gVGhpcyBzaG91bGQgbGVhZCBtZSBpbnRvIGhvdyBkZXZpY2VzIGFyZSBhY3R1YWxseSBkZXRlY3RlZC4gSSdsbCBwcm9iYWJseSBuZWVkIHRvIGNoYXNlIGRvd24gZnVuY3Rpb24gY2FsbHMgcmVsYXRlZCB0byBwcm9iaW5nIGFuZCBpZGVudGlmaWNhdGlvbiBvZiBQSFlzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIGluIG15IGhlYWQgb2YgdGhlIHdvcmtmbG93LCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgYW5kIHRyb3VibGVzaG9vdCBhbnkgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY1OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjMzLjAyOTM1MDM0MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0NTY2MDE5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvYnVzX3JlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEzOCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RyaXZlci1tb2RlbC9kZXZyZXMucnN0PTM0OT1NRElPXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHJpdmVyLW1vZGVsL2RldnJlcy5yc3QtMzUxLSAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTI6ICBkZXZtX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdDozNTM6ICBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoKVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kcml2ZXItbW9kZWwvZGV2cmVzLnJzdC0zNTQtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdD0xMj1kZXZpY2UgKHRoZSBzYW1lIG9iamVjdHMgdGhhdCBhcmUgcmVnaXN0ZXJlZCB2aWFcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL21vdG9yY29tbS15dDh4eHgtcGh5LnJzdDoxMzpgYGZ3bm9kZV9tZGlvYnVzX3JlZ2lzdGVyX3BoeSgpYGApLiBNQUMtc2lkZSBjb25uZWN0aW9uIHByb3BlcnRpZXMgc3VjaCBhc1xcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvbW90b3Jjb21tLXl0OHh4eC1waHkucnN0LTE0LWBgcGh5LWhhbmRsZWBgIGFuZCBgYHBoeS1tb2RlYGAgYXJlIGRvY3VtZW50ZWQgaW4gW2FjcGktbWRpby1waHldXy5cXG4tLVxcbkRvY3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS9kc2QvcGh5LnJzdD03PVRoZSBQSFlzIG9uIGFuIE1ESU8gYnVzIFtwaHldIGFyZSBwcm9iZWQgYW5kIHJlZ2lzdGVyZWQgdXNpbmdcXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3Q6ODpmd25vZGVfbWRpb2J1c19yZWdpc3Rlcl9waHkoKS5cXG5Eb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2FjcGkvZHNkL3BoeS5yc3QtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTQwPXJlZ2lzdGVyZWQgYXMgYSBkaXN0aW5jdCBkZXZpY2UuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01Ni0gICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZ1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjU3OiAgIG1kaW9idXNfcmVnaXN0ZXIuICBTaW1pbGFybHksIHRoZXJlJ3MgYSByZW1vdmUgZnVuY3Rpb24gdG8gdW5kbyBhbGwgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC01OC0gICB0aGF0ICh1c2UgbWRpb2J1c191bnJlZ2lzdGVyKS5cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODJ4eC9lcDgyNDhlLmM9MTA5PXN0YXRpYyBpbnQgZXA4MjQ4ZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzItXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYzoxMzM6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG9mZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84Mnh4L2VwODI0OGUuYy0xMzQtXFx0aWYgKHJldClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jPTIwNz1zdGF0aWMgaW50IGdwaW9fbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2dwaW9fbWRpby5jLTI0My1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9ncGlvX21kaW8uYzoyNDQ6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZ3Bpb19tZGlvLmMtMjQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzU2PWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjQyNy1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyNDI4OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTI0MjktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYz0zODk9eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTQwNi1cXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYzo0MDc6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvbW90b3Jjb21tL2NoaXAuYy00MDgtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jPTUyMD15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21vdG9yY29tbS9jaGlwLmMtNTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jOjUzODpcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tb3RvcmNvbW0vY2hpcC5jLTUzOS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIzMzc9bXQ3NTMwX3NldHVwX21kaW8oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzNzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIzNzM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzc0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYz0yNDI9c3RhdGljIGludCBtdDc2Mjhfc2V0dXBfaW50ZXJuYWxfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NjI4LmMtMjYxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc2MjguYzoyNjI6XFx0cmV0dXJuIGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL210NzYyOC5jLTI2My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz0zODQyPXN0YXRpYyBpbnQgbXY4OGU2eHh4X21kaW9fcmVnaXN0ZXIoc3RydWN0IG12ODhlNnh4eF9jaGlwICpjaGlwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5NS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzozODk2OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtMzg5Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYz0yNjc9c3RhdGljIGludCBteGw4NjJ4eF9zZXR1cF9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYzoyOTM6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9uZXRjL25ldGNfbWFpbi5jLTE3OS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTk1Nz1zdGF0aWMgaW50IHZzYzk5NTlfbWRpb19idXNfYWxsb2Moc3RydWN0IG9jZWxvdCAqb2NlbG90KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTAxMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMTUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmMtOTAzLVxcdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM6OTA0OlxcdHJjID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cXHRpZiAocmMgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jPTM1Nz1zdGF0aWMgaW50IGFyOTMzMV9zd19tYnVzX2luaXQoc3RydWN0IGFyOTMzMV9zd19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYzozODI6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy05ODYtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpbyk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jPTc1PWludCBydGw4M3h4X3NldHVwX3VzZXJfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDE6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4OlxcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTYxNz1zdGF0aWMgaW50IGFkaW4xMTQwX21kaW9fcmVnaXN0ZXIoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjM3OlxcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaWRldi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVxcdHNucHJpbnRmKG1paS1cXHUwMDNlaWQsIHNpemVvZihtaWktXFx1MDAzZWlkKSwgXFxcIiVzXFxcIiwgZGV2X25hbWUocGRhdGEtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XFx0XFx0ZGV2X2VycihwZGF0YS1cXHUwMDNlZGV2LCBcXFwibWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gMHgxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcXHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXFx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4OlxcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVxcdTAwM2VtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cXHRpZiAoaSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cXHRpZiAobWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XFx0XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XFx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgZGItXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcXHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1kaW9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMDg9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0MzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cXHUwMDNlbWlpX2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVxcdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXFx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxVSBcXHUwMDNjXFx1MDAzYyBtYWMtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVxcdGFkYXB0ZXItXFx1MDAzZW1paV9idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cXHRcXHQgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlbmFtZSwgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlxcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXFx0XFx0ZXJyID0gLUVOWElPO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXFx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXFx0cGVwLVxcdTAwM2VzbWlfYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cXHUwMDNlc21pX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjM0Ljk3NTAzODM0NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjM4MTk3NTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlRMODI2MXggUHJvYmUgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggYHJ0bDgyNjF4X3Byb2JlYCwgd2hpY2ggaXMgYSBwcm9iZSBmdW5jdGlvbiByZWdpc3RlcmVkIHdpdGhpbiB0aGF0IGByZWFsdGVrX2RydnNgIGFycmF5LiBSaWdodCwgdGhhdCBtYWtlcyBzZW5zZSDigJMgaXQncyBkZXNpZ25lZCB0byBpZGVudGlmeSBhbmQgaW5pdGlhbGl6ZSBhIHNwZWNpZmljIFJlYWx0ZWsgUEhZLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGV4YWN0bHkgKndoaWNoKiBSZWFsdGVrIFBIWSB0aGlzIHByb2JlIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGhhbmRsZS4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGNoZWNrIHRob3NlIFBIWSBJRHMuIEtub3dpbmcgdGhlIGV4YWN0IElEcyB0aGlzIHByb2JlIGlzIGFzc29jaWF0ZWQgd2l0aCBpcyBjcnVjaWFsLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGhhbmRsaW5nLiBMZXQncyBzZWUgd2hhdCB0aG9zZSBJRHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc0MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDEyOjAzOjQwLjIxMzIzODczM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTA3NDcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSVExfODI2MVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0xNDYtI2RlZmluZSBSVEw4MjYxWF9FWFRfREFUQV9SRUdcXHRcXHRcXHQweGE0MzhcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoxNDc6I2RlZmluZSBSVExfODI2MVhfU1VCX1BIWV9JRF9BRERSXFx0XFx0MHg4MDFkXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMTQ4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjU3LSNkZWZpbmUgUlRMXzgyNTFCXFx0XFx0XFx0XFx0MHgwMDFjYzg2MlxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jOjI1ODojZGVmaW5lIFJUTF84MjYxQ1xcdFxcdFxcdFxcdDB4MDAxY2M4OTBcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzoyNTk6I2RlZmluZSBSVExfODI2MUNfQ0dcXHRcXHRcXHRcXHQweDAwMWNjODk4XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMjYwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM9Mzg3PXN0YXRpYyBpbnQgcnRsODI2MXhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTM5OS1cXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIFJUTDgyNjFYX0VYVF9BRERSX1JFRyxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYzo0MDA6XFx0XFx0XFx0ICAgIFJUTF84MjYxWF9TVUJfUEhZX0lEX0FERFIpO1xcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTQwMS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTI4NDI9c3RhdGljIGludCBydGxfaW50ZXJuYWxfbmJhc2V0X21hdGNoX3BoeV9kZXZpY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLTI4NTEtXFx0Y2FzZSBSVExfODI1MUI6XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6Mjg1MjpcXHRjYXNlIFJUTF84MjYxQzpcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0yODUzLVxcdGNhc2UgMHgwMDFjYzg0MTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jPTMwNTA9c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIHJlYWx0ZWtfZHJ2c1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmMtMzM1My1cXHR9LCB7XFxuZHJpdmVycy9uZXQvcGh5L3JlYWx0ZWsvcmVhbHRla19tYWluLmM6MzM1NDpcXHRcXHRQSFlfSURfTUFUQ0hfRVhBQ1QoUlRMXzgyNjFDX0NHKSxcXG5kcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYy0zMzU1LVxcdFxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFlcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0MS43NzQzMTc5NTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzA2Njg3NjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBSVEw4MjYxQ19DRyBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFJUTF84MjYxQ19DR2AsIGEgMTBHYnBzIFBIWS4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGRyaXZlciBmb3IgdGhpcyBQSFksIHNwZWNpZmljYWxseSBgcmVhbHRlay5rb2AsIGNhbiBldmVyIGJlIGhpdCBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50IHdpdGhvdXQgdGhlIGFjdHVhbCBSZWFsdGVrIGhhcmR3YXJlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgYmluZHMuIFN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHVzZXMgdmlydGlvLW5ldCwgZTEwMDAsIGlnYiwgZXRjLiBNRElPIGJ1cyBQSFkgZHJpdmVycywgbGlrZSB0aGUgUmVhbHRlayBvbmUsIHJlbHkgb24gYW4gTURJTyBidXMgc2NhbiAob3IgZGV2aWNlIHRyZWUvQUNQSSkgdGhhdCByZWFkcyB0aGUgUEhZIElEIHJlZ2lzdGVycyAoTUlJX1BIWVNJRDEgYW5kIE1JSV9QSFlTSUQyKS4gVGhlIGBydGw4MjYxeF9wcm9iZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgb25seSB3aGVuIGEgcGh5c2ljYWwgZGV2aWNlIHdpdGggSUQgYDB4MDAxY2M4OThgIGlzIHByZXNlbnQgb24gdGhlIE1ESU8gYnVzLiBBZnRlciBwcm9iaW5nLCBpbnRlcmZhY2UgVVAgY2FsbHMgYGNvbmZpZ19pbml0YCB3aGljaCBsb2FkcyBmaXJtd2FyZSBgcnRsODI2MWNfY2UuZndgIGFuZCBleGVjdXRlcyBmaXJtd2FyZSBlbnRyaWVzIHRocm91Z2ggYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgLlxuXG5OZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGVyZSBhcmUgdmlydHVhbCBidXMgb3Igc3l6a2FsbGVyIG1lY2hhbmlzbXMgdG8gbW9jayB0aGVzZSBNRElPIFBIWSBkZXZpY2VzLiBTYWRseSwgdGhlcmUgYXJlbid0LiBVbmxpa2UgVVNCICh3aXRoIGl0cyBEdW1teSBIQ0QvUmF3LUdhZGdldCksIE1ESU8gZG9lc24ndCBoYXZlIGEgdXNlcnNwYWNlIGluamVjdGlvbiBpbnRlcmZhY2UgdG8gZW11bGF0ZSBhcmJpdHJhcnkgUEhZIGhhcmR3YXJlLlxuXG5Ob3csIEkgcmUtZm9jdXNlZCBvbiB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBTcGVjaWZpY2FsbHksIHRoZSBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5IGFuZCDigJxVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHPigJ0uIEkgemVyb2VkIGluIG9uIHRoZSBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoaXMgY29udGV4dC4gSXMgaXQgb25seSByZWFjaGVkIHdoZW4gdGhlIFJlYWx0ZWsgUlRMODI2MUMvRCBjaGlwIGlzIHByZXNlbnQ/XG5cbkluZGVlZC4gQWZ0ZXIgYSBkZWVwIGRpdmUgaW50byB0aGUgY29kZSwgYHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnlgIGlzIGNhbGxlZCBleGNsdXNpdmVseSBieSBgcnRsODI2MXhfZndfbG9hZGAsIHdoaWNoIGlzIGNhbGxlZCBieSBgcnRsODI2MXhfY29uZmlnX2luaXRgLCB3aGljaCBpbiB0dXJuIGlzIG9ubHkgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGByZWFsdGVrX2RydnNgIHRhYmxlIGVudHJ5IGZvciBgUlRMXzgyNjFDX0NHYC4gSXQncyBhbGwgdGllZCB0byB0aGlzIHNwZWNpZmljIFBIWS4gU28sIHRvIGhpdCBgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeWAgeW91IG5lZWQgYSBSZWFsdGVrIFJUTDgyNjFDL0QuXG5cblRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgbGl2ZXMgd2l0aGluIGEgZHJpdmVyIGZvciAqc3BlY2lmaWMqIHBoeXNpY2FsIGhhcmR3YXJlIChSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWSkgdGhhdCBuZWVkcyB0aGlzIGNoaXAgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBRRU1VL0dDRSwgdGhlcmVmb3JlIGl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU2ODMsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0OC44NDExOTY4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcnRsODI2MXhfZndfZXhlY3V0ZV9lbnRyeSgpIGluIGRyaXZlcnMvbmV0L3BoeS9yZWFsdGVrL3JlYWx0ZWtfbWFpbi5jLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBmaXJtd2FyZSBsb2FkZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgyNjFDL0QgMTBHYnBzIFBIWS4gVGhpcyBjb2RlIHBhdGggaXMgb25seSBleGVjdXRlZCBkdXJpbmcgY29uZmlndXJhdGlvbi9pbml0aWFsaXphdGlvbiBvZiBwaHlzaWNhbCBSZWFsdGVrIFJUTDgyNjEgUEhZIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHJ0bDgyNjF4X2Z3X2V4ZWN1dGVfZW50cnkoKSBpbiBkcml2ZXJzL25ldC9waHkvcmVhbHRlay9yZWFsdGVrX21haW4uYywgd2hpY2ggaXMgcGFydCBvZiB0aGUgZmlybXdhcmUgbG9hZGVyIGZvciB0aGUgUmVhbHRlayBSVEw4MjYxQy9EIDEwR2JwcyBQSFkuIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIGNvbmZpZ3VyYXRpb24vaW5pdGlhbGl6YXRpb24gb2YgcGh5c2ljYWwgUmVhbHRlayBSVEw4MjYxIFBIWSBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQxMjowMzo0OC44NDEyMjA2NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4jfxm[1] Phase: Running StartedAt: 2026-09-11 12:03:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4jfxm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 12:03:59 +0000 UTC FinishedAt: 2026-09-11 12:04:03 +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,}